封装的意思是 接口与实现分离
继承的意思是 代码重用
多态的意思是 功能扩展
我觉得fp也会有这些考虑 只是实现方式不一样罢了
封装的意思是 接口与实现分离
继承的意思是 代码重用
多态的意思是 功能扩展
我觉得fp也会有这些考虑 只是实现方式不一样罢了
本来就是通用的概念,人为地制造对立而已。
编程最重要的事情,其实是让写出来的符号,能够简单地对实际或者想象出来的“世界”进行建模。一个程序员最重要的能力,是直觉地看见符号和现实物体之间的对应关系。不管看起来多么酷的语言或者范式,如果必须绕着弯子才能表达程序员心目中的模型,那么它就不是一个很好的语言或者范式。有些东西本来就是有随时间变化的“状态”的,如果你偏要用“纯函数式”语言去描述它,当然你就进入了那些monad之类的死胡同。最后你不但没能高效的表达这种副作用,而且让代码变得比过程式语言还要难以理解。如果你进入另一个极端,一定要用对象来表达本来很纯的数学函数,那么你一样会把简单的问题搞复杂。Java的所谓design pattern,很多就是制造这种问题的,而没有解决任何问题。
是谁说的就不用我说了8,懂得都懂
小圈子这样是不可避免的。相反,建一个开放论坛反而有可能讨论质量会更差。
这种明显外行的言论就不要拿出来丢人了。
搞抽象代数的一直都用 Java 这种 OOP 语言好么,只有物件才能有足够表现力,Haskell 的 typeclass 这种阉割的玩意拿来是丢人的么?
Algebraic effect 反而一直都是经典的副作用模型,只不过最近才拿到编程语言上实现而已,就被驳斥成这样?
太特么好笑了
我又龙鸣了,我怎么看不懂你说的这些和我贴的yin人yin言直接有什么关系啊。
讲道理Free Monad把Algebraic Effect弄成人不人鬼不鬼的样子能用?
Translate:
C 语言把汇编搞成人不人鬼不鬼的样子能用?
大家都来打卡片才最好
我大Scheme的continuation呢?出来教monad做effect
Continuation 就是个 monad,你到底懂不懂 continuation 啊。
Haskell 的 monad IO 之前就是用 continuation 做 effect handling,然后觉得不好才上的 monad IO,你懂不懂啊。
沒学过就想当然,外行指導內行就是这么來的。
不对,我是龙鸣,你是龙井茶)唐突
不懂Monad,那我还要学习一个。我只是个看见monad就只会do的弱子
我是龙鸣,现在我们都是龙鸣了,OK?
所以你还没回复我你唐突effect和我贴yin人yin言有什么关系呢,又给你绕进去了。
可惜我只会泡红茶,只有红茶可以吗
这两句自己为是的结论和实践是相悖的
不对啊,在 (e)lisp 社区讨论 algebraic effect 怎么没把 common lisp 的 condition system 拿出来说啊
这有个鸡辦好讲的,咋不把 if
else
拿出來说么
无法理解,既然能从 algebraic effect 联想到 continuation,那为什么就想不到 condition system?
那么问题来了,抽象代数里的算不算很纯的函数?
昨晚问了个搞数学的,回答是用计算机搞数学的都是野蛮人
任意群和置换群的子群同构,可以说很函数了,不过我不知道他在说啥。
纯函数是搞 functional programming 的人生造出来的概念。数学里压根没有纯不纯这种东西
和计算机搭边的数学在主流基本不怎么受待见,更别提搞自动证明的都会被某些学数理逻辑的鄙视
某yin还是谁还不是说过数学家不过是没有电脑的可怜的计算机科学家
你问的人怕不是对计算机的了解停留在 C++, FORTRAN,Matlab, Wolfram 吧。
作为大一新生我想打个岔,有没有什么推荐的书或者路线来学习吗
看这本书不需要之前写过什么OCaml、Haskell,因为这本书本身就是教你怎么写一个OCaml、Haskell。
没有必要先熟悉掌握Haskell,Haskell就和C++一样根本不可能真正“熟悉”。
基本上只要会写scheme解释器就能看这本书。
讲真,这本书例子给的例子已经很多了,而且都有OCaml实现代码。
我不会写,有什么资源吗
主要是理论部分例子少,比如nameless representation of terms里substitution的例子就很少。可能作者觉得前面几章已经把substitution讲明白了吧。