2015年5月17日日曜日

scala関数型デザイン&プログラミング P51-2

Exercise 3.14 foledLeftまたはfoldRightをベースとしてappendを実装せよ。
def append[A](as:List[A],bs:List[A]):List[A]=
 foldLeft(reverse(as):List[A],bs:List[A])((b:List[A],a:A)=>Cons(a,b))

def append2[A](as:List[A],bs:List[A]):List[A]=
 foldRight(as:List[A],bs:List[A])((a:A,b:List[A])=>Cons(a,b))

foldRightのほうは、reverseが不要なのでシンプル

Exercise 3.15 複数のリストからなるリストを一つのリストとして連結する関数を記述せよ。
実行時間についてはよくわからないが、これでどうか?
def renketu[A](as:List[List[A]]):List[A]=
 foldRight(as:List[List[A]],Nil:List[A])((a:List[A],b:List[A])=>append(a,b))

0 件のコメント:

コメントを投稿