大家喜欢什么语言特性

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那样动动鼠标就能操作数据库,然后最好还能自动把完成的代码按面向对象思想来整理…

虽然知道貌似不太可能…

1 个赞

这个句式让我想到当年 Julia 出来的时候打的广告了

宿主语言可以做到这样。

每天活在各种框架里,用贯了 注解/装饰器 ,感觉很好使啊,编程越来越像写配置文件了

1 个赞

厄…纯属巧合…只是一种个人的愿望…

厄…宿主语言是指?没记错的话,这个词貌似是用在网络开发或嵌入式开发中的?常用宿主语言不就是C++和python吗?还是说有其它含义?

就是像clojure, scala, kotlin这种能跑好多平台的,生态架在多平台上面,能用的东西就很多,可以满足各种需求。只是在不同的场合下,选不同平台。

哦,明白了。不过现在它们的运行速度和C还是有差距,使用起来也还是不够方便啊。希望未来会更好,嗯

我喜欢工程中实在点的,模式匹配 guard 这种。可以对参数入口很方便的处理,省去了冗长的if 逻辑和解构代码。

1 个赞

命名参数的优势这里总结的很简练: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安全卫士,的优化小球球学的,现在不用了,他会让电脑变卡)