【发布时间】:2012-10-29 08:55:40
【问题描述】:
假设我们定义了一个函数c sum(a, b),函数式编程风格,它返回其参数的总和。到目前为止,一切都很好; FP的所有优点都没有问题。
现在假设我们在具有动态类型和单例、有状态错误流的环境中运行它。然后假设我们传递了一个a 和/或b 的值,而sum 并非设计用于处理(即不是数字),它需要以某种方式指示错误。
但是怎么做呢?这个功能应该是纯粹的和无副作用的。它如何将错误插入到全局错误流中而不违反它?
【问题讨论】:
-
这就是为什么通常纯函数和动态类型不能很好地结合在一起。
-
@JakubHampl 是吗?即使在静态类型的语言中,您仍然会遇到运行时错误(例如被零除),所以我看不出这将如何避免 Core Xii 正在谈论的问题(尽管我承认我还没有完全理解这个问题) . Core Xii:错误流到底是什么?
-
@sepp2k 在这个问题的上下文中,“错误流”是一些用于报告错误的全局系统机制,例如std.err、异常等;通常是带外的,但不是必须的。
-
@CoreXii 您是在问如何在(纯)函数式编程语言中进行 IO?如果是这样,不同的语言使用不同的方式,这绝对是重复的。还是您的意思是“我们如何在不移动 IO monad 中的所有功能的情况下实现错误消息(或调试输出)(假设这就是语言实现 IO 的方式)?”
-
@sepp2k 我不知道。我在问如何避免对我来说似乎不可避免的状态。
标签: functional-programming state