2007-11-22から1日間の記事一覧

Gaucheでuniq(そろそろやめよう)

なんてことだ。gauche.sequence の group-sequenceがhaskellのgroupと同じだとは >>(use gauche.sequence) =>#<undef> >>(group-sequence '(1 1 2 3 3 2 2 4)) =>((1 1) (2) (3 3) (2 2) (4)) >>(map car (group-sequence '(1 1 2 3 3 2 2 4))) =>(1 2 3 2 4)あと、</undef>…

ghci中でモジュールをインポートする

いつも忘れてしまうのでメモする importをghci中で用いるには :mをつかう。 Prelude> :m List Prelude List> あと hugsでは whereだが、 ghciではlet

rubyでクイックソートを書いてみる。

そういえば今までrubyでは .sortをつかって知らない振りをしていたんだがrubyで書くとどうなるかやってみる。 >> def qsort(x) x.size<2?x:(y=x.shift;z=x.partition{|i|i<y};[qsort(z[0]),y,qsort(z[1])]) end => nil >> qsort([3,4,5,1,1,2]) => [[[], 1, [[], 1, [2]]], 3, [[], 4, [5]]] >> def </y};[qsort(z[0]),y,qsort(z[1])])>…

Gaucheでcutをやってみる

なるほど、カリー化とまでは行かないけど簡単に関数が作れるんだな。すごい。srfi-26 >>((lambda (x) (+ 1 2 x 4 5)) 6) =>18 >>((cut + 1 2 <> 4 5) 6) =>18 >>((cut + 1 2 <> 4 <>) 6 7) =>20 >>((cut <> 1 2 3 4 5) *) =>120よし、これでshiroさんのプロ…

準クオート

しょうがないやるか。 >>(let ((x '(1 2 3 4))) `(a x c d)) =>(a x c d) >>(let ((x '(1 2 3 4))) `(a ,x c d)) =>(a (1 2 3 4) c d) >>(let ((x '(1 2 3 4))) `(a ,@x c d)) =>(a 1 2 3 4 c d) >>(let ((x 2)) `(a ,x c d)) =>(a 2 c d) >>(let ((x 2)) `(…

Gaucheのpartitionでqsort

多値を使ったpartitionでqsortをしてみる >>(define qsort (lambda (x) (if (null? x) () (receive (l r) (partition (lambda (y) (< y (car x))) (cdr x)) (append (qsort l) (list (car x)) (qsort r)))))) =>qsort >>(qsort '(5 3 4 2 3)) =>(2 3 3 4 5)r…

Gaucheで多値を扱う。

filterとremoveを同時にやるpartitionを教えてもらったので使ってみようと思ったらなんと多値じゃないか。 なになに?参照渡しがどうのこうの・・・って schemeは参照渡しだよな。 >>(let ((a '(1 2 3))) (print a)((lambda (x) (filter! odd? x)) a) a) (1 …

Gaucheのutil.matchを勉強してみる

とりあえずはこんなかんじらしい >> (match '(1 2 3) ((a b c) (list a b c))) => (1 2 3) >> (match '(1 (2 3)) ((a (b c)) (list a b c))) => (1 2 3)つぎに、リスト処理させてみる >>(match '(1 2 3 4) ((x . xs) (print x))) 1 =>#<undef> >>(match '(1 2 3 4) </undef>…

GHCでUNIQ

一つ違いzipによるuniq まあ、昨日のscheme版の焼き直し。haskellの方が読みやすいが数字しかuniq出来ない あと、メタな記号が入れられないので(今回は1000でごまかした)いまいち。 Prelude> (\x->reverse $ drop 1 $ reverse $fst $ unzip $ filter (\x->…

cygwinとghciの悲しい関係

なんてことだ。mingwでコンパイルされたghci.exeはコマンドプロンプトではreadlineが動くが、cygwin上では動かない。 しょうがないのでrlwrapをかませてみる。.bashrcに以下を記述して解決 PATH=~/bin/ghc/bin:$PATH #ghcのバイナリへのパスを加える alias g…