描述性声明性内核语言

时间:2011-12-09 23:03:49

标签: language-agnostic terminology theory language-design

在这个问题中,我参考了Van Roys和Seif Haridi的书 - “计算机编程的概念,技术和模型”

背景信息(由我自己的参考书中的文字解释):

  

声明性程序定义了我们想要实现的内容而不解释   如何达到一定的效果。声明性程序可能是   描述性或可编程


  

可编程级别描述组件(上下文和行为)


  • 我希望其他人向我解释什么是描述性声明程序,它定义了什么?
  • 我还想在练习(编程语言) 描述性和可编程级别之间的关系(差异) >

在阅读引用的本书时出现了这个问题,这是关于声明性编程的一章。 (第115页讲述了声明性编程的分类,其中描述性声明性定义有点不清楚,至少对我而言)

1 个答案:

答案 0 :(得分:2)

描述性声明性Oz程序是仅使用变量和值的程序。它不使用任何控制结构或递归。例如:

A = 42

B = person(name:"Hans" age:20)

或甚至(创建"无限"记录):

C = loop(data:42 link:C)

HTML文档(不使用嵌入式Javascript等任何扩展名)也是一个描述性声明程序。 纯粹描述性的语言不是图灵完备的。 纯粹的描述性程序是可编程声明性程序的真正子集。

可编程声明性程序可以包含递归和许多其他控制元素。该模型在本书的第2章中有所描述。一个重要的属性是参考透明度",即无论在什么情况下或者多久调用一个函数,它总是会在给定相同参数的情况下返回相同的结果。 纯函数式Haskell程序也是可编程声明程序的一个例子。

对于这样的问题,我还推荐了莫扎特用户的邮件列表,也许还有" Lambda the Ultimate"论坛。在这些地方,你的问题甚至可以由书籍作者回答。