lisp 写前端一点也不难

逆天创业,算不算工作~~~

  • Common Lisp 没有直接转换成 Javascript 的编译器
  • Common Lisp 集成了太多东西,对于我来说,我不喜欢OOP,也弄不懂macro,能用上map reduce partial apply 等,加上函数套函数我就心满意足了

https://common-lisp.net/project/parenscript/

Parenscript 连 CL 子集都算不上。你这样瞎 po 要误导人啊

您就是 js 函数式编程爱好者?

粗看了下这个项目,html 生成器类似与clojure的 hiccup, 我不喜欢把HTML 也写在()里,它把简单的事弄复杂了,同样 Vue 容易上手是因为可以直观的写HTML

起码是有CLOS用的。另外你这个jscl同样也是a subset of Common Lisp

F P 警 察 出 动

1 个赞

「不需要用 macro」,本 Lisp 爱好者被激怒了

  • 不是不需要 macro, clojurescript 自带很多宏,比如 this-as 解决了javascript 到处可见的 this, js->clj 和 clj->js 让数据类型自由转换,go宏解决了异步。

lodash几乎发挥了js函数式的最大潜能,而对于 clojurescript 这些特性是自带的,语法上clojurescript 更加灵活,另外还继承clojure更多特性

https://common-lisp.net/project/parenscript/reference.html#section-objects

parenscript 哪來的 CLOS?只有个仿 ES5 的 oop 好么。你跟我讲只有几十行的 runtime 实現 CLOS?讲真因为很多地方更像 JS 而不是 CL 我用起來很別扭。

jscl 除了完整的 format spec 还沒有和 file compiler interface 不打算做,其它包括 CLOS 都实現了。

以至以后看到 js 函数式编程爱好者就要被激怒

我不反对 JS 函数式编程,毕竟需要东西把人给骗进来嘛。总不能上来就是 monad 编程或者是 depentent type 吧

但是你用 Lisp 只是为了一点语法糖,和相比 JS 更好的「函数式编程」,那就说不过去了

哪只能为了信仰用了。因为 lisp 既沒有什么说得过去的语法糖,更不太擅長函数式

那个是为了和JS交互必要的玩意,是个锤子CLOS。

这个才是

这个连 class slot 都沒有完成度都不如 EIEIO 的 toy impl 能用?

Example Usage Using the ParenScript system for generating JavaScript, the syntax for defining a new class is simple:

(defclass person ()) <-- 只能写 superclass,沒地写 class slot,虛假的 CLOS
(defclass politician (person))

(defclass person () (age birthday)) <-- 能写 class slot,真正的 CLOS
(defclass politician (person) (party))

卧曹,这么鶸的吗。我脸都肿了

感觉JS 的 eval 也是可以派上一定的用场的,用JS自己来生成 JS 代码 ,也应该是很灵活的(当然没有Lisp这种代码也是列表灵活),但是早早就被书本上说的排斥(包括 with ) 所以没多少JSer觉得能用了

今年刚看到近两年推出的 Web Component 才接触到 slot 这概念,以为是Chrome的开发者自己想出来的概念,原来早就有了的。。。

望文生义,web component的slot是为了解决组件之间的mixin组合问题。这里的slot就是一个带有名字的place,Java里也叫class member。

还是有些共通概念的吧?感觉就是public 的合作接口,web component 是组件间,而 Java 这些是类定义直接。。。

C++的 friend 是不是也是类似这个? (我对 Lisp 还不算到熟练地步,slot 在书本上还没看到。。。)