Skip to content

Dependently-typed sums and products, tagged by field name

License

Notifications You must be signed in to change notification settings

xal-0/named-sop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

named-sop: Dependently-typed sums and products, tagged by field name

Hackage Build Status

Sums and Maps (products) indexed by a typelevel map of their field (or constructor) names and types. They can be combined and split again; their typelevel map is sorted to ensure that the end result is independent of the order you combine it in.

"Data.NamedSOP.Generic" contains functions for automatically converting between types with a Generic instance and named sums of products:

>>> data A = C { a :: Int, b :: Bool } 
>>>          | D Int Bool deriving (Generic)
>>> :t genSum (C 3 True)
NSum
 '[ "_C" ':-> NMap '[ "a" ':-> Int, "b" ':-> Bool],
    "_D" ':-> NMap '[ "_1" ':-> Int, "_2" ':-> Bool]]

About

Dependently-typed sums and products, tagged by field name

Resources

License

Stars

Watchers

Forks

Packages

No packages published