kmizuの日記

プログラミングや形式言語に関係のあることを書いたり書かなかったり。

2012-01-01から1年間の記事一覧

irof式が実装できたよ。そう、Scalaならね! (Re: irof文が実装できたよ。そう、Scalaならね!)

See: irof文が実装できたよ。そう、Scalaならね!返り値が思い通りにならないことに困ってらっしゃったようなので(?)、実装してみました。 object Main { case class irof[A](val condition: Boolean)(blockA: => A) { val thunk: () => A = () => blockA…

Weak Conformanceのはなし

この記事はPlay or Scala Advent Calendar 2012 の 6日目です。今回の記事は、とりわけ役に立たないことを自負しています(役に立つ記事を読みたい人は飛ばしてください)。本題に入る前に、conformanceという概念についてざくっと簡単に説明しておきます。こ…

Iterator.continually()を使おう

Scalaの標準IOライブラリであるscala.io(.Source)は非常に腐ってます。読み込みしか対応してない上に、バイト列の読み込みもサポートしてないという代物。しかも、Scala 2.7まではscala.io.Sourceがそのままだとcloseできなかったりとか(今はcloseできます)…

Jsonda 0.4.0リリース

昨日、Jsonda 0.4.0をリリースしました。先日の日記では、次のバージョンを0.3にするようなことを書いたのですが、リリース版のメジャーバージョンは0.2 -> 0.4 -> 0.6のようにすることにしました。Jsonda 0.2.1と同じく、Scala 2.9.1とScala 2.9.2用にクロ…

Jsonda 0.2.1 & Jsonda 0.3について

しばらく前ですが、Jsonda 0.2.1をリリースしました。0.2からScala 2.9.1とScala 2.9.2のクロスビルドしているので、どちらでも使えます。Jsonda 0.2からsonatypeにpublishしてるのでresolversへの追加なしで、以下の一行をbuild.sbtに追加するだけで使えま…

Scala基礎勉強会行ってきました

Scala基礎勉強会という勉強会が、先日名古屋で行われたので行ってきました。Scala基礎勉強会というと一見入門勉強会のように見えますが、基礎は基礎でも内容はbasicじゃないのがポイントです。イベントページを見るとわかるかと思いますが、ぶっちゃけて言う…

_ と _ の違い

意味不明なタイトルですね。このエントリの目的は、二つの似た_の使い方が全く異なる意味を持っていることを認識してもらうことです。最初に結論を言います。Scalaの式中における obj.method _ という使い方(Method Values)と obj.method(_) という使い方(Pl…

プレースホルダー構文クイズ(解答編)

淡々と解答編。 1. =の右辺の展開結果が全く同じになるコード例のグループを全て列挙してください A. (1-2, 1-5), (2-1, 2-2), (2-3, 2-4), (3-1, 3-5), (4-3, 4-4) 2. コンパイルできるコード例を全て抽出してください(e.g. 1-2, 1-3)。 A. 1-2, 1-3, 1-5, …

プレースホルダー構文クイズ(問題編)

初めに言っておくと、これはマジなクイズではありません。実際にScalaのプレースホルダー構文を使う上でここまで詳細な挙動を知る必要はありませんし、知る必要のあるようなプレースホルダー構文の使い方をしていたら、それはおそらく誤った使い方です。ただ…

Objective-Cで不満に思うこと

私は最近、昼間のお仕事ではObjective-Cをよく使っているが、この言語、さすがに元々の年代が古いというかあちこち微妙な部分があってイラっ☆とくることがよくある。とはいえ、Objective-Cに関してはまだまだ素人なので、熟練者からみればとんちんかんなこと…

ScalaでListが共変でなければいけない理由

Scalaに限らず、関数型言語の入門記事には、必ずといっていいほど、最初の方でリスト型が出てきます。不変データ構造として単純なので説明しやすいことや、実際に小さなコレクションとしてリストを使うことが多い事など、理由は色々あるでしょう。まあ、それ…

『Scala逆引きレシピ』 感想

少し前に献本いただいたのですが(竹添さん、翔泳社様、ありがとうございます)、時間が無くてあまり読み進められていませんでした。昨日使って一通り目を通したので、ちょっとした感想を書きます。購入の際の参考になれば幸いです。まず、結論から言うと、本…

2012年06月17日のツイート

@kmizu: @pinzolo 3文字が個人的にいいです!あと、ぷりくるだと、「ぷるりくえすと」と発音するときと、音声の順番がずれてて、そこが少し気持ち悪いようなw2012-06-17 23:44:39 via SOICHA to @pinzolo @kmizu: @rinfield そですね。ただ、当然といえば当…

2012年06月14日のツイート

@kmizu: 抽象的な「優先度」を考えるのではなく、各イテレーションにおいて、先にやらなければならないことを順に並べていけばいいから、気が楽だ。実質的には優先度をつけてるわけだが。2012-06-14 23:52:34 via SOICHA @kmizu: 「自分の人生」にストーリー…

Jsonda 0.0.2をリリースしました

JsondaはScalaでJSONオブジェクトをエレガントに*1構築するためのDSL、あるいはリテラル的な何かです。ScalaでJSONオブジェクトを構築するときに、前々から私はイラっと来ていました。もっとも原始的な方法としては、JsonParser*2などを使って、 val person …

Scalaに関するよくある誤解(1) - 最後の処理の値が返り値になるのでreturnは不要

Scala 2.10.0 M3試してみる記事はいったんおいといて、前からよく見かけるScala(に限った話でもないですが)に関する誤解(とも言い切れないですが)について少し書いてみます。Scalaで以下のようなコードがあったとき、 def add(x: Int, y: Int): Int = { retu…

Scala 2.10.0 M3の新機能を試してみる(3) - SIP-15 - Value Classes

Scala 2.10.0 M3の新機能を試してみる記事第三段。今度はSIP-15 - Value classesです。この機能は、一言で言うと、従来ユーザが継承することができなかったAnyValを継承したクラスを作ることができるようになる機能です。この機能の主な意義は、特定の状況に…

Scala 2.10.0 M3の新機能を試してみる(2) - SIP-13 - Implicit classes

Scala 2.10.0 M3の新機能を試してみる記事第二段。今度はSIP-13 - Implicit classesです。さて、Scalaでは従来、implicit conversionを使って、既存のクラスにメソッドを追加するPimp My Libraryと呼ばれるパターンが使われてきました。たとえば、Stringに対…

Scala 2.10.0 M3の新機能を試してみる(1) - SIP-11 - String Interpolation and formatting

先日というかしばらく前ですが、Scala 2.10.0 Milestone 3がリリースされました。この、「マイルストーンリリース」については、以前に書いたように、RCほどの品質は無い点に注意する必要がありますが、今回のMilestone 3で2.10.0に導入予定の機能の多くがと…

Scalaに関して知っておくべきたった一つの重要な事

タイトルは釣りです。先日、大昔に見た懐かしい記事が翻訳されていました。この記事自体ははっきり言って、ScalaはOCamlではないということを言葉を変えて延々と言ってるだけなので、どーでもいいです。3年も前の英語記事がTwitter上で今更注目された事に驚…

Scalaによる Expression Problemの解決 (Visitor編)

参考:ジェネリクスによるVisitorパターン拡張の考察Scalaは元々は、複数の関連しあったクラス群をうまく再利用可能なことにすることも視野にいれていただけあって、こういうのを(オブジェクト指向モデルの中で)簡単に取り扱えます。 trait VisitorsBase {se…

Scalaの標準(コレクション)APIを読もう:車輪を再発明する前に

なんか久しぶりに、技術ネタっぽい何かです。Scalaの標準ライブラリは結構偏りがあって、scala.ioとかのIO周りは壊滅的だったりする(ので早くScala-IO入って欲しい)のですが、コレクションライブラリは結構充実してて、色々便利メソッドがあったりします。コ…

Finagleハッカソンします

先日のJavaOne TokyoでTwitterの人が発表していたTwitter製のRPC用FW Finagleハッカソンを5/19に行います。JavaOneのときに、@gakuzzzzさんと相談して日程を決めて、段取りなどは@gakuzzzzさんにお願いしたのですが、募集開始してからあっという間に定員オー…

JavaOne Tokyo 2012 JVM言語BoF #jt12_b101に参加してきました

早い話が、ScalaJP(Scala)、日本JRubyユーザ会(JRuby)、JGGUG(Groovy)のJVM上で動作する言語処理系のコミュニティが集まって、バトルするという趣旨のBOFでした。勝敗は、BOF終了時点までに、Twitter上に、 #jt12_b101 #scala #jt12_b101 #groovy #jt12_b101…

JavaOne Tokyo 2012のJVM言語に関するBOFで発表します (as one of ScalaJP members)

1月から、JGUGの方を中心にひっそりと進んでいた企画なのですが、Groovy, Scala, JRubyの3つのJVM言語のコミュニティが集まって 言語の概要発表 コーディング大会 LT大会 などを行うイベントです。既にご存知の方も居ると思いますが、JavaOne Tokyo 2012のプ…

Githubを使ってScalaの開発に貢献しよう

ScalaJP盛り上げよう企画として、Scalaブログリレーをちょっとやってみることにしました。ルールは簡単で、それぞれが好き勝手にScalaに(少しは)関係する話題を書いて、次に書く人を指名するというものです。指名された人は、7日以内に記事を上げるか、無理…

githubに "scalajp" organization を開設しました & Scala関係の翻訳プロジェクトを scalajp に移管してもいいという方募集

ScalaJPが発足して、約2ヶ月くらいになるのですが、英語ドキュメントの翻訳にあたって、共同作業をするのに良い場所が無いのが悩みの種でした。githubを使えばよい、というのはわかっていたのですが、個人のアカウントだと、管理がややこしくなりそうで、イ…

エンジニアサポート新年会2012 CROSS 次世代言語CROSS 『Scala、Haskell、PythonでのWeb開発の紹介』 で発表してきました

発表スライドへのリンクはこちら。それほど書くことも無いのですが、表題のセッションで日本Scalaユーザーズグループ 代表っぽい(仮) として発表してきました。こういう微妙な肩書きになった理由はおいといて、ちょっと聴衆の層を見誤ったかなあ、というのが…

ジョギング再開しました

ここ1年近く、ジョギングをする週間が途絶えていたのですが、一年発起して、今日はジョギングしてきました。コースは、自宅(Olympicの近く)〜JR亀戸駅〜JR錦糸町駅の往復コースで、だいたい40分程度です。久しぶりで体がなまっているのではないかと思いまし…

Scala 2.10.0 Milestone 1

このエントリ読んでいるような人は既にとっくに知ってそうな気がしますが、ブログ更新再開の手始めとして、すぐ書ける話を持ってきました。さて、つい先日、Scala 2.10.0 Milestone 1(以後、2.10.0 M1)がリリースされました。2.10.0 M1の新機能とかはとりあ…