Scala日記

Scalaの備忘録。ときどき研究の話。

2015-04-02から1日間の記事一覧

法律文の構文解析はとっても難しい

法律文の構文解析がいかに難しいかをよく説明する例。 この例文の中だけでも、かなり難しい要素がある。 ↓以下は「一文」です。 労働者の養育する子について、当該労働者の配偶者が当該子の 1 歳到達日以前のいずれかの日において当該子を養育するために育児…

Functional pearls

Functional pearls という素敵な論文集を見つけた。 日本語の訳本 関数プログラミング 珠玉のアルゴリズムデザイン作者: Richard bird,山下伸夫出版社/メーカー: オーム社発売日: 2014/11/12メディア: 単行本(ソフトカバー)この商品を含むブログ (1件) を…

EnumerationのvaluesはSotedSetを返すのでマップした結果もソートされる。

今日のScalaハマリポイント: EnumerationのvaluesはSotedSetを返すので、マップした結果もソートされる。 gist.github.com なにかやんごとなき理由があるのかもしれないが、直感には反するのでかなりのハマリポイント。 このせいで3〜4時間は費やしてしまっ…

型消去の結果同じ引数型になってしまうメソッドをオーバーロードする

学生さんから、「関数リテラルを引数に取るメソッドをオーバーロードするときはどうするのがスマートだと思いますか?」と聞かれて、ちょっと調べてみた。 どういう場合かというと、 gist.github.com みたいな場合。引数一つの関数オブジェクトはFunction1[-…

Scala の標準ライブラリを使って try-with-resource 構文相当の表現を書く

Scalaには標準では try-with-resource 構文が備わっていないが、自分で簡単に実装できるので、一般的にはこんなかんじのコードをそれぞれ書いて使う。 gist.github.com 標準ライブラリの範囲でできる書き方が何かないかなと模索していたら、こんな書き方がで…

for 式内での変数束縛の罠

今日のScalaハマりポイント: for 式内の変数束縛のタイミングが直観に合わない。 挙動をちゃんと知っていれば理解は出来るけれど、気を使って書かなければいけないのはデメリット。 gist.github.com 普通に読むと、iを束縛した後、bestを束縛して、jを回す…

untilで作ったRangeはshuffleできない

今日のScala悲しみポイント 「untilで作ったRangeはshuffleできない」 gist.github.com ↓ なんと、toで作ったRangeとuntilで作ったRangeでは型が違うらしい。 gist.github.com ↓ Listのように明示的に列挙されているコレクションに変換すればもちろんshuffle…

ScalaのREPLでコードの構文木を見る

scalaに-Xprint:<phase>オプションを渡すことでコードの構文木を見ることができる。 シンタックスシュガーの展開などをチェックするのに便利。 この状態で for式を入れると、デシュガーの結果がわかる。 gist.github.com -Xprintオプションに渡す出力フェーズは、"s</phase>…

ScalaのREPLに色を付ける

scalaのREPLに色をつける隠しオプションがあるらしい scala -Dscala.color でも、特に嬉しくない。