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

Albert Y. C. Lai trebla at vex.net
Thu Dec 27 21:38:20 EST 2007


Achim Schneider wrote:
> [n..] == [m..], 
> 
> the first thing I notice is
> 
> n == m && n+1 == m+1
> 
> , which already expresses all of infinity in one instance and can be
> trivially cancelled to
> 
> n == m
> 
> , which makes the whole darn thing only _|_ if n or m is _|_, which no
> member of [n..] can be as long as n isn't or 1 or + has funny ideas.
> 
> I finally begin to understand my love and hate relationship with
> formalisms: It involves cuddling with fixed points while protecting
> them from evil data and fixed points they don't like as well as
> reduction strategies that don't see their full beauty.

There is a formalism that says [n..]==[n..] is true. (Look for 
co-induction, observational equivalence, bismulation, ...)

There is a formalism that says [n..]==[n..] is _|_.

We know of implemented programming languages that can give an answer 
according to the latter formalism.

If you know of an implemented programming language that can give an 
answer according to the former formalism, and not just for the obvious 
[n..] but also map f xs == map g xs (for example), please spread the news.

So it comes down to which formalism, not whether formalism.

I have long known the problem with informalisms. They are full of "I 
know", "obviously", and "ought to be". It is too tempting to take your 
wit for granted. When you make a deduction, you don't easily see whether 
it is one of a systemtic family of deductions or you are just cunning. 
You only see what you can do; you don't see what you can't do, much less 
what you can't make a computer do.

Formalisms do not tolerate such self-deception. You think something 
ought to be obvious? Write them down as axioms. Now with all your 
obviousness nailed down black on white, you have a solid ground on which 
to ask: what can be done, what can't be done, what can be done on a 
computer, how practical is it? Humility and productivity are thus restored.


More information about the Haskell-Cafe mailing list