Arc Forumnew | comments | leaders | submitlogin
Jarc 14 Released
5 points by jazzdev 5153 days ago | 4 comments
I've fixed Jarc to expand meta functions at closure-time in the interpreter and at compile-time in the compiler.

Note: quasiquote still does not create literals. I'm beginning to think that it should, although it still doesn't seem that important one way or the other.

3 points by projectileboy 5147 days ago | link

I don't have much constructive to add, except to say I'm a huge fan of your effort. I so much prefer to use Arc over Clojure, and Jarc makes it easy to do so - it's what I'm now using to serve up mu Google App Engine stuff.

So, thanks!


2 points by rocketnia 5153 days ago | link

And with that, Lathe supports Arc 3.1, Anarki, Rainbow, and Jarc 14 all in one set of libraries and without design-crippling compromises. Awesome!

Well, I'm not likely to keep you busy with bug reports anymore. :-p I wonder what's next for both of us.


1 point by rocketnia 5142 days ago | link

Well, here's something:

  (mac foo (x) (prn "expanding") `',x)
  (def bar () (~~foo:idfn 2))
  (def baz () (~~foo:and 2))
Calling 'bar or 'baz shouldn't print "expanding", and defining them should. I'm using 'idfn and 'and to show that it doesn't matter if that part is a function or a macro. In fact, if it's (~~foo:foo 2), the second 'foo is expanded during compilation time but the first one isn't, and it should really be the other way around. (This shouldn't be treated as a second bug; I figure it's just a consequence of compiling the arguments to the outer 'foo, whose macroexpansion has been skipped somehow.)

There's a workaround: Use "no:" instead of "~":

  (mac foo (x) (prn "expanding") `',x)
  (def bar () (no:no:foo:idfn 2))
  (def baz () (no:no:foo:and 2))
Oddly (but nicely), this works just fine.


1 point by jazzdev 5151 days ago | link

Cool. Thanks for your identifying all those areas where Jarc wasn't compatible with Arc.

I've got plenty to keep me busy. ;-)