logo
首页技术栈工具库讨论
shapely-data

shapely-data

shapely-data is a library for working with algebraic datatypes in a simple generic form made up of haskell's primitive product, sum and unit types: `(,)`, Either, and `()`, providing something like light-weight Structural Typing. The library was not designed to facilitate generic traversals or abstraction over different recursion schemes, but rather to (from most to least important) Provide a good story for (,)Either as a lingua franca/ generic representation that other library writers can use without dependencies, encouraging abstractions in terms of products and sums Support algebraic operations on ADTs, making types composable Support powerful, typed conversions between Shapely types Influences I've taken lots of inspiration, code, names, ideas, and type-level programming techniques from, in particular Oleg Kiselyov's HList work Edward Kmett's "categories" package Chris Taylor's "Algebra of Algebraic Datatypes" series at http://chris-taylor.github.io/blog/2013/02/10/the-algebra-of-algebraic-data-types/ Issues and Limitations: massage does not support mutually-recursive types and other more complicated recursion schemes, nor type application. While all classes except Shapely are considered closed, we don't do any tricks to enforce that in the API yet. In fancier functions that use type equality (e.g. coerce), types need to be unambiguous so type signatures are sometimes required. type errors, especially in massage and coerce, can be cryptic TH deriving hasn't been considered for fancier types like GADTs, existential types, etc. some of which may have sensible Shapely instances Performance hasn't been tested at all yet.
由 
bruceshi2021-01-13 收录
--
推荐
不推荐
更多信息
HACKAGE
carbal install shapely-data
查看
标签
根据用户添加的标签生成
暂无标签