编译为Lua的语言

2020-06-30 23:49:21

由于Lua5.4.0发布了,这让我真的很高兴,我决定写一篇小帖子来介绍编译到Lua的语言。

Moonscript已经存在了一段时间了(这也是我在最初的出版物中忘记将其添加到这篇文章中的原因之一),而且它很稳定,并且在业界得到了使用,它可能是目前最流行的Lua语言编译程序。我相信Itch.io的很大一部分是由moonscript和nginx提供支持的。MoonScript感觉像是CoffeeScript,但对于Lua来说。如果您将其与同一作者的Lapis web框架配对,您就有了一个令人愉快的设置来启动您的下一个Web应用程序。

MoonScript是一种编译成Lua的动态脚本语言。它为您提供了速度最快的脚本语言之一的强大功能,并结合了一组丰富的功能。

类事物名称:";未知";类Person扩展事物Say_Name:=>;Print";您好,我是#{@name}!";with Person!.name=";MoonScript";\Say_Name!

我相信Fennel是目前最流行的Lua语言新编译器。有很多人首先是茴香开发人员,其次是Lua开发人员。它看起来相当整洁,在语法和宏系统上有Lisp的味道,但它不是Common Lisp,它的语义在大多数地方都符合Lua语义。

可嵌入:Fennel是一个单文件库,也是一个可执行文件。将其嵌入到其他程序中,以支持运行时可扩展性和交互式开发。

它非常整洁,就像Lua一样,它可以在小型ESP32上一直运行到运行OpenResty的数据中心中强大的服务器上。

;;示例:读取键盘状态并相应地移动播放器(local dirs{:Up[0-1]:down[0 1]:Left[-1 0]:Right[1 0]})(每个[Key Delta(Pair Dirs)](When(love.keyboard.isDown key))(let[[dx dy]delta[px py]player x(+px(*dx player.Speed dt))y(+py(*dy player.Speed dt))。

对于Lua来说,urn也是一种类似Lisp的语言。虽然茴香是Lisp服装中的Lua,但urn更多地属于Lisp家族,受到Common Lisp和Clojure的影响。

谁不喜欢模式匹配呢?所有语言现在都应该有它了,…。

>;(案例';(";x";(Foo 23)。[(string?@?x)(..。";获得字符串";x)]。[(";x";(foo.。?x))(..。";获得了一些剩余值";(Pretty X)])out=";获得了一些剩余值(2 3)";

通过快速查看,排名为N的非谓词类型:∀限定符可以出现在类型中的任何位置,不仅在顶层,

设map f=函数|[]->;[]|CONS(x,xs)->;CONS(f x,map f xs)让Filter p xs=[x|with x<;-xs,p x]。

请注意,尽管Amulet ML编译为Lua,但它基本上是用Haskell编写的,并带有SML和OCaml中的一些位。

你可以在Twitter、Mastodon、Secure ScuttleButt或WebMentions上联系我。