|
|
1
31
一旦你写了几个宏,你就会改变主意。 |
|
|
2
28
这已经做了很多次了(一个<20行预处理器会创造奇迹)。但明确表达它们也有好处。它强调了代码和数据之间的并行性,并在某种程度上让你摆脱了那种让你觉得它们很烦人的想法。
当你看到lisp时,你应该想“一切都是一个列表。天哪”
|
|
|
3
20
“也许这个过程应该被视为Lisp黑客的成年礼。”
|
|
|
4
12
你的建议似乎已经在
编辑: sindikat 在下面的评论中指出,该链接不再有效。以下是Web Archive中该网站的最后一个有效版本: http://wayback.archive.org/web/20080517144846id_/http://www.lispin.org/ |
|
|
5
9
我曾多次比较过Lisp代码和其他语言的等效代码。Lisp代码有更多的paren,但如果你计算其他语言中的所有分组字符[]{}(),Lisp的paren比所有这些都少。它不是更冗长:它更一致!
也就是说,Lisp的核心是赋予程序员权力。如果你愿意,写你自己的方言,让你做到这一点。Lisp(与我提到的一些语言不同!)是关于程序员能力的,所以使用它。如果你能让它工作,也许它会腾飞。我不认为它会,但没有什么能阻止你尝试,无论哪种方式,你都会学到很多东西。 |
|
|
6
6
lisp“语法”的要点是它不存在。s表达式是一个恒等式树,其中树结构由parens表示( 和 压痕)。值得注意的是,sexps只是一种低级表示,但人们最终更喜欢它并继续使用它。 什么 指执行引擎 非常灵活 在lisp中,它也是 上下文敏感。 在其他语言中,上下文敏感度要低得多,您可以用来构建自己的抽象的构建块集的可自由扩展性要低得得多。因此,表示少数给定构造的特殊语法符合这一情况。
还要注意,使用像emacs这样的编辑器可以很容易地以结构化的方式编辑这样的树。例如,有一个键来转置树中的两个节点,对于交换变量声明和交换程序块中的两条语句同样有用(提示:这就是为什么“额外”paren在let、cond等中很有用)。 所以,这就是原因 lisp的非语法特性是 吸引了许多习惯于扩展语言的人 而不是弯曲问题以适应预定义的一组工具。..但这并不意味着语法糖不用于用户给定的构造! 我们使用的用户定义语法的一些示例:
|
|
|
7
5
它可以工作。它被称为 Dylan . |
|
|
8
5
甚至 Paul Graham 作为Lisp语言家族的声音倡导者,他从自己的方言中删除了一些括号 Arc :
|
|
|
9
3
对于第一类人来说,嵌套子句和子子句绝对没有错;他们自然地掌握递归;他们慢慢地看代码,一条一条地、一行一行地,大脑中的堆栈机器在潜意识层面上不断地计算括号和括号。Lisp语法对他们来说很自然。地狱,他们可能 发明 堆栈机和Forth语言。但是给他们看,比如Python(哦,不!),他们会无助地扫一眼代码表,无法理解为什么这些愚蠢的代码块是 块
|
|
|
10
1
希望它能有所帮助。 |
|
|
11
1
通过阅读链接,我找到了这个- Indentation-sensitive syntax |
|
|
12
1
我个人对此的看法是:不要使用换行符和缩进作为“隐式”分隔符(我也不喜欢按运算符优先级进行隐式分组,但这是一个不同但相关的主题)。 示例:这是有效的Python吗?它符合你的期望吗?
|
|
|
13
1
你可以看看Clojure。括号更少,但需要记住的语法更多。 |
|
|
14
1
我尝试并编写了几种依赖缩进的语法。最好的结果是,整个语法改变了它的性质,因此语言也从一种转向了另一种。好的基于缩进的语法已经不再接近lisp了。 为缩进赋予句法意义的麻烦并不是来自白痴和\t与空白的争论。标记化既不是问题,因为读取换行符和空格不应该比其他任何事情都难。最困难的事情是确定缩进在出现的地方应该意味着什么,以及如何在不使语言语法过于复杂的情况下为其添加意义。 我开始认为,当你通过一些巧妙的编程来减少括号的数量时,原始的lisp风格语法毕竟会更好。这可以做到,在当前的lisp实现中不那么容易,但在未来的lisp实施中可以更容易地做到。当只有几个规则需要标记时,解析起来既快速又简单,几乎不需要解析。 |
|
|
15
1
编辑:一些使用示例: !defun fact (n)
if (zerop n)
1
* n
fact
(1- n)
!defun fact !n
if !zerop n
1
!* n !fact !1- n
|
|
|
16
0
|
|
|
Stephen · 在emacs中评估Lisp的正确方法是什么 1 年前 |
|
|
lightning_missile · 词法范围和共享对象 8 年前 |
|
|
Alexandru Popa · SBCL中奇怪的宏扩展错误 8 年前 |
|
|
Jacky · 编辑列表中的每个偶数索引元素 8 年前 |
|
|
HappyFace · lisp典型缩进约定背后的规则是什么? 8 年前 |