語 == 核心 --- Copyright (C) 2014-2018 Zaoqi 這只是核心,不是直接用來solve problems · make languages的。 因爲 + Idris的Lazy有Bug + Shen不支持中國字 + Agda std-lib缺少一些東西 + Scheme,Racket不能很好的編譯到ECMAScript + Clojure-JVM不支持Tail Call Optimization + F#是Microsoft的 所以只能用GHC-Haskell或Ocaml或Coq。 因爲杭十五中西溪中学差等原因,我使用傳統寫法。我聽說臺灣不使用這種寫法。 [文档](http://the-language.github.io) 歷史/特性 ------- 某些東西被意外毀了,所以我可以修改歷史。雖然被修改過,我說以下內容是事實。 # 版本 ## 用易語言寫的一個版本 ## 用Java寫的一個版本 ## 用Go重寫三次 ## 用Haskell寫的一個版本 ## 用Racket/Scheme/Idris/Haskell重寫十三次 ### 函數和宏 #### 複雜的Curried+非Curried函數和宏 #### ↓ #### 非Curried的函數和宏 ### 數據 #### 用Mapping實現用戶自定義數據 #### ↓ #### 構--Scheme的cons的一種用法 ### Lazy #### 像MicroKanren一樣的Lazy (現在是可以沒有的) ### 命名 Symbol #### Scheme的symbol #### ↓ #### 普通symbol+call/gensym產生的不能symbol->string的symbol #### ↓ #### 只有域+值的symbol call/gensym修改`域`,`域`默認是`()`。 #### ↓ #### 列表 + `'hash-set`是`(名 '((#\h #\a #\s #\h) (#\s #\e #\t)))` + `'a`是`(名 '((#\a)))` + `(call/gensym 'a f)`產生`(名 '(# (#\a)))` #### ↓ #### 現在的 ... ### 值 開始就只有值 ### Mapping #### 不可知有哪些鍵 不可修改 作爲數據和模塊 帶有letrec功能 #### ↓ #### 可知有哪些鍵 可修改 #### ↓ #### Mapping,letrec分離 成爲普通的Mapping和letrec #### ↓ #### Mapping的鍵可以是誤 ### 誤 錯誤 raise ... (被我從歷史中刪除了) ### 宏 多次變化: #### 只有 參數爲環境+S-Exp 返回一個值 的函數 作爲宏 #### 還有 參數爲 S-Exp 返回S-Exp 的函數 作爲宏 (現在的) ### 反算 #### 反算函數 多次變化: + 全部反算 + 表層反算 + 都有 #### ↓ #### 解構 有 + 機-境 + 機-形 + 機-物 #### ↓ #### 刪 機-境 ### 爲反算出現的特殊形式 !-界 多次變化: + 特殊名字 是一個宏 + 是特殊形式 (現在的) ### 語法 ... (被我從歷史中刪除了) ### 被刪除的 + 數字 + English + 新象形文字 + 一種 undefined 類似 R7RS中可以繼續的raise + 某些函數 : map ...