fbpx
维基百科

Joy (编程语言)

Joy编程语言澳大利亚乐卓博大学Manfred von Thun创立的纯函数式编程语言。Joy基于了函数复合而非lambda表达式。它表现出同30年前出现的Forth语言的很多类似性,这不归结为设计原因而是某种平行的演化和趋同。它还受到John BackusFP语言函数级编程风格的影响[1]

Joy
编程范型多范型: 函数式, 串接式, 面向堆栈
設計者Manfred von Thun
實作者Manfred von Thun
John Cowan
发行时间2001年,​22年前​(2001
型態系統强类型, 动态类型
主要實作產品
Joy0, Joy1, "Current Joy", "John Cowan's Joy", "JoyJ (Joy in jvmm)"
啟發語言
Scheme, FP, Forth
影響語言
Factor, Cat, V, Trith

工作机理

Joy是不寻常的(除了函数级编程语言和某些难懂语言unlambda英语unlambda之外),在于它缺乏lambda算子,因而缺乏形式参数。要通过常见例子来说明,平方函数在指令式编程语言C语言)中定义如下:

int square(int x) {  return x * x; } 

变量x是形式参数,它在函数别调用时被替换为要计算平方的实际值。在函数式语言(Scheme语言)中这个函数可以定义为:

(define square (lambda (x) (* x x))) 

这在很多方面有所不同,但仍然以相同方式使用了形式参数x。在Joy中平方函数定义为:

 DEFINE square == dup * . 

在Joy中,所有东西都是从堆栈中取得实际参数并向堆栈返回结果的函数。例如,数值5不表示整数常量,转而是将5压入栈顶的一个短程序。

  • dup算子通过压入栈顶元素的副本而简单的复制它。
  • *算子弹出栈顶的两个元素并将它们的乘积压入栈顶。

所以平方函数复制栈顶元素,接着将栈顶二个元素相乘,把最初栈顶元素的平方留在栈顶,这个过程不需要形式参数。这使得Joy很简明,如下面快速排序定义所展示的:

 DEFINE qsort == [small] [] [uncons [>] split] [enconcat] binrec. 

binrec是Joy的多个递归组合子之一,实现了二叉递归。它预期在栈顶有四个引用的程序,分别表示:

  • 终止条件(如果这个列表是“小”的(1或0个元素)则它已经排好序了),
  • 如果终止条件满足做什么(这里什么都不做),
  • 缺省做什么(通过比较每个元素于基准元素而将列表分解成两个半份列表),还有最后的
  • 结束时做什么(在两个排好序的半份列表间插入基准元素)。

数学纯粹性

在Joy中,含义函数是从语法幺半群语义幺半群同态。就是说,符号串接的语法关系直接映射成函数复合的语义关系上。这是同态而非同构,因为这是满射而非双射;就是说,没有符号有多于一个含义,但是某些符号序列有相同的含义(比如dup +2 *)。

Joy是串接编程语言:“两个程序的串接指示这两个程序指示的函数的复合”[2]

它的库例程镜像了ISO C的库例程,尽管当前实现不能用C写的函数轻易扩充。

参见

引用

  1. ^ Manfred von Thun. A Conversation with Manfred von Thun. December 12, 2003 [May 31, 2013]. (原始内容于2020-11-09). In the early 1980s I came across the famous Backus paper "Can programming be liberated from the von Neumann style," and I was immediately intrigued by the higher level of programming in his FP. 
  2. ^ Mathematical Foundations of Joy. [2020-04-20]. (原始内容于2011-10-07). 

外部链接

  • Official Joy Programming Language Website (La Trobe University) (页面存档备份,存于互联网档案馆
  • Joy homepage mirror (页面存档备份,存于互联网档案馆
  • Freneger, Paul. The JOY of forth. ACM SIGPLAN Notices. August 2003, 38 (8). 
  • von Thun, Manfred; Thomas, Reuben. Joy: Forth’s Functional Cousin (PDF). Proceedings of the 17th EuroForth Conference. October 9, 2001 [2020-04-20]. (原始内容 (PDF)于2019-11-04). 
  • Christopher Diggins. What is a Concatenative Language. Dr. Dobbs. December 31, 2008 [2020-04-20]. (原始内容存档于2012-05-14).  |volume=被忽略 (帮助)
  • Apter, Stevan. Functional Programming in Joy and K. Vector. [2011-02-28]. (原始内容于2008-08-28). 
  • mjoy, an interpreter in Delphi for machine drawing (页面存档备份,存于互联网档案馆) (Subset of Joy)

编程语言, joy编程语言是澳大利亚乐卓博大学manfred, thun创立的纯函数式编程语言, joy基于了函数复合而非lambda表达式, 它表现出同30年前出现的forth语言的很多类似性, 这不归结为设计原因而是某种平行的演化和趋同, 它还受到john, backus的fp语言的函数级编程风格的影响, joy编程范型多范型, 函数式, 串接式, 面向堆栈設計者manfred, thun實作者manfred, thunjohn, cowan发行时间2001年, 22年前, 2001, 型態系統强类型, 动态类. Joy编程语言是澳大利亚乐卓博大学Manfred von Thun创立的纯函数式编程语言 Joy基于了函数复合而非lambda表达式 它表现出同30年前出现的Forth语言的很多类似性 这不归结为设计原因而是某种平行的演化和趋同 它还受到John Backus的FP语言的函数级编程风格的影响 1 Joy编程范型多范型 函数式 串接式 面向堆栈設計者Manfred von Thun實作者Manfred von ThunJohn Cowan发行时间2001年 22年前 2001 型態系統强类型 动态类型主要實作產品Joy0 Joy1 Current Joy John Cowan s Joy JoyJ Joy in jvmm 啟發語言Scheme FP Forth影響語言Factor Cat V Trith 目录 1 工作机理 2 数学纯粹性 3 参见 4 引用 5 外部链接工作机理 编辑Joy是不寻常的 除了函数级编程语言和某些难懂语言如unlambda 英语 unlambda 之外 在于它缺乏lambda算子 因而缺乏形式参数 要通过常见例子来说明 平方函数在指令式编程语言 C语言 中定义如下 int square int x return x x 变量x是形式参数 它在函数别调用时被替换为要计算平方的实际值 在函数式语言 Scheme语言 中这个函数可以定义为 define square lambda x x x 这在很多方面有所不同 但仍然以相同方式使用了形式参数x 在Joy中平方函数定义为 DEFINE square dup 在Joy中 所有东西都是从堆栈中取得实际参数并向堆栈返回结果的函数 例如 数值5不表示整数常量 转而是将5压入栈顶的一个短程序 dup算子通过压入栈顶元素的副本而简单的复制它 算子弹出栈顶的两个元素并将它们的乘积压入栈顶 所以平方函数复制栈顶元素 接着将栈顶二个元素相乘 把最初栈顶元素的平方留在栈顶 这个过程不需要形式参数 这使得Joy很简明 如下面快速排序定义所展示的 DEFINE qsort small uncons gt split enconcat binrec binrec是Joy的多个递归组合子之一 实现了二叉递归 它预期在栈顶有四个引用的程序 分别表示 终止条件 如果这个列表是 小 的 1或0个元素 则它已经排好序了 如果终止条件满足做什么 这里什么都不做 缺省做什么 通过比较每个元素于基准元素而将列表分解成两个半份列表 还有最后的 结束时做什么 在两个排好序的半份列表间插入基准元素 数学纯粹性 编辑在Joy中 含义函数是从语法幺半群到语义幺半群的同态 就是说 符号的串接的语法关系直接映射成函数的复合的语义关系上 这是同态而非同构 因为这是满射而非双射 就是说 没有符号有多于一个含义 但是某些符号序列有相同的含义 比如dup 和2 Joy是串接编程语言 两个程序的串接指示这两个程序指示的函数的复合 2 它的库例程镜像了ISO C的库例程 尽管当前实现不能用C写的函数轻易扩充 参见 编辑串接编程语言引用 编辑 Manfred von Thun A Conversation with Manfred von Thun December 12 2003 May 31 2013 原始内容存档于2020 11 09 In the early 1980s I came across the famous Backus paper Can programming be liberated from the von Neumann style and I was immediately intrigued by the higher level of programming in his FP Mathematical Foundations of Joy 2020 04 20 原始内容存档于2011 10 07 外部链接 编辑Official Joy Programming Language Website La Trobe University 页面存档备份 存于互联网档案馆 Joy homepage mirror 页面存档备份 存于互联网档案馆 Freneger Paul The JOY of forth ACM SIGPLAN Notices August 2003 38 8 von Thun Manfred Thomas Reuben Joy Forth s Functional Cousin PDF Proceedings of the 17th EuroForth Conference October 9 2001 2020 04 20 原始内容存档 PDF 于2019 11 04 Christopher Diggins What is a Concatenative Language Dr Dobbs December 31 2008 2020 04 20 原始内容存档于2012 05 14 volume 被忽略 帮助 Apter Stevan Functional Programming in Joy and K Vector 2011 02 28 原始内容存档于2008 08 28 mjoy an interpreter in Delphi for machine drawing 页面存档备份 存于互联网档案馆 Subset of Joy 取自 https zh wikipedia org w index php title Joy 编程语言 amp oldid 69423814, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。