Haskell中一个奇怪的类型类。什么';s";等级(等式e、基因表达式e、MonadRandom m)=>;GenProg m e | e->;m where";
事实上,我无法理解这一点 我猜GenProg是一个构造函数 这是否意味着:其模式匹配GenProg me或e->m的一个,其实例可以定义Haskell中一个奇怪的类型类。什么';s";等级(等式e、基因表达式e、MonadRandom m)=>;GenProg m e | e->;m where";,haskell,typeclass,Haskell,Typeclass,事实上,我无法理解这一点 我猜GenProg是一个构造函数 这是否意味着:其模式匹配GenProg me或e->m的一个,其实例可以定义 顺便问一下,我在哪里可以得到haskell中的所有语法?它是一个具有函数依赖性的多参数类型的类GenProg是类的名称,两个参数是m(必须是MonadRandom的实例)和e(必须是Eq和GenExpr的实例)。然后,|将实例头与函数依赖项e->m分开,这表示实例中的类型e决定了类型构造函数m,换句话说,对于任何类型e,最多可以有一个m,这样 class (E
顺便问一下,我在哪里可以得到haskell中的所有语法?它是一个具有函数依赖性的多参数类型的类
GenProg
是类的名称,两个参数是m
(必须是MonadRandom
的实例)和e
(必须是Eq
和GenExpr
的实例)。然后,|
将实例头与函数依赖项e->m
分开,这表示实例中的类型e
决定了类型构造函数m
,换句话说,对于任何类型e
,最多可以有一个m
,这样
class (Eq e, GenExpr e, MonadRandom m) => GenProg m e | e -> m where
出现在有效的程序中。(即,如果有多个这样的实例声明具有相同的e
,则会出现编译错误。)因此它是me或e->m。不是GenProg m e或e->m。thanks@user20100不,根本不是“或”。|
只是一个分隔符,是[…]语法的一部分。
instance GenProg m e where ...