It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened,
visit the help center。
已关闭8年。
我正在Haskell中编写Brainf * ck口译员。
我正在尝试打印
(chr (fromEnum $ getMem state))
,这只是Word8到Char的转换。
然后我想在特定情况下打印后返回新状态
'.' -> do hPutChar stdout (chr (fromEnum $ getMem state))
hFlush stdout
return state { prog_pointer = prog_pointer state}
我收到此错误消息
The function `hPutChar' is applied to six arguments,
but its type `Handle -> Char -> IO ()' has only two
In a stmt of a 'do' block:
hPutChar
stdout
(chr (fromEnum $ getMem state))
hFlush
stdout
return
(state {prog_pointer = prog_pointer state})
用这个代码
iterateBF :: BFState -> IO BFState
iterateBF state = case (program state !! prog_pointer state) of
--some more cases here--
'.' -> do hPutChar stdout (chr (fromEnum $ getMem state))
hFlush stdout
return state { prog_pointer = prog_pointer state}
我似乎无法弄清楚为什么我会收到此错误。
经过左转和sabauma的评论后,我将代码编辑为
iterateBF :: BFState -> IO BFState
iterateBF state = case (program state !! prog_pointer state) of
--some more cases here--
'.' -> do hPutChar stdout (chr (fromEnum $ getMem state))
hFlush stdout
return state { prog_pointer = prog_pointer state}
这次仅使用空格。
但是,我得到
parse error on input 'hFlush'
有人知道为什么吗?