Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

i'll ask you the same questions i asked the parenjs author, and which i think are pretty much faqs if you're developing a language-hosted lisp dialect. (some of them, like the interop ones, are answered in the hy docs, but it would be nice to have a quick up-front list for reference).

* lisp-1 or lisp-2?

* scoping rules?

* 1-way or 2-way python interop?

* lisp support for python objects?

* any support for tco or loop/recur?

* reader macros?

* speed penalty relative to native python?



* lisp-1 (Python rules)

* Python (sucks)

* 2-way

* Yep! CLOS syntax

* Yep! hy.contrib.loop - to be promoted soon

* Yep, they're OK, relies on dispatch char that's static

* Very little, actually - it compiles to (pretty sane) Python AST / Bytecode - so good pdb works to debug Hy :)


awesome, looking forward to checking it out :) shame about the scoping, as you say, but i guess the python interop made it the natural choice.


I can answer most of these just from reading the stuff linked here and educated guesses.

lisp-1, bastardized-lexical (like python, though you could create your own binding constructs with macros), 2-way, yes, yes (loop/recur, no TCO afaict or trampolining), yes, yes


trampolining - confirmed


Then you should give this a read if you haven't: http://www.cs.indiana.edu/~dfried/ts.ps

tl;dr you can actually generalize trampolining quite a bit in order to get co-operative threading.


Interesting, thanks for that! I'll read it over on the train in the morning and see if I can't fudge it in :)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: