3 ms·
The real problem is that many of those functional programming features touted by languages like Arc and Lisp have made their way into more mainstream languages
by niggler 14y ago
The real problem is that many of those functional programming features touted by languages like Arc and Lisp have made their way into more mainstream languages like Python, and the types of problems that can better be solved with manipulating S-expressions are dwindling in cardinality.
- stcredzero 14y agoCan you give three Examples?
- chimeracoder 14y agoI 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.