【发布时间】:2015-07-28 18:52:44
【问题描述】:
我最近在一次采访中被问到这个问题。我无法得到正确的答案。
当您在过程语言(如 C)和函数式语言(如 haskell)中重复调用具有相同参数的函数时,在哪种语言中您可能会得到不同的结果?我在 [this] (What is the difference between procedural programming and functional programming?) 上读到纯函数式语言总是会得到相同的答案。为什么函数式语言会这样,而过程式语言则不然?
【问题讨论】:
-
答案是理论多于实际,但如果您想要一个实际示例,请将共享数据的多线程和竞争条件视为过程范式中可能发生的副作用之一。将设计一个纯函数式编程工具来避免这种情况。您可能会发现此链接很有用:quora.com/Why-does-functional-programming-favor-concurrency
-
我理解它的方式是函数式语言尝试使用 pure functions 加上它们是声明性的,所以你告诉他们 what 你想做什么,编译器会弄清楚如何和因为它的理念是使用纯函数,所以它这样做没有副作用,而过程语言是必要的,你告诉他们如何做某事,他们只是一步一步地按照说明进行操作,而不在乎是否是纯函数。
标签: c haskell functional-programming procedural