相关疑难解决方法(0)

XTypeOperators扩展名不能用作pragma

我正在使用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)

haskell types

14
推荐指数
2
解决办法
1540
查看次数

标签 统计

haskell ×1

types ×1