
The problem comes from using the interpreter and not from haskell.
But a very similar 'problem' can be achieved in generic Haskell:
x = do
let f 7 = "yes"
let f x = "no"
putStrLn (f 7)
Arguably the compiler could issue a warning here because the second
'let' keyword might be intended to be spaces. I don't know how common
these mistakes are though.
I think the original poster suggests that the shadowing function
should only be used when the original function doesn't match. That is
more problematic if you ask me though.
/J
On 27 January 2011 16:09, jean verdier
You have defined 2 functions that are called f and only the last definition is used (f x = "no"). The definition you want should be written let f 7 = "ok"; f x = "no" so the function is defined once. The problem comes from using the interpreter and not from haskell.
On Thu, 2011-01-27 at 15:55 +0100, Renzo Orsini wrote:
In studying Haskell, I produced the following output from GHC:
xxx-3:~ xxx$ GHCi GHCi, version 6.12.3: http://www.haskell.org/ghc/ :? for help Loading package ghc-prim ... linking ... done. Loading package integer-gmp ... linking ... done. Loading package base ... linking ... done. Loading package ffi-1.0 ... linking ... done. Prelude> let f 7 = "ok" Prelude> let f x = "no" Prelude> f 3 "no" Prelude> f 7 "no"
I suppose it is correct. However, for someone who is interested in the language, it seems very counterintuitive... Somebody would be so kind to explain to a neophyte this "feature" of the language?
Thank you very much.
Renzo _______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners