2007-09-30
■ [prog] Scala - 機能のためには文法を自重しない言語
昨日のRuby勉強会でkeisukenさんによるScalaの発表があった…んだけど僕は遅刻して見られなかったので(ごめんなさい)、 今日電車の中で配布資料を読んでたんだけど、、、こんなにカオスな言語だとは知らなかったw
とりあえず、機能追加のためには文法の拡張を厭わないということは分かった。ある意味格好いい。
以下キーワード:
- JVMや.NET上で動く
- 静的型、型推論あり
- varで変数宣言
- valで再代入できない変数宣言 (関数型言語におけるletみたいに使える)
- 無名関数は (i) => print(i + "") とか
- for(i <- 0 until 10){} とか、 (0 until 10).foreach() とか
- メソッド定義はdef
- Generics (型名がArray[String] とか)
- Structural Subtyping (継承してなくても、同じシグネチャのメソッドがあれば多態できる)
- 型名が Array[{def name: String}] とか
- 暗黙の型変換をユーザが定義可能
- XMLがリテラルとして書ける (val html = <html>(中略)</html> とか)
- パーサコンビネータが付いてくる (文法組み込みなのかな?)
- Actor (並行処理、切り替えは自分で指定、Ruby1.9のFiberに近い?)
- Lift (Railsに影響を受けたWebフレームワークらしい)
- User.find(By(User.email, "foo@bar.com"))
- Railsと行数は同じくらいだけど、型安全だからテストが少なくて済むよ!
- まだ 'early alpha' らしい
気になった方は西本さんの発表資料をどうぞ。 あとはScala@どう書く?orgとかみずしまさんの発表@LL Spiritとか。
Scalaの楽しみ方:
- 型推論ありのRuby風言語として。
- Javaや.NETの機能が使える関数型(風?)のLLとして。
- 最先端機能の実験場として。