@hackage lang0.2.2
A Lisp
Installation
Dependencies (4)
- Mapping >=2.0.0.0 && <3.0.0.0
- base >=4.9 && <4.10
- bytestring
- http-streams Show all…
Dependents (1)
@hackage/acme-everything
語
核心
Copyright (C) 2014-2018 Zaoqi zaomir@outlook.com
這只是核心,不是直接用來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。
因爲杭十五中西溪中学差等原因,我使用傳統寫法。我聽說臺灣不使用這種寫法。
歷史/特性
某些東西被意外毀了,所以我可以修改歷史。雖然被修改過,我說以下內容是事實。
版本
用易語言寫的一個版本
用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)產生(名 '(#<procedure> (#\a)))
↓
現在的
...
值
開始就只有值
Mapping
不可知有哪些鍵 不可修改 作爲數據和模塊 帶有letrec功能
↓
可知有哪些鍵 可修改
↓
Mapping,letrec分離 成爲普通的Mapping和letrec
↓
Mapping的鍵可以是誤
誤 錯誤 raise
... (被我從歷史中刪除了)
宏
多次變化:
只有 參數爲環境+S-Exp 返回一個值 的函數 作爲宏
還有 參數爲 S-Exp 返回S-Exp 的函數 作爲宏 (現在的)
反算
反算函數
多次變化:
- 全部反算
- 表層反算
- 都有
↓
解構
有
- 機-境
- 機-形
- 機-物
↓
刪 機-境
爲反算出現的特殊形式 !-界
多次變化:
- 特殊名字 是一個宏
- 是特殊形式 (現在的)
語法
... (被我從歷史中刪除了)
被刪除的
- 數字
- English
- 新象形文字
- 一種 undefined 類似 R7RS中可以繼續的raise
- 某些函數 : map ...