是什么在类定义的管道是什么意思?

class (Monoid w, Monad m) => MonadWriter wm | m -> w where pass :: m (a,w -> w) -> ma listen :: ma -> m (a,w) tell :: w -> m ()

什么是上面的管道是什么意思? 该片段来自这里。

--------------解决方案-------------

其实,这是一个“函数依赖”。 在这种情况下,这意味着m唯一标识w -类型m确定类型w (这可能是一个更好的联系。)

分类:哈斯克尔 时间:2012-01-01 人气:0
分享到:

相关文章

  • 使用多个参数类型的类时Haskell中不明确的类型变量 2014-01-25

    我在Haskell中类型类模棱两可的类型变量挣扎: 此代码归结我的问题的基本知识: class Problem ab where foo :: a -> a bar :: b -> b baz :: a -> b -> (a, b) solve :: Problem ab => a -> b -> (a, b) solve ab = baz (foo a) (bar b) 它不会编译,说,我当我打电话foo和bar不使用该类型变量是一把双刃剑: Ambiguous

  • 在Haskell中,有没有什么方式来表达,一个类型应该是一个类型类的一个实例不止一种方式? 2012-08-07

    (对不起事先如果问题是愚蠢还是显而易见的 - 我没有很多的经验与哈斯克尔). 有表示该类型应该是类型类的实例在以上的方式的方法吗? 这是最好用一个例子来说明(这可能是有点傻):在数学上,我们可以说,一个半环是一组是在一个操作可交换独异(我们称之为此外,身份0)和下一个独异另一个(我们称之为乘法)与乘法分配律此外,要求和0歼乘法下的所有元素. 后者份在这里并不重要. 现在假设我有一个类型类Monoid (不要与混淆Data.Monoid class Monoid m where unit :: m

  • Java的接口和Haskell的类型类:异同? 2014-06-16

    虽然我学习Haskell,我注意到它的类型类,它应该是一个伟大的发明源自哈斯克尔. 然而,在类型类的维基百科页面: 程序员通过指定一组的功能或常数名,与它们各自的类型,即必须存在为每个属于类型一起限定一类型的类. 这似乎相当接近Java的接口 ,我(引用维基百科的接口(Java)的页面): 在Java编程语言的接口是类必须实现用于指定的接口(在术语的一般意义上的)一个抽象类型. 这两个长相颇为相似:类型类限制类的行为,而接口限制类的行为. 我不知道是什么在Haskell在Java类型等级之间的差

  • 在Haskell数据类型类型类 2013-03-15

    在Haskell中,可以定义一个数据类型,如下所示: data Point1 = Point1 { x :: Integer , y :: Integer } 人们可以使用类型类数据类型的内部变量? 如果是的话怎么样? 我知道这是可能做到这一点作为一个代数数据类型,对各种观点不同的定义,但我不知道是否有一种方法来做到这一点更紧凑和灵活的方式. 例如,某事沿着这个伪代码 ,它使用函数声明语法的线路: data Point2 = Point2 { x :: (Num a, Ord a) => a ,

  • Haskell的类型类和Go的接口 2012-02-17

    有什么相同和Haskell的类型类和Go的接口之间的区别是什么? 什么是两种方法的相对优点/缺点? --------------解决方案------------- 貌似只有在肤浅的方式就像是单一的参数类型类(构造函数的类)在Haskell围棋接口. 方法与接口类型相关联 对象(特定类型的)可具有接口的实现 目前还不清楚我走以任何方式是否支持通过接口有限的多态性,这是类型类的主要目的. 也就是说,在Haskell,接口方法可用于在不同类型的, class I a where put :: a ->

  • 为什么在Haskell中写类型声明? 2012-09-17

    我是新来Haskell和我试图理解为什么人们需要写类型声明. 由于哈斯克尔有类型推断,当我需要的第一行呢? 了ghci似乎与我用它来生成正确的输出":T' 我迄今发现的唯一的例子,似乎需要声明如下. maximum' :: (Ord a) => [a] -> a maximum' = foldr1 max 不过,如果我添加不再次需要"-XNoMonomorphismRestriction"标记声明. 如果是类型推断这里是行不通的具体情况,一个需要指定类型? 因为我

  • 是什么在Haskell的类型类Comonad? 2013-10-29

    是什么在Haskell的类型类Comonad? 作为Comonad从Control.Comonad在comonad包(即提供Comonad类型类也是任何其他包的说明欢迎). 我隐约听到Comonad,但我真正了解它是提供extract :: wa -> a ,形式的平行单子的return :: a -> ma . 在"真实"的代码,并指出"现实生活"积分奖励Comonad的使用. --------------解决方案------------- 这些链接可

  • 运动对Haskell中,类型定义,和警卫 2013-07-05

    第一个问题: 定义一个函数联接在一起使用分隔值列表的列表. 该类型定义应该是这样的: intersperse :: a -> [[a]] -> [a] 隔板应该列表的元素之间出现,但是不应该遵循的最后一个元素. 你的函数应该表现如下: ghci> :load Intersperse [1 of 1] Compiling Main ( Intersperse.hs, interpreted ) Ok, modules loaded: Main. ghci> intersperse '

  • 写一个方法返回受限于某一类型Scala中的Java类 2013-10-09

    例如,我有这样的: abstract class Vehicle class Car extends Vehicle 和我想写一个返回的Java类,但受限于类型的车辆只有类的方法. object CarDealer { def getVehicularClass: Class[Vehicle] = classOf[Car] } 我不能够得到以下不同的方式来工作: 我通常会解决这个问题的方法 object CarDealer { def getVehicularClass[A <: Vehicle

  • 在switch语句中使用类类型:是它比使用typeid操作符更好吗? 2012-01-01

    我看到了下面的事情有关C开关语句++标准$ 6.4.2. switch语句可以利用的条件. 该条件应为整数类型,枚举类型,或其中一个转换功能,以积分或枚举类型存在类的类型(12.3)的. 如果条件是类型的,条件是通过调用该转换功能转换,转换的结果被用于代替原有的条件的本节的其余部分 我想下面这是工作的罚款代码. class Test { public: operator int() { return 1; } }; int main() { Test obj; switch(obj) { cas

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.421 (s). 10 q(s)