GHC不接受GADT类型签名

The*_*nce 7 haskell

该声明不起作用:

data Identity a where {Identity :: (->) a (Identity a)}
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?

Cac*_*tus 2

至少从 GHC 7.8 开始,如果您打开 GADT 支持,那么您的代码将进行类型检查并执行您期望的操作

\n\n
{-# LANGUAGE GADTs #-}\ndata Identity a where {Identity :: (->) a (Identity a)}\n
Run Code Online (Sandbox Code Playgroud)\n\n

导致:

\n\n
GHCi, version 7.8.3: http://www.haskell.org/ghc/  :? for help\nLoading package ghc-prim ... linking ... done.\nLoading package integer-gmp ... linking ... done.\nLoading package base ... linking ... done.\n[1 of 1] Compiling Main             ( foo.hs, interpreted )\nOk, modules loaded: Main.\n\xce\xbb\xc2\xbb :i Identity\ndata Identity a = Identity a    -- Defined at foo.hs:2:1\n
Run Code Online (Sandbox Code Playgroud)\n