可编程记法 Mazy(i) 概述

lichray

2007-09-18 01:08:51 来自: lichray(願いのカケラ)

 ;; 此文选自冥冥中的《可编程记法 Mazy(i) 定义》第二章,纯属意淫~`

编程语言必须对其设计意图有强大的表现力。强大基于完备,完备基于简单。
Mazy 的设计意图是作为一种可执行的简记记法帮助熟悉简单数学表示法的用户思考、编程或教学。也就是说,Mazy 试图用程序的观点去解释范围不超过基本函数、数列的数学记法。当然,作为基于λ演算的编程语言,Mazy 还有足够的表现力去解决更复杂的问题。
例如,Mazy 中的列表与数学中的数列类似。对于给定的列表 l,其第 n 项在 Mazy 中可直接表示为 l n。同时,使用递推的观点可以写出求列表第 n 项的函数 ref,使得 ref (l, n) = l n。下面的函数就是一个合法的 Mazy 程序:
ref (ls, n) =
  head ls, n = 1
  ref(tail ls, n - 1) .
Mazy 可以把列表看作是第一项 x 与剩余项 xs 的组合 x:xs,也就是说:
head (x:xs) = x
tail (x:xs) = xs
知道了 x:xs = ls 之后,ref 函数就可以直接写成:
ref (x:xs, n) =
  x , n = 1
  ref(xs, n - 1) .
把函数看成是由函数图像上的点来定义的,那么 ref 函数还可以写成:
ref (x:xs, 1) = x
ref (x:xs, n) = ref(xs, n - 1)
以上是 Mazy 在语法方面试图体现其设计意图的一个例子,展示了单一控制结构和函数单参数的语法特性。其它语法,包括块结构、列表领悟、λ形式等,以及为保证这些语法的等效性而设计的 Mazy 编程语言语义,例如完全无副作用,单一数据类型,单一数据结构,完全基于模式匹配等,都会在本文档中给出详细描述;附加的实现指导,例如尾递归优化,列表、元组共存模型,缓存机制等,则用于指导 Mazy 的实现人员更好地保证基于这些语义的程序高效地执行,以防止用户被迫转用其它语义思考和编程。


这个小组的geek也喜欢去  · · · · · ·

LISP
LISP (2340)
Haskell
Haskell (1007)
scheme
scheme (491)
程序员书屋
程序员书屋 (8166)
Compiler
Compiler (806)
极限编程
极限编程 (882)