gpt4 book ai didi

haskell - 在 Clojure/Haskell 中管理不变量

转载 作者:行者123 更新时间:2023-12-02 04:08:17 24 4
gpt4 key购买 nike

我一直在比较 OOP 和 FP 方法,但我无法专注于函数式编程中的一件事 - 保持数据结构中的不变量。

例如,想象以下要求。

我们有一个项目列表,每个项目都有任务列表和分配的成员列表。每个任务都可以分配一个工作人员,但只能从项目分配的成员列表中分配。

我可以想象如何用 OOP 语言(例如 Java)解决这个问题,通过添加所需的检查和异常,在我看来,这将导致更健壮的代码。

但是由于数据与 FP 中的行为分离,我应该如何解决 FP 中的相同问题,比如在 Clojure 或 Haskell 中?

最佳答案

在 Clojure 中,可以在任何函数上指定任意 :pre:post 条件。这是 documentation 中的示例:

(defn constrained-sqr [x]
{:pre [(pos? x)]
:post [(> % 16), (< % 225)]}
(* x x))

还有一个非常有趣的库core.contracts实现 contracts在 Clojure 中。

关于haskell - 在 Clojure/Haskell 中管理不变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27380371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com