[Haskell-beginners] How to avoid evaluating the second (undefined) argument of a Boolean AND operation?

Felipe Almeida Lessa felipe.lessa at gmail.com
Thu Jun 23 01:21:55 CEST 2011


On Wed, Jun 22, 2011 at 8:07 PM, Jack Henahan <jhenahan at uvm.edu> wrote:
> Use
>
>    myAND F _ = F
>
> instead of using x.

Actually that doesn't change anything and both definitions are the
same thing.  The problem here is that "type checking is not lazy" =).
The second argument of myAND in "myAND F (1/0)" isn't being evaluated
at all; actually your code isn't running at all.  What is being
reported is a type error, not a runtime error.  Try one of these
instead:

  myAND F undefined
  myAND F (error "foo")
  myAND F (let x = x in x)
  myAND F (unsafePerformIO $ launchMissiles)

Cheers! =)

-- 
Felipe.



More information about the Beginners mailing list