H

haskell-io-in-java-sample

c42f094e Fill hoge-s · by Yuji Yamamoto
Name Last Update
src/main Loading commit data...
.gitignore Loading commit data...
LICENSE Loading commit data...
README.md Loading commit data...
haskell-io-in-java.iml Loading commit data...

haskell-io-in-java

このリポジトリーでは、HaskellのIOは他の言語でいうところの関数オブジェクトとよく似てるよ、という話で紹介した「HaskellのIOを無理矢理Javaに翻訳したクラス」と、それを使ったサンプルコードが含まれています。
そのまま動作するコードとなっておりますので、IOSampleなどを書き換えて試しにRunIOSampleを実行して動作させてみると、「HaskellにおいてIOは組み合わせるものだ」という世界観をより強く実感できるかもしれません。

詳細な仕組みを理解する場合は、下記のような順番で読むとよいかもしれません。

  1. IO.java: 元記事にも書いた、HaskellのIOをJavaでシミュレートしたものです。Prelude.javaやIOSample.javaでライブラリーとして使用します。
  2. IOSampleInOrdinaryJava.java: 上記のIOを使ったサンプルプログラムを、普通のJavaで書いた場合のプログラムです。比較対照としてご覧ください。
  3. Prelude.java: Haskellの標準ライブラリーに入っている、Preludeというモジュールの一部を再現しました。ここで定義した定数をIOSample.javaで使用します。
  4. IOSample.java: IOを使ったサンプルプログラムです。IOSampleInOrdinary.javaをPrelude.javaが提供するIOアクションをIO.javaが提供するAPIで、「組み合わせて」います。
  5. RunIOSample.java: IOSample.javaを実際にJavaのプログラムとして実行するプログラムです。Javaプログラムとしてのmainメソッドはこちらにあります。

また、参考までに、IOSample.javaと等価なプログラムのHaskell版など、元記事で言及したHaskell製のプログラムについても、このリポジトリーに含まれています。
src/main/hs ディレクトリーをご覧ください。

LICENSE

一応MITライセンスとしておきます。
詳細はLICENSEファイルをご覧ください。