l**********n 发帖数: 8443 | |
c******o 发帖数: 1277 | 2 in some sense, right
but what you said is like
object just package code and data together.
kind of too short |
z****e 发帖数: 54598 | 3 感觉fp挺无聊其实
很多人只是死记硬背
不仅对fp不懂,对oop更是不懂
本来从oop过渡到fp是比较合理的
现在情况是很多人是oop搞不清楚
以为弄了fp就高大上了,结果是两个p都不懂
一深入就露馅,fp和oop配合起来真是管用
楼上的经验很多都可以直接挪用到java上
刚用了点immutable,hoho |
p*****2 发帖数: 21240 | 4 oo和fp根本不矛盾
【在 z****e 的大作中提到】 : 感觉fp挺无聊其实 : 很多人只是死记硬背 : 不仅对fp不懂,对oop更是不懂 : 本来从oop过渡到fp是比较合理的 : 现在情况是很多人是oop搞不清楚 : 以为弄了fp就高大上了,结果是两个p都不懂 : 一深入就露馅,fp和oop配合起来真是管用 : 楼上的经验很多都可以直接挪用到java上 : 刚用了点immutable,hoho
|
l**********n 发帖数: 8443 | 5 fp还是挺有意思的。一种不同的思维方式吧。
【在 z****e 的大作中提到】 : 感觉fp挺无聊其实 : 很多人只是死记硬背 : 不仅对fp不懂,对oop更是不懂 : 本来从oop过渡到fp是比较合理的 : 现在情况是很多人是oop搞不清楚 : 以为弄了fp就高大上了,结果是两个p都不懂 : 一深入就露馅,fp和oop配合起来真是管用 : 楼上的经验很多都可以直接挪用到java上 : 刚用了点immutable,hoho
|
c******o 发帖数: 1277 | 6 learning fp, even not using it make you a better developer |
l**********n 发帖数: 8443 | 7 fp最难的就是monad了吧。
【在 c******o 的大作中提到】 : learning fp, even not using it make you a better developer
|
c******o 发帖数: 1277 | 8 monadfix , arrowloop
comonad我都没有用好过
前两个很神奇,lazy value 自反馈自编程
最后一个在音频视频和历史数据 aggregration用的多。
functor,applicative,monad三者的关系和区别是fp核心知识之一
【在 l**********n 的大作中提到】 : fp最难的就是monad了吧。
|
b***e 发帖数: 1419 | 9 顶。I pretty much said the same.
【在 c******o 的大作中提到】 : learning fp, even not using it make you a better developer
|
b***e 发帖数: 1419 | 10 By monadfix you do you mean recursive monad binding (Levent Erkok 2000)? It
is certainly fancy but I can hardly find any real use of it.
【在 c******o 的大作中提到】 : monadfix , arrowloop : comonad我都没有用好过 : 前两个很神奇,lazy value 自反馈自编程 : 最后一个在音频视频和历史数据 aggregration用的多。 : functor,applicative,monad三者的关系和区别是fp核心知识之一
|
|
|
a*****e 发帖数: 1700 | 11 One use case: to construct cyclic graph where each node has a unique ID.
To have unique ID, you need a state monad. To make cyclic graph symbolically
, you need the ability to reference nodes that is only defined afterwards.
It
【在 b***e 的大作中提到】 : By monadfix you do you mean recursive monad binding (Levent Erkok 2000)? It : is certainly fancy but I can hardly find any real use of it.
|
a*****e 发帖数: 1700 | 12 这种理解方式可以上路,但走不远。建议从 fmap/return/join 来理解 monad,或者学
习以下怎么用 monad 来表达 non-determinism 和 continuation.
【在 l**********n 的大作中提到】 : 说白了
|
c******o 发帖数: 1277 | 13 你这个太高大上了。
我基本还是以工作可以用啥来学习的。
【在 a*****e 的大作中提到】 : 这种理解方式可以上路,但走不远。建议从 fmap/return/join 来理解 monad,或者学 : 习以下怎么用 monad 来表达 non-determinism 和 continuation.
|
l*********s 发帖数: 5409 | 14 wow, 以后面试也别考算法,就考对monad的理解吧 :-)
【在 c******o 的大作中提到】 : monadfix , arrowloop : comonad我都没有用好过 : 前两个很神奇,lazy value 自反馈自编程 : 最后一个在音频视频和历史数据 aggregration用的多。 : functor,applicative,monad三者的关系和区别是fp核心知识之一
|
a*****e 发帖数: 1700 | 15 我贴一个算24的程序吧(不是我写的),理解了 list monad 的都应该能明白。
make24 :: [Ratio Int] -> Bool
make24 = not . null . filter (==24%1) . ambArith
ambArith :: [Ratio Int] -> [Ratio Int]
ambArith [] = []
ambArith [x] = [x]
ambArith ns = do
let pickOne s = map (x -> (x, delete x s)) s
(x, xs) <- pickOne ns
(y, ys) <- pickOne xs
op <- [(+), (-), (*)] ++ [(/) | y /= 0]
ambArith $ (op x y) : ys
简单改改就可以不仅返回可能性而且输出算式,作为练习题吧。
【在 c******o 的大作中提到】 : 你这个太高大上了。 : 我基本还是以工作可以用啥来学习的。
|
c******o 发帖数: 1277 | 16 贴code不解释几乎是没用的, 大部分人(没有haskell/FP经验的)都要先研究1天才明
白是啥,然后再1天明白是
想说明啥。
【在 a*****e 的大作中提到】 : 我贴一个算24的程序吧(不是我写的),理解了 list monad 的都应该能明白。 : make24 :: [Ratio Int] -> Bool : make24 = not . null . filter (==24%1) . ambArith : ambArith :: [Ratio Int] -> [Ratio Int] : ambArith [] = [] : ambArith [x] = [x] : ambArith ns = do : let pickOne s = map (x -> (x, delete x s)) s : (x, xs) <- pickOne ns : (y, ys) <- pickOne xs
|
a*****e 发帖数: 1700 | 17 我是做个试验,要给那些把 monad 理解为 chaining pattern 的人看,能否读懂这个
程序。也没几行,可以通过学习增进理解,而不是靠我解释,是吧。
【在 c******o 的大作中提到】 : 贴code不解释几乎是没用的, 大部分人(没有haskell/FP经验的)都要先研究1天才明 : 白是啥,然后再1天明白是 : 想说明啥。
|
l**********n 发帖数: 8443 | 18 很容易理解啊。比scala规范多了啊。
【在 a*****e 的大作中提到】 : 我是做个试验,要给那些把 monad 理解为 chaining pattern 的人看,能否读懂这个 : 程序。也没几行,可以通过学习增进理解,而不是靠我解释,是吧。
|
g*****g 发帖数: 34805 | 19 多学点东西是好的,只不过这里学个Helloworld出来装逼的实在太多了。
【在 c******o 的大作中提到】 : learning fp, even not using it make you a better developer
|