decadence

個人のメモ帳

S-99 その2

S-99: Ninety-Nine Scala Problemsの続きです

やはりP26が山場で,その後はさくさく進められています.
少しflatMapを勘違いしていた所などがありP26では非常に時間を割いてしまいました.

flatMapの定義は以下のようになっています
def flatMap [B] (f: (A) ⇒ GenTraversableOnce[B]): List[B]

scala> r
res4: Seq[List[Int]] = List(List(1, 2), List(3), List(4, 5))

scala> r.flatMap(n => IndexedSeq(9 :: n))
res5: Seq[List[Int]] = List(List(9, 1, 2), List(9, 3), List(9, 4, 5))

ポイントとしてはfはListを一つ増やすような関数となっている事
そしてその増えたリストに対してのみflatMapを行なった際に展開されるといった形になります.

はてさてS-99のP26~P41までのコードは以下のようになります.