北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

haskell

次の難関は・・・?

モナドがわかれば終わるほどHaskellの世界は甘くないわけです。次の難関はモナドの合成・・・Stateモナドの世界からIOモナドの世界行ったりするのは大変だよねって話です。うん、確かに大変。以下のURLを参考にお勉強でしょうかねえ。 モナドの合成は難しい …

Stateモナドを今度こそ理解する(3)

さらに前回の続きです。これで最後。Stateモナドにおける >>= の説明と、関数的なイメージを解説したつもりなのですが・・・。うーん、こりゃあ説明の仕方がとてもよくないですね(汗。解説に関して、もっとわかりやすいようにリベンジした方がいいかもしれま…

Stateモナドを今度こそ理解する(2)

前回の続きです。2回で終われませんでしたorz今回は、Stateモナドの値の説明と、returnの定義です。モナド=Stateモナドとか、モナド=IOモナドなどと思うのは危険です。「Stateモナドは、モナドインタフェースの実装例」くらいに解釈するのがいいと思います。

Stateモナドを今度こそ理解する

3年前に理解しようとして惨敗した*1HaskellのStateモナドの解説に、リベンジしようと思います。圏論をちょっとはかじったので、今度こそまともな解説ができるはず。と言うことで、今回は前編です。圏論の知識は前提とはしてないですが、集合と写像にアレルギ…

SICPの進捗

まだここです。英語読めねー( ̄。 ̄;) 。

Square Roots by Newton's Method

進展が遅くて、まだこのページ読んでます( ̄ェ ̄;) 。こんな実装で平方根が求められるのに感動。中毒的な面白さがありますねー。

"モンダ"

モナドと打とうとしてtypoですorz。数学的には、こちらが定義を解説してくれていてわかりやすかったです。もっとプログラミングよりの解説もあります。perl使いのためにDanさんも解説してくれているのですが、こちらは超越し過ぎていてオレの頭では理解でき…

単なるしおり(3)

明日はここから。 p = pとしてpを評価すると、無限ループに陥るのは、当たり前のことではあるけど、関数言語と手続き言語の違いをよく表している気がしました(・へ・;;)。

単なるしおり(2)

明日はここから。normal-orderとapplicative-orderが出てきた。*1 *1:すっかりHaskellじゃなくなってきた(笑)。

単なるしおり

今日の一時間が終了。明日はここから。

SICPが流行ってますねー

Haskell入門が終わったので、流行に便乗して読んでみようかなと思います。で、日本語訳の評判が余りに悪いので原文で・・・。英語の技術書を読む練習にもいいかなと。 【俺ルール】 1日1時間を毎日 ページ数は気にしない。なるべくわからないところを作ら…

MonadStateのgetって?

StateモナドはMonadStateになってまして、getとかputとか持ってるわけです。で、getすると状態が取れてput sすると状態がセットできる。 myCounter = do n <- get put $ n + 1 return $ n + 1 doCount3 = do myCounter myCounter myCounter countResult = ev…

Stateモナドの意味を想像する

Stateモナドのお勉強。なんとなくモナドの正体が見えたような。ただし、半分予測を含む理解なので正当性は保証しないです。後、実際の使用方法は全然気にしてなくて、意味だけ考えてます。*1Stateモナドを理解するために頭の中に用意するのはa、bの集合(型)…

モナドの壁

やっぱり壁でした( ´△`)アァ-。数学的に理解するには、こちらの説明が手がかりになりそうですが、なんとも、圏論なんて真面目にやってなかったし、そもそも代数なんて完全に忘れてます。嗚呼無力なオレ。数学的じゃない理解だと、Monad mってコンテナにデー…

hugs meets intelMac

finkでhugs入れました。使い勝手はghciと一緒って感じです*1。開発してる訳じゃなくて勉強中、 かつ、 intelMacな人は、ghcの次のバージョンが出るまではhugs使うと幸せになれます。 *1:Data.Charのimportは無理でしたが。ghc独自ライブラリかしらん?

たぶん誤り

入門Haskell?はじめて学ぶ関数型言語向井 淳 自分メモ。 P107 下部の図の二分木は2が頂点じゃないかと。 P108 BinTree型がいつのまにかTree型に。 P112 foldl insertTree emptyTree はfoldrだと思った これからやっとモナドに入れます。

型宣言、型クラス、データコンストラクタ、型コンストラクタ、インスタンス

むずい(笑)。とりあえず一通り読まないとわからなさそう。 import Data.Char data MyType = I Int | F Float | C Char myTypeToInt :: MyType -> Int myTypeToInt (I m) = m myTypeToInt (F m) = truncate m myTypeToInt (C m) = ord m mySum :: [MyType] ->…

リストが難しい

Haskellがとっても面白い。やってることはほとんどパズルですけど(笑)。リストの演算子がかなり混乱しました。(:) :: a -> [a] -> [a]。つまり、x:xsは、x aって型にしたければ、xs:xって記述となる。ややこしー。

Haskellの初コード

splitAtを書いてみろとのことなので、挑戦。勘でwhere節を書いたら一発で動いて一安心*1。 mySplitAt :: Int -> [a] -> ([a], [a]) mySplitAt 0 x = ([], x) mySplitAt _ [] = ([], []) mySplitAt n (x:xs) = (x:a, b) where (a,b) = mySplitAt (n-1) xsなん…

Haskellの日本語本

まともな日本語本が出てなかったHaskellに、ついに日本語本が出ました。 入門Haskell?はじめて学ぶ関数型言語向井 淳 そんなわけで英語本を買うのを踏みとどまって、YAPCで宣伝(?)してたHaskellの日本語本をゲット。これから遊び勉強を始めます。楽しく遊び…