باستخدام oneOf في هاسكل، وأخطاء في تجميع
سؤال
وأنا مبتدئ الكامل في هاسكل. أحاول تجميع هذا الملف هاسكل لقد قمت بتحميل لكنها إعطائي بعض الأخطاء.
No instance for (Text.Parsec.Prim.Stream s m Char)
arising from a use of 'letter' at Parse.lhs:649:26-31
Possible fix:
add an instance declaration for (Text.Parsec.Prim.Stream s m Char)
In the first argument of '(<|>)', namely 'letter'
In the expression: letter <|> oneOf "_"
In the definition of 'firstAllowed':
firstAllowed = letter <|> oneOf "_"
ولست متأكدا إذا كان هذا هو ما يكفي، ولكن هنا في قسم من الرمز مع الخطأ:
parseIdent = do { str <- indent
; return (makeIdent str)
} <?> "identifier"
where firstAllowed = oneOf "_" <|> letter
المحلول
في الجزء الذي نقل لا يبدو أن وظيفة firstAllowed
المحلية لاستخدامها في أي مكان. ماذا يحدث إذا قمت بإزالة خط where
؟
وبدلا من ذلك يمكن أن محاولة إضافة هذا النوع توقيع لfirstAllowed
:
where
firstAllowed :: Stream s m Char => ParsecT s u m Char
firstAllowed = ...
لا تنتمي إلى StackOverflow