Tim*_*nor 2 generics haskell class type-constructor
我想构建一个haskell类型:
type SinglePP = (String,GLattice)
Run Code Online (Sandbox Code Playgroud)
GLattice定义为:
class GLattice l where
join :: l->l->l
....
Run Code Online (Sandbox Code Playgroud)
我有办法做到这一点吗?
type SinglePP a = (String, a)
Run Code Online (Sandbox Code Playgroud)
然后当你SinglePP在一个函数中使用时,限制a为aGLattice
someFunc :: GLattice a => SinglePP a -> ()
someFunc a = doMagic a
Run Code Online (Sandbox Code Playgroud)
如果您愿意,可以使用更多类型system-foo并使用存在类型,这样可以避免每个函数后的样板,但作为交换,您必须使用语言扩展和data带有显式构造函数的声明.这意味着当你想要a在类型声明中输入但输入更少时,可以进行更多的模式匹配.
但是可以推断出大多数类型.