Syntax 有好的替代方案语法吗?

Syntax 有好的替代方案语法吗?,syntax,scheme,Syntax,Scheme,我认为Scheme(也许还有Lisp)可以通过使用不同的语法变得更加“用户友好”。例如,我们可以设计一些更接近于一些更广泛使用的语言(例如类似Java的语言,而不需要定义类)的语法,而不是使用难看的括号嵌套的S表达式 如果说得更详细,也不一定是坏事。例如,该语法可能需要在许多人期望的位置使用行分隔符和逗号,并期望使用显式返回语句。此外,允许某些操作符使用中缀样式似乎并不困难(只需遵守普遍接受的操作符偏好规则) 如果它不让事情变得太混乱,语法甚至可以向后兼容,因此在任何需要表达式的地方,都可以使用

我认为Scheme(也许还有Lisp)可以通过使用不同的语法变得更加“用户友好”。例如,我们可以设计一些更接近于一些更广泛使用的语言(例如类似Java的语言,而不需要定义类)的语法,而不是使用难看的括号嵌套的S表达式

如果说得更详细,也不一定是坏事。例如,该语法可能需要在许多人期望的位置使用行分隔符和逗号,并期望使用显式返回语句。此外,允许某些操作符使用中缀样式似乎并不困难(只需遵守普遍接受的操作符偏好规则)

如果它不让事情变得太混乱,语法甚至可以向后兼容,因此在任何需要表达式的地方,都可以使用括号之间的正常S表达式

你对此有什么看法和想法?这样的东西存在吗?(我想是的,但“Scheme”是一个毫无价值的谷歌术语,我什么也找不到!)

试试大小:-P


(严肃地说),正如Rafe评论的那样,“我不认为有人想要这个”。

< P>有些人认为Python是一种有操作符的中缀表示法,函数的代数记号,它使用一种更“java”的语法来表示语言。我不同意这个评估,但我知道这个想法是从哪里来的

更改Scheme的表示法的最大问题是宏变得非常难以编写(看看有多难,看看Nimrod语言或Boo)。您必须首先解析输入语言,而不是直接使用代码作为列表。这通常涉及从输入为语言构建AST(抽象语法树)。当直接使用Scheme时,这是不必要的

但是,您可以在Gambit Scheme中查看六个表达式的语法。这里有一组很好的幻灯片,其中包含对以下内容的讨论:

但是不要告诉任何人!(内部笑话是,有人建议每天编写一个不带括号且使用中缀符号的Lisp,有人则大约每月发布一次实现。)

我认为“甜美表达式”可能是摆脱Lisp中括号的更为周到的方法之一。它显然甚至支持宏


然而,我认为大多数人最终会忘记括号或使用另一种语言

最初,Lisp计划使用一种称为M-Expressions的语法,而S-Expressions只是一种过渡解决方案,以便于编译器构建。当M-expression准备好被引入时,已经开始使用Lisp的程序员只是停留在他们已经习惯的地方,而M-expression从未流行起来


在Guile中有一个中缀符号,但很少使用。一个好的Lisp程序员甚至不再看到Paren,前缀符号也有它的优点…

有些语言正是这样做的。例如:.

看看“sweet expressions”,它为传统的s表达式提供了一组额外的缩写。他们添加了语法相关的缩进,一种进行中缀的方法,以及传统的函数调用,如f(x)。与过去几乎所有使Lisps可读的努力不同,sweet表达式是向后兼容的(您可以自由混合格式良好的s表达式和sweet表达式)、通用的和同音的

Sweet表达式是在上开发的,有一个示例实现


对于Scheme,有一个用于甜蜜表达的SRFI:

Pro提示:Google For
Scheme language
:)不,我认为没有人想要这个。我建议使用另一种JavaScript语法,用优雅的S表达式替换难看的C风格代码。完全同意不看Paren。关键是使用具有Lisp模式的编辑器。然后你看到的是缩进。这就是目的,而帕伦只是手段。Racket(以前的PLT方案)也有一些中缀:(a.f.b)==>(fab)。您有时会看到它用于合同:(in.->.out)而不是(->in-out)。但并非总是如此。除此之外就没有了。因为前缀确实有它的优点。除了甜言蜜语本身之外,还调查了许多可供选择的工作。人们认为Python是一种有着一流功能和一个单一名称空间(“LISP-1”)的小语言的方案,但是没有宏。