【发布时间】:2020-01-29 00:34:07
【问题描述】:
我在函数中使用了返回类型(使用包haskell-src-exts):
import Language.Haskell.Exts.Syntax (Exp(..))
import Language.Haskell.Exts.SrcLoc (SrcSpanInfo(..))
:k Exp SrcSpanInfo
Exp SrcSpanInfo :: *
这是一种类型。到目前为止一切顺利。
但现在我想更好地打字:
:set -XDataKinds
> :k 'List
'List :: l -> [Exp l] -> Exp l
所以,这东西想要更多的东西。好吧,我能做到。
> :k 'List SrcSpanInfo
'List SrcSpanInfo :: [Exp *] -> Exp *
一步之遥。好的。
> :k 'List SrcSpanInfo [Exp SrcSpanInfo]
<interactive>:1:19: error:
• Expected kind ‘[Exp *]’, but ‘[Exp SrcSpanInfo]’ has kind ‘*’
• In the second argument of ‘ 'List’, namely ‘[Exp SrcSpanInfo]’
In the type ‘ 'List SrcSpanInfo [Exp SrcSpanInfo]’
在这一点上,我感到很困惑。 对我来说,感觉就像我给它的东西绝对是它所要求的。 究竟是什么意思?
【问题讨论】:
标签: haskell data-kinds