scala

PartialFunctionのエイリアスを作って視認性up...しないかもしれない

PartialFunctionは、すべての値について定義されているとは限らない関数を示しているFunction1の特殊なケース。 val pf:PartialFunction[Int,String] = { case i if i>1000 => "Big" } PartialFunctionそのものの話はとりあえず置いといて、Scalaってこんな…

メモ:scalaz

Scalaz (Scar-lah-zed) is a library written in the Scala Programming Language. One mandate of the library is to depend only on the core Scala API and the core Java 2 Standard Edition API. The intention of Scalaz is to include general functi…

IntelliJ IDEA9 + Scala Plugin インストールメモ

いろいろとうまくいかなくて苦労したので(2009/11/30現在)、メモとして残します。 まず、JDKはインストールしておいてください。 ハズレダウンロードはこちら http://www.jetbrains.com/idea/nextversion/free_java_ide.html?promo バージョンが古い あたり…

正規表現(Regex)によるパターンマッチング

Scalaの強力な構文のひとつ、 match〜caseによるパターンマッチングですが、正規表現にも使うことができます。 scala> val a = """Regexp here, (\w+) and (\w+)""".r a: scala.util.matching.Regex = Regexp here, (\w+) and (\w+) scala> "Regexp here, ho…

RDBMSにOracleを利用している時にCRUDify(list)が動かない

Liftの CRUDify はコーディングをほとんどせずに、CRUD機能を提供してくれる、とても便利な機構です。Ruby On Rails(/AR)のscaffoldみたいな。で、OracleをRDBMSとしているときに、CRUDifyの"List"機能がまったく動いてくれない、と思って四苦八苦していたの…

(続)implicit defが2回評価される件 → 正確には structural typingな戻り値に対するメソッド呼び出しの問題

前回の "なんで2回newされてるの?" については id:kmizushima さんや id:SiroKuro さん、 @kinaba さんといった識者の皆さんも想定外の動作だったようで、逆コンパイル(逆アセンブル)するという形で調査をされておりました。なるほど、こうやって追跡すれば…

既存クラスを拡張(したように見せる)ひとつの方法

Rubyの特異メソッド/特異クラスみたいなことが出来ないのか、と思って調べていたところ、初期段階として「既存のクラスを拡張できるか」という点を掘ってみることになりました。Scalaはもともと、RichStringというクラスがあり、java.lang.Stringクラスに存…

(traitの)defをvalでオーバーライド/実装する

Liftの Loc実装を見ていて気がついた。 scala> trait Hoge { | def fuga:String; | def piyo:String = fuga | } defined trait Hoge scala> val a = new Hoge { | def fuga = "abc" | } a: java.lang.Object with Hoge = $anon$1@1f2a9da scala> val b = new…

Box[A]=Aができる不思議→ガセネタかもしれません

で、その後いろいろ試しても全然うまくいかなくて、そりゃそうだよな、共通の親なら相互に代入できるとかないわーと思って、サンプルコードをとりあえず入力してみたらコンパイルエラーなんじゃそりゃ。Productとか全然関係なかったです \(^o^)/ オワタ

Box[A]=A が出来る不思議

Liftのファイルアップロードのサンプルコードで var fileHolder : Box[FileParamHolder] = Empty (略) bind(... "receipt" -> SHtml.fileUpload(fileHolder = _),という部分がある。SHtml.fileUpload()の仕様を見ると、引数型は FileParamHolder => Any とい…