File tree 1 file changed +24
-0
lines changed
1 file changed +24
-0
lines changed Original file line number Diff line number Diff line change @@ -480,6 +480,30 @@ data HaskellType code
480
480
-- ^ Dhall code that evaluates to a type
481
481
}
482
482
-- | Generate some Haskell types within a restricted scope.
483
+ --
484
+ -- Suppose generate your types using the following code:
485
+ --
486
+ -- > data MyBool = MyFalse | MyTrue
487
+ -- >
488
+ -- > Dhall.TH.makeHaskellTypes
489
+ -- > [ SingleConstructor "ListOfBool" "ListOfBool" "List Bool"
490
+ -- > , Scoped
491
+ -- > [ Predefined (TH.ConT ''MyBool) "Bool"
492
+ -- > , SingleConstructor "ListOfMyBool" "ListOfMyBool" "List Bool"
493
+ -- > ]
494
+ -- > , SingleConstructor "ListOfBoolAgain" "ListOfBoolAgain" "List Bool"
495
+ -- > ]
496
+ --
497
+ -- This generates the following Haskell types:
498
+ --
499
+ -- > data ListOfBool = ListOfBool Bool
500
+ -- > data ListOfMyBool = ListOfMyBool MyBool
501
+ -- > data ListOfBoolAgain = ListOfBoolAgain Bool
502
+ --
503
+ -- Therefore @Scoped@ allows you to override the type mapping locally. This
504
+ -- is especially handy in conjunction with @Predefined@, as it allows you to
505
+ -- use different representations of a Dhall type, e.g. a Dhall @List@ can be
506
+ -- a Haskell @Vector@, @Seq@ or a good old linked list.
483
507
| Scoped [HaskellType code ]
484
508
deriving (Functor , Foldable , Traversable )
485
509
You can’t perform that action at this time.
0 commit comments