kmizuの日記

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

2010-01-01から1ヶ月間の記事一覧

PEGのパーサ in Scala

ScalaのパーザコンビネータでParsing Expression Grammar(PEG)の文法を定義してみました。PEGのインタプリタ作る副産物としてできたもので、構文木も作ってくれます。まあ、使いたい人が居るかは激しく疑問ですが、パーサコンビネータの使い方の参考になるか…

Scala 2.8.0 Beta 1

待ちに待った2.8系の初めてのpublic release(betaだけど)。一応、2.8の進捗についてはMLの流れを追ってたんで大体把握してはいるけど、Type constructor inferenceとか、2.8に入るとは思って無かった機能も入っているみたいで嬉しい限り。変更点の概要につい…

FantomのImplicit CastsとOnionの黒歴史(にしたい)自動ダウンキャスト

Onionには以前自動ダウンキャストという今となっては黒歴史にしたい機能が入っていたことがあった*1。どういう機能かというと、たとえば、Object型の変数oをダウンキャストしてString型の変数sに入れたいとする。Javaだと以下のような感じだ。 Object o = ..…

言語雑談会2009年度(2010年) 収支

雑談会: 飲食費 - 3132円 懇親会: - 9943円 懇親会不参加者*2 + 400円 懇親会参加者*15 + 15000円 - + 2325円 黒字分の2325円は来年の言語雑談会に繰り越します。って、これは来年も自分が幹事やるフラグ?

言語雑談会2009年度(2010年)

言語雑談会というのは、自分がB4のときに始まってなんだかんだと毎年続いてる、プログラミング言語のこととかについてひたすらだべるイベントです。 今年は昨日(1/24)に開催されました。今年は、他に言いだしっぺが居なかったみたいなので、自分が幹事やりま…

Int#+の怪

Scalaでは32ビット符号付き整数を表すIntは特別な型ではなく、単にAnyのサブクラスであるAnyValのサブクラスであるIntクラスだという事になっているし、実際そのように扱われる。また、Intに対する+などの各種演算子も単なるIntクラスのメソッドであることに…

JavaプログラマのためのIOモナド

特に説明はしません。IOモナドなんて言っても、別に難しいことではなく、結局やってる事はこんな感じですというのがわかってもらえれば。もちろん、実際のHaskell処理系がこのような実装になっているという意味ではなく、Javaプログラマはこのようなイメージ…

Nemerleでコンパイル時に迷路を解いてみた

故*1Nemerleのマクロは非常に強力で、コンパイル時でも実行時に行えるあらゆる事(計算はもちろんのこと、入出力、ネットワークIO、GUIなど)を行えるので、それを利用してコンパイル時に例の迷路を解くマクロを書いてみた。このマクロは、入力として迷路を表…

非遅延純粋関数型言語IMO(Io MOnad)を公開します

2年半くらい前に、言語開発合宿という、二泊三日でオレ言語の仕様とその処理系を作るという楽しいイベントがありまして、その時に、「HaskellのIOモナドがよくわからんから、実際にIOモナドを持ったミニ関数型言語を作って理解しよう」と思って作ったもので…

Fantom Programming Languageを触ってみる

以前はFanという名前だったけど、いつの間にかFantomという名前に改名したらしい。オブジェクト指向の静的型付け言語で、C#/Javaっぽい構文だけど、動的型言語的な機能も取り入れてるのがウリのようだ。で、とりあえずHello, World的なものを書いてみるかー…

人材獲得作戦・4 試験問題 を解いてみた

なんか、人材獲得作戦・4 試験問題ほかの問題を解くのが一部で流行っているらしいので、Scalaで解いてみた。途中、くだらない所ではまって時間を浪費しまって、1時間超過してしまったのは恥ずかしい限りだ(正確には計測してないが、たぶん1時間20〜30分くら…

Javaの検査例外の欠点について

最近、こことかこことかこことかで、Javaの検査例外に関する議論が話題になっているようだ。検査例外に関しては、自分も以前から一言言いたいと思っていたので、ちょっと書いてみることにする。とはいえ、他の人と同じ論点で書いてもつまらんので、ここでは…

無名関数を作るためのシンタックスシュガー

普段Scalaのことばっかり書いてるこの日記だが、たまにはClojureの話題でも。Clojureには、無名関数を簡単に作るための構文があり、無名関数化したい範囲を#()で囲って、引数を与えたい部分に%を書くという感じで、短い無名関数を綺麗に書けるので気に入って…

Scalaの限定継続を使って、C#のyieldぽいものを実現するライブラリを書いてみた

Scalaの限定継続を使って遊んでいたら副産物的にできたもので、実用に供することができるものではないですが、まあこんなこともできますという例として。なんかキャストとか使っていてあまり綺麗じゃないですが、型安全なように書こうとすると複雑になる上に…

あけましておめでとうございます & 今年やりたいこと

といっても、もう1/3ですが。去年を振り返るエントリでも書こうかなーと思ったのですが、面倒なのでそれはやめにして、今年やれたらいいなー(or やる予定のこと)をつらつらと書き連ねていこうかと思います。あくまでやれたらいいなー的なことなので、今年中…