GenProg m e | e -> m where"-6ren"> GenProg m e | e -> m where"-class (Eq e, GenExpr e, MonadRandom m) => GenProg m e | e -> m where 确切地说,我无法理解这个GenProg m e | e -> -6ren">
gpt4 book ai didi

haskell - Haskell 中一个奇怪的类型类。什么是 "class (Eq e, GenExpr e, MonadRandom m) => GenProg m e | e -> m where"

转载 作者:行者123 更新时间:2023-12-01 08:00:16 25 4
gpt4 key购买 nike

class (Eq e, GenExpr e, MonadRandom m) => GenProg m e | e -> m where

确切地说,我无法理解这个GenProg m e | e -> m

我猜 GenProg 是一个构造函数。

这是否意味着:其模式匹配 GenProg m ee -> m 的实例可以被定义?

顺便问一下,我从哪里可以获得 haskell 中的所有语法?

最佳答案

它是一个具有函数依赖性的多参数类型类。 GenProg是类名,两个参数是m(必须是MonadRandom的实例)和e(必须是 EqGenExpr 的实例)。然后 | 将实例头与函数依赖 e -> m 分开,这表示实例中的类型 e 决定了类型构造函数m,换句话说,对于任何类型e,最多可以有一个m这样一个

instance GenProg m e where ...

出现在有效程序中。 (即,如果有多个这样的实例声明具有相同的 e,则会出现编译错误。)

关于haskell - Haskell 中一个奇怪的类型类。什么是 "class (Eq e, GenExpr e, MonadRandom m) => GenProg m e | e -> m where",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8477189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com