【问题标题】:can lisp implement such a sugar syntax in lisp?lisp 可以在 lisp 中实现这样的糖语法吗?
【发布时间】:2019-06-09 00:05:17
【问题描述】:

是否可以在lisp中实现如下语法?

#1 + 1 &
=>
(+ #1 1)

#1 + #2 &
=>
(+ #1 #2)

"#+(number)" 表示函数的第 n 个参数。 “&”表示函数结束。

【问题讨论】:

  • 你知道 Lisp 通常不使用中缀语法吗?但可以肯定的是,可以实现输入语法。
  • quickdocs.org/fn,但它不仅仅基于阅读器宏
  • 查看 lambda 速记的一些库:github.com/CodyReichert/awesome-cl#lambda-shorthands
  • @RainerJoswig 谢谢,我刚刚修复了我的问题代码。我只是想知道这是否可能,这就足够了。

标签: lisp common-lisp syntactic-sugar


【解决方案1】:

是的。它可以实现为阅读器宏,但您应该知道(lambda x: x + 1)(lambda x, y: x + y) 在 lisp 中没有任何意义。它看起来像带括号的 python 语法。

现在阅读器宏是将'(3) 变成(quote (3)) 和``(a b ,(+ a b)) 变成(quasiquote (a b (unquote (+ a b)))) 的东西

【讨论】:

  • 准引用表达式的实际表示是未定义的,并且在不同的实现中有所不同...
猜你喜欢
  • 1970-01-01
  • 2022-11-29
  • 2015-09-04
  • 1970-01-01
  • 2020-08-16
  • 1970-01-01
  • 1970-01-01
  • 2020-09-13
  • 2011-12-28
相关资源
最近更新 更多