我已经阅读了一些资料,其中Haskell的范例被描述为functional
但imperative
范例。这说的主要来源是Wikipedia。如何同时使用functional
和imperative
范例,或者这是一个错误?
答案 0 :(得分:1)
只要改变程序的原子部分的顺序可以改变它的输出,你就可以安全地打击"命令式的"关于语言。几乎任何高级语言都是声明性的#34;在某种程度上,有些语言支持"声明性编程"比Haskell更好。
例如,在C中,如果您以某种方式使用它,enum
甚至switch
可以是"声明性的"更进一步的"声明"方向是Prolog,你可以用声明式的方式编写程序,但同样,你也可以使用Prolog来编写命令式程序。
答案 1 :(得分:0)
功能语言在描述程序时通常使用声明性方法,Haskell绝对是这些语言中的一种; Haskell程序被描述为一组值的声明(包括函数,因为函数是第一类值)。
但是,为了使计算机执行程序,它必须遵循一系列指令。为此,Haskell有一种方法可以用特殊的语法(称为“do syntax”)来描述在执行时最终可以作为排序的内容。这种语法的每一行看起来都像普通命令式语言中的下一个“语句”,并且行为也是如此。但实际上,它只是函数应用程序的普通Haskell表达式的语法糖。
因为它仍然是用Haskell编写的,而且Haskell的值和表达式大部分都是类型安全的,所以Haskell通常被称为“最好的命令式语言”。