2006-04-01から1ヶ月間の記事一覧

hugsで length "日本語" => 3 にする

http://cvs.haskell.org/Hugs/pages/downloading.htm から最新のhugsをダウンロードする これで文字をUTF8として扱う。 export LANG=ja_JP.utf8 の環境下では length "日本語" => 3 となる Prelude> "日本語" "\26085\26412\35486"なのが気持ち悪いので http…

ギーク

http://blog.livedoor.jp/dankogai/archives/50432430.html も言ってることわかるhttp://zerobase.jp/blog/entry-302.html も言ってることはわかるでもね、道具の作り方がわかっていないと新しい道具が作れないなら、鉄の作り方がわからないとスチールラック…

hugsのロケール

現時点ではだめだな。 Prelude> length "日本語" 6どうすりゃいいんだろ? これうまくいくと、Text.regExpが使えるみたいなんだけど。 http://www.ruby-talk.org/cgi-bin/scat.rb/haskell/haskell-jp/279

クイックソート

なんだかなー、アルゴリズムを書き下せば終わりなんだ。 へんてこな記号が続くというか中置演算子はわかりやすいというより、プログラムが書きやすいんだ。(謎 qsort [] = [] qsort (x:xs) = qsort[y|y<-xs,y<x]++[x]++qsort[y|y<-xs,y>=x]</x]++[x]++qsort[y|y<-xs,y>

標準プレリュード

標準プレリュードには鬼のように便利な関数が多数定義されている 例えば ふたつのリストをタプルに変換する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 &#39;haskell-mode-hook &#39;turn-on-haskell-simple-indent) (add-hook &#39;haskell-mode-hook &#39;turn-on-haskell-hugs) ;(add-hook &#39;haskell-mode-hook &#39;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]

一次リスト

以下をfoo.lhsとし hugs foo.lhsで実行可能。 haskellではリストは a:b:c:[] で表され、その省略形は[a,b,c]となる。 リストの全ての要素を足しあわせる関数sumlistを定義する >sumlist [] = 0 >sumlist (x:xs) = (+) x (sumlist xs) 次にリストの全ての要素…

高階関数

高階関数は型を前提としている。 型とは整数型とか文字型とかではなく、構造のほうか。 構造とはリスト・木・スタック・キュー等の事か。 文字列型、配列はリスト構造である。 そうか、従来の型はatomに該当し、構造によって高階関数が存在する。 つまり、リ…

極地

極地つまり厳しいところ征服する本能があるんだろう。 踏破すると、次の極地を探してしまう。 安寧の地、それがすなわち地獄。

盆とクリスマス

気がついた。仏教の盆とクリスマスは同じ気がする。 死んだ人を敬っている点では同一。 ちゅーことは、盆踊りで盛り上がるのと,クリスマスで盛り上がるのは同じ? でも、イブで格好付けている人は盆踊りでナンパしてるのと同じだと思うと笑える。

間違ってるかもしれないけど

ラムダ抽象 f(x)=x+1 -> (λx.(x+1)) カリー化 f(x,y,z)=x+y+z -> (λx.(λy.(λz.(x+y+z))) 多変数の関数を1変数の高階関数として表すこと α変換 (λx.(x+1)) -> (λy.(y+1)) 束縛変数の交換 β基 (λx.M) NのうちNのこと? β変換 (λx.(x+1))(λx.(x*2)) -> (λx.(x*…

list処理

-- [x,y] は x:y:[] の簡略表記 lispでいうと (x y) と (x . (y . ()))の関係 cons x y = x:yreduceをconsを利用しようとするとエラーが出る。 reduce f x [] = x reduce f x (cons a l) = f a (reduce f x l)うーん、(cons a l) を (a:l) とすると同じなん…

reduceを作ってみる

hugsをapt-getしてみた。 car (a:d) = a cdr (a:d) = d cadr (a:d) = car d add x y = x + y reduce f x [] = x reduce f x (a:d) = f a (reduce f x d) sum = reduce add 0 multiply = reduce (\ x y -> x * y) 1 a = map (+1) b = map (+2) c = (a . b)

HTML全部をpostする

javascript:(function(){d=document.getElementsByTagName(&#39;html&#39;)[0].innerHTML; t=&#39;<form name=f accept-charset=EUC-JP method=post action=&#39;ターゲットのURL&#39;><textarea name=n>&#39;+d+&#39;</textarea><input type=submit></form>&#39;; document.write(t); document.f.submit()})();または javascript:{ …

富士山

本日も晴天だったためか富士山が見えた。 しかし、デジカメの画像も甘いな、もっときれいに写っていたはずなんだけど・・・

debian再インストール

先日クライアントを再インストールしたので勢い余ってサーバを再インストールした。 tar,samba,defoma,eximで問題勃発 tar リンク先の無くなったシンボリックリンクを含んだ状態で.tarを作ると展開時に異常終了することがある。そのときにはiオプションを付…