Redian新闻
>
看来跳了Scala的坑是对的
avatar
看来跳了Scala的坑是对的# Programming - 葵花宝典
h*5
1
没有收入,Chase开户Bones和利息约200刀。肯定会有1099-INT了,请问怎么报税?
2012年到美国
avatar
v*9
2
如果递交境内转身份申请超过180天,移民局没转好,超过180天后,必须回国吗,回国
再签好签过吗?
avatar
Y*2
3
飞机晚点,三番那边气候不好,那边机场老改时间。。。
Ughhhhh
avatar
h*0
4
进该频道方法:
不断点击wings of liberty下面那个原子核图标,多点几次就来了。
奶牛们,进来吧!
avatar
S*y
6
本届快男,舞台上一水儿刘海,剩下的就是黑框眼镜~~~~~~只有个别清爽平头面容干净
~~~~那个叫什么来着,好像叫赵帆,外形还不错~~~
avatar
T*1
7
把Scala往LinkedIn上一挂,马上10+的猎头联系啊。
avatar
f*n
8
可以申请ITIN。
那个数目也太小了吧?应该达不到必须报税的程度
avatar
U*S
9
没有180天之说,申请有结果之前可以合法停留。
avatar
M*i
10
阴天,没下雨

【在 Y*****2 的大作中提到】
: 飞机晚点,三番那边气候不好,那边机场老改时间。。。
: Ughhhhh

avatar
w*t
11
我以前进过去,除了有点新鲜之外,没有什么特别

【在 h*****0 的大作中提到】
: 进该频道方法:
: 不断点击wings of liberty下面那个原子核图标,多点几次就来了。
: 奶牛们,进来吧!

avatar
c*o
12
恩,姜潮走了现在就赵帆最帅了。

【在 S****y 的大作中提到】
: 本届快男,舞台上一水儿刘海,剩下的就是黑框眼镜~~~~~~只有个别清爽平头面容干净
: ~~~~那个叫什么来着,好像叫赵帆,外形还不错~~~

avatar
c*o
13
要不要来我这儿试试?
好的scala 人才难找。
avatar
v*9
14
谢谢,
刚查了一下,刚转好

【在 U********S 的大作中提到】
: 没有180天之说,申请有结果之前可以合法停留。
avatar
j*o
15
去三番?
让小姨骑自行车接你

【在 Y*****2 的大作中提到】
: 飞机晚点,三番那边气候不好,那边机场老改时间。。。
: Ughhhhh

avatar
f*t
16
你等我们干啥?
avatar
n*y
17
姜潮在天团里被弄成鬼了,可怜

【在 c*****o 的大作中提到】
: 恩,姜潮走了现在就赵帆最帅了。
avatar
c*o
18
看看id,发觉被骗了。
avatar
h*U
19
我都替大沽着急了

【在 Y*****2 的大作中提到】
: 飞机晚点,三番那边气候不好,那边机场老改时间。。。
: Ughhhhh

avatar
d*d
20
这个是什么?

【在 h*****0 的大作中提到】
: 进该频道方法:
: 不断点击wings of liberty下面那个原子核图标,多点几次就来了。
: 奶牛们,进来吧!

avatar
c*o
21
nod, 太可怜了

【在 n***y 的大作中提到】
: 姜潮在天团里被弄成鬼了,可怜
avatar
T*1
22
。。。
scala> val s = Some(Seq(List("I'm Tro11 ")))
s: Some[Seq[List[String]]] = Some(List(List(I'm Tro11 )))
scala> for(troSeq println(me*3)
} }
I'm Tro11 I'm Tro11 I'm Tro11

【在 c******o 的大作中提到】
: 看看id,发觉被骗了。
avatar
h*U
23
又不用它买床垫

【在 j**o 的大作中提到】
: 去三番?
: 让小姨骑自行车接你

avatar
s*m
24
嗯,吓我一跳,那脸歪的。不看好这个什么天团。

【在 n***y 的大作中提到】
: 姜潮在天团里被弄成鬼了,可怜
avatar
c*o
25
写个简单的recusive functional的bubble sort吧
你写的这个在scala doc上抄都抄得到
avatar
j*o
26
省一毛是一毛

【在 h***U 的大作中提到】
: 又不用它买床垫
avatar
g*l
27
nod

【在 n***y 的大作中提到】
: 姜潮在天团里被弄成鬼了,可怜
avatar
T*1
28
你这个外行外大了。scala的精髓是flatMap,不是递归
avatar
Y*2
29
他才不着急呢。

【在 h***U 的大作中提到】
: 我都替大沽着急了
avatar
T*1
30
val ll = Seq(2,5,1,7,3,6)
ll.sorted
ll.sortWith(_ > _)
avatar
h*U
31
就你那么多毛

【在 j**o 的大作中提到】
: 省一毛是一毛
avatar
c*o
32
好好,我错了,那来一个简单的option monad的实现?

【在 T***1 的大作中提到】
: 你这个外行外大了。scala的精髓是flatMap,不是递归
avatar
h*U
33
那是故作镇定

【在 Y*****2 的大作中提到】
: 他才不着急呢。
avatar
T*1
34
Seq?

【在 c******o 的大作中提到】
: 好好,我错了,那来一个简单的option monad的实现?
avatar
M*i
35
大沽打鼓翘首盼鞑股
谁来个下联

【在 h***U 的大作中提到】
: 我都替大沽着急了
avatar
c*o
36
不,我意思是 实现类
Option[A]
Option 可以是 None 或者 Some[A]
至少实现以下三个方法
flatMap
map
zip
我其实不是开玩笑,你写写我说的两个题,碰到的问题就知道送我为什么问。
里面包括了好多重要的东西。
bubble sort 不要 stack overflow啊,要都是immutable啊
为啥选那三个method来做option,怎么实现[A] ?
avatar
M*i
37
re,又一毛

【在 j**o 的大作中提到】
: 省一毛是一毛
avatar
H*S
38
monad 其实只需要unit 和 flatmap就够了
zip就是一个flatmap加map的showcase。其实用pattern match也可以。
sealed trait Option[+A] {
def map[B](f: A => B): Option[B]
def isEmpty: Boolean
def get: A
def flatMap[B](f: A => Option[B]) = if (isEmpty) None else f(this.get)
def zip[B](ob: Option[B]): Option[(A, B)] = this flatMap (a => ob map (b =
> (a, b)))
}
case object None extends Option[Nothing] {
override def map[B](f: A => B) = None
override def get: A = throw new Exception("cannot get none")
override def isEmpty = true
}
case class Some[+A](a: A) extends Option[A] {
override def map[B](f: A => B) = Some(f(a))
override def get: A = a
override def isEmpty = false
}
object Option {
def unit(a: A) = Some(a)
def empty[A]: Option[A] = None
}
avatar
M*i
39
你们私奔了?

【在 h***U 的大作中提到】
: 就你那么多毛
avatar
k*g
40

写个 InversePermutation 吧
要 immutable 和 O(N) 的
http://mathworld.wolfram.com/InversePermutation.html

【在 c******o 的大作中提到】
: 写个简单的recusive functional的bubble sort吧
: 你写的这个在scala doc上抄都抄得到

avatar
Y*2
41
最好这样

【在 h***U 的大作中提到】
: 那是故作镇定
avatar
c*o
42
monad只要flatMap
map是 functor 的标志
zip 是 applicative functor 的标志
都可以由 flatMap和Some constructor实现
所以monad 是 applicative,applicative是 functor

=

【在 H****S 的大作中提到】
: monad 其实只需要unit 和 flatmap就够了
: zip就是一个flatmap加map的showcase。其实用pattern match也可以。
: sealed trait Option[+A] {
: def map[B](f: A => B): Option[B]
: def isEmpty: Boolean
: def get: A
: def flatMap[B](f: A => Option[B]) = if (isEmpty) None else f(this.get)
: def zip[B](ob: Option[B]): Option[(A, B)] = this flatMap (a => ob map (b =
: > (a, b)))
: }

avatar
M*i
43
小鹿狂奔了,hold住

【在 Y*****2 的大作中提到】
: 最好这样
avatar
c*9
44
看ID ,lz到你那会受欢迎。

【在 c******o 的大作中提到】
: 看看id,发觉被骗了。
avatar
h*U
45
你是大沽?

【在 M**i 的大作中提到】
: 小鹿狂奔了,hold住
avatar
H*S
46
如果只有flatMap,unit是必须要有的,否则map无从实现
def map[B](f: A => B): Option[B] = this flatMap (a => unit(f(a)))
这些细节对于application developer来说其实并不重要,大多数人实际过程中直接让
for comprehension做所有的heavy lifting
def zip[A, B](oa: Option[A], ob: Option[B]) = for {
a b } yield (a, b)
BTW, 我个人其实比较偏向这样写来着
def zip[A, B](oa: Option[A], ob: Option[B]) = (oa, ob) match {
case (Some(a), Some(b)) => Some((a, b))
case _ => None
}
而且个人认为对于scala的使用不用过于强调它的FP特性。我之前写程序过于强调
procedure一定要足够pure,如果有一个var存在即便是在actor内部,那就像吃了苍蝇
一样难受。其实这个根本没有必要,学Scala程序的至高原则是be expressive-别人一
看就知道你的程序是在干什么,如果var,while loop甚至是breakable可以让程序可读
性增加,那就要毫不犹豫的使用。

【在 c******o 的大作中提到】
: monad只要flatMap
: map是 functor 的标志
: zip 是 applicative functor 的标志
: 都可以由 flatMap和Some constructor实现
: 所以monad 是 applicative,applicative是 functor
:
: =

avatar
Y*2
47
我其实不是很激动。。。
我很镇定

【在 M**i 的大作中提到】
: 小鹿狂奔了,hold住
avatar
T*1
48
想了想,泡沫排序不好写。
再想想,有点屠龙。该用var时就用var

【在 c******o 的大作中提到】
: 不,我意思是 实现类
: Option[A]
: Option 可以是 None 或者 Some[A]
: 至少实现以下三个方法
: flatMap
: map
: zip
: 我其实不是开玩笑,你写写我说的两个题,碰到的问题就知道送我为什么问。
: 里面包括了好多重要的东西。
: bubble sort 不要 stack overflow啊,要都是immutable啊

avatar
M*i
49
路人甲

【在 h***U 的大作中提到】
: 你是大沽?
avatar
c*o
50
unit 就是some constructor
你要自己做monad 的时候就有用了。
再比如monad transformer, 你要做个既是option,又是future的class,这时候这些知
识就有用了。
再说,作个 concurrent parser validate input, 你最好还是用 applicative
functor, 而不是monad, 这时候这些知识又有用了。

【在 H****S 的大作中提到】
: 如果只有flatMap,unit是必须要有的,否则map无从实现
: def map[B](f: A => B): Option[B] = this flatMap (a => unit(f(a)))
: 这些细节对于application developer来说其实并不重要,大多数人实际过程中直接让
: for comprehension做所有的heavy lifting
: def zip[A, B](oa: Option[A], ob: Option[B]) = for {
: a : b : } yield (a, b)
: BTW, 我个人其实比较偏向这样写来着
: def zip[A, B](oa: Option[A], ob: Option[B]) = (oa, ob) match {

avatar
h*U
51
那你狂奔啥

【在 M**i 的大作中提到】
: 路人甲
avatar
c*o
52
当然对 scala 要灵活,内部的 var 完全没必要改成用 val。
但是关键的是需要改的时候你能改。
avatar
M*i
53
我说的是大沽

【在 Y*****2 的大作中提到】
: 我其实不是很激动。。。
: 我很镇定

avatar
T*1
54
那我先写半个bubble sort吧
//effectively this method makes the last element the max in Seq
def bubbleUp(list: Seq[Int]): Seq[Int] = list match {
case x :: y :: rest => {
if ( x > y) y +: bubbleUp (x +: rest)
else x +: bubbleUp ( y +: rest)
}
case x::rest => Seq(x)
case _ => Seq.empty
}
这剩下的双重循环是也用recursion呢,还是可以用循环?

【在 c******o 的大作中提到】
: 当然对 scala 要灵活,内部的 var 完全没必要改成用 val。
: 但是关键的是需要改的时候你能改。

avatar
M*i
55
入戏太深

【在 h***U 的大作中提到】
: 那你狂奔啥
avatar
T*1
56
补全:
def bubbleUp(list: Seq[Int]): Seq[Int] = list match {
case x :: y :: rest => {
if ( x > y) y +: bubbleUp (x +: rest)
else x +: bubbleUp ( y +: rest)
}
case x::rest => Seq(x)
case _ => Seq.empty
}
def sorting(list: Seq[Int]): Seq[Int] = list match {
case s if s.length < 2 => list
case s => {
val sorted = bubbleUp(s)
sorting(sorted.dropRight(1)) :+ sorted.last
}
}
//repl test
scala> sorting(Seq(7,6,5,4,3,10,2,1))
res0: Seq[Int] = List(1, 2, 3, 4, 5, 6, 7, 10)

【在 c******o 的大作中提到】
: 当然对 scala 要灵活,内部的 var 完全没必要改成用 val。
: 但是关键的是需要改的时候你能改。

avatar
h*U
57
那拔出来点

【在 M**i 的大作中提到】
: 入戏太深
avatar
M*i
58
拔苗助长

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