haskell - 了解 Haskell 类型级别文字

标签 haskell types infix-operator

看着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/

    相关文章:

    list - 需要解释基本的 do block 语法

    python - 检查列表中值的类型的意外结果 - 关于 boolean 值

    c# - 为什么这段代码没有编译?

    list - 空列表问题的头函数

    haskell - 这个 Haskell 函数是如何工作的?

    Prolog 中缀运算符定义

    javascript - 在 Mathjs 中定义中缀运算符

    .net - F# 多种类型的通用中缀运算符(fmap、applicative、bind 等)

    haskell - Pointfree 在 Haskell 中返回一个元组

    typescript - 如何根据值过滤记录键?