gpt4 book ai didi

haskell - 在类型同义词声明中循环

转载 作者:行者123 更新时间:2023-12-02 07:38:33 26 4
gpt4 key购买 nike

我想用下面的代码试试 Haskell typedata

type Program a = Maybe a -> (Operation a, Maybe Program a)
data Operation a = Read a | Write a

Program 遵循延续传递风格 (CPS),Nothing 表示终止。 a 可以用 Int 或其他东西来实例化。

但是,GHC 提示说:

main.hs:1:1:
Cycle in type synonym declarations:
main.hs:1:1-58: type Program a =
Maybe a -> (Operation a, Maybe Program a)

我是 Haskell 的新手,所以我不明白为什么不允许这样做。我如何在 Haskell 中表达这种类型?

最佳答案

这里有两个问题:

  • 应该是Maybe (Program a),而不是Maybe Program a
  • 类型同义词不能递归

一个工作版本是:

newtype Program a = Program { runProgram :: Maybe a -> (Operation a, Maybe (Program a)) }
data Operation a = Read a | Write a

关于haskell - 在类型同义词声明中循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13737458/

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