gpt4 book ai didi

functional-programming - 函数式编程和声明式编程有什么区别?

转载 作者:行者123 更新时间:2023-12-04 18:42:46 24 4
gpt4 key购买 nike

我想了解函数式编程和声明式编程之间的区别。

你能告诉我一个例子,代码是声明性的,但还没有功能吗?
是否有可能是功能性的但不是声明性的,即命令式的?

最佳答案

PROLOG 是一种非函数式声明性语言。 PROLOG 中的编程是陈述一些事实,然后提出问题,系统试图验证或否认这些问题。

例子:

human(socrates).       // "Socrates is a human."
mortal(X) :- human(X). // "If X is a human, then X is mortal" or
// "All humans are mortal."

? mortal(socrates) // Is Socrates mortal?
Yes.
? mortal(X) // Who is mortal?
socrates
? mortal(pythagoras).
No. // since system doesn't know about any human except Socrates

另一种众所周知的声明性但不是功能性的语言是 SQL。

请注意,不仅没有函数作为第一类值。在 PROLOG 示例中,根本没有函数!可以肯定的是,SQL 和 PROLOG 都有一些内置函数,但没有办法让您编写自己的函数。人们可以认为规则
mortal(X) :- human(X).

是一个函数,但它不是,它是一个推理规则。因此,声明性的非函数式语言。

对于您问题的第二部分:当然可以用函数式编程语言编写命令式代码。 Simon Peyton Jones曾经说过他认为 Haskell 是世界上最好的命令式编程语言。 (这只是一个半开玩笑的。)

例子:
 main = do
print "Enter a number"
line <- getLine
print (succ (read line :: Int))

关于functional-programming - 函数式编程和声明式编程有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21281356/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com