我用递归函数在Haskell中实现一些数论函数的幂运算。我正在使用QuickCheck库来测试我的实现。为了简化我的测试,我使用了基库中的Natural数据类型,在quickcheck-instances库中定义的Natural任意实例,以及以下从Nat转换到Natural和从Natural转换到Nat的函数,考虑的是我自己定义的数据Nat: 在自然数上使用以下递归: 我的幂函数是
当涉及到将类别理论应用于泛型编程时,Haskell做得非常好,例如这样的库。但是,我不确定的一点是如何为多态类型创建泛型函数实例。 如果您有一个多态类型,比如列表或树,您可以创建一个from(Hask×Hask)到Hask的函数来表示它们。例如: 我试图找出是否有一种方法可以使这些类型(固定点)成为的一个通用实例,但我不确定如何实现。到目前为止,我遇到了以下两个问题: 1)首先,必须有一种方法来定
我想知道如何在Haskell中编写一个函数,将一个列表交织成单个列表,例如,如果我有一个名为
HList是共感的吗?如果是,一个共感类型如何包含有限值? 如果我们定义呢?这会被认为是什么和/或它会比有用吗?
为了澄清我的问题,让我用一种或多或少相同的方式重新措辞: 为什么Haskell中有超类/类继承的概念?导致这种设计选择的历史原因是什么?例如,为什么有一个没有类层次结构的基库,只有相互独立的类型库是如此糟糕? 此外,我在类继承中看到的一个可能不太好的事情是:我认为一个类实例会默默地选择一个对应的超类实例,这可能是为该类型实现的最自然的实例。让我们把单子看作函子的子类。也许可以有不止一种方法来定义某
F-代数是用一个内函子描述的,内函子的函数是:F a->a,如果你把F a看作一个表达式,把a看作求这个表达式的结果,这是有意义的,正如链接的文章所解释的那样。 作为F-代数的对偶,F-余代数对应的函数为a->F a。维基百科说F-余代数可以用来创建无限的、懒惰的数据结构。a->F functon如何允许创建无限的、懒惰的数据结构?此外,考虑到这一点,由于Haskell是它的核心lazy,那么Ha
我正在练习计算let表达式的问题,但我不理解这个表达式的输出。 下面是一个表达: 输出应该是[1,2,4,8]。有人能一步一步地解释为什么这是输出吗
在函数式编程语言中,对集合最原始/基本的操作是同态;它(大致)是
我正在尝试将后缀表达式转换为二叉树。My函数将标记(字符串)列表作为参数。 每次我给函数任何输入时,调试器都会写一条消息:函数“add”中的非穷举模式。 我的想法是:一个接一个地读取标记,然后确定它是运算符还是操作数。如果是操作数,则不要将任何节点保存到树中,并将数字存储到堆栈中。否则,我用操作符创建一个节点,从堆栈中弹出符号,将它们设置为新节点的子节点,并将操作符推送到堆栈中。 如果字符串列表为
我正在学习Haskell,我需要在Eclipse上安装Haskell插件。我首先安装了Eclipse Kepler,然后从http://eclipsefp.sf.net/updates安装了Haskell插件。插件安装正常,但是Haskell透视图在窗口>Open perspective>Other中不可见。不过,它可以在帮助>安装详细信息中看到。 我在这篇文章中遇到了类似的问题:安装在Eclip
例如,用Java编写的程序在很大程度上依赖于动态调度。
我知道Haskell中的许多名字都是受到范畴理论术语的启发,我正试图准确地理解类比的起点和终点。 我已经知道由于一些关于严格/懒惰和的技术细节,不(一定)是一个类别,但现在让我们先把那个放在一边。为了清楚起见, 的对象是具体类型,即kind的类型。这包括像这样的函数类型,但不包括像这样需要类型参数的函数类型。但是,具体类型属于。类型构造函数/多态函数更像是自然转换(或从到自身的其他更一般的映射),
对哈斯克尔来说真的很新鲜,我想不通。如何检查给定二叉树中的是否大于其子节点? 函数< code>descendingTree将获得一个< code>IntTree并将返回给我一个Boolean值,表明对于树中的每个节点,该节点的值是否大于其两个子节点的值;如果它有孩子的话。这个函数怎么写?
我刚刚开始学习Haskell,我正在尝试编写一个代码来搜索二叉树中的特定值,如果当前返回true,否则返回false这就是我的树结构的样子 我不确定如何继续遍历树并返回值的函数。我确实尝试了BFS和DFS,但我不确定一旦得到值后如何返回。 我的函数应该是什么样子的一个例子