Haskell

ふつける 5章 - 遅延評価

遅延評価の解説。スゲーわかりやすいっす。もしもSchemeを遅延評価にすると、 (define (squere x) (* x x)) (square (+ 1 1)) ; squereを簡約 (* (+ 1 1) (+ 1 1)) ; 前の+を簡約 (* 2 (+ 1 1)) ; 後ろの+を簡約 (* 2 2) ; かける 4 +を2度やることになるの…

ふつける 4章 - ユニークにならない

久しぶりにふつける読み。はまりまくりっすよ。はまりまくり。 uniqを作れ (ヒント: group使えばいいよ!!) って書いてあるんだけど、全然ユニークにならない。groupは隣接してれば、グループにまとめるみたい。 Prelude> import List Prelude List> group …

ghc -e

そうそう、これを探してた。hoge.hsがあって、 hello = "Hello, eval" えばる。 % ghc -e hello hoge.hs "Hello, eval"おし。 Vimに繋いで・・・。 nmap <C-CR> :w<CR>:!ghc -e <cword> %<CR> とりあえず単語だけでいいや。 ctrl + えんたー。 ふふぅん。快適。</cr></cword></cr></c-cr>

部分適用

引数が足りてないオブジェクトを作ることが出来る。キモい。 inc :: Int -> Int inc = (1 +) (1 + ) 何かえぇぇぇ。分解すると、 add :: Int -> Int -> Int -> Int add x y z = x + y + z ans = ((((add) 1) 2) 3) addオブジェクトを作って、(1 +) オブジェ…

Vimからhrefを見る

さっくりと設定っと。 command! -nargs=1 Href !href <args> | nkf -w nmap <buffer> K :Href <cword><CR> とりあえずオッケー。</cr></cword></buffer></args>

ふつける(3) - 3章(2) map

3章後半はmapっす。 car,cdrを作ってみる car,cdrが無いと思ったら、ナンダコレ!! car :: [a] -> a car (x:xs) = x cdr :: [a] -> [a] cdr (x:xs) = xs 引数が分解出来ちゃうらしい。不思議な世界だ。 map それがわかれば、mapは簡単で、 my_map :: (a -> b)…

ふつける(2) - 3章(1) 型の練習

全然ふつける読んでなかった!!文法すら忘れてた状態だったので、1章から読み直してた。やっと3章デス。型ってムズカシイ!! 型の練習 3章のtranslateを改造して型の練習です。+は1足す。-は1引く。という言語。 input :: String input = "+++++++++----++--++…

文字列演算スゲー

感動した。 Prelude> "abc " ++ "def " "abc def "ふむふむ。文字列演算は++か。 $で繋げるかなぁと思って、 Prelude> (++ "abc ") $ "def " "def abc "はぁ?逆になったぞ。んじゃぁ、こうか。 Prelude> ("abc " ++) $ "def " "abc def "出来た。ナンダコノ…

ふつける(1) 2.3 - 2.8 リスト

って、いきなりリストっすか!?早いっすよ・・・。 リストについて リストはSchemeと同じように、最後に「空リスト」が入ってる。「空リスト」は「くうリスト」と読むらしい。僕は「からリスト」って読んでた。 Haskellのリストは型が揃ってないとダメ。自由…

Haskell mode for Vim

omni補完、ヘルプ、デバッグなどお便利機能満載。Haskell mode for Vimいい感じかも。 激しく使えそうなコマンドが、 :GHCi mainghciで関数mainを作用させられる。 ちょっと面倒なので、~/.vim/after/ftplugin/haskell.vimにをmapしてっと。 function! s:Get…

ふつける(0) 1.1 - 2.2 Hello, Haskell World!!

通称「ふつける」と呼ばれる、ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門作者: 青木峰郎,山下伸夫出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/06/01メディア: 単行本購入: 25人 クリック: 314回この商品を含む…