所以我有一个等式,它返回一个给定int的列表。我想把它放到另一个等式中,看看长度是1还是2,如果长度是1,则返回True,如果长度不是,则返回False。 这是我能得到的最接近的结果,但它抛出了错误
假设我们有一个函数sqrt的示例,它为我们提供浮点数的平方根,但不会在负输入时中止。那么sqrt的类型是什么。 我被告知答案是: 然而,我不明白Maybe是做什么的,它仅仅意味着我们可以提供任何东西作为输入,还是意味着其他东西。
可以以与斐波那契数列类似的方式生成如下, 如何定义阶乘级数。 使现代化 令人尴尬的是,在添加这个问题之前,我已经试过了, 事实上,尾部的数字并不是连续的值。
我刚刚开始编写Haskell,基本上是因为我在寻找一种比C#更强大的数学语言,现在我很困惑。 现在我只想找到4的阶乘,然后打印出来,这是我到目前为止写的: 当我试着调试它时,我得到了 错误:(3,8)ghc:无法匹配预期类型
我是Haskell的初学者,正在尝试学习类型类和类型。我有以下示例(它代表了我正在研究的代数中的一个实际问题),其中我定义了一个仅包装Num实例的类型,以及一个定义二进制操作的typeclass。 当将定义为此实例时,我意识到我希望能够使用类型“改变”函数。需要说明的是:我想提供一个函数,并返回一个新的类型,它是的一个实例。假设我想这样做5次、10次,唯一的区别是不同的函数。上面的代码我当然可以复
@ganeshsittampalam在下面的一条评论中提出了一个重要的观点。我正在寻找“一个中途之家之间没有类型签名在所有和必须给一个精确的”。所以,我不是在寻找一个基于类型类的答案,我只是想让GHC为我的函数的未指定(或未完全限制)类型填充空白处。 是的,像这样的... ...可以工作,但仅限于参数,且函数不是无点的。是否有一种方法可以将这种技术应用于无点函数或返回值? @Rhymoid,如果你
有时我会在签名中指定某种类型,例如,而GHC将响应它无法推断其类型为。发生这种情况的原因是单一的,还是多种不同的可能原因?有时我解决,有时不解决;我希望有一个统一的理论。 这里有一个简短的例子。(要查看这段代码,包括解释它试图做什么的注释,请参阅此处。) 这会产生以下错误。
我希望能够使用O(1)摊销寻址与一个矢量类型,懒散地增长,根据要求的指数。 这可以通过使用:与进行配对来保持剩余部分,并使用用于分期O(1)访问的标准加倍算法来实现: 我可以只使用我的代码--但我更愿意重用别人的(比如,我还没有测试过我的代码)。 在某些包中是否存在具有这些语义的向量类型(从一个可能无限的列表中懒散地创建、O(1)分期访问)?
假设我想在Haskell中用 错误:
我可以在Haskell中编写受流融合影响的自己的地图函数吗? 为什么列表上的递归迭代不需要融合?这完全破坏了Haskell模式匹配的良好表达能力:! 前奏循环功能融合了吗?
更普遍的问题是Haskell为什么缺少“明显的”类型类,这个问题提供了很多有用的见解,有助于回答这个问题,但没有为这个特定的情况提供实际的解决方案。
有没有一种方法可以在Haskell中有类似于创建“构造函数别名”的东西?我的想法与类型别名类似,您可以给类型一个不同的名称,但它仍然以别名类型的方式表现。 我的用例是一个系统,其中我有一个指定的时间作为我要建模的一些对象的属性,所以。其中一些可能是“可变”时间,这意味着它可能还没有被分配一个时间,或者它拥有的时间是“可移动的”。所以。 我非常肯定我对Haskell非常了解,可以说不存在构造函数别名
我一直在尝试编写一个程序来实现任意域上的多项式,一种数学结构。我选择了Haskell作为编程语言,我使用了语言扩展。但是,我不明白为什么GHCi不能推导出的约束条件。 在我看来,保证是的实例,这意味着是的实例。所以调用就像调用一样,应该是合理的。此外,我已经编写了作为约束,并且的构造函数具有的形状,因此它还应该知道的类型是的实例。 显然,译员的想法不同。我哪里搞错了?
到目前为止还不错! 使用GADT语法,他还定义了数据类型SNAT: 基本上,他只将Nat类型包装到一个SNat构造函数中。为什么要这样做呢?我们有什么收获?数据类型Nat和SNat不同构吗?为什么SNat是单身,为什么Nat不是单身?在这两种情况下,每个类型都有一个值,即相应的自然数。