函数式编程中的严格性、惰性与懒列表应用
1. 严格函数与非严格函数
在函数式编程里,严格性和非严格性是函数的重要特性。严格函数会始终对其参数进行求值,而大多数编程语言中的函数默认都是严格函数。例如在 Scala 中,以下的 square 函数就是严格函数:
def square(x: Double): Double = x * x
当调用 square(41.0 + 1.0) 时, square 函数接收到的是已经求值后的 42.0 。若调用 square(sys.error("failure")) ,会先抛出异常,因为 sys.error("failure") 会在进入 square 函数体之前就被求值。
非严格函数则可以选择不对一个或多个参数进行求值。像 Scala 中的短路布尔函数 && 和 || 就是非严格函数。 && 函数只有在第一个参数为 true 时才会对第二个参数求值:
scala> false && { println("!!"); true } // 不会打印任何内容
res0: Boolean = fals
超级会员免费看
订阅专栏 解锁全文
841

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



