C++ vs Lisp

Georg Wrede georg at nospam.org
Wed Jun 11 03:05:13 PDT 2008


Neal Alexander wrote:
> Walter Bright wrote:
> 
>> An oldie, but some very thought provoking observations on what makes a 
>> language productive:
>>
>> http://faculty.cs.byu.edu/~irenelg/courses/330/CTM/Resources/C++-vs-Lisp.txt 
>>
> 
> It'll be interesting to see where D goes with the functional stuff.
> 
> Some nice things i think you should steal from Haskell:
> 
> 
> - One of the interesting things about programming/reading haskell code 
> is how a function's definition is structured. Each "where" clause is 
> like zooming in on a microscope or whatever. Most of the time you can 
> just look at the top levels and understand what the function does 
> without even looking at the inner definitions. This gives a lot of 
> locality to the code.
> 
> - Thinking in terms of map/fold/zip/recursion is really a lot nicer than 
> manually looping. Once you write code that can deal with 1 instance, it 
> pretty much automatically can be applied to multiple sequences without 
> any real changes.
> 
> - Function composition: (process . reverse . sort) list
> vs
> process(reverse(sort(list)))
> 
> - Partially applied functions
> 
> - Good type inference
> 
> - The "Maybe" monad provides a clear transport for possible failure. One 
> of the nice things about it is how you can force different error 
> handling behaviors. Short circuit, Pattern Match exception etc.
> 
> - Restricting mutability to the absolute bare minimum helps reason about 
> behavior.
> 
> 
> D already has the groundwork for the large majority of these features, 
> but unfortunately has to rely on template hacks. In my opinion, one of 
> the worst problems with D is going through the template system for alot 
> of the advanced features (currying, tuples etc). Its not as bad as Boost 
> but still.

At least D /has/ templates. And I suspect that once some template idiom 
becomes standard usage, Walter or Andrei may just decide to incorporate 
it into the language proper.

Thus, we have a seeding bed indoors, and the plants that really start to 
grow, get planted in the garden so they can grow into strong trees.

(Heh, organic growth. D should get an Environment Sticker!)




More information about the Digitalmars-d mailing list