bonotakeの日記

ソフトウェア工学系研究者 → AIエンジニア → スクラムマスター・アジャイルコーチ

Haskell

Readerモナドはちゃんとしたモナドでした

昨日のコパスタの会でコモナドの説明があり、Readerコモナド(大域変数を参照するコモナド)が登場。そこで、「HaskellではStateモナドやReaderモナドがコモナドでなく、モナドで実装されてるのは何故?」という話に。そのときは、「MonadStateクラスの get …

コモニャドセミナーに行ってきた

参照: http://d.hatena.ne.jp/m-hiyama/20090801/1249088692 http://d.hatena.ne.jp/bonotake/20090730/1248961849 以下メモ。 スタンピング・モナド Haskellで一番スタンピング・モナドっぽいのは、Writerモナドかなーと思いました*1。というのは、 計算の…

しりとりモナド

しりとりの圏がいろいろ盛り上がっている(?)さなか、特に先日入れたツッコミ以降、ひらがなの集合の圏としりとりの圏の対応を考えててふと「これモナドになるんじゃね?」と思い立ちました。 以下参考: しりとりの圏における全単射と同型(=同等) - た…

『本物のプログラマはHaskellを使う』読者の集い アンケート募集中

掲題の会(別名:白石さんを質問攻めにしようの会)の内容について、アンケート始めました。特に参加希望の方はご協力よろしくお願いします。→アンケートページ もちろん、参加希望でない方も応募可能です。また、懇親会も参加募集始めました。懇親会だけの…

「『本物のプログラマはHaskellを使う』読者の集い」企画中

圏論勉強会後のヨタ話の続きを型レ〜の休憩時間&懇親会で話してて、とりあえずイベントを立ち上げてみることに。今のところ、ITProの連載記事『本物のプログラマはHaskellを使う』をネタに、筆者のshelarcyさん(a.k.a. 白石さん)を囲んでなんかやろうとい…

monomorphism restriction

昨日の日記の続きで、各関数の型を追記しようと思ってたんですが… *Main> :t g g :: (Num b) => (b, b, b) -> b *Main> :t g1_1 g1_1 :: (Num b) => (b, b) -> b -> b *Main> :t g1_2 g1_2 :: (Integer, Integer) -> Integer -> Integer *Main> :t g2 g2 :: …

Haskellでのカリー化

参照: http://d.hatena.ne.jp/rst76/20090221/1235178786 http://d.hatena.ne.jp/m-hiyama/20090226/1235606901 訂正を入れてみる。 g (a, b, x) = a * x + b g1_1 (a, b) = \x -> g (a, b, x) g1_2 = curry3 g g2 = curry $ curry3 g ただし↓ curry3 :: ((…

Seven trees 解答編:圧縮方法

さて、圧縮方法について触れる前に、id:ku-ma-meさんのところにある、T→T7までの18ステップをこちらにも載せておきます。ついでに表にしてみました。

Seven trees 解答編:コード

もういいんじゃないでしょうかね。 ということで、解答です。 私のは、基本的にはku-ma-meさんのと同じですが、18ステップを一発変換に圧縮してます。で、以下の通り。結果的に9分岐になってます。 圧縮の仕方はまた後ほど。こちら。

Seven trees 拡張問題 解答編

長くなったので、新たにエントリー起こしました。 空の木、片枝を許した場合で を示す問題の解答編です。とはいえ、オリジナルの解答をまだ公開してないので、中途半端な解説になってますが。 元のエントリーはこちら。

Seven trees+拡張問題

seven trees の問題、私も解いてみました。以下参考: Seven Trees:これは難しいパズルだ、取り急ぎ紹介 - 檜山正幸のキマイラ飼育記 Seven Trees - まめめも Seven trees - λx.x K S K @ はてな Seven Trees:ちゃんと問題を述べると - 檜山正幸のキマイ…

地下鉄の求人広告2

もう一個あったのですが、こっちはあまり興味そそられず。個人的に。 データベースにはIMDbとか使えばいいのかな?(たまにここをエンジンに使ってるサイト見かけますが、APIとかよく知らず)

地下鉄の求人広告

天竺を走ってる地下鉄に、こんなのが。ちょっとピンボケなのはご勘弁を。 超バカに考えて (in Haskell) import List numConcat n = foldr1 (++) $ map show [1..n] main = print $ head $ genericDrop (5100000000 - 1) $ numConcat 999999999 こんなのにな…

fancyvrb.styで\begin{code} \end{code}を解釈

ブックマーク。 http://oss.timedia.co.jp/show/ossz/oneline/2005-03-09 最近になって.lhsを使い始めた。

天竺に来て1週間

くらい経とうとしてます。(まだこっちは金曜日ですが) こっちでやる研究の概要もなんとなく固まって、とりあえず一安心。 ときに、同じ部屋の、博士課程の学生さんがすんげーでかくて手足が長く、ぶっきらぼうな感じなので、最初ちょっとビビっていたので…

関数型言語で x × x = x ² を示す

朝風呂に入っていたら頭に浮かんだ、ものすごく素朴な疑問。 整数なり実数では普通に だけど、カルテシアン閉圏 (CCC) 一般に、任意の対象 で なのだろうか?普通にそうなりそうだし、集合の圏ならすぐ証明できそうだけど。 つか、普通の(型付)関数型言語…

テンプレートモナド 追補

こないだ載せたテンプレートモナドの記事ですが、 型がイイカゲンな言語のほうが楽ちんに実装できますけど、本来のモナド概念は強い(ものすごく強い)型を背景とした定式化になっています。 こういうところ、あんまり厳密に書いてませんでした。 ※ 個人的に…

テンプレートモナドを書いてみた

前回のエントリーで Haskellで実際にモナド書きかけたけれど、仕事ほっぽり出して遊んでしまいそうだったので、自重。 こんな事を言ってましたが、週末でちょっと手が空いたのでやってみました。元ネタはココとかココとか。 「Haskellの」モナド機構を使わな…

ポイントフリースタイル

ヒビルテのお話…と直接関係あるかどうか知らないけど、昔Haskellのコードを書き始めた頃、2chでこんなコードを見つけました。 f = flip ((length .) . filter . (. length . filter id) . (==)) . (foldl ((=<<) . (. (return .) . (:)) . (>>=) ) [[]]) . (…

RHG読書会

に初参加しました。ふつける読書会。

ghci-mode リリースしますた

先月の日記で書いたこれですが、パッケージ化して公開しました。(こちらの下の方)なんか新PCに環境移したりしながらだったので、ドタバタでどっか間違えてないか不安ですが、とりあえず。 ちなみに、自分は.xyzzyにこんな風に↓書いてます。 ;;; hs-mode + …

ghci-mode for xyzzy

夜寝付けないので、ボーっとPCいじっているうちそんなものを作ってしまいました。 私は紫藤さんとこのhs-modeを適当にいじって使っているのですが、やっぱり処理系のインタフェースがあった方がいいなぁと以前から思っておりまして。ということで、インタフ…

Layered Monads

id:sumiiくんがトラバくれたんだけど、そこから張ってあったリンク。→http://www.diku.dk/~andrzej/papers/RLM-abstract.html…自分、いまpsが見られない環境なので(ぉ、とりあえずメモ。

リストモナドの非決定性 続き

ああ、つまり昨日のコードを抽象化・簡略化して、 nonDet :: (a -> b) -> [a] -> [b] nonDet f xs = do x <- xs return (f x)を考えると、f :: a -> b がモナドに乗っかった世界でいろんな値を返し得ると言うこと?でも入力のxがそもそもいろんな値取ってく…

リストモナドの非決定性

ってこういうやつの事? nonDet :: [Int] -> [Int] -> [Int] nonDet [] _ = [] nonDet _ [] = [] nonDet xs ys = [(x + y)| x <- xs, y <- ys]モナド風味で書くと nonDet2 :: [Int] -> [Int] -> [Int] nonDet2 [] _ = [] nonDet2 _ [] = [] nonDet2 xs ys = …

SICPをHaskellで

http://oss.timedia.co.jp/index.fcgi/kahua-web/show/Haskell/SICPいつか誰かやるんじゃないかと思っていたら。面白そう。

Hoogle

http://haskell.org/hoogle/ (・∀・)イイ! Haskellに限らず、APIリファレンスがないとコード書けない人なので(関数の名前をすぐ忘れてしまう)、こういうのはとても嬉しい。

Yコンビネータ その2

前回の日記の続き。GHCで、自分の手元でちゃんと通ったYコンビネータ↓ y f = f (y f)…1行で書けますたorz ちなみに型は *Main> :t y y :: (t -> t) -> t参考はこのへんとかこのへん。大いにがいしゅつですた orz orz (てか、出てない方がおかしい話題か…)…

Yコンビネータ

sumiiくんの日記見ながらHaskellでYコンビネータ書いてみたんですが(事実上ほぼ丸写し)。動かそうと思ったら、Hugsでは動くんですけど、GHC(+GHCi)だとコンパイラが止まりません。*1 これは何事??俺何か悪いことしてるの?教えてエロい人。…寝てからも…

arrowの訳

前回のエントリーの続きなんですけど、Haskellにあるarrowって、日本語に訳した人とかいないんだろうか? 日本語でなんと呼べばいいんでしょう。「アロー」?「矢」?

注:bonotakeは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。