On Dec 22, 2011, at 12:40 PM, Alexander Solla wrote:
>
> fst _|_ = _|_
>
> This expression is basically non-sense.
This is only "nonsense" because you refuse to accept that there are valid
formalisms other than your own that contain _|_ as a perfectly valid entity.
:-)
> Should we accept straight-forwardly ill-typed expressions like:
>
> data Strict a = Strict !a
> fst (Strict [1..])
>
> just because the argument is "strictly" a bottom? Bottom inhabits every type,
> but only vacuously.
No, each type has its own value for _|_, and your example demonstrates why this
makes more sense than making all _|_'s be equivalent.
> Things like seq, unsafeCoerce, and the like, are defined as (functions into)
> bottom in GHC.Prim, and the real semantic-changing magic they perform is done
> behind the scenes. It cannot be expressed as Haskell in the same Haskell
> context it is used. So assuming you mean something like:
>
> fst (seq [1..] (1,2))
>
> I must respond that you are using one of these magical keywords which change
> Haskell's semantics. They should be avoided.
So... now you want to throw out seq so that we no longer have a way to force
the evaluation of values, and the motivation for this is because when we throw
out _|_ then we no longer have a formal way to describe the semantics of seq?
> Refusing to use bottom in our semantics doesn't make life better by forcing
> us to stay within a total fragment of the language, it actually makes life
> harder by removing from us a useful tool for knowing *how* to stay within a
> total fragment of the language.
>
> I am collapsing the semantics for "distinct" bottoms into a single bottom and
> noting that it has no interpretation as a Haskell value.
I agree that if you collapse all of the distinct bottoms then you get a mess,
but since whenever we are talking about semantics in the Haskell community we
give each type has its own _|_ it is an incredibly moot point; it's like
saying that the problem with cars is that if you remove all of their wheels
then they have a lot of trouble getting anywhere at all. :-)
Cheers,
Greg
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe