2006-04-15から1日間の記事一覧

標準プレリュード

標準プレリュードには鬼のように便利な関数が多数定義されている 例えば ふたつのリストをタプルに変換するzip、括弧の代わりにつかう$、lispのcdrにあたるtail、同じくlispのcarにあたるheadで以下のようなことができる Main> head $ tail $ zip [1,2,3,4] …

orの使いかた

or [True,False,True]エラーメッセージをちゃんと見ような。>俺

数の定義

以下を num.lhs としてhugsで実行 xを0を設定する操作、fを1を数える操作だとすると、1から5は以下のようにに定義される >zero f x = x >one f x = f x >two f x = f(f x) >three f x = f(f(f x)) >four f x = f(f(f(f x))) >five f x = f(f(f(f(f x)))) こ…

emacsの設定

apt-get install haskell-mode.emacsに以下を記述 ;(add-hook 'haskell-mode-hook 'turn-on-haskell-simple-indent) (add-hook 'haskell-mode-hook 'turn-on-haskell-hugs) ;(add-hook 'haskell-mode-hook 'turn-on-haskell-ghci)あ…

無限のデータ構造

まだよくわかってないのだが無限のデータ構造を表すことができる。 Main> take 10 f where f = 1:f [1,1,1,1,1,1,1,1,1,1] Main> take 10 f where f = 1:[x+1|x<-f] [1,2,3,4,5,6,7,8,9,10] Main> take 10 f where f = 2:[x*2|x<-f] [2,4,8,16,32,64,128,256…

リストの内包表記

恐ろしい、rubyのselectは[y|y Main> [x|x<-[2,3,4,1,5],x>3] [4,5] Main> f [2,5,3,2,1,3] 3 where f a b = [y|y<-a,y>=b] [5,3,3]