我想尝试Haskell type
并data
使用以下代码
type Program a = Maybe a -> (Operation a, Maybe Program a)
data Operation a = Read a | Write a
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
我是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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1166 次 |
最近记录: |