l2l:Lisp是Lisp。 Lua是Lua。 Lisp和Lua合而为一

2021-01-18 01:06:06

@import quasiquote @ import quote @ import fn @ import local @ import do @ import let @ import cond(fn circuit_and(不变cdr输出真值)(cond cdr(let(car(:car cdr)ref(lua_name:unique&#34 ; _and_value"))`\ local \,ref = \,\(expize(invariant,car,output))if \,ref then \,(cond(:cdr cdr)(circuit_and invariant(:cdr cdr)输出真值)`\\,truth = \,ref)else \,truth = false end)))(fn expize_and(不变的cdr输出)(let(ref(lua_name:unique" _and_bool")) (表插入输出`\ local \,ref = true)(表插入输出(circuit_and不变cdr输出ref))ref))[fn statize_and(不变cdr输出)(to_stat(expize_and不变cdr输出)))(fn circuit_or(不变的cdr输出真值)(cond cdr(let(car(:car cdr)ref(lua_name:unique" _or_value")))\\如果不是\,真相则是本地\,ref = \, \(expize(invariant,car,output))如果\,ref那么\,truth = \,ref end end \,(cond(:cdr cdr)(circuit_or不变(:cdr cdr)输出真值))))))(fn expize_or(不变cdr输出)(let(ref(lua_name:unique" _or_bool")))(表。插入输出`\ local \,ref = false)(表。插入输出(circuit_or或不变cdr输出ref))ref))(fn statize_or(不变cdr输出)(to_stat(expize_or不变cdr输出))){lua = {[ " and"] = {expize = expize_and,statize = statize_and},[" or"] = {expize = expize_or,statize = statize_or}}}

#要求将https://github.com/meric/leftry克隆为此repo的兄弟。git clone [email protected]:meric / leftry.gitgit clone [email protected]:meric / l2l.git cd l2lmake cleanmake testmake代表

> (打印" hello world")hello world> \ print(" hello world")hello world> (let(a 1)(print`\ print(\,a)))print(1)> (let(a 1)(print(可获取的`\ print(\,a))))

通过将不符合lua的字符替换为符合lua的字符,可将Lisp名称混入Lua。 (请参阅l21 / reader.lua中的mangle函数)。

Lisp名称可以包含破折号,点,字母,数字,下划线和更多字符,但除非名称为..(lua字符串concat)或...(lua vararg),否则它们不能连续包含两个点。

@import iterator \ map(function(x)返回x + 2结束,filter(function(x)返回x%2 == 0结束,map(function(x)返回x + 1结束,{1,2,3, 4})))

局部ipairs = require(" l2l.iterator")局部向量= require(" l2l.vector")局部next38,invariant37,i39 = ipairs({1,2,3, 4});本地值41 = vector();而i39做本地v40; i39,v40 = next38(invariant37,i39);如果i39则v40 = v40 +1;如果v40%2 == 0,则v40 = v40 + 2; (values41):insert(v40)end end end返回值41

现在我不知道我当时是不是在做一个男人梦见我是一只蝴蝶,或者我现在是否是蝴蝶在做梦是一个男人。 —庄子 我摒弃了二元性,我看到了两个世界是一个世界。 我寻找一个,我知道一个,我看见一个,我打电话。 —贾拉鲁丁·鲁米(Jalaluddin Rumi) 现在我不知道我是在Lisp内编写Lua,还是现在在Lua内编写Lisp。 我摒弃了二元性,我看到了两个世界是一个世界。 我读过一篇。 我写一个。 我编译一个。 我一个。 —你 只要我有生命,我就是《古兰经》的仆人。 我是被选中的穆罕默德路上的尘土。 如果有人在我的话中引用了除此以外的任何内容,那么我将被他辞职,并对这些话感到愤怒。 —贾拉鲁丁·鲁米(Jalaluddin Rumi)