gpt4 book ai didi

data-structures - 创建递归包含彼此的抽象数据类型的实例

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

给定两种定义如下的日期类型:

data Foo = Foo Bar String
data Bar = Bar Foo String

我该如何制作 foobar使得 fooFoo bar "foo"barBar foo "bar" ?

当我们将类型更改为:
data Foo = Foo Bar (MVar String)
data Bar = Bar Foo (MVar String)

最佳答案

只需使用 let就足够了(Haskell 中的 letletrec ,并且支持相互递归定义)。相互递归的定义在堆中设置循环,如下所示:

foo bar let rec
MVar初始化并没有真正以任何有意义的方式改变事物。

import Control.Concurrent

data Foo = Foo Bar (MVar String)

data Bar = Bar Foo (MVar String)

main = do
a <- newMVar "foo"
b <- newMVar "bar"

let foo = Foo bar a
bar = Bar foo b

return ()

关于data-structures - 创建递归包含彼此的抽象数据类型的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5810568/

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