[Haskell-cafe] Re: Wikipedia on first-class object

Peter Gammie peteg42 at gmail.com
Fri Dec 28 04:39:07 EST 2007

On 28/12/2007, at 4:21 PM, Miguel Mitrofanov wrote:

>> How can I test that partial order in Haskell ?
> You can't. It's kinda internal. More specifically, if you try to  
> compute a value, which is not maximal in this order, you'll get an  
> error or loop forever. But you still can use such values in your  
> programs if you don't try to compute them. The point is, maximal  
> values are the only interesting ones, and all others are just  
> approximations.

Right, so when I say to GHCi:

Prelude> take 5 [1..]

and it says:


then it really has computed the entirety of the infinite sequence  
[1..], and not some approximation?

Perhaps it is better to say that in a lazy language both  
approximations and maximal values (least upper bounds of a chain) are  
interesting. In a strict language we only get our hands on the latter.  
The "take lemma" nicely captures this kind of thinking. (Ask google  
about the generalised take lemma, it's a nice paper.)

Also note that the notion of equality that's being thrown around is  
"observational equality", i.e. "x=y" implies that for all contexts  
(some expression with a suitably-typed hole), if you plug 'x' into the  
hole, and 'y' into hole, then those two expressions denote the same  
value. ((Roughly) equivalently, you can use the idea of Leibniz  
equality: there is no function that distinguishes them. These notions  
may diverge in Haskell - does anyone know?) As Lennart observed, any  
(semi-)computable equality predicate is not going to be that strong.


More information about the Haskell-Cafe mailing list