News for hackers. Stuff that matters.
Re:A difference between Haskell and Common Lisp by agentultra on Monday December 21, 2015 @10:31AM (#10771496)
Common Lisp has these kitchen-sink functions and macros because it was a standard developed by a committee whose goal was to incorporate several popular implementations of Lisp that each had several decades worth of of cruft. Lisp was big enough business at the time that having several mutually incompatible versions of Lisp was making knowledge sharing and business difficult. And having a standard was important for many reasons.

update: spelling and...

The real philosophical differences between Haskell and Lisp are basically apples and oranges. Lisp's composition strategy is the recursive application of symbolic expressions... the famous EVAL and APPLY. I don't know enough about the theoretical underpinnings of Haskell to make any kind of apt comparison but my intuition suggests that to do so would be moot. They're just too different.

Re:A difference between Haskell and Common Lisp by catnaroek on Monday December 21, 2015 @10:38AM (#10771537)
The theoretical foundation of Haskell is a typed lambda calculus called System F-omega. GHC Haskell has some additional features that are inexpressible in System F-omega.
Re:A difference between Haskell and Common Lisp by agentultra on Monday December 21, 2015 @10:46AM (#10771583)
There you go. Lisps tend to implement the untyped lambda calculus. Not too surprising or interesting...
Re:A difference between Haskell and Common Lisp by catnaroek on Monday December 21, 2015 @10:47AM (#10771592)
Lisp is far from any lambda calculus, even the untyped one. Lambda calculi don't have variadic functions, or any means to inspect their own syntax. Lambda abstraction is called abstraction for a reason - you can't inspect the expression inside. Lisp is really its very own kind of thing, which can be both very interesting (if you care about extensibility) and very irritating (if you care about abstraction). Racket, a dialect of Scheme, is the only serious attempt so far at providing an extensible language that protects user-defined abstractions.
Re:A difference between Haskell and Common Lisp by agentultra on Monday December 21, 2015 @11:18AM (#10771749)
Yeah... I tried to be soft in use of tend to, in that it's not exactly Lambda Calculus. You're entirely right.
Re:A difference between Haskell and Common Lisp by lisper on Monday December 21, 2015 @11:43AM (#10771930)
If you're interested in exploring the relationship of Lisp and the lambda calculus you might find this interesting:

http://www.flownet.com/ron/lc.html

https://www.youtube.com/watch?v=8qC1iZN5ozw

Re:A difference between Haskell and Common Lisp by gsg on Monday December 21, 2015 @02:50PM (#10773013)
Nice article, but the language embedded here is exactly the untyped lambda calculus, not a Lisp. You can tell because there are no tags: pair is given as \x y sel -> sel x y, which is indeed the textbook way to encode pairs but does not provide enough to write CONSP.

If you wished to implement a subset of Lisp in LC faithfully you would need an encoding for sums - which would not be all that hard, but does reflect the distance between Lisp values and the raw abstractions of the lambda calculus. (There is also the more substantial matter of RPLACD, etc, but let's just pretend that particular rabbit hole is not there.)

Re:A difference between Haskell and Common Lisp by lisper on Monday December 21, 2015 @03:11PM (#10773172)
> does not provide enough to write CONSP

Yes, that's a very good point. That's why I said, "If you want to explore the relationship between Lisp and ULC..." and deliberately not, "If you want to see how to embed Lisp in ULC..."

Writing CONSP actually makes a very interesting exercise.

Re:A difference between Haskell and Common Lisp by lispm on Monday December 21, 2015 @10:59AM (#10771642)
> standard developed by a committee

You know that Haskell was developed by a committee and was designed to bundle the various research streams on lazy/statically typed/ purely functional programming languages?

From the Haskell history:

> ... to discuss an unfortunate situation in the functional programming community: there had come into being more than a dozen non-strict, purely functional programming languages, all similar in expressive power and semantic underpinnings. ... It was decided that a committee should be formed to design such a language...

http://haskell.cs.yale.edu/wp-content/uploads/2011/02/histor...

Now about Common Lisp:

> it was a standard developed by a committee

That's basically nonsense.

The core of Common Lisp was designed by mostly five people (the 'gang of five': Scott Fahlman, Guy Steele, David Moon, Daniel Weinreb, and Richard P. Gabriel) in 1981/82. This group was supported by various Common Lisp implementors - around 30 people. Steele wrote the book on Common Lisp the Language and published it in 1984.

The ANSI Committee to expand and clean-up the language was set up years later.

> incorporate several popular implementations of Lisp that each had several decades worth of of cruft

That's also nonsense. Common Lisp is mostly based on a single language: Lisp Machine Lisp (aka Zetalisp), which is an extended version of Maclisp. Groups developing other successors to Maclisp joined: NIL, Spice Lisp and S1 Lisp. Lots of things in Zetalisp were new in Lisp and it took quite some time to get it into Common Lisp, which itself also brought new things into Lisp (like type annotations, sequences, ...).

So Common Lisp is directly based on Lisp Machine Lisp, which only was a few years old. NIL, S1 Lisp and Spice Lisp were brand new and morphed into Common Lisp. Spice Lisp was morphed into CMU Common Lisp, which forked the now popular SBCL.

The style to use keyword arguments in parameter lists was brand new in Lisp. It appeared in Lisp Machine Lisp just a few years before. LML did get it from an obscure Lisp dialect called MDL ('Muddle').

> Lisp was big enough business at the time that having several mutually incompatible versions of Lisp was making knowledge sharing and business difficult.

Lisp was emerging as an implementation/research language for the military. DARPA called for a Lisp standard, because they got several Lisp applications and each had its own version of Lisp...

Re:A difference between Haskell and Common Lisp by agentultra on Monday December 21, 2015 @11:28AM (#10771817)
As always, thank you for the clarification. My 6 month old is teething and waking me every 40 minutes starting around 3am. I'm mostly recalling from hazy, caffeine fueled memory. I like your posts -- so informative.

I admit to knowing little about Haskell's history. I had assumed it was an outgrowth of ML -- itself having an interesting history intertwined with the LCF theorem-proving system. Thanks for the clarification.

>> it was a standard developed by a committee

> That's basically nonsense.

In my much-abridged comment, yes I understand it could sound that way. I was referring to the entire process but mainly the ANSI committee. I was also under the, apparently mistaken impression, that there was more than one Lisp involved.

  In April 1981, after a DARPA-sponsored meeting concerning the splintered Lisp community, Symbolics, the SPICE project, the NIL project, and the S-1 Lisp project joined together to define Common Lisp. Initially spearheaded by White and Gabriel, the driving force behind this grassroots effort was provided by Fahlman, Daniel Weinreb, David Moon, Steele, and Gabriel. Common Lisp was designed as a description of a family of languages. The primary influences on Common Lisp were Lisp Machine Lisp, MacLisp, NIL, S-1 Lisp, Spice Lisp, and Scheme. Common Lisp: The Language is a description of that design. Its semantics were intentionally underspecified in places where it was felt that a tight specification would overly constrain Common Lisp esearch and use.
Quite right.. it's all there in ye old Hyperspec. Thank you for pointing that out.

Cheers.

Re:A difference between Haskell and Common Lisp by lispm on Monday December 21, 2015 @11:53AM (#10771982)
> My 6 month old is teething and waking me every 40 minutes starting around 3am.

Congratulations!

Re:A difference between Haskell and Common Lisp by lisper on Monday December 21, 2015 @11:38AM (#10771889)
> > it was a standard developed by a committee > That's basically nonsense. > The core of Common Lisp was designed by mostly five people

How is that different from what the OP said? It certainly seems fair to me to call a group of five people "a committee."

Re:A difference between Haskell and Common Lisp by lispm on Monday December 21, 2015 @11:45AM (#10771944)
> fair to me to call a group a group of five people "a committee."

Haha. So any team is a committee?

Re:A difference between Haskell and Common Lisp by lisper on Monday December 21, 2015 @12:11PM (#10772097)
No. But the team that designed CL was.
Re:A difference between Haskell and Common Lisp by eschew on Monday December 21, 2015 @03:09PM (#10773149)
Hmm. I looked at the list of five and thought to myself: "four legends and... who on earth is Scott Fahlman?" Turns out he invented the smiley! TIL