Simon Peyton-Jones <[EMAIL PROTECTED]> writes:

> | The problem I see is that head/fromJust errors are usually
> |caused by *beginner* Haskellers, who don't know the
> |techniques for statically avoiding them.
> 
> I don't agree.  My programs have invariants that I can't
> always express in a way that the type system can
> understand. E.g. I know that a variable is in scope, so
> searching for it in an environment can't fail:
>         head [ v | (n,v) <- env, n==target ] (Maybe if I had
> an Oleg implant I could express all this in the type system
> -- but I don't.)

But instead of “blah (head [ v | (n,v) <- env, n==target ])
blah”, you could write

blah the_v_in_scope blah
where (the_v_in_scope:_) =  [ v | (n,v) <- env, n==target ]

and get a source-code located error message, couldn't you?
It's not very high tech, but it's what you would write if
head didn't exist, and it doesn't seem /that/ great an
imposition. 

-- 
Jón Fairbairn                                 [EMAIL PROTECTED]


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to