1 个不稳定版本
| 0.0.1 | 2023年4月14日 |
|---|
#10 in #wall
6KB
Lingy
一种现代的Acme主义Lisp方言
摘要
运行Lingy REPL
$ lingy
Welcome to Lingy [perl]
user> (prn "Hello, world!")
"Hello, world!"
nil
user>
或Lingy单行命令
$ lingy -e '(println "Hello, world!")'
Hello, world!
或运行Lingy程序文件
$ echo '(println "Hello, world!")' > hello.ly
$ lingy hello.ly
Hello, world!
或运行示例Lingy程序
$ curl -sL https://raw.githubusercontent.com/ingydotnet/lingy/main/eg/99-bottles.ly | lingy - 3
3 bottles of beer on the wall
3 bottles of beer
Take one down, pass it around
2 bottles of beer on the wall.
2 bottles of beer on the wall
2 bottles of beer
Take one down, pass it around
1 bottles of beer on the wall.
1 bottles of beer on the wall
1 bottles of beer
Take one down, pass it around
0 bottles of beer on the wall.
描述
Lingy是一种用多种语言编写的Lisp方言,包括:Perl。
Clojure是一种编译到JVM上运行的Lisp方言。
ClojureScript使用相同的Clojure源代码,但编译到NodeJS。
Lingy是支持YAMLScript语言的运行时。
YAMLScript旨在用与Lingy相同的语言实现。
Lingy深受Clojure(Lisp)语言的影响。它希望与Clojure有很高的互操作性。目前它只支持Clojure的一小部分,但支持Lisp的基本功能,如函数应用和宏。
Lingy最初是Make a Lisp项目的Perl实现。这提供了一个基本的Clojure风格的Lisp解释器。
lingy CLI用法
Lingy语言安装了一个名为lingy的命令。您可以使用此命令运行Lingy程序,启动Lingy REPL或运行Lingy单行表达式。
-
lingy --repl(或仅lingy)启动Lingy交互式REPL。REPL具有以下readline支持:
- 命令历史记录
- CTL-R搜索
- 括号匹配突出显示
- CTL-C取消命令,而不离开REPL
使用CTL-D退出REPL
-
lingy程序.ly foo bar运行Lingy程序,传入参数。参数在Lingy中作为
*ARGV*可用。 -
cat程序.ly|lingy-foo bar从STDIN运行Lingy程序并传递参数。
-表示从STDIN而不是文件运行。如果没有参数,则可以省略-。 -
lingy-e'(println"Hello" (nth*ARGV* 0))'world运行带参数的Lingy单行命令。
当与
--repl一起使用时,首先运行-e代码,然后进入REPL。
lingy CLI选项
-
-<string>,--eval=<string>要评估的Lingy字符串。
-
-,--repl启动Lingy REPL。可以与
-一起使用。 -
--ppp打印一个
-e表达式的 Lingy 编译后的抽象语法树 (AST)。 -
--xxx以 YAML 格式转储一个
-e表达式的 Lingy 编译后的抽象语法树 (AST)。
支持的功能
*+-/<<====>>=apply*ARGV*assocatomatom?catchconcatcondconjconscontains?countdecdefdefmacroderefdissocdoempty?evalfalsefalse?*file*firstfnfn?getgetenvhash-map*host-language*ifjoinkeyskeywordkeyword?letlistlist?load-filemacro?macroexpandmapmap?metanilnil?notnthnumbernumber?printlnprnpr-strquasiquotequasiquoteexpandquoterangereadlineread-stringreset!restseqsequential?slurpstrstring?swap!symbolsymbol?throwtime-mstruetrue?tryvalsvecvectorvector?with-metaPPPWWWXXXYYYZZZ
路线图
接下来要添加的主要功能
- 多参数函数/宏定义和应用
- 命名空间
- Lambdas
- lingy.core 库
- 正则表达式支持
另请参阅
状态
Lingy 目前处于 Alpha 版本状态。
作者
- Ingy döt Net ingy@ingy.net
版权和许可
版权所有 © 2023 Ingy döt Net
这是免费软件,许可协议如下
MIT (X11) 许可证