Haskell是一种命令式还是声明性范式?

时间:2017-04-15 12:37:08

标签: haskell functional-programming imperative-programming declarative-programming

我已经阅读了一些资料,其中Haskell的范例被描述为functionalimperative范例。这说的主要来源是Wikipedia。如何同时使用functionalimperative范例,或者这是一个错误?

2 个答案:

答案 0 :(得分:1)

只要改变程序的原子部分的顺序可以改变它的输出,你就可以安全地打击"命令式的"关于语言。几乎任何高级语言都是声明性的#34;在某种程度上,有些语言支持"声明性编程"比Haskell更好。

例如,在C中,如果您以某种方式使用它,enum甚至switch可以是"声明性的"更进一步的"声明"方向是Prolog,你可以用声明式的方式编写程序,但同样,你也可以使用Prolog来编写命令式程序。

答案 1 :(得分:0)

功能语言在描述程序时通常使用声明性方法,Haskell绝对是这些语言中的一种; Haskell程序被描述为一组值的声明(包括函数,因为函数是第一类值)。

但是,为了使计算机执行程序,它必须遵循一系列指令。为此,Haskell有一种方法可以用特殊的语法(称为“do syntax”)来描述在执行时最终可以作为排序的内容。这种语法的每一行看起来都像普通命令式语言中的下一个“语句”,并且行为也是如此。但实际上,它只是函数应用程序的普通Haskell表达式的语法糖。

因为它仍然是用Haskell编写的,而且Haskell的值和表达式大部分都是类型安全的,所以Haskell通常被称为“最好的命令式语言”。