Signature context in recursive groups
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
Trac metadata
Trac field |
Value |
Version |
5.0 |
Type |
Bug |
TypeOfFailure |
OtherFailure |
Priority |
normal |
Resolution |
ResolvedWon'tFix |
Component |
Compiler (Type checker) |
Test case |
|
Differential revisions |
|
BlockedBy |
|
Related |
|
Blocking |
|
CC |
|
Operating system |
|
Architecture |
|