什么是轻量级lisp方言编译成可读的js?

时间:2012-10-27 21:05:48

标签: javascript lisp scheme racket

什么是使用JS自己的类型编译为简短,可读和可修改的JS的lisp方言?

6 个答案:

答案 0 :(得分:9)

这是一个广泛的list编译器,用于编译为JavaScript的编程语言,包括一些Lisp / Scheme方言。关于“简短,可读和可修改”的部分,这有点主观......你可以测试列出的几个编译器,并决定哪一个最适合你。

从列表的the "Lisp, Scheme" section [对子节标题进行次要格式更改]:

  

Lisp,Scheme

     

Clojure的状

     
      
  • ClojureScript Clojure to JS,正式版。支持大部分Clojure,包括持久数据结构。
  •   
  • ClojureJS Clojure对JS的子集。
  •   
  • Chlorinejs ClojureJS的一个分支,带有一个clojure.core库的端口。
  •   
  • wisp具有Clojure语法,S表达式和宏的homoiconic JavaScript方言。旨在成为Clojure(脚本)的丰富子集,它与Clojure(脚本)和JavaScript无缝地交互。
  •   
  • Scriptjure用于从Clojure表单生成JavaScript的库。
  •   
  • ki类似Clojure的语法,mori在几个sweet.js宏中的不可变数据结构。可以与JavaScript混合使用。
  •   
     

方案状

     
      JavaScript中的
  • BiwaScheme Scheme(R6RS)
  •   JavaScript中的
  • Fargo Scheme
  •   
  • Moby Scheme在JS中运行的一个Scheme。
  •   
  • nconc JavaScript中的Scheme解释器,具有堆栈友好的尾调用和完整调用/ cc
  •   
  • scheme2js针对JavaScript的方案。
  •   
  • Spock一个使用Henry Baker的Cheney-on-the-MTA编译策略的JavaScript编译器方案
  •   
  • Whalesong球拍到JS编译器
  •   
     

其他

     
      
  • eslisp ECMAScript / JavaScript的S表达式语法,具有类似Lisp的卫生宏,只是JS函数。旨在与JS非常接近,并且具有很强的实验性。
  •   
  • EdgeLisp Common Lisp传统中的Lisp
  •   
  • Parenscript Common Lisp对JS的子集。
  •   
  • Ralph Lisp-1方言,编译为JavaScript,灵感来自Dylan
  •   
  • Oppo JavaScripter的lisp。灵感来自JavaScript,Clojure和CoffeeScript。使用Jison
  • 构建的编译器   
  • LispyScript一个带有Lispy语法和宏的JavaScript。
  •   
  • Outlet一个简单的Lisp,支持CPS和浏览器内步进调试等。在发展中。
  •   
  • Hot Cocoa Lisp一种类似Lisp的语言,可编译为JavaScript。
  •   
  • Sibilant JavaScript与lisp。
  •   
  • jisp一个JS本地和公理的Lisp,专注于代码作为数据,S表达式和宏的核心思想,引入尽可能少的新概念。
  •   

答案 1 :(得分:5)

Parenscript非常轻巧,易读。您可以使用slime-proxy为其提供卓越的交互式环境。

答案 2 :(得分:4)

我认为最先进的是ClojureScript。它是一个非常复杂的clojure,它编译成可读或缩小的JS。

https://github.com/clojure/clojurescript

如果您想要开始使用,请查看此内容:http://clojurescriptone.com/

答案 3 :(得分:2)

LispyScriptSibilant做得很好。 Parenscript,正如Vsevolod Dyomkin所建议的那样,但你需要Common Lisp。 ÓscarLópez的回答提供了list其他可能性。

答案 4 :(得分:1)

Wisp所述的设计目标完全符合OP的要求。

它类似于Clojure但具有JS语义并且开销很小。如果ClojureScript保留Clojure语义的方法即使以12k行开销为代价也是不合适的。

答案 5 :(得分:-1)

这是一个深奥的答案,但你可以通过LiskFay的组合对JS进行类似Haskell的lisp编译。

我是一个人,非常喜欢Lisk的想法,但它在Haskell社区并不是很受欢迎,更不用说维护了。另一方面,Fay正在顺利进行,其主要目标之一是编译为可读的JS。两者都是由Chris Done撰写的。