让我们想象一下Brainf*ck的虚拟子集:
+ 递增计数器
- 递减柜台
一个简单的程序:
program = "++++--" -- should evaluate to 2
有状态的评估功能:
eval :: Char -> State Int Char
eval '+' = do x <- get
put (x + 1)
return 'I'
eval '-' = do x <- get
put (x - 1)
return 'D'
Run Code Online (Sandbox Code Playgroud)
你会如何评价该计划?(fold对我来说看起来像是一个但是我无法理解它,并且它感觉不是正确的做法...)