6 syntax haskell state-machine algebraic-data-types
在 Haskell 中实现有限状态自动机,我想这样做:
\n\nzigzag :: Int -> Int -> [Int]\nzigzag low upp = fsa Incr low\n\n where\n data State = Incr | Decr\n\n fsa :: State -> Int -> [Int]\n fsa state n\n = n : case state of\n Incr | n < upp -> fsa Incr (n + 1)\n | otherwise -> fsa Decr (n - 1)\n\n Decr | n > low -> fsa Decr (n - 1)\n | otherwise -> fsa Incr (n + 1)\nRun Code Online (Sandbox Code Playgroud)\n\n但我不能:
\n\nerror: parse error on input \xe2\x80\x98data\xe2\x80\x99\nRun Code Online (Sandbox Code Playgroud)\n\n有没有比将State定义与分开更好的方法zigzag?
如果我可以使用显式枚举或数据类型,我不想用布尔值或数字隐式编码状态标识符。本地函数定义旨在实现模块化,以保护描述性名称空间的完整性,避免单一关系/使用混乱。我不明白为什么在这方面的数据定义应该被区别对待。
\n| 归档时间: |
|
| 查看次数: |
1108 次 |
| 最近记录: |