2015年10月26日月曜日

開発環境

  • OS X El Capitan - Apple (OS)
  • Emacs (Text Editor)
  • Scala (プログラミング言語)

Learning Scala: Practical Functional Programming for the JVM (Jason Swartz (著)、O'Reilly Media)のPart Ⅰ. (Core Scala)、Chapter 6.(Common Collections)、Exercises 3.(No. 2464)を解いてみる。

その他参考書籍

Exercises 3.(No. 2464)

コード(Emacs)

#!/usr/bin/env scala-2.11

def first[A](items: List[A], count: Int): List[A] = items take count

def firstWithForLoop[A](items: List[A], count: Int): List[A] = {
  (for (i <- 0 until count) yield items(i)).toList
}

def firstWithFoldLeft[A](items: List[A], count: Int): List[A] = {
  items.foldLeft(Nil: List[A]) {
    (a: List[A], i: A) => if (a.size >= count) a else i::a
  }.reverse
}

def firstWithHeadAndTail[A](items: List[A], count:Int): List[A] = {
  if (count == 0) Nil
  else items.head :: firstWithHeadAndTail(items.tail, count - 1)
}

val l = List('a', 't', 'o')
val n = 2

println(first(l, 2))
println(firstWithForLoop(l, 2))
println(firstWithFoldLeft(l, 2))
println(firstWithHeadAndTail(l, 2))

入出力結果(Terminal, REPL(Read, Eval, Print, Loop))

$ ./sample3.scala
List(a, t)
List(a, t)
List(a, t)
List(a, t)
$

0 コメント:

コメントを投稿