Haskellモードにフック追加

->と<-を割り当てといた。

(add-hook 'haskell-mode-hook '(lambda ()
(local-set-key "\C-j" (lambda () (interactive)(insert "->")))
(local-set-key "\M-j" (lambda ()(interactive)(insert "<-")))
))

大山のらうどん

中里の大山にらうどんを食べにいった。

らうどんとは幅広の太麺で、つけ麺好きにはたまらん感じ

1258801565

麺にはキャベツとモヤシがのっててジャンクな感じだけど、麺が饂飩みたいなのでジャンクさはあまり感じさせない。

1258801572 1258801584

U隊長の頼んだ、エビスター。ターメリックかなんかのスパイスが効いていて香りが良い。あと、エビ塩と比べて食べ飽きしにくいかも。

1258801578

今回満足。

獅子の里

ほとんど燗つけて飲んだ。

1258718247

ちょっと後に残る感じはあるけど、ちびちびと吞むのにちょうどいい辛さ。

真・女神転生 STRANGE JOURNEY

今週から、南極探検始めました。

ProductName 真・女神転生 STRANGE JOURNEY(ストレンジ・ジャーニー)

アトラス / ¥ 6,279 (2009-10-08)
在庫あり。

ちょっと油断するとすぐ全滅するので、緊張感が持続する感じの楽しさ。これはおもしろいっすね。

「プログラミングHaskell」読んだ

これはかなりナイスな本です。あんま細かいところに陥らずに関数型プログラミングの思考みたいなものが学べるようになってる。

ProductName プログラミングHaskell
Graham Hutton
オーム社 / ¥ 2,940 ()
通常3~6週間以内に発送

モナドに関しても、「モナドとは?」から入るわけではなくて、8章のパーサー、9章の対話型プログラム、そして10章の型に至る過程で自然に出てくる。

個人的には4,5章の関数とリスト内包のとこと8-11章が面白かった。逆に最終章の13章はちょっとよくわからなかった。

  • 相互再帰(Ocamlでやった)
  • dataによる型宣言では構成子が引数をとることができる
  • 構成子関数は評価済みであり、それ以上簡約できない
  • モナドという概念は一般化された型
  • 最内簡約と最外簡約はそれぞれ値渡しと名前渡し
  • 遅延評価とはポインタによる共有を用いた名前渡し

特に最後の二つは、新鮮だった。

あとは暇をみつけて問題解いてく

Haskellの関数合成

ご近所haskellerのringtaroさんがつぶやいてたので。

Prelude> :t (.)
(.) :: (b -> c) -> (a -> b) -> a -> c
Prelude> :t ($)
($) :: (a -> b) -> a -> b

(.)はb->cとa->bっていう関数を受け取ってa->cという関数を返す。だから関数合成

Prelude> :t head
head :: [a] -> a
Prelude> :t (drop 1)
(drop 1) :: [a] -> [a]
Prelude> :t head . (drop 1)
head . (drop 1) :: [a] -> a

($)は dropを評価した結果のリストをheadにわたすだけ。なので、下の書き方はだめ。

Prelude> :t ($) head (drop 1)

<interactive>:1:10:
    Couldn't match expected type `[a]'
           against inferred type `[a1] -> [a1]'
    In the second argument of `($)', namely `(drop 1)'
    In the expression: ($) head (drop 1)

括弧省略の記法なのに括弧入れまくり

Prelude> :t ($) head ((drop 1) [1,2,3])
($) head ((drop 1) [1,2,3]) :: (Num a) => a

ProductName プログラミングHaskell
Graham Hutton
オーム社 / ¥ 2,940 ()
通常3~6週間以内に発送

Canon EFレンズ 50mm F1.8 II

買った。

このまえ収穫したほうれん草のサラダを撮ったら美味しそうにみえる。

1258457986 1258457993

娘が撮れとうるさいので。

1258457999

これは楽しいですね。

ProductName Canon EFレンズ 50mm F1.8 II

キヤノン / ¥ 12,600 ()
在庫あり。

リスト内包表記で素数チェック

プログラミングHaskell読みはじめた。この本はHaskellプログラミングの入門書というよりは、Haskellプログラミングとはどういう考え方で書いていくかの入門書的な感じがする。いきなりこれ読んでもhaskellでコード書けないんじゃないだろうか。

4章のリスト内包表記の章で、ある数の因数を求める関数を定義して、それを用いて素数判定をしていたのでpythonでもやってみた。

def factors(n):
  return [x for x in range(1,n+1) if n % x == 0]

def is_prime(n):
  return True if len(factors(n)) == 2 else False

あとHaskellだと

[x|x <- xs | xs <- a]

でconcatenateできて便利なんでこれもpythonで、とか思ったんだけど

リストの要素が常にひとつのときのみ

a = [[1], [2], [3]]
[x for [x] in a] # [1, 2, 3]

ってやればできるんだけど、二つ以上の要素になった場合が分からんかった。

ProductName プログラミングHaskell
Graham Hutton
オーム社 / 2940円 ( 2009-11-11 )


この本ほとんど疑似コード(?)なので考えるにはよいですな。お薦め。

今日の畑(小松菜とほうれん草収穫)

小松菜とほうれん草多すぎ。消費できるんだろうか?

1258266600 1258266609

娘が抜きたい抜きたいと言い続け、結局抜いてしまったベビーキャロット。

1258266616

ベビーにすらなっていない。あともう少しで収穫できるかな。

ベビークレヨン

1歳のアキオのプレゼントとしてもらった

ProductName ベビーコロール12color

エー・ジー / ¥ 1,344 ()
在庫あり。

が、娘のハートを掴んだ(予想通り)