So-net無料ブログ作成
検索選択

OCaml vs. Scala [リテラルの比較] [Scala]

最近 Scala [1] という言語が少し気になっています。Jython や Groovy などと同様に JVM 上で動く非 Java 言語の一種ですが、関数型+オブジェクト指向で OCaml とも通ずるところがあります。活動としても活発なようで比較的最近にもリリースがありますし、かなりしっかりしたドキュメントも揃っています。そこで Scala を勉強しつつ OCaml と Scala の比較表とか作って見ることにしたいと思います。

手始めとしてリテラル表現の比較。












OCaml Scala
整数 3 int 3 scala.Int
0xff int 0xff scala.Int
0o644 int 0644 scala.Int
0b101 int - -
- - 3l scala.Long
3l int32 - -
3L int64 - -
3n nativeint - -
実数 3.14 float 3.14 scala.Double
- - 3.14f scala.Float
文字 'J' char 'J' scala.char
文字列 "Hello World" string "Hello World" java.lang.String
"the present string
  spans three
  lines."
string """the present string
  spans three
  lines."""
java.lang.String
真偽値 true bool true scala.Boolean
false bool false scala.Boolean
シンボル - - 'x scala.Symbol
ユニット () unit () scala.Unit
XML - - <root /> scala.xml.Elem
(1, 2) int * int (1, 2) または Pair(1,2) (Int, Int)
(1, 2, 3) int * int * int (1, 2, 3) または Triple(1,2,3) (Int, Int, Int)
(1, 2, 3, 4) int * int * int * int (1,2,3,4) または Tuple4(1,2,3,4) (Int, Int, Int, Int)
リスト [1; 2; 3] int list List(1,2,3) scala.List[scala.Int]
1::2::3::[] int list 1::2::3::Nil scala.List[scala.Int]
配列 [|1; 2; 3|] int array Array(1,2,3) scala.Array[scala.Int]

タプルは2個から9個までという制約があってそこはいまいちな気がしますが、実用上は問題ないでしょう。(2008-02-05追記: 現在はこの制約はありません)

特筆すべきは XML をそのまま表現するリテラルがあるという部分で、ここが Scala に興味がわいた理由の一つです。

以前 XSLTXT という XSLT を非 XML 化した言語について、文法を非 XML 化しても生の XML はそのまま書けるべきだと言いました [3] が、Scala の XML リテラル+関数型言語という特徴をみてこれは XSLT の代替として使うのにかなり有望な言語なのではないか?と思ったのが Scala に興味を持った始まりです。

2006-12-30: 配列リテラルを追加

2008-02-05: タプルのリテラルを Scala の最新仕様に追随

[1] http://scala.epfl.ch/
[2] http://blog.so-net.ne.jp/rainyday/2006-09-05


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この記事のトラックバックURL:
※言及リンクのないトラックバックは受信されません。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。