ServantのVerb型の定義の意味を理解する
from 2021/8/5 Servantのtutorialをやる
GHC拡張初心者にはちょうどよい塩梅?mrsekut.icon
Verbs.hsから、Verb型だけ定義できる最小を抜き出すとこうなる
code:hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE PolyKinds #-}
module Servant.API.Verbs where
import Data.Typeable (Typeable)
import GHC.Generics (Generic)
import GHC.TypeLits (Nat)
data Verb (method :: k1) (statusCode :: Nat) (contentTypes :: *) (a :: *)
deriving (Typeable, Generic)
使ってる謎のもの
謎のGHC拡張
DataKinds
PolyKinds
謎の型
GHC.TypeLitsのNat型
謎の型クラス
Typeable型クラス
Generic型クラス
そもそもVerbはどういう使われ方をするのか
最低限の解説
詳細は各リンクへ
Nat
DataKinds
PolyKinds
Typeable型クラス
Generic型クラス
Servant内では、
Servant.Docs.InternalのGToSample型クラスや、
Servant.API.GenericのGServantProduct型クラスに
Genericのinstanceにする定義がある