kmizuの日記

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

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

LLFuture雑感

基調講演 実はあんまし興味無かったのだけど、Perl 6 rulesの話がメインだったので面白かった rulesって単なる言語組み込みのPEGパーザコンビネータかと思ってたけど、EPPとかみたいに構文を自己拡張できるようにするのが目的だったのね rules自体はPEGに色…

リストから表を生成する

scala-user MLに投稿されていた問題で、 入力: 1, 2, 3, 4, 5, 6, 7 のようなリスト 出力: <table> <tr> <td>1</td> <td>2</td> <td>3</td> </tr> <tr> <td>4</td> <td>5</td> <td>6</td> </tr> <tr> <td>7</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> </table> となるようなプログラムを作成せよというもの(出力はNodeSeqなので出力を整形するのは不要)。特に難しい問題ではないが、も…

Lazyなリストの作り方

Scalaで再帰的に定義する方法がわからん、という話。Haskellで a = 0:[x+1 | x <- a] と書けるのをScalaに持っていって def a:List[Int] = 0::((for(i <- a) yield { i+1}) toList)と書くと、定義はできるんだけど実行するとStackOverFlowErrorがでる。 http…

Scala 2.7.2 RC1

Scala 2.7.2 RC1 is out!主な変更点は以下のような感じ: Scalaのgenericな型がJavaのgenericな型として見えるように 2.7.1では、Javaのgenericな型をScalaからgenericな型として利用することはできたが、その逆(Scalaのgenericな型をJavaからgenericな型と…

自分自身の型をパラメータに取るgenericな型を記述する

@nagiseさん: ある木構造のノードをクラスで表現して、親の型をジェネリクスで受け取るNodeがあったとして、Node自身を親に出来るNodeを宣言できない。Node>となるんだけど、どうにかならないもんか。 Javaだと継承して、 public class ExtNode extends Node<ExtNode></extnode>…

ICFPCのfinal roundのマップ

ICFPCのfinal roundのマップ(Trial 1〜7まで。Trial 8はまだ結果自体が公開されていない)が見られるようになっていたので、早速Live CD上のシミュレータでマップを可視化してみた。 Trial 1 結果。最初だからか、かなりゆるめ。障害物回避をかなりテキトーに…

ICFP 2008 Programming Contestの軌跡

Twitter検索で検索したものから、ICFPCに関係あるのを抜き出してきたものなので、抜けがあると思うけど、一応、こんな感じの雰囲気でしたということで。 1日目 おきたー。さて、もーすぐ IFCP プログラミングコンテスト開始だ。 http://twitter.com/kmizu/st…

ICFP 2008 Programming Contest 結果

ICFPという学会が主催しているICFP Programming Contestという、参加者同士がプログラミングの技能を競うコンテストが毎年あって、今年は7月12午前4時〜15日午前4時(日本時間)にかけて行われていた。去年までは傍観していたものの、今年はチーム名suihan_jar…

Zipper in Scala

yharaさんのRubyでZipperを実装してみたを見て、ScalaでもZipperを実装してみたくなったので、書いてみた。実装は、基本的には k.inabaさんのZipperの解説エントリに書かれていたのをほぼそのままScalaに移植しただけのもの。ただ、それだけだと何なので、Sc…

宣言と初期化と代入と

Onionの仕様についてつらつらと考えていたら、自動ダウンキャスト以上になんかよろしくなさそうな箇所に気付いてしまった。というか、もっと早くに気付いとけよという代物だけど。Onionは静的型付け言語で、ローカル変数も(他の静的型付け言語同様に)静的に…

LL Golf Hole2をScalaで

LL Golf Hole 2 - 文字列に含まれる単語の最初の文字を大文字にする どう書く?orgあんまり時間もかからなそうなので、解いてみた(以下のリンク先の投稿)。http://ja.doukaku.org/comment/6920/

自動ダウンキャストの削除

なんかモチベーションが上がってきたので、久しぶりにOnionのソースコードをいじっている。まず真っ先に手をつけたのは自動ダウンキャストの削除。自動ダウンキャストというのは、その名の通り、自動的にダウンキャストを挿入する機能で、例えば、Java風のコ…

Java 7のクロージャ(BGGA版)のプロトタイプを試してみた(4) - Covariant Return and Contravariant Arguments

参考URLはこの辺:http://tronicek.blogspot.com/2007/12/covariant-return-and-contravariant.htmlJava 7のクロージャの仕様では、あるfunction typeの変数に対して、それと互換性のある引数の型と返り値の型を持ったクロージャを代入できることになってい…