On 07/11/2013 07:33 PM, Vlatko Basic wrote:
Hello Cafe,
I have
data CmpFunction a = CF (a -> a -> Bool)
that contains comparing functions, like ==, <, > ..., and I'm trying to
declare the Show instance for it like this
instance Show (CmpFunction a) where
show (CF (==)) = "== " -- no good
show f = case f of -- no good also
CBF (==) -> "=="
_ -> "Other"
but compiler complains for both with
This binding for `==' shadows the existing binding
imported from `Prelude' at src/Main.hs:6:8-11
(and originally defined in `ghc-prim:GHC.Classes')
Yes, (==) is a variable name in a pattern. Hence you are creating a new
definition for (==) bound to the constructor argument to CF, which hides
the (==) defined within the Eq type class.
Is it possible at all to compare two functions
Function types are opaque and values do not have an identity.
or how to solve this problem, to show some string for a specific function?
br,
vlatko
You could store the string alongside the function inside the data type
in some way.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe