タグ

ブックマーク / kmizu.hatenablog.com (4)

  • JavaプログラマのためのIOモナド - kmizuの日記

    特に説明はしません。IOモナドなんて言っても、別に難しいことではなく、結局やってる事はこんな感じですというのがわかってもらえれば。もちろん、実際のHaskell処理系がこのような実装になっているという意味ではなく、JavaプログラマはこのようなイメージでIOモナドを理解すればいいのではないかという提案に過ぎないので、その点は注意してください。 package iomonad; import java.util.Scanner; public class IOLib { enum Unit{VALUE};//一つしか値を持たない型 public static Unit UNIT = Unit.VALUE; /** * HaskellのIO 'a型に相当 */ public interface IO<A> { /** * IOを「実行」して、A型の値を得る処理. * ユーザが直接呼び出すと参照

    JavaプログラマのためのIOモナド - kmizuの日記
    Yoshiori
    Yoshiori 2010/01/18
  • Javaで作るPEGパーザコンビネータ - kmizuの日記

    パーサジェネレータを作る簡単さで言うと、 PEG <<<< LL(1) <<<< LALR(1) くらいな感じのイメージです。 http://twitter.com/kmizu/statuses/1183248403 なんて偉そうなこと書いたので、(パーザジェネレータじゃないけど)PEGパーザコンビネータを実際にJavaで書いてみた。文字クラスを除くPEGの機能のほぼフルセットをサポートするのを目標に書いたので、やや煩雑になっている。 package jp.gr.java_conf.mizu; import java.util.*; import static java.lang.String.format; public class PEGParserCombinators { public static final class Pair<A, B> { public final A _

    Javaで作るPEGパーザコンビネータ - kmizuの日記
  • LLFuture雑感 - kmizuの日記

    基調講演 実はあんまし興味無かったのだけど、Perl 6 rulesの話がメインだったので面白かった rulesって単なる言語組み込みのPEGパーザコンビネータかと思ってたけど、EPPとかみたいに構文を自己拡張できるようにするのが目的だったのね rules自体はPEGに色々くっつけて拡張したものに、文法定義を継承したりする機能とかぶっこんだみたいな感じ? ||がordered choiceで|がunordered(longest match)だってのは、ちょっと意外。|ばっかり使うと性能がやばげな事になりそう。 英語のリスニングは苦手なので、細かいニュアンスを聞き取れなかったのが残念 LL で未来を発明する 正直、すごい勿体無い感のあったセッション 100年後とかじゃなくて、数年後〜10年後くらいというスパンだったら、もうちょっと話が発散しなかったんじゃなかろうか Matzさんはやっぱりマ

    LLFuture雑感 - kmizuの日記
    Yoshiori
    Yoshiori 2008/09/02
    三段論法どころの話じゃねえ。
  • Java 7のクロージャ(BGGA版)のプロトタイプを試してみた - kmizuの日記

    Java API、使ってますか? (53) Java SE 7の要注目機能"クロージャ"はどうなるのか の記事を参考に、ここからプロトタイプ実装をダウンロードしてきてインストールしてみた。 注意点として、上記の紹介記事ではJDK 5.0以降が必要という風に書かれているが、JDK 5.0だと次のようにUnsupportedClassVersionErrorが出てコンパイラが実行できなかった(JDK 6.0だと動作することは確認)。 Error occurred during initialization of VM java/lang/UnsupportedClassVersionError: Bad version number in .class fileさて、早速、まずは上記リンク先の紹介記事に書かれているコードをコンパイルしてみた。 >bin\javac FirstClosure.j

    Java 7のクロージャ(BGGA版)のプロトタイプを試してみた - kmizuの日記
  • 1