展开讨论

经验与复盘经验摘录 · 机器翻译

> 我觉得我应该说明一下,不要仅仅因为一句话就对珍妮特形成太多看法。

> 我觉得我应该说,你不应该仅仅因为一个人用它来原型设计了一个奇怪的宏系统,就对Janet形成太多看法。这个概念并不是,比如,Janet的一部分--Janet的宏基本上是Common Lisp的,但有一个优雅的解决函数卫生问题的方法--而且我认为我甚至不是一个非常有代表性的Janet用户(作为一个宏的狂热爱好者)。即使你从未用它写过一个宏,Janet也是一个非常不错的Lua和Perl替代品!它的文本解析功能本身就很值得一看。当然,对卫生宏的替代方案最初让我对它产生了兴趣,但现在我已经学到了足够的知识来满足我的兴趣。然而,我会收回我之前说的我不打算进一步研究它的说法,因为我想起了我对它们如何嵌入C程序也感兴趣。 > 当然!但我觉得这并不能成为对我反对宏的有力论点,因为你可以对一等函数、泛型类型或任何其他语言特性说同样的话。而且人们确实这么做了!…

源讨论广义宏原帖 74 条评论 · 导入时统计
2

这条内容在回应什么?

父级讨论 · 节选

IA

我认为你在本讨论中提出了非常有道理的观点:) > 这篇文章说服我不要过多关注Janet。 我想说的是,你不应该仅仅因为一个人用它来原型设计了一个奇怪的宏系统,就对Janet形成太多看法。这个概念并不是Janet的一部分——Janet的宏基本上是Common Lisp的,但有一个优雅的函数卫生问题解决方案——而且我认为我甚至不是一个非常有代表性的Janet用户(作为一个宏的狂热爱好者)。即使你从不使用它来编写任何宏,Janet也是一个非常不错的Lua和Perl替代品!它的文本解析功能本身就很值得一看。 > Lisp宏解决的问题是“这段代码比我希望的更冗长/难看/有重复/etc.”,而这并不是你编写程序要解决的问题。 我认为这忽略了我看到的“宏的真正意义”,…

完整原文

社区评论 0

还没有社区评论,来聊聊你的看法。

原讨论中的回复 2

仅展示本次导入中包含的直接回复。中文为机器翻译,可查看英文原文。

IA

> 对,完整的论点不是“有其他方法可以做到这一点”,而是“有其他方法可以做到这一点,而且其中几乎每一种方法都更不容易出错”。 我觉得你用宏可能想做的事情有很多种,这在很多情况下都是真的。 > 对于语言自带的流行库和其他东西也是如此,这就是为什么我对“defn”或“for”是宏并不特别担心。这些在大多数实现中都是宏,我知道,但它们是非常经过测试的宏,因为几乎每个写过大量Lisp代码的Lisp开发者都测试过它们。“defn”和“for”并没有坏。 所以我换一种方式来论证:defn和for以及其他普遍使用的宏之所以安全,并不是因为它们经过了充分测试,而是因为它们很简单。你知道(defn ...)就是(def (fn…

完整原文
LI

> 我传给Bob函数的表达式只执行一次 在函数式编程语言中当然不是这样,因为可以传递函数或存储函数的数据结构。传递的代码可以被任意次数地执行,并且在不同的上下文中执行。 > 宏并不能给你成千上万的程序员来测试你用宏构建的语言 不需要成千上万的程序员。这是错误的想法。宏也可以在任何规模的开发环境中进行测试和使用。

完整原文
在 Hacker News 阅读

尊重不同观点,分享具体经验。

登录后即可发帖、评论、转发和引用。