Skip to content
Scheme Writen in Javascript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.idea/libraries
.gitignore
README.md
SchemeScript.browser.js
SchemeScript.js
app.js
test.html
test.ss

README.md

SchemeScript

Scheme Writen in Javascript

Start project in 2012/10/31, night.

正看到《编译原理与实践》的2.5章,所以暂时使用的方法很久单 --2012/10/31 有自然数,布尔值(true, false),字符串("..."),变量定义 --2012/10/31

数的部分暂时只支持自然数,所以负数和其他很多特性都用函数表示,比如 -5 用(- 5) 表示,-5.46用(float (- 5) 46)表示 --2012/10/31 目前,除了最顶层外,不能使用form列表,即不能使用并列的form列表以最后一个的返回值作为返回值,除了最顶层 --2012/10/31 目前,只能定义变量,不能定义函数和闭包 --2012/10/31 所有合法的标识符都可以被重定义,包括内置函数名 --2012/10/31


可以定义函数了,并调用自定义函数,可以嵌套 --2012/11/1 支持列表 --2012/11/1 代码块功能 --2012/11/1 添加list, cons, car, cdr, list-len, n-th, typeof函数 --2012/11/1 柯里化 --2012/11/1 *, / 函数 --2012/11/1 lambda表达式功能,以(lambda (a b c) (define d (+ a b c)) d)的形式定义,内部的第一个form是参数列表,之后的form和identifier或字面量是代码体,最后一个的结果是返回值 --2012/11/1 放到网页中运行 --2012/11/1


加强了 + 函数的能力,可以操作字符串,布尔值和数值 --2012/11/2 添加了 cond 控制结构作为内置函数 --2012/11/2 说明:cons是把参数中的非列表作为一项加入,而如果参数是列表的话,就把参数中的每一项加入,不嵌套执行(即参数如果是列表,其中的列表也是作为一项加入),而list是把每一项参数作为新列表的一项加入。

TODO:

  1. 惰性求值
  2. map, set
  3. 浮点数
  4. map, reduce, filter等函数

已经放在网上,Online Test,可以在这个网页中运行

You can’t perform that action at this time.