2007-02-01から1ヶ月間の記事一覧

『入門Haskell』練習問題例解(15)

『入門Haskell』最後の問題です。 Base64(エンコード) p.144の(1)です。 (1) このBase64エンコードは「76文字以内に改行を入れる」ということが行われていません。これに対する対処を、以下の2つのアプローチで実装しなさい。 1. base64Encode関数でevalSt…

『入門Haskell』練習問題例解(14)

p.128。モナド関連の関数です。 1. sequence_ を foldr を使って定義しなさい。 2. mapM と mapM_ を定義しなさい(sequenceなどを使ってもよい)。 3. foldM と foldM_ を定義しなさい。 sequence_ mySequence_ :: Monad m => [m a] -> m () mySequence_ = …

『入門Haskell』練習問題例解(13)

p.113です。 (1)木の最大深さを計算する関数depthを書きなさい。 (2)上で示したtreeToList(p.112)は、リストの順序が滅茶苦茶になっています。これを、キーの昇順に並べるように実装しなおしなさい。 昇順に並んだリストを返す関数はtreeToSortedListとしま…

『入門Haskell』練習問題例解(12)

p.106です。 (1) MaybeはOrd a => Ord (Maybe a)でもあります。このインスタンス宣言を行いなさい。またShow a => Show (Maybe a)のインスタンス宣言も行いなさい。 (2) 2章で見たように、Ordの宣言の概略は次のようになっています。(中略)これにデフォル…

圏論

Haskellにおけるモナドと圏論の関係についてこの論文が非常に参考になりました。 The Haskell Programmer's Guide to the IO Monad --- Don't Panic 関手や自然変換について、ごくごく基本的なレベルですが腹の底から理解できました。MaybeモナドやListモナ…

Schemeはじめました

Scheme始めました。『計算論』は90ページぐらいまで読みました。位相空間論の本も読んでいます。やっぱ数学は楽しー!

『計算論』メモ 問1.3.15

『計算論 計算可能性とラムダ計算 (コンピュータサイエンス大学講座)』p.22の問1.3.15。 代入命令 (0を代入) 代入命令 (次の自然数を代入) 判定命令 (xとyが等しいか判定し分岐する) 入力命令(入力値は保存)と出力命令 からなるNプログラムを正規形…

『入門Haskell』練習問題例解(11)

第4章、p.101です。今回を含めてあと5問です。 (前略) たとえば次のように data MyType = I Int | F Float | C Char ここでたとえば [I 10, F 10, C 'a'] のようなリストがあるとします。 (1)[MyType]からC要素だけ取り出すfilterCを書きなさい。 (2)[MyTy…

忙しくなってきた

またJavaScriptの仕事が出来たのでしばらくハスケれそうにありません。と言っても今月中には全問解答するつもりです。