2015年5月14日木曜日

scala関数型デザイン&プログラミング P45

Exercise 3.4  tailを一般化して、リストの先頭からn個の要素を削除するdropという関数に書き換えよ。
  def drop[A](l:List[A],n:Int):List[A] =
   l match {
   case Nil=>Nil
   case Cons(x,xs)=>if (n>1) drop(xs,n-1)
                    else xs
   }


Exercise 3.5 述語とマッチする場合に限り、Listからその要素までの要素を削除するdropWhileを実装せよ。
   def dropWhile[A](l:List[A],f:A=>Boolean):List[A] =
    l match {
     case Nil=>Nil
     case Cons(x,xs)=>if (f(x)) dropWhile(xs,f)
                      else l
    }

としてみたが、どうだろうか。

0 件のコメント:

コメントを投稿