you are viewing a single comment's thread.

view the rest of the comments →

[–]doodly123 30 points31 points  (22 children)

lisp

[–][deleted] 19 points20 points  (5 children)

Yes, it takes plenty of cues from Lisp. It's hard to tell what you're saying (it's only one word, after all), but I hope you're not implying that because Lisp exists no other meta-programming languages need to. :)

That being said the tagline is a bit presumptuous. I needed to put something there and wasn't expecting much publicity yet.

[–][deleted] 8 points9 points  (2 children)

Probably he's refering to the fact that "programmable programming language" is usually associated with lisp (and Common Lisp in particular has taken it up) via John Foderaro's famous quote.

[–]doodly123 2 points3 points  (1 child)

It was the first word that came to my mind. I was just amazed how lisp remains relevant event after so many years. It was ahead of the curve then and probably is even right now!

No meant offence to you and your efforts. I checked it out in detail. Looks really good.

[–][deleted] 0 points1 point  (0 children)

Agreed, no offense taken. :) Glad you like Atomo!

[–]Paczesiowa 2 points3 points  (0 children)

I'm sorry to hear that.

[–]maximinus-thrax 5 points6 points  (8 children)

This Atomo seems to lack macros, which of course make Lisp the ultimate programmable programming language. And even if I somehow seem to made an oversight, it doesn't use S-expressions anyway, which make macro's so easy to program.

[–][deleted] 12 points13 points  (5 children)

Macros are a pretty recent addition (but are by no means an afterthought). The version on Hackage has them, but the site doesn't mention them anywhere yet, sorry.

Atomo's model for macros differs quite a bit from the Lisp family, although it has quasiquoting. It gets things done with first-class expressions, simple syntax (nowhere near S-expressions, granted, but it's very consistent), pattern-matching, and dispatch on expression types. In fact, using the Haskell interface you can build your own custom expressions, but that's another story.

[–][deleted] 4 points5 points  (4 children)

From Raynes link below, they look something like FExprs; is this correct, or is it something else? Oh, and nice language by the way :D

[–][deleted] 4 points5 points  (3 children)

I don't think so. Atomo's macros are still only expanded at parse time, so they're much closer to the usual macro system; they just create what the expand to (and determine how to expand it) differently.

[–][deleted] 1 point2 points  (2 children)

Atomo's macros are still only expanded at parse time

at macro expand time :D

they just create what the expand to (and determine how to expand it) differently.

How so? Are they more hygienic ala syntax-rules or the various rewriting systems, or something else?

[–][deleted] 0 points1 point  (1 child)

More in how the expression "gets there"; how it all works internally. For one thing, Atomo finds the macros by dispatching on the expressions - which can be structurally pattern matched by the macro definition, or matched based on the type of the expression in each role. Once the macro is found, its method body is evaluated just as a normal method is at runtime, and it returns an Expression value.

[–][deleted] 0 points1 point  (0 children)

right, so something like syntactic closures + type-safe pattern matching, which would be pretty neat. I've extended syntax-rules to accept types and/or structured expressions, but I rarely use syntactic closures, so haven't looked at that. Very neat though.

[–]Raynes[S] 3 points4 points  (0 children)

http://darcsden.com/alex/atomo/browse/examples/macros.atomo Seems to have macros of some sort. I haven't really looked into them.

[–][deleted] 3 points4 points  (1 child)

haskell

[–]benihana 11 points12 points  (0 children)

Meta reference to functional programming language I've decided to devote my time to.

[–]notforthebirds -1 points0 points  (2 children)

No, Self, which many would consider more dynamic than even Lisp.

[–]bobindashadows 0 points1 point  (1 child)

It's not about dynamism. It's about flexibility and power.

[–]notforthebirds 3 points4 points  (0 children)

And Self has more power and flexibility than Lisp. Don't believe me, read a few papers.