curry

http://d.hatena.ne.jp/nuc/20050905
初めてトラックバックをもらう。ちょっと感動。
読む人がいるとは思ってなかったのでびっくり。

で、numさんの記事を読んでみた。・・・よくわからん。
haskellをなんと読めばいいかもしらない僕にはよくわからないよ。
と、嘆いていてもしょうがない。
ともかく読んでみる。
・・・curry化。haskellのサイトをいくつか回ったときによく見かけた単語だけど、意味をしらない。
それじゃわかるわけない。
調べる。

現状の理解
「やさしいHaskell入門」を読む・・・。
Haskellの関数はいつも引数1コ(カリー化されてる)
Int->Int->Int は Int->(Int->Int) と一緒。
これってf(x、y)でいうと
xを与えたらyをとってIntを返す関数が戻りますよ、ってことか?
ふむー。

すぐにわすれる

たまにちょこちょこ書くだけではすぐに忘れてしまう。
ので復習

    • 分岐
    • パターンマッチ

func6 :: Int -> Int -> Int
func6 0 b = 100
func6 a b = a * b

    • ガード

func7 a b
|a == 0 && b == 0 = "0 and 0"
|a == 1 = "a = 1"
|otherwise = "else"

    • if

func8 a b =
if a == 0 && b == 0
then "0 and 0"
else "else"

    • case

func9 a = case a of
0 -> "0"
1 -> "1"
_ -> "else"

EclpseのHaskellプラグインを入れてみたけが、ghcとの連携方法とか(あるのか?)全然設定がわからない。
強調表示をしてくれるのは分かったんだけど・・・。
強調表示のためだけにEclipse入れるのもどうかと思ったので、emacshaskell-modeを入れる事にした。
http://www.haskell.org/haskell-mode/
からhaskell-modeをとってきて展開してlispフォルダにつっこんで
.eacsに下記を追加。
;;Haskell
(setq load-path (cons "~/lib/emacs" load-path))
(setq auto-mode-alist
(append auto-mode-alist
'(("\\.[hg]s$" . haskell-mode)
("\\.hi$" . haskell-mode)
("\\.l[hg]s$" . literate-haskell-mode))))
(autoload 'haskell-mode "haskell-mode"
"Major mode for editing Haskell scripts." t)
(autoload 'literate-haskell-mode "haskell-mode"
"Major mode for editing literate Haskell scripts." t)
(add-hook 'haskell-mode-hook 'turn-on-haskell-font-lock)
(add-hook 'haskell-mode-hook 'turn-on-haskell-decl-scan)
(add-hook 'haskell-mode-hook 'turn-on-haskell-doc-mode)
(add-hook 'haskell-mode-hook 'turn-on-haskell-indent)
(add-hook 'haskell-mode-hook 'turn-on-haskell-simple-indent)
(add-hook 'haskell-mode-hook 'turn-on-haskell-ghci)
それからM-x haskell-mode。
meadow使うのも久しぶりでさっぱり使い方を覚えていない。
正直秀丸で書いてるほうが早い・・・。でもがんばる。