由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - scala和monad
相关主题
Scala的map和flatmap什么区别?Java 不是纯oo, oo 不是 imperative programming
这次Scala没有入选有点意外呀其实想学就学fp,不学就算了
我对为什么使用FP的理解 (补)我还是认为scala的程序员水平高
大牛给讲讲monad吧?haskell 真是逆天, 各种特殊符号都有特殊用途
看来跳了Scala的坑是对的学FP不是为了写代码, 而是为了优秀的架构.
想学FP最好不要从Scala开始FP 之我见 (长)
Haskell很难学。。大牛对Scala的type system如何评价?
monad就是一chaining patternFP更接近人的思维
相关话题的讨论汇总
话题: monad话题: ghci话题: scala话题: functor
进入Programming版参与讨论
1 (共1页)
p*****2
发帖数: 21240
1
functional scala 一定要用monad吗?
我指的是显式的用。不是隐式的用list,future就算用了。
或者说不理解monad可以算functional scala吗?
monad在实践中在scala项目中的比重有多大?比如kafka,spark这些项目。
c*******9
发帖数: 9032
2
纯functional 大多要用到monad吧。

【在 p*****2 的大作中提到】
: functional scala 一定要用monad吗?
: 我指的是显式的用。不是隐式的用list,future就算用了。
: 或者说不理解monad可以算functional scala吗?
: monad在实践中在scala项目中的比重有多大?比如kafka,spark这些项目。

c******o
发帖数: 1277
3
monad是一种data control structure, 是一种pattern
你当然可以不用。像java不用di,ioc一样,自己取舍。
但大家都用,自然有他的道理和好处
c******o
发帖数: 1277
4
app developer 一般不用自己design monad
理解还是需要的。
p*****2
发帖数: 21240
5

用肯定用到。我想知道的是,monad anywhere吗?到底多大程度上用。

【在 c*******9 的大作中提到】
: 纯functional 大多要用到monad吧。
p*****2
发帖数: 21240
6

大牛的项目用到多少monad?常用的是哪些?

【在 c******o 的大作中提到】
: monad是一种data control structure, 是一种pattern
: 你当然可以不用。像java不用di,ioc一样,自己取舍。
: 但大家都用,自然有他的道理和好处

p*****2
发帖数: 21240
7

嗯。我想问的就是使用的问题。到底多大程度上用到了monad。常用的有哪些。库就是
scalaz吧?

【在 c******o 的大作中提到】
: app developer 一般不用自己design monad
: 理解还是需要的。

c******o
发帖数: 1277
8
in real work, everything is a monad/applicative functor/functor...
like future, list, json validator, error handling, db object etc.
but I did not design or implement most of them, only used them.
even common MVC components have functional combinators (means them are some
sort of ADTs).
p*****2
发帖数: 21240
9

some
这个我知道。你的意思除了这些就不用其他monad了?那不需要理解monad完全可以工作
。因为这是隐式在使用。也体会不到monad pattern的含义。
我的意思有没有必须要理解monad才能工作的地方。像scalaz应该有不少monad吧?

【在 c******o 的大作中提到】
: in real work, everything is a monad/applicative functor/functor...
: like future, list, json validator, error handling, db object etc.
: but I did not design or implement most of them, only used them.
: even common MVC components have functional combinators (means them are some
: sort of ADTs).

a*****e
发帖数: 1700
10
能够很好地理解 continuation monad 和 free monad 你就入门了。用 scala 不需要
学习 monad transformer.
常见的还有 applicative 和 monoid,这两个都还比较简单。

【在 p*****2 的大作中提到】
:
: some
: 这个我知道。你的意思除了这些就不用其他monad了?那不需要理解monad完全可以工作
: 。因为这是隐式在使用。也体会不到monad pattern的含义。
: 我的意思有没有必须要理解monad才能工作的地方。像scalaz应该有不少monad吧?

相关主题
想学FP最好不要从Scala开始Java 不是纯oo, oo 不是 imperative programming
Haskell很难学。。其实想学就学fp,不学就算了
monad就是一chaining pattern我还是认为scala的程序员水平高
进入Programming版参与讨论
l*****t
发帖数: 2019
11
不知道也。你自己下个kafka,spark代码看看吧。其实如果用了var就不用提自己是纯
fp了,kafka就不是。但是纯不纯有有什么打紧?

【在 p*****2 的大作中提到】
: functional scala 一定要用monad吗?
: 我指的是显式的用。不是隐式的用list,future就算用了。
: 或者说不理解monad可以算functional scala吗?
: monad在实践中在scala项目中的比重有多大?比如kafka,spark这些项目。

c******o
发帖数: 1277
12
太复杂了,一般的monad( future/list/stream(其实不是monad)/Option/Try/Either)
能理解, app development足够了。
continuation/free 都是advanced topic

【在 a*****e 的大作中提到】
: 能够很好地理解 continuation monad 和 free monad 你就入门了。用 scala 不需要
: 学习 monad transformer.
: 常见的还有 applicative 和 monoid,这两个都还比较简单。

c******o
发帖数: 1277
13
不理解怎么用?
monad的局限是什么? 我为啥要用它?有啥好处. 和其他的ADT 一起用怎么办?
你不用把你的logic/flow设计成monad, 但是不理解也用不好。

【在 p*****2 的大作中提到】
:
: some
: 这个我知道。你的意思除了这些就不用其他monad了?那不需要理解monad完全可以工作
: 。因为这是隐式在使用。也体会不到monad pattern的含义。
: 我的意思有没有必须要理解monad才能工作的地方。像scalaz应该有不少monad吧?

c******o
发帖数: 1277
14
这个也不对,immutable 可以有var,只要是local,non observable的就可以,

【在 l*****t 的大作中提到】
: 不知道也。你自己下个kafka,spark代码看看吧。其实如果用了var就不用提自己是纯
: fp了,kafka就不是。但是纯不纯有有什么打紧?

p*****2
发帖数: 21240
15
list future这些看sample code就可以用了 doc里也没有强调是monad

【在 c******o 的大作中提到】
: 不理解怎么用?
: monad的局限是什么? 我为啥要用它?有啥好处. 和其他的ADT 一起用怎么办?
: 你不用把你的logic/flow设计成monad, 但是不理解也用不好。

c******o
发帖数: 1277
16
那么我想合并3个list,
list(1,2,3,4)
list(2,3,4,5)
list(4,5,6,7)
用 x1*x2+x3
怎么做?
是monad 么?

【在 p*****2 的大作中提到】
: list future这些看sample code就可以用了 doc里也没有强调是monad
p*****2
发帖数: 21240
17
没看懂什么意思
不用monad就不能合并三个list?

【在 c******o 的大作中提到】
: 那么我想合并3个list,
: list(1,2,3,4)
: list(2,3,4,5)
: list(4,5,6,7)
: 用 x1*x2+x3
: 怎么做?
: 是monad 么?

p*****g
发帖数: 7
18
那些倾向Pure Funtional的与比较考虑企业应用的渐行渐远:
http://typelevel.org/blog/2014/09/02/typelevel-scala.html
c******o
发帖数: 1277
19
这是很典型的实际应用coding,如果把list换成无始无终的stream就更加清楚了。
这是很典型的applicative functor, 基本上是用zip combinator.
那为啥要问monad呢? 每一个monad都是applicative functor,但是不是每个
applicative functor都是monad
的。
list 可以用monad的map, flatMap来实现,但是很不清楚。 用zip就很好。
unlimited stream根本就没法用monad的map, flatMap,不会返回的。只能用 zip
因为unlimited stream不是monad.
如果你熟悉functor, applicative functor, monad 对一个问题,你很快就能想到怎么
处理。
对于处理某个问题的lib你也很快就能上手。

【在 p*****2 的大作中提到】
: 没看懂什么意思
: 不用monad就不能合并三个list?

c******o
发帖数: 1277
20
我以前在公司brown bag时候的slide中的几页

applicative functor都是

【在 c******o 的大作中提到】
: 这是很典型的实际应用coding,如果把list换成无始无终的stream就更加清楚了。
: 这是很典型的applicative functor, 基本上是用zip combinator.
: 那为啥要问monad呢? 每一个monad都是applicative functor,但是不是每个
: applicative functor都是monad
: 的。
: list 可以用monad的map, flatMap来实现,但是很不清楚。 用zip就很好。
: unlimited stream根本就没法用monad的map, flatMap,不会返回的。只能用 zip
: 因为unlimited stream不是monad.
: 如果你熟悉functor, applicative functor, monad 对一个问题,你很快就能想到怎么
: 处理。

相关主题
haskell 真是逆天, 各种特殊符号都有特殊用途大牛对Scala的type system如何评价?
学FP不是为了写代码, 而是为了优秀的架构.FP更接近人的思维
FP 之我见 (长)functional programming why?
进入Programming版参与讨论
p*****2
发帖数: 21240
21
好 学习了
话说你没给我发书吧
不过我也不着急 而且决定入一本paper的

【在 c******o 的大作中提到】
: 这是很典型的实际应用coding,如果把list换成无始无终的stream就更加清楚了。
: 这是很典型的applicative functor, 基本上是用zip combinator.
: 那为啥要问monad呢? 每一个monad都是applicative functor,但是不是每个
: applicative functor都是monad
: 的。
: list 可以用monad的map, flatMap来实现,但是很不清楚。 用zip就很好。
: unlimited stream根本就没法用monad的map, flatMap,不会返回的。只能用 zip
: 因为unlimited stream不是monad.
: 如果你熟悉functor, applicative functor, monad 对一个问题,你很快就能想到怎么
: 处理。

c******o
发帖数: 1277
22
发了。。。
没收到?

【在 p*****2 的大作中提到】
: 好 学习了
: 话说你没给我发书吧
: 不过我也不着急 而且决定入一本paper的

l*****t
发帖数: 2019
23
我有点糊涂了。我当年学的时候老师说不能有assignment,period。后来coursera的
scala课,Martin也是只字不提var。

【在 c******o 的大作中提到】
: 这个也不对,immutable 可以有var,只要是local,non observable的就可以,
c******o
发帖数: 1277
24
一个function内部的var,只要对外部没影响。当然可以有。
比如说排序里用一个中间变量。只要最后输出的是新的immutable。那个中间变量当然
没问题。
严格的定义是referential trasperancy .
A
f(3) = 5 那在任何地方都能用 5 替代 f(3)没问题就行。
k****i
发帖数: 101
25
In haskell :)
ghci> :{
ghci| let fn' l1 l2 l3 =
ghci| map ( (x: y: z: _) -> x * y + z) .
ghci| Data.List.transpose $ [l1, l2, l3]
ghci| in fn' [1, 2, 3, 4] [2, 3, 4, 5] [4, 5, 6, 7]
ghci| ;}
[6,11,18,27]

【在 c******o 的大作中提到】
: 那么我想合并3个list,
: list(1,2,3,4)
: list(2,3,4,5)
: list(4,5,6,7)
: 用 x1*x2+x3
: 怎么做?
: 是monad 么?

1 (共1页)
进入Programming版参与讨论
相关主题
FP更接近人的思维看来跳了Scala的坑是对的
functional programming why?想学FP最好不要从Scala开始
为什么fp很难火Haskell很难学。。
谁能通俗易懂地讲讲trait和monad的概念?monad就是一chaining pattern
Scala的map和flatmap什么区别?Java 不是纯oo, oo 不是 imperative programming
这次Scala没有入选有点意外呀其实想学就学fp,不学就算了
我对为什么使用FP的理解 (补)我还是认为scala的程序员水平高
大牛给讲讲monad吧?haskell 真是逆天, 各种特殊符号都有特殊用途
相关话题的讨论汇总
话题: monad话题: ghci话题: scala话题: functor