【发布时间】:2019-10-06 11:19:14
【问题描述】:
我对 Haskell 非常陌生,并试图了解函数式编程的基础知识。我需要创建一个非纯常量next_nat :: Integer,它在第一次评估时会产生0,然后每次评估都会增加1。然后,我还需要在纯函数 f 上将其作为参数调用,例如 f next_nat,并根据参数评估检查结果。
我不知道该怎么做。如何为每次评估增加它?我是否需要其他变量来完成此任务?我现在才想到这个:
next_nat :: Integer
next_nat = 0
f :: Integer -> Integer
f x = x+1
我不认为这样是对的..
【问题讨论】:
-
你不能,如果它只是一个
Integer。这就是“纯粹功能性”含义的一部分。在 Haskell 中存在可变变量的方法,但是类型系统需要警告用户潜在的可变性 - 诸如Integer之类的“纯类型”是严格不可变的。 -
你可以用
succ代替f。
标签: haskell functional-programming purely-functional