仆人论文的介绍包含以下示例 API 类型:
type Echo = "echo"
:> ReqBody ’[PlainText] String
:> Get ’[PlainText] String
我试图理解这个例子。它似乎在定义一个类型同义词,但似乎涉及到一些我以前没有见过的东西。
以下是我对此的三个问题:
- 类型定义中如何存在字符串文字?
"echo"
是一个字符串文字。我认为这些仅用于定义特定的字符串,并且不知道在类型声明中使用时这意味着什么。
- 符号是什么
:>
?
'servant' 包中这个符号的定义似乎是在这里定义的,看起来像这样:
data (path :: k) :> a
deriving (Typeable)
infixr 9 :>
我猜这:>
对应/
于 api 字符串中的 a,但看不到这个定义是如何实现的。
这是我第一次看到函数类型以外的非字母数字类型->
。
- 列表类型前的撇号是什么意思?
[PlainText]
我会理解简单地表示一个 PlainText 元素的列表,但相比之下我不明白是什么’[PlainText]
意思。