我对函数范式很感兴趣,我什至尝试了一点 Scheme。但问题来了。在 Haskell 中,IO 可用于实现命令式行为。那么到底有多纯就不清楚了。函数式编程来自 lambda 演算,所以无副作用的想法是从那里来的?一个非常有趣且在我看来是正确的范例,但如果它不允许您与世界有任何联系,怎么可能想到它呢,因为 I/O 是一个可变状态。
我对函数范式很感兴趣,我什至尝试了一点 Scheme。但问题来了。在 Haskell 中,IO 可用于实现命令式行为。那么到底有多纯就不清楚了。函数式编程来自 lambda 演算,所以无副作用的想法是从那里来的?一个非常有趣且在我看来是正确的范例,但如果它不允许您与世界有任何联系,怎么可能想到它呢,因为 I/O 是一个可变状态。
Haskell 是纯粹的,因为它不能从类型系统中隐藏 I/O 和其他可变的世界状态,即 提到的每个操作都会在类型推断链中引入拼写错误。换句话说,使用 monad 的函数本身除了返回值外什么都不做,并且“不纯”的操作是在“幕后”执行的。