为什么lisp,或者说common lisp现在这么冷门呢?

这个只是generic函数的功能罢了。CLOS的卖点不该是MOP么

我想看看CL能不能做个C++的Destructor出来

你比較下用 Chez 的 eval 和用 CCL 的 funcall 哪个快。

你引用的就是我在评论使用体验的话,不成你是语文出题老师,理解得比我这个原作还好?

结和上一句,看來你估计是瞎了,沒救了。

野獸论证,Paul Graham 在 on lisp 一书中用 CL 实现了 call/cc,有了 call/cc scheme 版本 values 就 trival,易证 CL 可实现 scheme 版本 values

你是不是不举?

不懂有 GC 了为啥还要 destructor,如果说 external memory, pointer finalizer 倒是有的。

这句不是说的动态性这种东西?

这两是一码事?

你告诉我在这些方面,Julia 难道能比 Smalltalk 厉害?

:ox::beer:,call/cc 原来支持传多个参数啊可以直接捕获一个接受多值的 continuation 啊

继续:

  • 在 CL 里实现一个默认 lazy 语义
  • 在 CL 里实现完全 immutable
  • 在 CL 里搞一个用 “linear logic” 类型标记优化内存使用

抬杠都抬不好,上来喷脏,还是回家至少看一下 r5rs 再来吧。

1 个赞

@LdBeth 问下Ldbeth老师, 啥时候能用上dependent type啊。

对了, idris2好像要结合dependent type和QTT,我们什么时候跟进?

原作者: 不是

对我这个 mac 用户來说沒有 native feeling GUI 0 分。Julia (Jupyter) 做得至少比 Self Squeak 什么的好看。主观感受你还能分对錯?

https://common-lisp.net/project/clazy/

只要不用,就是 immutable,JSFP 不就是如此?

http://home.pipeline.com/~hbaker1/Use1Var.html

> (call/cc (lambda (c) (c 1 2 3)))
1
2
3

「这是得了下等混一色的病,是日麻的大近视」请脑䃼一下这里放这句话什么意思。

1 个赞

destructor不光是为了释放内存,更主要的是deterministic的资源管理。譬如一个对象封装了一个GPU buffer,我会需要它一离开作用域立即调用destructor释放,而不是慢悠悠等GC来finalize。CL可以用(with-xxx )之类的解决一小部分,但是非局部作用域的情况我想不出来有什么好方法。

那么有种叫 deterministic GC 的東西可以直接接管。liner logic 也可以靜态分析什么时候该释放资源。

你随便丢两个名词出来就算是CL有这个功能了?按正常人的逻辑,两行的destructor,CL如果20行内写不出来那我觉得就不算语言能支持这个功能。如果需要拖一个大库进来才可以,那我直接说我用C++链接一个LISP解释器所以所有这些功能C++都支持了可不可以?

我最近用 APL 去了, ARON W. HSU 说 APL 不需要 dependent type 这种 type 比 term 还大的玩意,那我就不管了。

那我理解错来呗。所以原文比较的是什么系统交互的东西?让 Smalltalk 都黯然无光来呢?

(GUI Smalltalk 确实做的烂)

天才!

那你用 call/cc 实现一下吧,我学习学习(continuation 确实没学好)

1 个赞

可以的,C++ 最强,什么都支持,但是你得先链接完了再來说,現在说太早了一点点。因为你链接完了我就可以说 C++ 是一种 Lisp,所以 C++ 都支持很正常。

所以 CL 能有 depentent type 吗?(「没有什么语言特性 CL 是做不到的」又在我脑海回响)

1 个赞

我已經实现好了,还是你要个 define 才看得懂?

(define values (lambda a (call/cc (lambda (c) (apply c a)))))

可是我讲了这么多,你們又不去用,我讲个几把。

call-with-values 呢,光给我一个 values,没有配合的工具,我怎么用啊?


既然 CL 有 depentent type,那为什么要跑去用 APL 呢?APL 有什么功能是 CL 没有的吗?

因为 dependent type 是个

沒用的垃圾。

那你直接说 depentent type 是垃圾不就好了?没必要特地找一篇论文出来的,我又看不懂。


call-with-values


所以为什么要跑去用 APL 呢?APL 有什么特性是 CL 没有的吗?

1 个赞

因为你们这些 normie 无法学会 APL,可以让我继续把你当成无知的人

这是又一个可以说明 Scheme 所称的优雅一无是处的例子,call-with-values 沒法不用 primitive 实现。

(define values list)
(define (call-with-values producer consumer)
  (apply consumer (producer)))

原来 values 这么简单啊,学习了。看来这个功能其他语言都可以有呢,其他的小朋友们可以去尝试实现一个 Common Lisp 的 values 哦


所以这个特性是 CL 没有的吗?CL 不是什么特性都可以实现的吗?

1 个赞