haskell

もなもなMaybeモナド

http://d.hatena.ne.jp/ysano2005/20060412/1144843566 を読んで、確かにモナドの短めのサンプルコードがあると便利だよな、と思ったので、勉強がてら自分で書いてみることにした。http://www.sampou.org/haskell/a-a-monads/html/introII.htmlにそって一つ…

呪われかかってる

関数型のスタイルでコードを書くのがだんだん楽しくなってきました。下手するとRubyが苦痛になりそう(まだそこまでいってないけど)。 コード密度の高さがたまりません。

やりすぎIOモナド

とある本からの受け売りだけど、漠然とIOモナドってやりすぎだよな、と思っていたところがはっきりしたのでメモ。IOモナドには次のような性質がある。 プログラム中の(実行を期待している)全てのIOモナドは結局全順序に順序付けられる ある関数の返り値にな…

素数の無限列生成

ちょっと感動したのでメモ。もうちょっと長いコードかと思っていたらこれでできるんだな。 primes = sieve [2..] where sieve (s:ss) = s : sieve (filter (\x -> (mod x s) > 0) ss)primesってやると割り込みをかけるまで永遠に素数列が表示され続ける。 *M…

モナドに至る病

だんだんIOモナドがオブジェクトに見えてきた。

もういやモナド

乱数の配列つくるのにすごく苦労した。 モナドって人間が記述しようとしちゃいけないんじゃないかな…

もなもなモナド

haskellのモナドの解説は、「Haskellの入出力」というページ(http://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/haskell_io.html)がめちゃくちゃわかりやすい。やっぱり、いきなりdo記法からはいるのは、袋小路につっこんでいくだけだよな。do記法なんて一…

その名はhaskell

http://tokyo.yapcasia.org/sessions/learning_haskell.html 結城さんところ(http://www.hyuki.com/t/200603.html#i20060326225254)経由。 YAPC::Asia 2006 TokyoでAudrey Tangがやるhaskellのチュートリアルの紹介文の煽り文句がすごすぎる。 C++ より速く…

インタプリタ重要

純粋関数型言語をちゃんと習得したいなあと思って、Concurrent Cleanをいじっていたわけだが、最近、元気よさそうなのと、なんといってもインタプリタがあるという理由でhaskellに戻ってみた。 ghciならletつかって関数定義もできるし、:tで型が調べられるの…

シリーズ「関数型言語haskellの深遠」 型クラス

今日のお題は「型クラス」。ややこしそうだが、理解できれば、応用範囲はすげー広い予感。 というわけで、(http://www.sampou.org/haskell/tutorial-j/classes.html)を読む。 以下は解説というより覚書なので、まちがっている可能性大です。ツッコミ歓迎。 …

シリーズ 「関数型言語haskellの深遠」 リストの内包定義

u-noさんところより(http://d.hatena.ne.jp/u-no/20041214#p4)。 和が6となる4要素のリストを返す関数。ソース test = [(a, b, c, d) | a <- [0..6], b <- [0..6], c <- [0..6], d <- [0..6], a + b + c + d == 6]hugs(haskellインタプリタ)でのtestの実行結…

シリーズ「関数型言語haskellの深遠」 無限リスト

まずはソース。1足す関数incと自然数生成関数n_genの定義。 inc n = n + 1 n_gen = 1 : map inc n_genhugs(haskellインタプリタ)でのn_genの実行結果 Main> n_gen [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,\ 30,31,…