免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: starwing83
打印 上一主题 下一主题

[C] 站在月亮看地球——牛逼的新语言 MoonScript [复制链接]

论坛徽章:
3
15-16赛季CBA联赛之山东
日期:2016-10-30 08:47:3015-16赛季CBA联赛之佛山
日期:2016-12-17 00:06:31CU十四周年纪念徽章
日期:2017-12-03 01:04:02
201 [报告]
发表于 2011-08-19 19:22 |只看该作者
{:3_189:}
翻页!

论坛徽章:
3
15-16赛季CBA联赛之山东
日期:2016-10-30 08:47:3015-16赛季CBA联赛之佛山
日期:2016-12-17 00:06:31CU十四周年纪念徽章
日期:2017-12-03 01:04:02
202 [报告]
发表于 2011-08-19 19:24 |只看该作者
回复 195# starwing83


    啊 那个我的意思是说你们两个都是盖楼王 没有ow能这么盖楼么...

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
203 [报告]
发表于 2011-08-19 19:28 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
204 [报告]
发表于 2011-08-19 19:30 |只看该作者
   很好,我觉得我抓到你的思想和我们的必然分歧了。
——原来,你的意思是,macroexpand这个操作本身,也是调用的一部分!
starwing83 发表于 2011-08-19 19:14


准确的说是整个form的求值策略。

...
这就是我的意思。
starwing83 发表于 2011-08-19 19:14


这是你的意思, 与大部分情况一样: 我没看懂。
你还是回答我那个问题吧: (if c x y) 与 (push l x) 为什么前者不能expand后者可以?

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
205 [报告]
发表于 2011-08-19 19:34 |只看该作者
回复  OwnWaterloo
好,我们认为shit就是个悲观和乐观的问题可以吗?我觉得Lua比别的其他的什么好有问题吗?
starwing83 发表于 2011-08-19 19:04


好, 这解决了: 我喜欢说成lua产生的shit比其他什么的少。

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
206 [报告]
发表于 2011-08-19 19:37 |只看该作者
回复 200# OwnWaterloo


    关于这一点,请参看你的楼上。我做了完整回答,我相信这是个观念问题。


下面的问题,1我已经回答了好几楼了,虽然没有明确回答,好,既然你要明确回答,那么的确第一个不能被展开而第二个能,这代表他们不同,然而不代表他们的调用策略就得不同。详情参看你的楼上。

至于问题二:带是为了有实际的用处——调试,然而标准不会去管调试这种东西——你觉得C语言会把吸血鬼或者dbghelp列为标准么?但是无论哪个C实现都得至少支持一份是不?

问题是,标准这么做是强调一个重要的暗示:Scheme不需要macroexpand,至于为什么不需要我解释过了。

我觉得有macroexpand——尽管它很爽,很利于调试,但是就如同gdb一样,不适合在正式的项目里面作为一部分——偶尔拿来调试还是可以的。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
207 [报告]
发表于 2011-08-19 19:39 |只看该作者
回复 194# starwing83

我也觉得elisp是shit。 至于你那些批评, 完全可以套用到C/C++上去。 但你可以不用吗?
至于被洗脑什么的, 你这就像是java程序员不懂C++的苦衷似的。

另外, 重点不是elisp是否是shit, 而是special-form与macro是否是不同的概念吧?
common lisp同样支持macroexpand, 而且据你所说, scheme也有非标准的方法, 那还是上面的问题, 我已经问过无数遍了……

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
208 [报告]
发表于 2011-08-19 19:45 |只看该作者
回复 204# OwnWaterloo


    这样,我形容一下(if c x y)和(push l x)我认为的执行流程吧。

1. 首先,这是两个表。
2. 我们先说1. 看到if,这是个关键字,有超多的执行方法,我们说最经典的那种,首先if是special-form,于是将后面的部分(表(c x  y))直接传给if对应的过程。
   2.1 if得到了c和x和y三个东西,首先对c进行eval,得到值,然后根据值,决定对x或者y 来eval,剩下东西忽略。
   2.2 然后x和y经历相同过程,并且剩下的没有被执行的被回收,这是后话了。
3. 我们说2.假设2是个宏(为嘛= =通常这是个函数哇……性能原因么),同样的,将表(l x)传递给宏的宏体。
   3.1 宏体产生实际代码。
   3.2 将实际的代码插入分析栈,重新按整个流程分析。

你看,2.1和2.2和3.1和3.2实际上是我所谓的同一个流程——操作,他们可能不同(必然的,就算是函数执行流程也可能不同——C函数或Lisp函数),但是大体框架(我是说2.和3.)是完全一致的。

概括说来,if的“操作”就是判断加eval,而宏的操作就是执行加插入(代码)。他们都是操作。我将其抽象在一起(类似多态),所以我才说,Lisp只分special-form和normal-form,原因是参数求值的方式不同,至于求值完了需要做什么操作,是操作自己的事情——你总不能期待add能做跟sub一样的事情吧?

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
209 [报告]
发表于 2011-08-19 19:53 |只看该作者
回复  OwnWaterloo
    关于这一点,请参看你的楼上。我做了完整回答,我相信这是个观念问题。


下面的问题,1我已经回答了好几楼了,虽然没有明确回答,好,既然你要明确回答,那么的确第一个不能被展开而第二个能,这代表他们不同,然而不代表他们的调用策略就得不同。详情参看你的楼上。

至于问题二:带是为了有实际的用处——调试,然而标准不会去管调试这种东西——你觉得C语言会把吸血鬼或者dbghelp列为标准么?但是无论哪个C实现都得至少支持一份是不?

问题是,标准这么做是强调一个重要的暗示:Scheme不需要macroexpand,至于为什么不需要我解释过了。

我觉得有macroexpand——尽管它很爽,很利于调试,但是就如同gdb一样,不适合在正式的项目里面作为一部分——偶尔拿来调试还是可以的。
starwing83 发表于 2011-08-19 19:37


别将关键点隐藏在一些有的没的的理由中, 你这些批评真就像是 java 批评 C/C++ 指针不安全似的。
C标准里还有 setjmp/longjmp , 这玩意不是魔鬼?

重点:
回复  OwnWaterloo
这代表他们不同,然而不代表他们的调用策略就得不同。详情参看你的楼上。
starwing83 发表于 2011-08-19 19:37


这是否算是承认了  —— 无论你再怎么想将视线"转移到 macroexpand 无用"上 —— special-form 与 macro 是不同的?
既然不同, 是否就需要两个概念?

只关注"直接调用策略"这一个方面就想将它们混在一个概念中 —— 我就反感这种态度。
当有明显主语时扯出什么对象, 扯出什么消息; 一旦涉及到多主语无主语时非要扯出个theWorld theGlobal, 累吗?
一开始就承认这世界不全是object有那么困难吗?

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
210 [报告]
发表于 2011-08-19 19:54 |只看该作者
回复 195# starwing83
这叫人民眼睛是雪亮的……
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP