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 倒吸一口冷气。这玩意真心掌握不了。
但Clojure社区现在不鼓励用宏了。在Clojure早期的时候,很多库还是用了不少宏的,
比如Storm,compojure,等等。但现代的clj库几乎都不用宏了。
这有两个原因:
1. Clojure程序员追求好的composibility。在组合能力上,宏不如函数,而函数又不如
纯数据,所以现在用Clojure实现一个功能的优先级是:
data > function > macro
能用数据作的事不用函数做,能用函数的不用宏。比如datomic,onyx等等项目,都是
以数据结构为中心的,比较declarative。
2. 从历史上看,宏的日常使用容易造成社区分裂,参见Common LISP。
总而言之,用Clojure不用宏没关系。
【在 t**r 的大作中提到】
: 最近在用clj干活。顺便看了看macro 倒吸一口冷气。这玩意真心掌握不了。
n*w
3 楼
有没有什么情况用宏特别合适?
不如
【在 h*i 的大作中提到】
: 宏其实很简单的,就是一种编译前的预处理语法而已。
: 但Clojure社区现在不鼓励用宏了。在Clojure早期的时候,很多库还是用了不少宏的,
: 比如Storm,compojure,等等。但现代的clj库几乎都不用宏了。
: 这有两个原因:
: 1. Clojure程序员追求好的composibility。在组合能力上,宏不如函数,而函数又不如
: 纯数据,所以现在用Clojure实现一个功能的优先级是:
: data > function > macro
: 能用数据作的事不用函数做,能用函数的不用宏。比如datomic,onyx等等项目,都是
: 以数据结构为中心的,比较declarative。
: 2. 从历史上看,宏的日常使用容易造成社区分裂,参见Common LISP。
不如
【在 h*i 的大作中提到】
: 宏其实很简单的,就是一种编译前的预处理语法而已。
: 但Clojure社区现在不鼓励用宏了。在Clojure早期的时候,很多库还是用了不少宏的,
: 比如Storm,compojure,等等。但现代的clj库几乎都不用宏了。
: 这有两个原因:
: 1. Clojure程序员追求好的composibility。在组合能力上,宏不如函数,而函数又不如
: 纯数据,所以现在用Clojure实现一个功能的优先级是:
: data > function > macro
: 能用数据作的事不用函数做,能用函数的不用宏。比如datomic,onyx等等项目,都是
: 以数据结构为中心的,比较declarative。
: 2. 从历史上看,宏的日常使用容易造成社区分裂,参见Common LISP。
h*i
4 楼
http://www.lispcast.com/when-to-use-a-macro
★ 发自iPhone App: ChineseWeb 8.7
【在 n*w 的大作中提到】
: 有没有什么情况用宏特别合适?
:
: 不如
★ 发自iPhone App: ChineseWeb 8.7
【在 n*w 的大作中提到】
: 有没有什么情况用宏特别合适?
:
: 不如
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。
我觉得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。
相关阅读
问个过时的问题今天电面又被老印黑了。。。。 (转载)找Computer Science或相关专业的人一起写专利文件nsa的big data项目, 学data mining的人有工作了 (转载)算了, 我还是把这个版Z掉吧HTML5 for .NET Developersnode.js有啥好书?如何把文字转换成机器可读形式?mitbbs没有一个硬件的技术性版面abs((int)-2147483648)是负数,如何 解释?FMP supports UI thread in both Swing and SWTpython哪个JSON库最好?有谁用过NixOs?c++ primer 和 c++ programming language 这两本书有什么区别c#, c++光是数值运算的话,速度有多大区别?IKM c++谁是做visual studio 2012的? (转载)怎样的构架才算Private Cloud?C#中如何share Pre-processing directiveshow to destruct list with loop?