Signature context in recursive groups
|Reported by:||nobody||Owned by:||nobody|
|Component:||Compiler (Type checker)||Version:||5.0|
|Type of failure:||None/Unknown||Test Case:|
|Related Tickets:||Differential Rev(s):|
Hello, I have a problem with signature contexts in mutually recursive groups. I want to write a scanner, which is able to read inputs of the form "int(3)" or "float(2,0)" and return corresponding values of the datatype: data Token = TInt Int | TFloat Float deriving (Read,Show) Both constructors have the same type. Therefore, I want to pass them to another function, which reads the corresponding number with the function reads: scan :: String -> [Token] scan ('i':'n':'t':str) = scanNumber TInt str scan ('f':'l':'o':'a':'t':str) = scanNumber TInt str scanNumber :: Read a => (a -> Token) -> String -> [Token] scanNumber tokenCons ('(':str) = case reads str of ((n,(')':str1)):_) -> tokenCons n:scan str1 _ -> error "no literal" main = print (scan "int(4)") In Hugs this program works fine, but ghc does not accept it, because of a mutually recursive group. Is this a feature or a bug? What does the Haskell 98 standard say? Thanks and regards, Frank Huch
Note: See TracTickets for help on using tickets.