Scala

アクターモデルでの、アクターの粒度に悩む

※自分用メモ アクターモデルを利用した場合に、それぞれのアクターはどのような粒度とするのが良いのか? なんとなく理解したこと 単にスレッドの代替として使用するのであれば並列化したいところにだけ使えば良い 実装方法の一つでしかない 並列化そのもの…

implicit parameters の使い方

implicit conversions に続いて、implicit parameters も使ってみました。以下、implicit parameters を使用している関数の例。 abstract class Foo def foo(msg: String)(implicit p: Foo) = println(msg + p)implicit parameters の引数リストは一番最後に…

implicit conversions とブロックの組み合わせは失敗する?

java のスレッドを利用せざるを得ないときに、スッキリ記述できるかと思い、以下のように implicit を使ってみたのですがうまくいきませんでした。 object Sample { implicit def block2Thread(block: => Unit) = new Thread { override def run = block } d…

scala.actors.remote について

Actor をリモート呼び出しできるようにする機能ですが、いまいち使いづらいです。 内部で例外を握りつぶしているらしく、接続に失敗していても気付きません。なので、RMI を使用した簡易版を自分で作ってみました。 package scala.actors.rmi import java.rm…

sbaz について

ぐぐった限りでは Ruby でいうところの gem みたいなものらしいです。scala に関係する、ライブラリやツール、ドキュメントを管理(インストール、更新、etc...)してくれます。 sbaz でライブラリをインストールすると、scalac や scala の実行時に、ライブラ…

Actor でメッセージのマルチキャスト/ブロードキャスト

上述の link ですが、てっきりアクタをグループ化して、メッセージのマルチキャストとかが出来るようになるのかと勘違いしてました。 マルチキャスト/ブロードキャストをやりたければ、自前で仲介役のアクタを作るみたいですね。http://www.nabble.com/Scala…

Actor の link について

いまいち何につかうか良くわかっていなかった 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…

Actor の勉強

Scala の Actor を勉強している途中で出てきた疑問等。 Actor インスタンスの作成方法 PDFのチュートリアルでは、Actor を継承したクラスを作成し、act メソッドを実装すると説明されていますが、ほとんどの場合は actor 関数を使用します嘘です。作り方次第…

Hello 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)…

Scala による Web フレームワーク

なにやら lift(http://liftweb.net/)なるものがあるらしい。 そのうち、案件でも関数型言語が使われるようになってくるのかな。楽しみです。