[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Haskell 1.3 (lifted vs unlifted)
Resent-Message-Id: <199509120937.LAA24403@animal.cs.chalmers.se>
From: wadler@dcs.gla.ac.uk
Subject: Re: Haskell 1.3 (lifted vs unlifted)
Date: Tue, 12 Sep 95 10:32:36 BST
To: haskell@dcs.gla.ac.uk, jl@cse.ogi.edu, rjmh
Old-Resent-From: haskell-request@dcs.gla.ac.uk
Errors-To: haskell-request@dcs.gla.ac.uk
Approved: haskell@dcs.gla.ac.uk
Resent-Date: Tue, 12 Sep 1995 10:33:33 +0100
Resent-From: kh@dcs.gla.ac.uk
Resent-To: haskell-list-dist@dcs.gla.ac.uk
To the Haskell 1.3 committee,
Two choices in the design of Haskell are:
Should products be lifted?
Should functions be lifted?
Currently, the answer to the first is yes, and to the second is no.
This is ad hoc in the extreme, and I am severely embarrassed that I did
not recognise this more clearly at the time we first designed Haskell.
Dear committee, I urge you, don't repeat our earlier mistakes! John
Hughes makes a compelling case for yes; and mathematical cleanliness
makes a compelling case for no. I slightly lean toward yes. (John is a
persuasive individual!) But unless someone presents a clear and clean
argument for answering the two questions differently, please answer
them consistently.
If both questions are answered yes, then there is a choice as to
whether or not to have a Data class. Indeed, there are two choices:
Should polymorphic uses of seq be marked by class Data?
Should polymorphic uses of recursion be marked by class Rec?
John Launchbury and Ross Paterson have written a beautiful paper urging
yes on the latter point; ask them for a copy. Here, I have a mild
preference to answer both questions no, as I think the extra
complication is not worthwhile. But again, please answer them
consistently.
Cheers, -- P