Cycle in type synonym declarations
I want to try out Haskell type
and data
with the following code
type Program a = Maybe a -> (Operation a, Maybe Program a)
data Operation a = Read a | Write a
Program
follows a continuation passing style (CPS) and Nothing
indicates termination. a
may be instantiated with Int
or something else.
However, GHC complains that:
main.hs:1:1:
Cycle in type synonym declarations:
main.hs:1:1-58: type Program a =
Maybe a -> (Operation a, Maybe Program a)
I'm new to Haskell so I don't understand why this is not allowed. How can I express this type in Haskell?
There are two problems here:
Maybe (Program a)
, not Maybe Program a
A working version would be:
newtype Program a = Program { runProgram :: Maybe a -> (Operation a, Maybe (Program a)) }
data Operation a = Read a | Write a
链接地址: http://www.djcxy.com/p/33152.html
上一篇: 我如何从整数转换为分数
下一篇: 循环类型同义词声明