还有函数别名 alias ,判断函数是否定义的 def? 函数等。虽然 Lime 里没有啥我现在还不懂(只是没听说过)的
call-by-value call-by-need 啥的,我敢说 Lime 的元编程能力比 Lice 强 🌚Lime 里所谓函数就是宏,也是普通的 Java 对象,我没打算把它特殊化,所以创建函数
(-> macro (# (foo bar) (print foo bar "baz"))) alias 只需要 (-> new_alias macro_name) , 是否定义就是一个变量是否定义的问题而已 (-? macro) 当然可以 undef (-x 'macro') 甚至可以把 “undef undef 掉” (^-x -x) (p.s. 没 ^ 自动前置宏支持感觉浑身难受....)甚至还可以重新定义被
undef 掉的 undef (-> -x (# (name) (. undef name)))-dontobfuscate
-keepattributes SourceFile,LineNumberTable
-keep class lime.LexerMain { *; }
-keep class lime.ParserMain { *; }
-keep class lime.Lexer { *; }
-keep class lime.Parser { *; }
-keep class lime.Macro { *; }
-keep class lime.SexpressionList { *; }
-keep class lime.Symbol { *; }
-keep class lime.Token { *; }
-keep class lime.Lime { *; }
-optimizationpasses 5
duangsuse::Echo
lime-core-with_symbols.jar
和 LineNumber、FileTable
jshell> Lime.parse(")(")
| java.lang.RuntimeException thrown: Unclosed paren from 1
| at Parser.recursiveParse (Parser.kt:83)
| at Parser.parse (Parser.kt:44)
| at Lime$Companion.parse (Lime.kt:296)
| at Lime.parse (Lime.kt)
| at (#3:1)