lisp 还没 macro 的时代用来定义不 eval 参数的函数的方法
但这东西靠编辑器提示展示出来不是比写要更好吗?不管有没有补全,都是没有必要用文本形式存在的感觉。
不eval参数的函数有以下几种:
(1)参数上有delay关键字,相当于把实参包装成thunk
(2)宏,但宏运行在一个compiling pass上
(3)实参使用quote包装一个表达式,函数内部使用eval求值实参(还需要外部传入一个额外的环境)
fexp相当于是哪一种?
LdBeth: 第三种。不过因为 Lisp 是 dynamic extent 不用传额外的环境,直接用默认的环境
- 泛型与元编程(疯狂暗示模板)
- 模式匹配
- 官方有正则处理与矩阵运算相关的库
- 类型推导
- 重载(可惜很难和和类型推导适配)
要不去试试Julia,就是多线程那块做的不怎么好
很多编辑器的参数名在阅读代码时不会展示出来,比如他的例子里
greet(called: "Bill", from: "Cupertino")
如果是 c/js 什么的就会显示成
greet("Bill", "Cupertino")
读起来意思就没那么清楚,所以有些人会写成
greetFrom("Cupertino", "Bill)
但还是不如用了 label 的那种看起来更爽(我个人觉得),而且用了 label 以后,函数重载看着也会蛮有意思的(我就是意思一下,类型声明的语法上可能会有点偏差,因为好久没写 swift 和 oc 了……):
from(int: Integer)
from(str: String)
楼上诸位都说得很专业,只说点一个普通用户的愿望吧…我只希望一个有一个语言能做到:像C语言那么快,像Matlab那么方便做数值计算,像python那样不用定义变量直接用、还都能动态,像Go语言那样做类,像Go语言那样准许多返回值,像python那样容易获得大量扩展包,像metapost和gnuplot那样容易画图,像access那样动动鼠标就能操作数据库,然后最好还能自动把完成的代码按面向对象思想来整理…
虽然知道貌似不太可能…
这个句式让我想到当年 Julia 出来的时候打的广告了
宿主语言可以做到这样。
每天活在各种框架里,用贯了 注解/装饰器
,感觉很好使啊,编程越来越像写配置文件了
厄…纯属巧合…只是一种个人的愿望…
厄…宿主语言是指?没记错的话,这个词貌似是用在网络开发或嵌入式开发中的?常用宿主语言不就是C++和python吗?还是说有其它含义?
就是像clojure, scala, kotlin这种能跑好多平台的,生态架在多平台上面,能用的东西就很多,可以满足各种需求。只是在不同的场合下,选不同平台。
哦,明白了。不过现在它们的运行速度和C还是有差距,使用起来也还是不够方便啊。希望未来会更好,嗯
我喜欢工程中实在点的,模式匹配 guard 这种。可以对参数入口很方便的处理,省去了冗长的if 逻辑和解构代码。
命名参数的优势这里总结的很简练:GitHub - monadfix/named: Named parameters (keyword arguments) for Haskell (感觉需要支持partial application 才能真正发挥出来)
我个人喜欢这东西做成 optional 的,Apple 系那种 pervasive 的感觉过头了
这个东西的优势很容易理解,我只是觉得这个东西应该是个编辑器功能,而不应该是一个语法。 我觉得语法里面只需要包含必要去写的内容就好了。有些东西不写也可以展示啊。
可以理解,但是“can be supplied in arbitrary order”显然不是编辑器功能能 cover 的
但我觉得顺序无关的参数并不是什么好设计。
我以前很喜欢C 的无GC特性,很喜欢free 和malloc,原因是。。。我以前神TMD喜欢把进程关掉节约内存的习惯,(从360安全卫士,的优化小球球学的,现在不用了,他会让电脑变卡)