I should give you a hard time about arguing from authority ;-), but I was 
there at the same time and knew KMP, so I wouldn't want to argue too much 
with him either, and I am in agreement with you about fexprs vs. macros, 
and the equivalent issues in Julia.

On Friday, July 24, 2015 at 2:31:54 PM UTC-4, Stefan Karpinski wrote:
>
> Lisp has already been down this path – fexprs 
> <https://en.wikipedia.org/wiki/Fexpr> were special forms with behavior 
> similar to R's functions, and they were deprecated in the 1980s in favor of 
> macros, https://en.wikipedia.org/wiki/Fexpr#Mainstream_use_and_deprecation
> :
>
> His central objection was that, in a Lisp dialect that allows fexprs, 
>> static analysis cannot determine generally whether an operator represents 
>> an ordinary function or a fexpr — therefore, static analysis cannot 
>> determine whether or not the operands will be evaluated. In particular, the 
>> compiler cannot tell whether a subexpression can be safely optimized, since 
>> the subexpression might be treated as unevaluated data at run-time.
>
>
> If Lispers think a feature is too dynamic and hard to understand, that's a 
> danger sign. In general, I wouldn't want to argue too much with Kent Pitman 
> :-)
>
> On the subject of Kent Pitman, here's a random bit of Lisp wisdom from this 
> interview 
> <http://developers.slashdot.org/story/01/11/03/1726251/kent-m-pitman-answers-on-lisp-and-much-more>
>  
> with him:
>
> I like Lisp's willingness to represent itself. People often explain this 
>> as its ability to represent itself, but I think that's wrong. Most 
>> languages are capable of representing themselves, but they simply don't 
>> have the will to. Lisp programs are represented by lists and programmers 
>> are aware of that. It wouldn't matter if it had been arrays. It does matter 
>> that it's program structure that is represented, and not character syntax, 
>> but beyond that the choice is pretty arbitrary. It's not important that the 
>> representation be the Right® choice. It's just important that it be a 
>> common, agreed-upon choice so that there can be a rich community of 
>> program-manipulating programs that "do trade" in this common representation.
>
>
> This is probably the best quote about homoiconicity I've read anywhere and 
> explains why the term is tricky to pin down.
>
> On Fri, Jul 24, 2015 at 2:21 PM, Brandon Taylor <brandon....@gmail.com 
> <javascript:>> wrote:
>
>> Macros seem to have a bunch of limitations. They can't be overloaded to 
>> take advantage of Julia's typing system. Their functionality can somewhat 
>> mimic evaluation within a function in its direct parent environment, but 
>> what if you want to write functions within your macro, or macros inside 
>> your macro, etc? Probably still possible to do many things, but it would 
>> invovle passing expressions back in forth in confusing ways, where as with 
>> environments, as long as an environment is kept attached to every 
>> expression, they can be immediately evaluated in any sub or subsub etc. 
>> environment.
>>
>
>

Reply via email to