1
我想用Data.Binary.Get monad解析Haskell中的簡單二進制文件。在Haskell中用Data.Binary.Get解析簡單的二進制文件
我的代碼的簡化版本是這樣的:
data MsgString = Definition_msg {
msg_no :: Word16
} deriving (Show)
parseDef :: Get MsgString
parseDef = do
msg_no <- getWord16le
return $ Definition_msg msg_no
parseMain :: Get [MsgString]
parseMain = do
bit <- getWord8
msg <- parseDef
return msg:parseMain
而我得到的錯誤是:
Prelude> :l example.hs
[1 of 1] Compiling Main (example.hs, interpreted)
example.hs:23:17:
Couldn't match expected type `[m MsgString]'
against inferred type `Get [MsgString]'
In the second argument of `(:)', namely `parseMain'
In the expression: return msg : parseMain
In the expression:
do { bit <- getWord8;
msg <- parseDef;
return msg : parseMain }
Failed, modules loaded: none.
有人能看到什麼,我做錯了什麼?
謝謝!
謝謝!我現在看到我做錯了什麼。 :)關於程序的終止 - 我推遲了,直到我解決了這個問題。再次感謝你的幫助! – dirtdog