有没有好的替代Scheme语法?

dds*_*dsk 5 syntax scheme

我想通过使用不同的语法可以使Scheme(也许是Lisp)更加"用户友好".例如,代替具有丑陋括号的嵌套S表达式,可以设计某种语法,使其更接近一些更广泛使用的语言(例如类似Java而不需要定义类).

如果它更冗长,那不一定是坏事.例如,语法可能需要在许多人期望它们的地方使用行分隔符和逗号,并期望显式返回语句.此外,允许某些运算符使用中缀样式似乎并不困难(只需遵守普遍接受的运算符首选项规则).

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

您对此有何看法和想法?这样的事情是否存在?(我希望它确实如此,但"Scheme"是一个毫无价值的谷歌术语,我找不到任何东西!)

mic*_*kig 7

我认为"甜蜜的表达"可能是摆脱Lisp中括号的更周到的方法之一.它显然甚至支持宏.

http://www.dwheeler.com/readable/sweet-expressions.html

但是,我认为大多数人最终会克服括号或使用其他语言.


小智 7

最初,Lisp计划使用一种名为M-Expressions的语法,S-Expressions只是一种过渡解决方案,可以更轻松地构建编译器.当M-Expressions准备好被介绍时,那些已经接受过Lisp的程序员只能继续使用他们习以为常的程序,并且M-Expressions从未流行起来.

在Guile中有一个中缀符号,但它很少使用.一个优秀的Lisp程序员甚至不再看到parens,前缀表示法确实有其优点......

  • 完全同意不要看到父母。关键是使用具有Lisp模式的编辑器。然后您会看到缩进。parens只是手段的目的。球拍(以前的PLT方案)也有一些内饰:(a。f。b)==>(fab)。您有时会看到这用于合同:(。->。out),而不是(-> in out)。但不总是。并没有太多的其他。因为前缀确实有其优点。 (2认同)

小智 6

看看"sweet-expressions",它为传统的s表达式提供了一组额外的缩写.它们添加了语法相关的缩进,一种做中缀的方法,以及像f(x)这样的传统函数调用.与过去几乎所有使Lisps可读的努力不同,sweet-expression是向后兼容的(你可以自由地混合格式良好的s表达式和sweet-expressions),泛型和homoiconic.

Sweet表达式是在http://readable.sourceforge.net上开发的,并且有一个示例实现.

对于Scheme,有一个用于甜蜜表达的SRFI:http://srfi.schemers.org/srfi-110/


Chr*_*ung 3

尝试SRFI 49的尺寸。:-P

(不过,说实话,正如拉夫所说,“我认为没有人想要这个”。)