Глядя на Haskell Servant package, есть первоначальный пример определения WebService API как:Понимание Haskell Тип Уровень литералы
-- GET /date
type MyAPI = "date" :> Get '[JSON] Date
-- GET /time/:tz
:<|> "time" :> Capture "tz" Timezone :> Get '[JSON] Time
У меня возникли проблемы с пониманием того, что это значит, и хотел бы объяснить следующее:
:>
и:<|>
являются инфиксные конструкторами. Означает ли это объявление типа, что они определены здесь или они используются здесь? Или, может быть,:>
определен здесь, но:<|>
определен в другом месте? Или что-то другое? Не знаете, как читать этот тип.Что такое
'[JSON]
? Это какой-то литеральный список на уровне типа? Что делает цитата?
Спасибо. Документация GHC по литералам на уровне шрифта ничего не говорит о списках. Вы знаете, где это определено? – Ana
@ Стандартные типы всех типов продвигаемых типов автоматически определяются, когда используется расширение 'DataKinds'. [Подробнее см. Здесь.] (Https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/promotion.html) –