Haskell编程:类型构建与递归应用
递归与边界条件
在编程中,递归是一种强大的技术,但需要注意的是,递归必须在某个点终止。这就是为什么需要边界条件,例如阶乘函数中的 fact 0 = 1 。不同的函数可能有完全不同的终止条件。
以下是相关练习:
1. 找出并修复之前定义的 fact 函数中的问题。
2. 通过递归的方式,使用加法来定义乘法函数。
3. 阿克曼函数是一个非常有趣的递归例子,你可以用 Haskell 实现它,但不要尝试调用超过 ackermann 4 1 的情况,因为即使是这个情况也可能需要花费数小时来计算。可以在纸上展开 ackermann 1 1 的计算过程,以理解其内部的递归机制。
已掌握的概念
在短时间内,我们已经掌握了以下概念:
1. 类型 :由其成员(也称为值)构成,我们介绍了两种简单的类型: Int 和 Char 。
2. 函数 :将一种类型的值映射到另一种(或相同)类型的值。
3. 类型函数 :从其他类型创建新类型,我们介绍了一些有用的复杂类型,如 String 和 ListInt 。
4. 组合 :这是函数式编程的核心,也是范畴论的本质,但目前我们暂不深入探讨。
超级会员免费看
订阅专栏 解锁全文
101

被折叠的 条评论
为什么被折叠?



