Question on "case x of g" when g is a function

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

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
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

On Thu, 27 Jan 2005 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
If you compile with 'ghc -Wall' GHC should report that the identifier 'bit0' in the case expression shadows the global 'bit0' identifier. What you want to do is: f x = if x == bit0 then 0 else 1

If he really wanted to use a case-expression, he could write it this way:
f x = case x of False -> 0 True -> 1
--Ham At 1:02 PM +0100 2005/1/27, Henning Thielemann wrote:
On Thu, 27 Jan 2005 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
If you compile with 'ghc -Wall' GHC should report that the identifier 'bit0' in the case expression shadows the global 'bit0' identifier. What you want to do is:
f x = if x == bit0 then 0 else 1
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
participants (4)
-
Hamilton Richards
-
Henning Thielemann
-
Salvador Lucas
-
yeoh@cs.wisc.edu