功能编程和声明性编程之间有什么区别



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

您可以向我展示一个代码声明性但尚未起作用的示例吗?
是否有可能具有功能,但不可能,即当务之急?

非功能性声明语言是序言。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。

请注意,不仅没有作为头等价值的功能。在序言示例中,根本没有!可以肯定的是,SQL和Prolog都具有一些内置功能,但无法让您编写自己的功能。可以认为规则

mortal(X) :- human(X).

是一个函数,但不是,它是推论规则。因此,声明性,非功能性语言。

对于您的问题的第二部分:当然可以用功能编程语言编写命令式代码。西蒙·佩顿·琼斯(Simon Peyton Jones)曾经说过,他认为哈斯克尔(Haskell)是世界上最好的编程语言。(这只是一个笑话。)

示例:

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

最新更新