免费注册 查看新帖 |

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
51 [报告]
发表于 2011-08-17 12:01 |只看该作者
回复 46# starwing83


    嗯。从编程范式上来说,lisp之流是属于functional programming language.

    关于可计算理论,实际上是按照类似于functional programming language这种方式来定义的。
    给定一个输入A, 给定一个函数f, f(A) 能够得到值B, 那么就说f在A上是可计算的。

    命令式编程范式更加靠近计算机硬件模型。

论坛徽章:
0
52 [报告]
发表于 2011-08-17 12:07 |只看该作者
own应该用新八做头像的,这样才是吐槽专业户。

论坛徽章:
0
53 [报告]
发表于 2011-08-17 12:16 |只看该作者
本帖最后由 三月廿七 于 2011-08-17 23:05 编辑
回复  reiase

从一开始 sgml/html/xml 就不应该被发明出来。
发明者都该拉去鞭笞一万次一万次一万次! ...
OwnWaterloo 发表于 2011-08-16 17:13


怎么说, 也有人将xml列为20世纪IT界最伟大的发明之一, ...
好歹比txt要好用,  别那么说它的不是

xml目前只作为txt的增强版用下, 处理一下多维数组

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
54 [报告]
发表于 2011-08-17 12:48 |只看该作者
有了语句返回值,语句和表达式的界限被模糊了,语句也可以被当作表达式,事实上语句就是特殊结构的表达式,这一点和Lisp是相通地(Lisp分为special-form和normal-form,后者是简单函数调用,前者就是语句的等价物)
starwing83 发表于 2011-08-17 10:31


lisp的special-form与normal-form的区别就是参数求值方式不同。
他们都是表达式, lisp没有语句一说。
将special-form说成语句的等价物, 是用其他语言的思维去解释lisp。

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


    一般来说都要有AST的吧。宏能做到的太有限了。Cfront为什么叫编译器而不是叫预处理器,就是因为会生成AST吧~

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
56 [报告]
发表于 2011-08-17 12:56 |只看该作者
a = for x = 1, 10 if x % 2 == 0 then x
for 语句也有返回值,返回值是for语句的循环体的返回值的数组(nil被忽略),所以上述语句将a赋值为数组[2,4,6,8]
starwing83 发表于 2011-08-17 10:31


要想做到一切皆表达式, 只有返回值还不够。

表达式是可以任意嵌套的。
因为各种lisp的循环结构都不同, 下面只说伪代码:

  1. (set 'a
  2.   (for (x 1 10)
  3.     (if (= 0 (% x 2)) x) ) )
复制代码
但for 的3个元素也可以任意嵌套其他表达式, 比如局部变量定义:

  1. (set 'a
  2.   (for ( x
  3.            (let (a b c) (...)
  4.         10)
  5.     (if (= 0 (% x 2)) x) ) )
复制代码
moonscript可以么?

论坛徽章:
0
57 [报告]
发表于 2011-08-17 12:57 |只看该作者
本帖最后由 三月廿七 于 2011-08-17 23:05 编辑

xml 穷人的数据库

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
58 [报告]
发表于 2011-08-17 13:00 |只看该作者
本帖最后由 OwnWaterloo 于 2011-08-17 13:02 编辑
a = for x = 1, 10 if x % 2 == 0 then x
for 语句也有返回值,返回值是for语句的循环体的返回值的数组(nil被忽略),所以上述语句将a赋值为数组[2,4,6,8]
starwing83 发表于 2011-08-17 10:31


要想做到一切皆表达式, 只有返回值还不够。

表达式是可以任意嵌套的。
因为各种lisp的循环结构都不同, 下面只说伪代码:

  1. (set 'a
  2.   (for (x 1 10)
  3.     (if (= 0 (% x 2)) x) ) )
复制代码
但for 的3个元素也可以任意嵌套其他表达式, 比如局部变量定义:

  1. (set 'a
  2.   (for ( x
  3.         (let (a b c) (...) ) ; 这里通过一些计算返回初值
  4.          10)
  5.     (if (= 0 (% x 2)) x) ) )
复制代码
moonscript可以么?

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

这犀利的吐槽…… 新吧唧还是由你来好了~
其实论吐槽, 我还是更喜欢囧虚与《大神与七位伙伴》里的迷之音……
新吧唧的声音吸引力不够……

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
60 [报告]
发表于 2011-08-17 13:10 |只看该作者
一般来说都要有AST的吧。宏能做到的太有限了。Cfront为什么叫编译器而不是叫预处理器,就是因为会生成AST吧~
captivated 发表于 2011-08-17 12:48


lisp的代码读入后就是AST, 整个AST都是暴露的, 可由程序员直接操作的。
所以lisp的宏能做到功能就与其他语言里的宏不可同日而语了……
AST在手天下我有……
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP