4 ms·
I disagree. Homoiconicity and the metaprogramming it allows you[0] can never be present in a non-Lisp. [0] Deterministically, I mean - heteroiconic languages d
by chimeracoder 14y ago
I disagree. Homoiconicity and the metaprogramming it allows you[0] can never be present in a non-Lisp.
[0] Deterministically, I mean - heteroiconic languages do provide for metaprogramming, but it is inherently less robust than metaprogramming in a homoiconic language: http://lists.warhead.org.uk/pipermail/iwe/2005-July/000130.html http://lists.warhead.org.uk/pipermail/iwe/2005-July/000130.h...
- slurry 14y agoYour comment is correct but it doesn't contradict what you were replying to. An Algoloid language with closures and lambdas and tail-call optimization etc. can't do 100% of what a Lisp can do and maybe not even 80%, but it can still do "enough" for many definitions of "enough".
- draegtun 14y agoSmalltalk, Io and (possibly) Perl6 & Rebol are good examples of non-Lisp homoiconic languages which have full & robust metaprogramming.
- chimeracoder 14y agoYou can have metaprogramming, but it's not the same level by any means. Take Perl, for example. You can't have robust metaprogramming on a language with an undecidable grammar. Read through the above link and you'll see the difference.
- chromatic 14y agoIf you define "metaprogramming" as "homoiconic code generation" or "hygenic macros" or "the language I use to manipulate the AST is the same language as the AST", sure. I'm sure that's not the only thing people mean when they say "metaprogramming" though.
- draegtun 14y ago> You can have metaprogramming, but it's not the same level by any means. In the languages I've mentioned it is as the same level. Here are some examples - http://news.ycombinator.com/item?id=3125375 http://news.ycombinator.com/item?id=3125375 > Take Perl, for example. You can't have robust metaprogramming on a language with an undecidable grammar I'm referring to Perl6 here which is (intended to be) self hosted via perl6 grammars & also comes with hygienic macros: - http://en.wikipedia.org/wiki/Perl_6_rules#Grammars http://en.wikipedia.org/wiki/Perl_6_rules#Grammars - http://en.wikipedia.org/wiki/Perl_6#Macros http://en.wikipedia.org/wiki/Perl_6#Macros While perl5 won't get this good you'll be surprised what metaprogramming can be done with it. NB. For an example of macro-like things here is a list of CPAN modules that make use of Devel::Declare - https://metacpan.org/requires/distribution/Devel-Declare?sort=[[2,1] https://metacpan.org/requires/distribution/Devel-Declare?sor...] > Read through the above link and you'll see the difference. I have and I remember reading it back in 2005 :) This doesn't affect the list of languages I mentioned earlier.
- icebraining 14y agoWell, there's Prolog.