functional-programming - 如何在 Ocaml 中表示一个简单的有限状态机?

标签 functional-programming ocaml state fsm

我用 C++ 和 Java 写过一些状态机,但从来没有用像 Ocaml 这样的函数式语言

问题是我不知道我是否可以从对象语言版本中调整代码,因为在 Ocaml 中,记录和变体比类更强大;

所以,我需要一个事件驱动的有限状态机(类似于 UML 中的分层),易于配置

有经验的人可以发布一个简单的示例吗?只是为了避免最常见的陷阱

谢谢 :)

编辑 16/03:没有可变状态可以做到吗?
而且我想以“FSM”的名称正确封装它,我应该选择一个模块还是一个类?

最佳答案

这里有一个很好的答案,它展示了 OCaml 在表示有限状态机方面的表现力和优雅:

automata in ocaml

对于更严重的使用,您可以尝试查看一些有限状态机库,例如 fsm 图书馆 here .

关于functional-programming - 如何在 Ocaml 中表示一个简单的有限状态机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9434050/

相关文章:

backbone.js - 你如何使用 Marionette JS 维护 View 状态?

javascript - React DatePicker 加载默认值,但当状态改变时不会改变

clojure - 在 Clojure 中建模游戏 UI 屏幕

java - 如何在 Java 中实现列表折叠

f# - 使用正确的副作用顺序在 OCaml/F# 中重新实现 List.map?

types - 查看复杂 OCaml 代码中的推断类型

带列表的 Scala foldLeft

c++ - C++ 中的快速函数对象?

ocaml - 如何将这样的 lisp 函数转换为 ocaml?

javascript - 如何让一个方法等待另一个方法完成?