2008-01-01から1年間の記事一覧

Proc#iterateてのを考えた.

Haskellのiterateにインスパイアされて. class Proc def iterate(init) if block_given? loop { yield(init) init = call(init) } else to_enum(:iterate, init) end end end p proc {|x| x + 1 }.iterate(0).take(10) # => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]…

変な棋譜みつけた

yowaさんの日記で変な棋譜を見つけた. 竜王戦スレ見てたら「今迄で一番噴いたプロの棋譜」として紹介されてた棋譜。 羽生善治 vs 島朗 (1987/08/17 新人王戦) - 将棋の棋譜でーたべーす 40手目に角交換した後、互いに相手陣に角を打ち合う。その直後、予想…

to_procで生成したProcにブロックが渡されない?

p :select.to_proc.call([1,2,3]) {|x| x.odd? } # => #<Enumerable::Enumerator:0x574cc> な,なんだってー! class Symbol def to_proc proc {|obj, *args, &block| obj.send(self, *args, &block) } end end p :select.to_proc.call([1,2,3]) {|x| x.odd? } # => [1, 3] ブロックがブロッ</enumerable::enumerator:0x574cc>…

readlineが動かない

readlineがなくて不便なので,http://practical-scheme.net/gauche/packages-j.htmlにあるreadlineを試してみた.が,使い方が解らない.サンプルらしきものを試したら動いたには動いたが,挙動が怪しい.普通にインタプリタから使う方法も解らなかったで,…

Cでリストライブラリ製作

car,cdr,append,reverse辺りまで作った所.でもinspectだけはRubyで書いた. irb:0> a = List.new(1,2,3) => (1 2 3) irb:0> b = List.new(a,a,a) => (#0=(1 2 3) #0# #0#) irb:0> b.cdr = b => #0=((1 2 3) . #0#) irb:0> List.new(a,b,b) => (#0=(1 2 3) #…

Cで拡張ライブラリ(2)

Rubyのバージョンを上げたからか,いつのまにかmakeが通るようになっていた.Macだと,拡張子が.soじゃなくて.oで出来上がるみたい.Rubyの拡張ライブラリの書き方は,Rubyのソースを展開したディレクトリにあるREADME.EXT.jaやhttp://i.loveruby.net/w/Ruby…

なんか変な言語見つけた

takuto_hの日記 これは凄い.高校生で,もうこんなことやってるなんて羨ましいなぁ. "しあん"じゃなくて"さいあん"なのね. ところで,どんな言語なんだろう? Cyanのもっとも大きな特徴は、LispのS式とマクロの分離を試みたことです。 http://d.hatena.ne.…

文字名

gosh> #\page #\x0c gosh> #\tab #\tab gosh> #\lf #\newline gosh> #\cr #\return gosh> #\nul #\null gosh> #\sp #\space gosh> 今日の発見: #\pageだけ文字名で表示されない. リファレンスには書いていないが,#\spと#\nulが使える. R5RSで定義されて…

irbの設定(2)

前の日記の訂正. :PROMPT_Nはインデントが深くなってる時に呼ばれるみたい.継続行については:PROMPT_Cであってる. require "irb/completion" IRB.conf[:PROMPT][:KAKI] = Hash.new {|ht, key| key.inspect }.merge({ :PROMPT_I => "%N:%i> ", :PROMPT_N =…

特異クラスのsuperclass

特異クラスのスーパークラスのスーパークラスは,特異クラスのスーパークラス自身? irb:0> class Object; def metaclass; class << self; self; end; end; end => nil irb:0> metaclass => #<Class:#<Object:0x38950>> irb:0> p self main => nil irb:0> metaclass.superclass => #<Class:#<Class:#<Object:0x38950>></class:#<class:#<object:0x38950></class:#<object:0x38950>…

irbの設定ファイル

irbの設定ファイルなるものが存在すると知ったので,早速カスタマイズしてみた. ~/.irbrcというファイルに書くといいらしい.で,作ろうと思ったら既にあったので中を見てみると, require "irb/completion" おお,もうなんか書いてある.どうやら,これで…

tree-map-fold

tree-map-foldとfoldで引数の順番が違ってちょっとはまった. foldは(fold proc seed lis ...)だけどtree-map-foldは(tree-map-fold tree-map proc seed). まぁ,tree-map-foldにtree-mapを沢山渡したりはあんまりしない気はするけど,これはどうなんだろう…

多値を返す手続きの命名規則の謎

car+cdrは+なのに,min&maxやquotient&remainderは&.何故か統一されてない. よく,car&cdrと書いてしまう.

tree-mapの謎

hash-table-mapとhash-table-for-eachはあるのに,tree-map-mapとtree-map-for-eachは何故無いんだろう.語呂が悪いから? hash-table(手続き)はあるのに,tree-mapはない. tree-map-minはペアを返すのに,tree-map-successorは多値を返す. gosh> (define …

FizzBuzz

なんでHaskellはS式で書かないんだろう.静的片付けなS式で書く言語は考えられないのかなぁ. show, read, lines, unlines, putStr, putStrLnを手に入れたので,FizzBuzzを書いてみた. main = putStr $ unlines $ take 100 $ map fizzbuzz [1..] where fizz…

クイックソートとマージソート書いてみた

Haskellの書き方がよくわからないので,入門サイトを見てクイックソートを書き写してみる. qsort [] = [] qsort (x:xs) = qsort [y | y <- xs, y < x] ++ [x] ++ qsort [y | y <- xs, y >= x] main = print (qsort [3, 1, 4, 1, 5, 9, 2, 6]) うーん. マー…

GHCインストール

GHCの公式サイトっぽいところからバイナリをダウンロード. 最新バージョンは6.8.3だったけど,PPC対応なのがMacOS 10.4以降+PPC G5のしかないみたいだったので,古いバージョンを探すことに. ざっと見た所,6.4.1が10.3+PPC G4で動きそうだったのでインス…

Gaucheのmakeに失敗

Gaucheのバージョンを上げようと思ったら, $ tar zxvf Gauche-0.8.14.tgz $ cd Gauche-0.8.14 $ ./configure --enable-threads=pthreads --enable-multibyte=utf-8 $ makeで make: *** [all] Error 2とか言われた. $ cd src $ ./gosh -ftest Illegal instr…

コマンドを調べる

http://www.bookshelf.jp/soft/meadow_11.html M-x help-for-help RET cで,キーに割り当てられているコマンドを知ることができる.

Ruby1.8.7挙動クイズ(2)

好評につき第2弾.以下のコードはそれぞれどのような挙動をするか? def foo yield end p method(:foo).call { 3 } def foo yield end p method(:foo).to_proc.call { 3 }

Symbol#pa

[123, 456, 789].map {|i| i.to_s } [123, 456, 789].map(&:to_s) Symbol#to_procを初めて見た時は喜んでた.確かにこれは素晴らしいけど,じゃあto_sに引数を渡したい時は…? [123, 456, 789].map {|i| i.to_s(16) } &:to_sで書いてて,後から↑みたいに直さ…

Ruby1.8.7挙動クイズ

以下のコードはそれぞれどのような挙動をするか? def foo yield end p foo {|&b| b } def bar &b b.call end p bar {|&b| b }

いろいろインストール

なんとなく,miにRubyモードを入れてみた.普段はCarbon Emacs使ってるんだけどね.golfの時には,Emacsだと最後に改行が自動挿入されるからmiも使ってたりする.Emacsの設定をすればいいのかもしれないけど. Rubyのバージョンを1.8.6のままにしておいたの…

vi-boolをki-boolに変換

Unlambdaの勉強にと,自力で考えてみた.もっといい方法あったら教えて下さい. 参考URL:http://hw001.gate01.com/eggplant/tcf/unlambda/boolean.html バッククォート記法とS式が混ざってるのは(俺が)見やすいように.あとでいろいろ書き直す.考えた時と…

Grassでv(2)

ょゎさんのアイデアを盗んで67B.なんでょゎさんより短いんだろう…? 自分で思い付いた別のアプローチで64B.あれ?もっと短くなると思ったのに. 上位陣は一体何なんだろう?この言語で,一体何ができるというんだろうか….

調合材料メモ

亀の甲羅はグラストートスから盗むレア 竜の牙はミニドラゴンから盗むレア ダークマターはプロトタイプが落とす100% プロトタイプ狩りが始まるかどうかよく考えないと

Grassでv

ついに通った.175B.

弾いてみた動画

にゅすけさんの日記でみつけたがこれは凄い. ピアノ『狂気の飛翔幻想響〜88鍵盤酷使録』 東方永夜抄全21曲+α

難解言語を学ぶにはまず処理系から

ということで,GrassインタプリタをSchemeで書いてみた.拾いもののHello, worldが動いたから大体できてると思う.ただtrueとfalseが実装できてるかどうかはよく解らない. 最後にスタックトップをそれ自身を引数として呼ぶという仕様のせいで,コピペ生成し…

全員死亡エンディング

FF5

かなり仕上がってますよ.特に最後.クイック中に自爆で全滅しながら倒すと見られるので是非どうぞ. 参考URL: http://www.astr.tohoku.ac.jp/~ajiki/cheap_restaurant/GAME/