今回作ってみたものは超どうでも良いツールです。̄こういうテキストを生成するだけのツールです。FayのコードHTMLコードこれらのコンパイルなどもhakyllでまとめて管理できるようにしました。コンパイルコマンドを叩くのが面倒な人にも安心ですね。このあたりから見つけることが出来ると思います。私の記事よりは、幾分充実したものだと思います。サブセットになっています。最初に語っておこうかと思います。なんでこんなものが必要なのかJavaScriptでWebアプリを書きたくないから。乱立している昨今においては、あえて説明する必要はないかとも思います。ProblemなんでHaskellのサブセットなのかまず第一に、Haskellは良い言語であると言うこと。第二に、Haskellは大きな言語であると言うこと。第一の理由は、好み以外にありません。Fayを使う理由もないでしょう。リッチな型システムによって、静的な型検証が行われることだと思います。第二の理由は深刻です。フルのHaskellを実装するのは大変だからです。サブセットという選択肢にもいくつかのオプションがあるでしょう。いうオプションも当然あります。JavaScriptで書かれたランタイムからなるアプローチをとっています。代物を実装する必要が依然としてあります。こちらはより実装を軽くすることを目的としているようです。JavaScriptをサポートしたようです。インストールが面倒だというUHC自体を使うに当たる問題にぶち当たります。なさそうなのが現状です。Hindley-Milner型推論を持つ関数型言語です。Haskell似た言語です。Fayが良いのは、Haskellの完全なサブセットだという所です。Fayのコードは(Fayにバグがなければ)普通のHaskellとして動作します。実際に型チェックにはGHCが用いられます。表現に制限がかかるだけです。少なくとも私は、かなりの精神的負担と混乱を強いられると感じます。出来ないことは、コンパイル時に判明するからです。導入しておく必要があります。簡単にインストールできるはずです。Platformがインストールされれば、fayの導入は簡単です。fay-baseこのコマンドを実行すれば、インストールは完了です。書き忘れましたけど、Haskellの知識は前提とします。Fay!"最初のLANGUAGEプラグマは、暗黙のPreludeを用いないようにする指示です。暗黙のPreludeを無効化しつつ、改めてimportする必要があります。ドキュメントを参照してください。()になっていることに注意してください。FayにはIOはありません。その代わりに何だかよく分からないFayモナドになっています。気にしてはいけません。そのほかはいつも通りです。コンパイルして実行してみましょう。Fay!至って普通です。ブラウザからも実行してしてみましょう。HTMLファイルと、mainを起動するためのラッパコードが生成されます。ブラウザから開けば、実行されます。画面は真っ白だと思います。何かが出力されていることを確認してください。DOMをいじれなければ、何の意味もありません。呼び出したいこともあるでしょう。シンプルで便利な方法が用意されています。alertでダイアログを表示させてみましょう。JavaScript!"ffiというのがJavaScript呼び出しを実現する関数です。特殊構文でも何でもなく、ただの関数です。このことが、とてもFayのFFIを扱いやすいものにしています。ffiの第一引数には、任意のJavaScript文字列を与えることが出来ます。任意に引数を与えたり、メソッド呼び出しを行うことが出来ます。上の例では、alertの引数として、第一引数を渡すコードになっています。確かにalertを呼び出すことが出来ています。副作用のない場合は、純粋な関数として扱うことも可能です。文字列の大文字化を行うtoUpperCaseメソッドをFFIしてみましょう。JavaScript!"これを実行すると、次のように、確かに大文字化されることが確認できます。オブジェクトのメソッド呼び出しになっていることに注目してください。このように、プレースホルダは、任意の位置に置くことが出来ます。安全に純粋な関数として扱うことが出来ます。一般的に安全かどうかは、もちろん実行するコードによります。がんばれば、何でも出来るということになります。がんばりたくないのです。jQueryが使えたら...。fay-jqueryというパッケージがあります。インストールもとても簡単です。hoge.hsのように、fayコマンドの--packageオプションに渡します。--packageオプションで指定するという形に落ち着いたようです。とどめておくことにします。本家のドキュメント、http://hackage.haskell.org/package/fay-jqueryをご参照ください。適当なHTMLを用意します。</body></html>あやしいボタンが一個あるだけのページです。その後に、作成予定のfayのコードを読み込ませるscriptタグを配置します。jQueryをロードするのも忘れずに。それのonClickにalertを呼び出すハンドラを設定しているだけのコードです。Haskellのコードが、イベントハンドラとして呼び出されます。今回は無視しています。これをコンパイルして実行します。--html-wrapperを指定して上書きしてしまわないように注意します。正しく、ハンドラが呼び出されました!まとめFayを使ってみて、思っていたより便利だなあという印象です。似て異なる言語を覚えなくて良いのは、想像以上に精神的に楽です。パッケージ管理も割と良い感じです。パッケージとして用意されています。抜けているところがたくさんあります。ffi関数でわりとどうとでもなりそうだという安心感はあります。コミュニティーもそれなりに大きくなりつつあるのかなあという印象です。いうわけで、いわゆるJavaScript代替言語が欲しくて静的型チェックがあるものが良くてHaskellが嫌いじゃなくてHaskellをすでに習得している人にとっては、現状使えるツールとして、有望な選択肢だと思います。皆さんも是非お試しください。Bootswatch.。