6

Haskell Servant パッケージを見ると、 Web サービスAPI を次のように定義する最初の例があります。

             -- GET /date
type MyAPI = "date" :> Get '[JSON] Date
             -- GET /time/:tz
        :<|> "time" :> Capture "tz" Timezone :> Get '[JSON] Time

これが何を意味するのか理解に苦しむので、次の説明をいただければ幸いです。

  1. :>および:<|>中置コンストラクターです。この型宣言は、ここで定義されているということですか、それともここで使用されているということですか? それとも:>、ここで定義されているが、:<|>他の場所で定義されているのでしょうか? または、他の何か?このタイプの読み方がわかりません。

  2. とは'[JSON]? これはある種の型レベルのリテラル リストですか? 引用は何をしますか?

4

2 に答える 2

2

記録のために、 と の実際の定義を次に示し:<|>ます:>

-- that's really like a pair of an 'a' and a 'b'...
-- that can be chained in a nice way, as opposed to nested pairs.
data a :<|> b = a :<|> b
data a :> b

後者にはコンストラクターがありません。これは、リクエスト ハンドラーを組み合わせるときに必要ないためです。一方、:<|>複数のリクエスト ハンドラーの説明をまとめるのではなく、値レベルで複数のリクエスト ハンドラーを結合するときにシンボルを再利用しています。:<|>演算子も使用するタイプレベルのエンドポイント。ただし、後者の場合は:<|>型コンストラクターを参照していますが、ハンドラーで使用している場合は:<|>データコンストラクターを参照しています。

于 2015-10-29T11:26:39.933 に答える