2002-05-07
λ. カリー化(?)
class Proc
def currying(arity=nil)
if self.arity == 0 || self.arity == 1
return self
elsif self.arity > 0
arity = self.arity
else
arity ||= (-self.arity)-1
end
proc = lambda{|base|
lambda{|*a|
args = base + a
if args.size >= arity
call(*args)
else
proc.call(args)
end
}
}
proc.call([])
end
end
if __FILE__ == $0
add = lambda{|a,b| a+b}.currying
succ = add[1]
p succ[100] #=> 101
p succ[3] #=> 4
end
【2008-02-10追記】 [ruby-dev:33676] Suggestion: Proc#curry で遠藤さんが Proc#curry として同様(?)のものを提案している。 そこで言及されている Ruby, Proc#curry - 冬通りに消え行く制服ガールは、夢物語にリアルを求めない。 - subtech のコードは随分と妙なコードではあるけれど。
λ. 続 Y Combinator
http://www.itlabs.umn.edu/HyperNews/get/gopalan/courses/CSCI8980-fall-2001/classwork/2.htmlを見ると、MLやHaskellでもY Combinatorを一応使えるのか。でもtrickyだ。
【追記】 トリッキーと書いたが、むしろ本質の表れた定義だろう。
2003-05-07
λ. shift/reset その2
call/ccによるshift/resetの表現の続き。 shift/resetまだ良く分からないや。とりあえず、お約束のGeneratorを書いてみる。とりあえず動いてるみたいだけど、これって正しい?
class Generator
def initialize(enum, eof = nil)
@eof = eof
reset{
shift{|k| @cont = k }
enum.each{|item|
shift{|k| @cont = k; item }
}
@cont = nil
@eof
}
end
def read
@cont ? @cont.call : @eof
end
end
2005-05-07
λ. ファンタジージョブ占い
石沢セソセイの白黒ウェブより。オアイーブってなんだか懐かしい名前だな。結果は「あなたはシーフです」だった。
あなたは盗みで培った素早さをいかし、戦いに役立つシーフ。良識派に目覚めた盗賊で、仲間を助けるためにその力を振るいます。そしてあなたの力は戦いだけではなく、仲間の心を潤す重要な役割を果たすでしょう。しかし非常に気まぐれな性格で、仲間を振り回すこともります。
わはは。
λ. ギャング・オブ・ニューヨーク
野蛮で奔放で残虐で、もー、わくわくするね。
2007-05-07
λ. 大分一日目
羽田に「日韓交流の新時代へ」という看板があった。これは去年の講演「韓国から見た日韓・日朝関係」で言及されていた羽田・金浦のシャトル便の話か。
あと、羽田では「もし某カードがもう出来てればなぁ」と思った。
大分の寮は思っていたよりも良い感じ。 ただ、部屋が5階なので昇り降りが大変。
λ. Kindergarten Quantum Mechanics, by Bob Coecke
幼稚園児のための量子力学とその周辺 より。 こないだの圏論勉強会で面白そうだと思ったので、飛行機の中で読んだ。
bra と ket 、どっちがどっちだか分からなくなるのは私だけ?
![[寮の写真]](./images/s20070507_1.jpg)
![[図書カード]](./images/s20080507_0.jpg)

ψ 原 [Proc 生成してすぐさま call するなんて、脳が scheme に冒されて いるとしか思えません。:-) 大..]
ψ さかい [なるほど。そう書けばよかったのか。 schemeでコードを書いたことはほとんどないのだけど、 知らないうちに脳を冒..]