
Thanks for the answers. I guess my example with the colors was misleading. In that case it makes sense to use an abstract type. In my case an abstract type is not ok. What I want is a set of int constants i.e. some names for some ints that I will use in my code, to avoid magic numbers in the code. Of course I could define them like this: red = 1 blue = 2 ...but that would pollute the namespace Also I don't want to define them in a separate file. I would like to define them in the same file where I use them. I already tried this approach: module Main where import .... module Colors where red = 1 blue = 2 ..... but the compiler complains at the line "module Colors where". It says: parse error on input `module' In Haskell this would usually be an abstract type:
data Color = Red | Blue | ...
You could then use functions to convert between integers and colors.
fromColor :: Color -> Int toColor :: Int -> Maybe Color
You could also derive an Enum instance and get the conversion functions 'fromEnum' and 'toEnum' for free, although in that case the 'toEnum' function is less safe (no Maybe):
data Color = Red | Blue | ... deriving Enum
fromEnum :: Color -> Int toEnum :: Int -> Color
Greets, Ertugrul
-- nightmare = unsafePerformIO (getWrongWife >>= sex) http://ertes.de/
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners