tag:blogger.com,1999:blog-12467669.post4451093292858873289..comments2023-04-29T07:23:25.825-04:00Comments on Jay Fields' Thoughts: Macros Facilitate Expressive CodeJayhttp://www.blogger.com/profile/14491442812573747680noreply@blogger.comBlogger6125tag:blogger.com,1999:blog-12467669.post-57314780576725776722011-09-24T01:27:02.523-04:002011-09-24T01:27:02.523-04:00Pangloss, I don't see how not being see able t...Pangloss, I don't see how not being see able to do something, would be more powerful than being able. <br /><br />I do understand your worry on the clojure code doing something unexpected, something that writer of the code did not express to you. But I think that language should provide as good tools as possible for that. Clojure macros are truly powerful tool for that.Anonymoushttps://www.blogger.com/profile/16559630725511481138noreply@blogger.comtag:blogger.com,1999:blog-12467669.post-57070879662570496392009-08-19T01:48:05.911-04:002009-08-19T01:48:05.911-04:00http://groovy.codehaus.org/Local+AST+Transformatio...http://groovy.codehaus.org/Local+AST+TransformationsSaager Mhatrehttps://www.blogger.com/profile/03869587109666583246noreply@blogger.comtag:blogger.com,1999:blog-12467669.post-64161592728052138692009-08-18T21:42:51.389-04:002009-08-18T21:42:51.389-04:00I think you are mixing up power with expressivenes...I think you are mixing up power with expressiveness. I'd say that the extra syntax in Ruby is entirely justified since what's happening in that Lisp code seems totally unexpected.<br /><br />Further, I'd add that in Ruby you could go one further and overwrite assert_equal itself to accept a block. In that case the only real difference between the Lisp and the Ruby implementations is that in Ruby there is an indication that something unusual may be happening. That indication is part of what divides a powerful expressive language from one that is merely powerful.panglosshttp://github.com/panglossnoreply@blogger.comtag:blogger.com,1999:blog-12467669.post-38453637789883341592009-08-18T16:24:28.165-04:002009-08-18T16:24:28.165-04:00The LISP macro syntax is very powerful, but the ma...The LISP macro syntax is very powerful, but the macros themselves tend in the direction of write-only code; anybody that's tried to figure out what's going on in a heavily macro-driven environment will realize that. (See, for example, some of the Nyquist source [http://www.cs.cmu.edu/~rbd/doc/nyquist/title.html])<br /><br />If it absolutely *had* to work in Ruby, I imagine one could do some sort of evil in ParseTree or equivalent; look at the recent posts about ordered hashes in 1.8.Matt joneshttps://www.blogger.com/profile/05972274369585451523noreply@blogger.comtag:blogger.com,1999:blog-12467669.post-57620288318754072382009-08-18T06:05:00.780-04:002009-08-18T06:05:00.780-04:00Ok, I've got it now. You need the block for th...Ok, I've got it now. You need the block for the lazy evaluation of the assert_equal parameters. So I'm wrong with my comment above.janfrinoreply@blogger.comtag:blogger.com,1999:blog-12467669.post-57064070294515479412009-08-18T05:30:10.544-04:002009-08-18T05:30:10.544-04:00Maybe I'm missing something, but it is possibl...Maybe I'm missing something, but it is possible without the extra block.<br /><br />See <a href="http://gist.github.com/169636" rel="nofollow">here</a>.janfrinoreply@blogger.com