functional
我已经阅读了一些资料,其中 Haskell的范式被描述为imperative
范式。说这话的主要来源是维基百科。怎么可能afunctional
和imperative
范式同时存在,或者这是一个错误?
问问题
1145 次
2 回答
1
只要更改程序原子部分的顺序可以更改其输出,您就可以安全地对语言进行“命令式”攻击。几乎所有高级语言在某种程度上都是“声明式”的,并且有些语言比 Haskell 更好地支持“声明式编程”。
例如,在 C 中,enum
s 甚至 theswitch
都可以是“声明性的”,如果你以某种方式使用它的话。在“声明式”方向上更进一步的是 Prolog,您可以以声明式风格编写程序,但同样,您也可以使用 Prolog 编写命令式程序。
于 2017-04-15T13:03:29.850 回答
0
函数式语言在描述程序时通常使用声明性方法,Haskell 绝对是这些语言之一;Haskell 程序被描述为一组值声明(包括函数,因为函数是第一类值)。
但是,为了让计算机执行程序,它必须遵循一系列指令。为此,Haskell 提供了一种方法,您可以用一种特殊的语法(称为“do 语法”)来描述在执行时最终可以作为排序的内容。这种语法的每一行看起来都像是普通命令式语言中的下一个“语句”,并且表现得也差不多。但实际上,它只是函数应用的普通 Haskell 表达式的语法糖。
因为它仍然是用 Haskell 编写的,而且 Haskell 值和表达式在很大程度上是类型安全的,所以 Haskell 通常被称为“最好的命令式语言”。
于 2017-04-15T12:52:29.527 回答