Redian新闻
>
谁能通俗易懂地讲讲trait和monad的概念?
avatar
谁能通俗易懂地讲讲trait和monad的概念?# Programming - 葵花宝典
d*5
1
2月7号DOS发出FR, 到目前没有收到任何邮件。有没有是同批有进展的?USCIS那边如何
催一下呢?
avatar
p*g
2
在给父母申请加拿大旅游签证,发现网上是可以一起申请的,但是好像要填什么Family
Representative的表,所以想问一下,是一起申请的好呢,还是分开申请好?
谢谢。
avatar
A*e
3
【 以下文字转载自 pets 讨论区 】
发信人: huaimao1124 (水猫猫), 信区: pets
标 题: 家有美兔
发信站: BBS 未名空间站 (Tue Nov 2 22:34:56 2010, 美东)
shelter让我forster一只兔子,我答应了,并且告诉他们我以前养过兔子。
汗的是人家一见我中国人,问的第一句话是你以前养是参赛的还是吃的?
说实话我养兔子的时候是小学,一对白兔子在家养了八个月,某天回家就莫名失踪了,
我爸妈告诉我兔子自己跑出去跑丢了(我家住十楼,兔子养在阳台上的)
我没有敢告诉人家我兔子的悲惨遭遇,只有说,都不是,就是一般的pet。
anyway,当他们告诉我应该怎样foster这只兔子,我是真的震惊了,比我住得好,比我
玩得好,还有专人伺候,专人是我。
回家以后按照人家教的铺了一层隔水纸在地上,然后毛巾,然后水,兔子饲料,干草,
便盆(我第一次知道兔子会用便盆),玩具,小房子。我是中国的兔子都想出国。
他们还告诉我不要old school抱兔子(揪耳朵),要一只手环抱,另一只手托住兔子屁
股,抱起来以后夹在腋下,这个动作我练习了很久,因为兔子老往下滑。从此兔子开始
了一个月在我家幸福快乐的生活。。。。。。。。。。
avatar
A*e
4
始终没搞清楚。
avatar
c*1
5
我也是这一批的,没有进展。
有的话会到版上互通有无的。
祝好运!

【在 d*********5 的大作中提到】
: 2月7号DOS发出FR, 到目前没有收到任何邮件。有没有是同批有进展的?USCIS那边如何
: 催一下呢?

avatar
g*n
6
一起申,那个表很好填的

Family

【在 p*********g 的大作中提到】
: 在给父母申请加拿大旅游签证,发现网上是可以一起申请的,但是好像要填什么Family
: Representative的表,所以想问一下,是一起申请的好呢,还是分开申请好?
: 谢谢。

avatar
l*d
7
真漂亮

【在 A*********e 的大作中提到】
: 【 以下文字转载自 pets 讨论区 】
: 发信人: huaimao1124 (水猫猫), 信区: pets
: 标 题: 家有美兔
: 发信站: BBS 未名空间站 (Tue Nov 2 22:34:56 2010, 美东)
: shelter让我forster一只兔子,我答应了,并且告诉他们我以前养过兔子。
: 汗的是人家一见我中国人,问的第一句话是你以前养是参赛的还是吃的?
: 说实话我养兔子的时候是小学,一对白兔子在家养了八个月,某天回家就莫名失踪了,
: 我爸妈告诉我兔子自己跑出去跑丢了(我家住十楼,兔子养在阳台上的)
: 我没有敢告诉人家我兔子的悲惨遭遇,只有说,都不是,就是一般的pet。
: anyway,当他们告诉我应该怎样foster这只兔子,我是真的震惊了,比我住得好,比我

avatar
c*o
8
scala trait is similar to ruby mixin, and a little bit more complex than
java
interface
From:
http://www.scala-lang.org/old/node/126
Similar to interfaces in Java, traits are used to define object types by
specifying the signature of the supported methods. Unlike Java, Scala allows
traits to be partially implemented; i.e. it is possible to define default
implementations for some methods. In contrast to classes, traits may not
have constructor parameters.
important usage difference between trait and abstract class:
check here:
http://stackoverflow.com/questions/1991042/what-is-the-advantag
avatar
c*1
9
我今天收到USCIS 的797C了。
avatar
uq
10


【在 A*********e 的大作中提到】
: 【 以下文字转载自 pets 讨论区 】
: 发信人: huaimao1124 (水猫猫), 信区: pets
: 标 题: 家有美兔
: 发信站: BBS 未名空间站 (Tue Nov 2 22:34:56 2010, 美东)
: shelter让我forster一只兔子,我答应了,并且告诉他们我以前养过兔子。
: 汗的是人家一见我中国人,问的第一句话是你以前养是参赛的还是吃的?
: 说实话我养兔子的时候是小学,一对白兔子在家养了八个月,某天回家就莫名失踪了,
: 我爸妈告诉我兔子自己跑出去跑丢了(我家住十楼,兔子养在阳台上的)
: 我没有敢告诉人家我兔子的悲惨遭遇,只有说,都不是,就是一般的pet。
: anyway,当他们告诉我应该怎样foster这只兔子,我是真的震惊了,比我住得好,比我

avatar
c*o
11
On the other hand, Monad is HARD to explain:
As a formal definition of a structure, Monad is
basically a group of types that can implement
unit/flatMap function that match the signature in
def unit[A](a: => A): F[A]
def flatMap[A,B](ma: F[A])(f: A => F[B]): F[B]
But that is not enough, we also have law that
Monad type need to fulfill so that we know our
implementation of unit/flatMap is correct.
// Monad Law
// left identity: f(a) == flatmap(unit(a), f)
// right identity: a == flatMap(a, x => unit(x))
// associativity: flatMap(a, x => flatMap(f(x), g)) == flatMap(flatMap(a, f)
, g)
As the name suggest, associative law means flatMap
operation obey the associative law similar to plus/multiple
(a+b) + c = a + (b+c)
As the name suggest, identity laws basically means we
have a unit function that server as a identity in monad, like
0 in addition, which similar to x + 0 = x, and 0 + x = x
avatar
o*g
12

我也收到了USCIS的文件,但是没有写i797c,直接就是i797

【在 c********1 的大作中提到】
: 我今天收到USCIS 的797C了。
avatar
c*o
13
The 通俗易懂地 explanation is:
Now see all these formal definition, still what is a Monad for us programmer
? and Why we need them?
def unit[A](a: => A): M[A]
def flatMap[A,B](ma: M[A])(f: A => M[B]): M[B]
A bit long explanation here:
Monad seems just like a wrapper, it wraps in a basic type (A here), and put
into a context M, generate
a richer type (M[A] here). unit function does this.
We care about the value of type A in context M, but we hate part of the
context that is troublesome.
The troublesome part in the context M make us lose the composability for
values of type A in
context M (make us not be able to combine functions generate value of type A
). So we wrap in the
value and troublesome part together into context M, and now we can combine
functions that generate
M[A], just as if the troublesome part is gone. That is what flatMap does.
Using unit and flatMap, we regain the composability for values of type A in
context M, which is
kind of what monad brings us, and it specifically useful in pure FP as side
effect are the things prevent
clean combination of functions.
Context | Troublesome Part
List | multiple value
Option | can have empty value
Try | can have error
Either | can be another unintended (error message etc.) value
Stream | multiple value and also not accessible until touched
Future | can have error and also have latency to be availuable
IO | input/output side effect
State | internal states side effect
avatar
l*7
14
那应该是approval notice. 我是1月23号USCIS收到receive notice, 目前还没有到啊
,焦急等待.


: 我也收到了USCIS的文件,但是没有写i797c,直接就是i797



【在 o**g 的大作中提到】
:
: 我也收到了USCIS的文件,但是没有写i797c,直接就是i797

avatar
d*n
15
顺风问一个nodejs里面的linq?好用的,支持好的
avatar
o*g
16

查询系统更新了么?

【在 l*****7 的大作中提到】
: 那应该是approval notice. 我是1月23号USCIS收到receive notice, 目前还没有到啊
: ,焦急等待.
:
:
: 我也收到了USCIS的文件,但是没有写i797c,直接就是i797
:

avatar
l*n
17
rxjs

【在 d****n 的大作中提到】
: 顺风问一个nodejs里面的linq?好用的,支持好的
avatar
d*n
18
thanks

【在 l**********n 的大作中提到】
: rxjs
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。