Haskell

Docker で Haskell アプリケーションを作成 - MongoDB 利用

MongoDB へ接続する Haskell アプリケーションを Docker で作成してみました。 以下の Docker イメージを使用します。 mongo haskell ビルドツールは stack を使って、MongoDB への接続には以下のライブラリを使います。 MongoDB driver for Haskell 今回の…

PureScript で DOM を操作

PureScript の下記ライブラリを使って簡単な DOM 操作を試してみました。 purescript-dom purescript-simple-dom ソースは http://github.com/fits/try_samples/tree/master/blog/20160125/ はじめに PureScript を使って実装するものと同等の処理を JavaScr…

pulp を使った PureScript の開発

PureScript 用のビルドツールに pulp があります。 pulp を使えば PureScript v0.7 から多少面倒になったビルドや実行が比較的容易になります。 pulp インストール Node.js の npm で purescript (コンパイラ) と pulp をインストールします。 pulp インス…

Arrow (Kleisli) で List モナド - Haskell, Frege, Scalaz

「Scalaz でリストモナド - Kleisli による関数合成 」等で試してきた List モナドを使ったチェスのナイト移動の処理を Arrow (Kleisli) を使って実装し直してみました。 Arrow は計算のための汎用的なインターフェースで、モナドを扱うための Arrow とし…

Frege 上で Java クラスを使用する

前回、Frege で Functor や Applicative を試しましたが、今回は Frege のソース内で Java クラスを使用してみました。 Frege サンプルソースは http://github.com/fits/try_samples/tree/master/blog/20130901_3/ はじめに 一部の Java クラスは初めから Fr…

JVM用の純粋関数型言語 Frege で Applicative Functor を使用

Frege は Haskell によく似た JVM 用の純粋関数型プログラム言語です。 Frege なかなか面白そうな言語だったので、関数を Applicative として使うサンプル (書籍「すごいHaskellたのしく学ぼう! 」より) を試してみました。 ソースは http://github.com/f…

Haskell と Scalaz でモナドを自作

今回は、Haskell と Scalaz でモナドを自作してみました。良い題材を思いつかなかったので、とりあえず以下のような単純なモナド(Counter モナドとする)を自作する事にしました。 カウンターを持たせて、バインドで処理を繋ぐ度にカウンター同士を加算する…

Haskell で継続モナド

継続渡し形式 (CPS) をモナドとして扱う継続モナドを Haskell で試してみました。 継続モナドは以下のような処理をモナド化します。 何らかの処理結果を引数として継続と呼ばれる関数を呼び出す(継続は外部から与える) 処理結果を引数にコールバック関数…

Scalaz で Reader モナドと Applicative

今回は関数をモナドとして扱う Reader モナドを Scalaz で使ってみます。 Scalaz 7.0.0-M3 サンプルソースは http://github.com/fits/try_samples/tree/master/blog/20121013/sbt 用ビルドファイルは以下の通りです。 build.sbt scalaVersion := "2.10.0-M7"…

Scalaz でリストモナド - Kleisli による関数合成

前回 id:fits:20120828 に引き続き、今回も書籍「 すごいHaskellたのしく学ぼう! 」 のサンプルを Scalaz で実装してみる事にします。今回は、リストモナドを使ったナイト移動 *1 の処理です。 Scalaz 7.0.0-M3 sbt 0.12.0 サンプルソースは http://github.c…

Scalaz で Ordering モノイド

書籍「 すごいHaskellたのしく学ぼう! 」 の Ordering モノイドを使った lengthCompare 関数を Scalaz で実装してみました。 Scalaz 7.0.0-M3 sbt 0.12.0 サンプルソースは http://github.com/fits/try_samples/tree/master/blog/20120828/ lengthCompare 関…

Haskell, Scala によるパーサーコンビネータを使った CSV ファイルのパース処理

以前(id:fits:20101129, id:fits:20101204)試したような CSV ファイルのパース処理を書籍 Real World Haskell―実戦で学ぶ関数型言語プログラミング を参考に Haskell と Scala のパーサーコンビネータでやってみました。 Haskell の方は本の内容ほとんどそ…

Groovy, Scala, F#, Haskell による関数・クロージャの合成

Groovy 1.8 のクロージャ合成の機能を試したついでに、Scala, F#, Haskell での関数合成の機能も簡単にまとめてみました。サンプルのソースコードは http://github.com/fits/try_samples/tree/master/blog/20101213/ Groovy の場合 Groovy では >> や Groovy…

Haskell で UTF-8 メールを送信 - SMTPClient 使用

前回 id:fits:20101101 にて Scala や F# で実装したメールの送信処理を Haskell で実装してみました。メール送信には HaskellNet を使う方法もあるようですが、今回は SMTPClient を使いました。 HaskellPlatform 2010.2.0.0 (GHC 6.10.4) SMTPClient 1.0.3…

Windows 環境の Haskell に iconv パッケージをインストール

以下の環境の Haskell に文字コード変換のための iconv パッケージをインストールする手順を書いておきます。 HaskellPlatform 2010.2.0.0 (GHC 6.10.4) 今回、FFI(外部関数インターフェース)を使っているパッケージのインストールが初めてで勝手が分から…

HaskellでのXMLパース処理 - XPath使用

今回は、id:fits:20100525 で実施したパース処理を Haskell で書いてみました。 環境は以下の通りで、XML の処理のために HaXml というライブラリをインストールしました。 GHC 6.12.1 HaXml 1.20.2 Haskell での XPath HaXml では、xmlParse で XML をパー…