如何实现递归功能?

蓝天

下面定义了一个代数数据类型IntList:

data IntList = Empty | Cons Int IntList

函数intListProd计算IntList类型的乘积:

intListProd :: IntList -> Int
intListProd Empty      = 1
intListProd (Cons x l) = x * intListProd l

但是我不确定如何创建IntList类型。

我试过了 :

*Main> let x = Cons 3
*Main> :t x
x :: IntList -> IntList

但是如何创建IntList类型以便调用intListProd?

sepp2k

一个Cons单元格包含两件事:一个元素和一个尾巴。如果列表仅包含一个元素,则尾部为空(由null构造函数表示Empty)。因此,要表示包含3作为其唯一元素的列表,请使用:

let x = Cons 3 Empty

然后:t xIntList

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何实现作为Web Worker的递归功能?

来自分类Dev

如何停止递归功能?

来自分类Dev

如何停止递归功能?

来自分类Dev

Java实现强大的递归功能

来自分类Dev

如何使用递归功能创建列表

来自分类Dev

IO的递归功能

来自分类Dev

IO的递归功能

来自分类Dev

回文递归功能

来自分类Dev

加快PHP递归功能

来自分类Dev

带有递归功能的段故障

来自分类Dev

使用递归功能打印链表

来自分类Dev

递归功能不起作用

来自分类Dev

如何检查两个节点是否具有递归功能

来自分类Dev

如何检查两个节点是否具有递归功能

来自分类Dev

列表产品的递归功能不起作用

来自分类Dev

递归功能依赖项不起作用

来自分类Dev

具有推入参数的递归功能无法正常工作

来自分类Dev

Java中具有递归功能的垃圾回收

来自分类Dev

具有递归功能的并行计算

来自分类Dev

非尾递归功能执行不佳的实例

来自分类Dev

无法介入递归功能断点VS2013

来自分类Dev

在Intellij Idea中使用递归功能调试Scala代码

来自分类Dev

为什么随机数的递归功能停止?

来自分类Dev

用户友好的包装,用于尾递归功能

来自分类Dev

具有递归功能的F#中的背包问题

来自分类Dev

具有递归功能的并行计算

来自分类Dev

VBA递归功能不起作用

来自分类Dev

协助Agda的终止检查器执行递归功能

来自分类Dev

实现“分区”功能的递归