学习交流编程语言理论的平台?


#21

封装的意思是 接口与实现分离

继承的意思是 代码重用

多态的意思是 功能扩展

我觉得fp也会有这些考虑 只是实现方式不一样罢了


#22

本来就是通用的概念,人为地制造对立而已。

编程最重要的事情,其实是让写出来的符号,能够简单地对实际或者想象出来的“世界”进行建模。一个程序员最重要的能力,是直觉地看见符号和现实物体之间的对应关系。不管看起来多么酷的语言或者范式,如果必须绕着弯子才能表达程序员心目中的模型,那么它就不是一个很好的语言或者范式。有些东西本来就是有随时间变化的“状态”的,如果你偏要用“纯函数式”语言去描述它,当然你就进入了那些monad之类的死胡同。最后你不但没能高效的表达这种副作用,而且让代码变得比过程式语言还要难以理解。如果你进入另一个极端,一定要用对象来表达本来很纯的数学函数,那么你一样会把简单的问题搞复杂。Java的所谓design pattern,很多就是制造这种问题的,而没有解决任何问题。

是谁说的就不用我说了8,懂得都懂


#23

小圈子这样是不可避免的。相反,建一个开放论坛反而有可能讨论质量会更差。


#24

这种明显外行的言论就不要拿出来丢人了。

搞抽象代数的一直都用 Java 这种 OOP 语言好么,只有物件才能有足够表现力,Haskell 的 typeclass 这种阉割的玩意拿来是丢人的么?

Algebraic effect 反而一直都是经典的副作用模型,只不过最近才拿到编程语言上实现而已,就被驳斥成这样?

太特么好笑了


#25

我又龙鸣了,我怎么看不懂你说的这些和我贴的yin人yin言直接有什么关系啊。

讲道理Free Monad把Algebraic Effect弄成人不人鬼不鬼的样子能用?


#26

Translate:

C 语言把汇编搞成人不人鬼不鬼的样子能用?

大家都来打卡片才最好


#27

我大Scheme的continuation呢?出来教monad做effect


#28

Continuation 就是个 monad,你到底懂不懂 continuation 啊。

Haskell 的 monad IO 之前就是用 continuation 做 effect handling,然后觉得不好才上的 monad IO,你懂不懂啊。


沒学过就想当然,外行指導內行就是这么來的。

不对,我是龙鸣,你是龙井茶)唐突


#29

不懂Monad,那我还要学习一个。我只是个看见monad就只会do的弱子


我是龙鸣,现在我们都是龙鸣了,OK?

所以你还没回复我你唐突effect和我贴yin人yin言有什么关系呢,又给你绕进去了。

可惜我只会泡红茶,只有红茶可以吗


#30

这两句自己为是的结论和实践是相悖的


#31

不对啊,在 (e)lisp 社区讨论 algebraic effect 怎么没把 common lisp 的 condition system 拿出来说啊


#32

这有个鸡辦好讲的,咋不把 if else 拿出來说么


#33

无法理解,既然能从 algebraic effect 联想到 continuation,那为什么就想不到 condition system?


#34

那么问题来了,抽象代数里的算不算很纯的函数?

昨晚问了个搞数学的,回答是用计算机搞数学的都是野蛮人 :joy:


#35

任意群和置换群的子群同构,可以说很函数了,不过我不知道他在说啥。


#36

纯函数是搞 functional programming 的人生造出来的概念。数学里压根没有纯不纯这种东西

和计算机搭边的数学在主流基本不怎么受待见,更别提搞自动证明的都会被某些学数理逻辑的鄙视

某yin还是谁还不是说过数学家不过是没有电脑的可怜的计算机科学家

你问的人怕不是对计算机的了解停留在 C++, FORTRAN,Matlab, Wolfram 吧。


#37

作为大一新生我想打个岔,有没有什么推荐的书或者路线来学习吗


#38

看这本书不需要之前写过什么OCaml、Haskell,因为这本书本身就是教你怎么写一个OCaml、Haskell。


#39

没有必要先熟悉掌握Haskell,Haskell就和C++一样根本不可能真正“熟悉”。

基本上只要会写scheme解释器就能看这本书。

讲真,这本书例子给的例子已经很多了,而且都有OCaml实现代码。


#40

我不会写,有什么资源吗

主要是理论部分例子少,比如nameless representation of terms里substitution的例子就很少。可能作者觉得前面几章已经把substitution讲明白了吧。