generated at
IsLabel型クラス

OverloadedLabelsで使っている

GHC.OverloadedLabelsで定義されている ref
hs
class IsLabel (x :: Symbol) a where fromLabel :: a


OverloadedLabelsで使えるのはわかったがこのclass単体で何をしているのかちゃんと見てないmrsekut


昔は個別のRecordごとにinstanceを定義する必要があった
hs
instance IsLabel "hoge" (Hoge -> Int) where fromLabel Hoge { hoge } = hoge
今はこれ一つ定義しておけば良い
hs
{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE ScopedTypeVariables #-} import GHC.OverloadedLabels (IsLabel (fromLabel)) import GHC.Records (HasField (getField)) instance HasField x r a => IsLabel x (r -> a) where fromLabel = getField @x