Description
Dhall instances for composite records.
README.md
composite-dhall
ToDhall
and FromDhall
instances for composite records.
You lets you use extensible records over any base functor that is representable in dhall.
You can parse normal records:
{ a = "foo"
, b = +5 }
using a Record
like:
withLensesAndProxies
[d|
type A = "a" :-> Text
type B = "b" :-> Int
|]
type MyRec = Record '[A, B]
This also works for Rec Maybe
and Rec []
.
{ a = Just "foo"
, b = Just +5 }
type MyMaybeRec = Rec Maybe '[A, B]
Similarly you can use a contravariant functor as the base functor to parse a collection of templates for different types.
{ a = \(x : Text) -> "Hello ${x}."
, b = \(y : Integer) -> "You are ${Integer/show y} years old."
}
newtype TextTemplate a = TextTemplate (Op Text a)
deriving newtype (FromDhall)
newtype TextTemplates = TextTemplates {unTemplates :: Rec TextTemplate '[A, B]}
deriving (FromDhall) via (Rec (Op Text) '[A, B])