Redian新闻
>
最近在用clj干活。顺便看了看macro 倒吸一口冷气。
avatar
最近在用clj干活。顺便看了看macro 倒吸一口冷气。# Programming - 葵花宝典
t*r
1
最近在用clj干活。顺便看了看macro 倒吸一口冷气。这玩意真心掌握不了。
avatar
h*i
2
宏其实很简单的,就是一种编译前的预处理语法而已。
但Clojure社区现在不鼓励用宏了。在Clojure早期的时候,很多库还是用了不少宏的,
比如Storm,compojure,等等。但现代的clj库几乎都不用宏了。
这有两个原因:
1. Clojure程序员追求好的composibility。在组合能力上,宏不如函数,而函数又不如
纯数据,所以现在用Clojure实现一个功能的优先级是:
data > function > macro
能用数据作的事不用函数做,能用函数的不用宏。比如datomic,onyx等等项目,都是
以数据结构为中心的,比较declarative。
2. 从历史上看,宏的日常使用容易造成社区分裂,参见Common LISP。
总而言之,用Clojure不用宏没关系。

【在 t**r 的大作中提到】
: 最近在用clj干活。顺便看了看macro 倒吸一口冷气。这玩意真心掌握不了。
avatar
n*w
3
有没有什么情况用宏特别合适?

不如

【在 h*i 的大作中提到】
: 宏其实很简单的,就是一种编译前的预处理语法而已。
: 但Clojure社区现在不鼓励用宏了。在Clojure早期的时候,很多库还是用了不少宏的,
: 比如Storm,compojure,等等。但现代的clj库几乎都不用宏了。
: 这有两个原因:
: 1. Clojure程序员追求好的composibility。在组合能力上,宏不如函数,而函数又不如
: 纯数据,所以现在用Clojure实现一个功能的优先级是:
: data > function > macro
: 能用数据作的事不用函数做,能用函数的不用宏。比如datomic,onyx等等项目,都是
: 以数据结构为中心的,比较declarative。
: 2. 从历史上看,宏的日常使用容易造成社区分裂,参见Common LISP。

avatar
e*o
5
Re
我觉得lisp 不是死在括号上 是死在macro上
lisp 类的语言声称syntax简单 但是加上macro 就意味着你永远学不完它的syntax

不如

【在 h*i 的大作中提到】
: 宏其实很简单的,就是一种编译前的预处理语法而已。
: 但Clojure社区现在不鼓励用宏了。在Clojure早期的时候,很多库还是用了不少宏的,
: 比如Storm,compojure,等等。但现代的clj库几乎都不用宏了。
: 这有两个原因:
: 1. Clojure程序员追求好的composibility。在组合能力上,宏不如函数,而函数又不如
: 纯数据,所以现在用Clojure实现一个功能的优先级是:
: data > function > macro
: 能用数据作的事不用函数做,能用函数的不用宏。比如datomic,onyx等等项目,都是
: 以数据结构为中心的,比较declarative。
: 2. 从历史上看,宏的日常使用容易造成社区分裂,参见Common LISP。

avatar
t*r
6
meta programming c++ 也可以搞 比较难写就是了。

【在 e*******o 的大作中提到】
: Re
: 我觉得lisp 不是死在括号上 是死在macro上
: lisp 类的语言声称syntax简单 但是加上macro 就意味着你永远学不完它的syntax
:
: 不如

avatar
e*o
7
难写的好处是提高了bar
不是随便一个smart ass 都随时想搞一下

【在 t**r 的大作中提到】
: meta programming c++ 也可以搞 比较难写就是了。
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。