RE: [Haskell-cafe] Question on "case x of g" when g is a function

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:slucas@dsic.upv.es] Sent: 27 January 2005 09:59 To: yeoh@cs.wisc.edu Cc: haskell-cafe@haskell.org 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.
yeoh@cs.wisc.edu 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. *****************************************************************
participants (1)
-
Bayley, Alistair