gpt4 book ai didi

Haskell 等效于 -rectypes

转载 作者:行者123 更新时间:2023-12-03 14:51:57 25 4
gpt4 key购买 nike

允许递归类型的 OCaml 的 -rectypes 的 GHC 等价物是什么?我在文档中没有看到。是隐藏功能吗?

最佳答案

不幸的是,没有一个,所有递归都必须经过一种数据类型。但是,如果您愿意忍受一些头痛,您仍然可以很容易地编写递归类型。

 newtype RecArr b a = RecArr {unArr :: RecArr b a -> b}

unfold = unArr
fold = RecArr

现在我们可以 foldunfold我们的 RecArr展开我们的递归,让我们心满意足。这有点痛苦,因为它是手动的,但完全可行。作为演示,这里是使用 fold 编写的 y 组合子和 unfold .
 y f = (\x -> f (unfold x x)) $ fold (\x -> f (unfold x x))

factorial f n = if n == 0 then 1 else n * f (n-1)

main = print (y factorial 5) -- prints 120

关于Haskell 等效于 -rectypes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22066986/

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