0 | module Derive.Barbie
 1 |
 2 | import public Derive.ApplicativeB
 3 | import public Derive.BarbieInfo
 4 | import public Derive.DistributiveB
 5 | import public Derive.FunctorB
 6 | import public Derive.RecordB
 7 | import public Derive.TraversableB
 8 | import public Control.Barbie
 9 | import Language.Reflection.Util
10 |
11 | ||| Generate declarations for all barbie interfaces
12 | ||| (`FunctorB`, `ApplicativeB`, and `TraversableB`)
13 | ||| for a given data type.
14 | export
15 | BarbieVis : Visibility -> List Name -> ParamTypeInfo -> Res (List TopLevel)
16 | BarbieVis vis nms p =
17 |   sequenceJoin [
18 |       FunctorBVis vis nms p
19 |     , ApplicativeBVis vis nms p
20 |     , TraversableBVis vis nms p
21 |     , DistributiveBVis vis nms p
22 |     ]
23 |
24 | ||| Alias for `BarbieVis Public`
25 | export %inline
26 | Barbie : List Name -> ParamTypeInfo -> Res (List TopLevel)
27 | Barbie = BarbieVis Public
28 |