Cli*_*ton 11 haskell type-families
让我们说我有一个内射型家庭 T
type family T a = b | b -> a
Run Code Online (Sandbox Code Playgroud)
我的第一个问题是有一种写作方式:
type family T' = the inverse of T
Run Code Online (Sandbox Code Playgroud)
无需重复所有实例T但反过来.
这样: T (X1 a (T' a)) = a
看起来这应该工作,因为这两个T和T'都射,给出一个方面,它是机械的工作出.
无论如何要写T'?
有了合适的扩展,可以写:
type T' b = forall a. T a ~ b => a
Run Code Online (Sandbox Code Playgroud)
例如,这是一个示例,显示您至少获得与此类型同义词的基本类型兼容性:
type family T a = b | b -> a
type instance T Int = Bool
f :: T' Bool -> Int
f x = x
Run Code Online (Sandbox Code Playgroud)