Scala に挑戦

ここ最近Scalaという言語が人気なようで*1、ちょいと触ってみたいと思う。

ではまずはScalaのインストール。
今回は次のサイトから 2.10.3をインストールした。
http://www.scala-lang.org/download


Scalaの特徴として、オブジェクト指向言語関数型言語のハイブリッド言語であることが挙げられるそうな。
それぞれの特徴をみてみよう。

オブジェクト指向のサンプル

非常に簡単なクラスのサンプルコードを書いてみる。

// Person.scala

class Person(name: String)
{
    def greet() = println(s"My name is $name.")
}

var aPerson = new Person("Bob")
aPerson.greet()

実行結果は

>scala Person.scala
My name is Bob.

関数型のサンプル

非常に簡単なリスト操作を書いてみる。
面倒なので対話型インタープリタにて確認した。

Scala

scala> List(20, 14, 3, 15, 6, 18).filter(_ >= 10)
res0: List[Int] = List(20, 14, 15, 18)

また比較として他の関数型言語であるHaskellScheme(Gauche)のコードも書いてみる。

Haskell

Prelude> filter (>=10) [20, 14, 3, 15, 6, 18]
[20,14,15,18]

Scheme

gosh> (filter (lambda(x) (>= x 10)) '(20 14 3 15 6 18))
(20 14 15 18)

本日のまとめ

静的型付け言語でありながらも
型推論と関数型のために非常にコードがシンプルでよい。
今回試していないがパターンマッチングも使えるようだ。

ただきちんと使いこなすには、まだまだ勉強が必要だ。