wsug
1
受 @Kinney @xuchunyang 等启发 原帖在这 ,也想用lisp的形式写html,我php用得比较多,于是就实现了一个,代码大部分来自AI,代码见 用lisp的形式写html,在php中 · GitHub
例子:
$env=standard_env();
echo run_lisp(<<<EOF
(list-to-html '(body
(h1 :id "logo" "test")
(div :id "content"
(img :src "./test/t1.jpg")
(button :class "btn" :disable "" "click") )) )
EOF,$env);
执行结果:
<body>
<h1 id="logo">test</h1>
<div id="content">
<img src="./test/t1.jpg"/>
<button class="btn" disable>click</button>
</div>
</body>
这么一写下去,就发现css也想这么写,但发现css似乎不太好用这种形式,主要是css不支持元素嵌套的写法,css的选择器命名包含空格在内
和 vue 里的 render 函数写法 有点像。

wsug
3
我感觉不像吧, vue这个写法就是很普遍常见的写法, 也就是把函数作为参数传递, 但现在感觉几乎所有编程语言都有支持lisp的这个特性,作为语言版本的重大升级
有没有可能 xml是lisp的一个小变种 php也是lisp的大变种之一
wsug
5
用王垠的话来说, 不要纠结于 语言品牌
,品牌不重要, 重要的是语言特性,掌握重要的语言特性后任何语言都能写出好的代码.
我以前也不会写lisp, 但写出上面的代码后感觉我又会lisp了, 所以lisp可能真的只有自己亲自去实现一个,才能学得会
wsug
6
开始尝试css也这么写了,在加上elisp形式的注释,用上elisp-mode,截个图

感觉挺不错的,只是有点分不清,我这到底是在写css还是在写lisp,或者是二者同时在写
突然想到, 如果继html css之后还能在进一步, js也用这种形式写, 那lisp还有什么是写不了的, 所以lisp实际是个文学编程工具
1 个赞
这应该是函数式语言的一大特性,其它支持闭包的语言应该也能这么写,比如 groovy, kotlin, swift 等,这种写法好像是叫 DSL (Domain-Specific Languages)
wsug
10
函数式编程,闭包,箭头函数,可变函数……现在应该很少有编程语言不支持这些,我现在听到这些名词感觉就是把lisp里lambda重新发明一次,还要重新去理解的感觉。
3vau
11
Lisp老玩法了,spinneret + parenscript + css-lite 三件套欢迎你喵w
我之前还把cl-who搬到elisp了(帖子),你遇到CL的代码可以搬过来直接用