Clojure Clojure vector 疑问

simlegate · 2013年09月04日 · 最后由 mrhooray 回复于 2014年04月08日 · 2748 次阅读
user=> (time (vector 1 3 4))
"Elapsed time: 0.024 msecs"
[1 3 4]
user=> (time [1 3 4])
"Elapsed time: 0.016 msecs"
[1 3 4]

感觉第一个更符合S-表达式
第二个是语法糖 ,效率应该更加慢啊

共收到 4 条回复

我猜: 第二个不是语法糖 (现在很多"语法糖"都可以把"糖"去掉了... 算不算糖要看是否只在 parse 时处理, 有运行时语义的话就不算糖了), 或者是语法糖但翻译成比调用 vector 函数更高效的方式 (其实 vector 可以动态绑定的, 而 [] 必然调用到内建的那个), 又或者在进 time 之前就完成 vector 的构建了...

@luikore 语法糖但翻译成比调用 vector 函数更高效的方式这个听着有点可信。

第二个没方法调用啊

程序语言里没有“语法糖”这个概念

5楼 已删除
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册