SE情報技術研究会’s blog

http://se-info-tech.connpass.com

2015-10-17 第6回 関数型プログラミング勉強会の簡単なまとめ

今回は第5回のExercise 3.13について再度振り返りをしました。 krxrossさんに記事の追記をがっつりしてもらったので、読んでいくことに。

d.hatena.ne.jp

今回は前回の記事や振り返りや雑談で時間を費やしたので、本はExercise 3.16だけやりました。

def add1(l: List[Int]): List[Int] = 
  foldRight(l, Nil:List[Int])((h,t) => Cons(h+1,t))

これを段階的に見ていくと

add1(List(1,2,3)):List[Int] =
foldRight(List(1,2,3),Nil)((h,t) => Cons(h+1, t))
foldRight(Cons(1, Cons(2, Cons(3, Nil))),Nil)((h, t) => Cons(h+1, t))
Cons(1+1, foldRight(Cons(2, Cons(3, Nil)),Nil)((h, t) => Cons(h+1, t)))
Cons(2, Cons(2+1, foldRight(Cons(3, Nil),Nil)((h, t) => Cons(h+1, t))))
Cons(2, Cons(3, Cons(3+1, foldRight(Nil,Nil)((h, t) => Cons(h+1, t)))))
Cons(2, Cons(3, Cons(4, Nil)))
List(2, 3, 4)