我正在使用GHCi 7.0.3以及实现类型级列表的以下程序:
{-# LANGUAGE TypeOperators #-}
data True
data False
-- List
data Nil
data Cons x xs
-- Type-level infix operator must begin with ':'
data x ::: xs
infixr 5 ::: -- set precedence level to 5 (tight)
Run Code Online (Sandbox Code Playgroud)
它编译,但当我测试它:
:t (undefined :: True:::Nil)
Run Code Online (Sandbox Code Playgroud)
(什么是转换为类型undefined时的类型True:::Nil?)我收到此错误:
Illegal operator `:::' in type `True ::: Nil'
Use -XTypeOperators to allow operators in types
Run Code Online (Sandbox Code Playgroud)
事实上,当我用旗帜开始GHCi时
-XTypeOperators
Run Code Online (Sandbox Code Playgroud)
我得到了预期的结果:
(undefined :: True ::: Nil) :: True ::: Nil
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么等效的pragma不起作用:
{-# LANGUAGE …Run Code Online (Sandbox Code Playgroud)