Haskell将棋についてのアピール文書 概要 Haskell将棋は、Haskellという純粋関数型言語で作成しました。 型推論、遅延評価、導出インスタンス宣言、カリー化、高階関数、クロージャ、リスト内包表記、パターンマッチ、セレクタ、@パターン、中置記法、セクション、モナド、コンビネータ等を用いて、コンピュータ将棋の簡潔な記述を目指しました。 結果、339 行1280単語12452文字(空白込み)という極めて小規模かつ、USIプロトコルでの対局、Bonanzaのfv.binを用いた評価関数を備えたプログラムになりました。 課題 変更可能な変数を直接操作できないHaskellにおいて、いかに盤面更新等の副作用のある処理を扱うかが、最大の課題でした。 更新手続きの状態を不可視な変数として持ち、それをモナドのライブラリを利用して操作するST(ステートスレッド)モナドを用い、コピーを伴わない盤面