Scala
※自分用メモ アクターモデルを利用した場合に、それぞれのアクターはどのような粒度とするのが良いのか? なんとなく理解したこと 単にスレッドの代替として使用するのであれば並列化したいところにだけ使えば良い 実装方法の一つでしかない 並列化そのもの…
implicit conversions に続いて、implicit parameters も使ってみました。以下、implicit parameters を使用している関数の例。 abstract class Foo def foo(msg: String)(implicit p: Foo) = println(msg + p)implicit parameters の引数リストは一番最後に…
java のスレッドを利用せざるを得ないときに、スッキリ記述できるかと思い、以下のように implicit を使ってみたのですがうまくいきませんでした。 object Sample { implicit def block2Thread(block: => Unit) = new Thread { override def run = block } d…
Actor をリモート呼び出しできるようにする機能ですが、いまいち使いづらいです。 内部で例外を握りつぶしているらしく、接続に失敗していても気付きません。なので、RMI を使用した簡易版を自分で作ってみました。 package scala.actors.rmi import java.rm…
ぐぐった限りでは Ruby でいうところの gem みたいなものらしいです。scala に関係する、ライブラリやツール、ドキュメントを管理(インストール、更新、etc...)してくれます。 sbaz でライブラリをインストールすると、scalac や scala の実行時に、ライブラ…
上述の link ですが、てっきりアクタをグループ化して、メッセージのマルチキャストとかが出来るようになるのかと勘違いしてました。 マルチキャスト/ブロードキャストをやりたければ、自前で仲介役のアクタを作るみたいですね。http://www.nabble.com/Scala…
いまいち何につかうか良くわかっていなかった link ですが、Scala のフォーラムと、2ch でようやく理解しました。http://www.nabble.com/Some-Actor-questions-td8906252.html#a8910854リンクを設定しておくと、リンク先のアクタが終了したときに Exit メッ…
Think IT の記事を参考に、Scala でのダックタイピングを試してみた。 http://www.thinkit.co.jp/cert/article/0711/4/3/3.htm object Sample { def foo[T](x: T {def bar: Boolean}): Boolean = x.bar def main(args: Array[String]): Unit = { println(foo…
Scala の Actor を勉強している途中で出てきた疑問等。 Actor インスタンスの作成方法 PDFのチュートリアルでは、Actor を継承したクラスを作成し、act メソッドを実装すると説明されていますが、ほとんどの場合は actor 関数を使用します嘘です。作り方次第…
とりあえず書いてみた。 package actor import scala.actors._ import scala.actors.Actor._ object HelloActor { private val foo = actor { println(">>foo actor") loop { println(">> foo loop") receive { case ('hello, msg) => println("Hello "+msg)…
なにやら lift(http://liftweb.net/)なるものがあるらしい。 そのうち、案件でも関数型言語が使われるようになってくるのかな。楽しみです。