看着Haskell Servant package ,有一个定义 web 服务 API 的初始示例:
-- GET /date
type MyAPI = "date" :> Get '[JSON] Date
-- GET /time/:tz
:<|> "time" :> Capture "tz" Timezone :> Get '[JSON] Time
我无法理解这意味着什么,希望能得到以下解释:
:>
和 :<|>
是中缀构造函数。这种类型声明是否意味着它们是在这里定义的还是在这里使用的?或者也许 :>
在这里定义,但 :<|>
在别处定义?或者是其他东西?不知道如何阅读这种类型。 '[JSON]
?这是某种类型级别的文字列表吗?报价单有什么作用? 最佳答案
此处使用(中缀)构造函数,它们必须在 data
中的其他地方定义。或 newtype
声明。 type
声明永远不会产生任何类型的构造函数。'[JSON]
确实是一个类型级别的列表,相当于JSON ': '[]
.单引号表示数据构造函数被提升为类型构造函数。我不确定这有什么深刻的意义,但至少它避免了数据构造函数和类型构造函数可以共享名称这一事实可能引起的混淆。
关于haskell - 了解 Haskell 类型级别文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33406235/