Another way of looking at it: case peforms pattern matching; it is _not_ an
equality test.

If you want equality tests, use if-then-else, or something like this (using
guards):

f x = case () of
  _ | x == bit0 -> 0
    | x == bit1 -> 1

The behaviour that initially threw me was that case works for various
literals (numbers and strings), but that's just pattern matching (see
3.17.2, item 7):
  http://www.haskell.org/onlinereport/exps.html#pattern-matching

Another shorthand for f, using guards:

f x
  | x == bit0 = 0
  | x == bit1 = 1


> -----Original Message-----
> From: Salvador Lucas [mailto:[EMAIL PROTECTED] 
> Sent: 27 January 2005 09:59
> To: [EMAIL PROTECTED]
> Cc: [email protected]
> Subject: Re: [Haskell-cafe] Question on "case x of g" when g 
> is a function
> 
> Because both bit0 and bit1 are free *local* variables
> within the case expression. So, they have nothing
> to do with your defined functions bit0 and bit1.
> 
> Best regards,
> 
> Salvador.
> 
> [EMAIL PROTECTED] wrote:
> 
> >Can a kind soul please enlighten me on why f bit0 and f bit1 
> >both return 0?
> >
> >  
> >
> >>bit0     = False
> >>bit1     = True
> >>f x = case x of
> >>        bit0 -> 0
> >>        bit1 -> 1
> >>    

-----------------------------------------
*****************************************************************
Confidentiality Note: The information contained in this   message, and any
attachments, may contain confidential   and/or privileged material. It is
intended solely for the   person(s) or entity to which it is addressed. Any
review,   retransmission, dissemination, or taking of any action in
reliance upon this information by persons or entities other   than the
intended recipient(s) is prohibited. If you received  this in error, please
contact the sender and delete the   material from any computer.
*****************************************************************

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to