トップ «前の日(12-10) 最新 次の日(12-12)» 追記

日々の流転


2001-12-11

λ. 今朝は3時間の睡眠を2回とった。分割睡眠も悪くないな。

λ. 朝、生け花を見て、何故かSMを連想。いやらしい。

λ. あなたがネコになっちゃったら?

あなたは、遊びネコタイプです。

贅沢なものを好み、宵越しの金は持たないようなあなたは、ネコの世界では「遊び人」ならぬ「遊びネコ」タイプです。暇さえあれば、悪いネコ友達と一緒に賭け事に興じていたりします。

しかし、ここ一番の勝負にはちょっと弱く、さらに贅沢なものを好むこともあって、宵越しの金を持てないこともあります。地道に努力すると運が開けます。あと、ネコ友達はくれぐれも大切に。いざというときに力になってくれるでしょう。

現実のあなたは、…うーん、どうなんでしょうか?上のコメントは、あくまでも「ネコ」の場合だし…。

λ. Happy Squeaking!!

来週豊田さんの発表があるので、予習しとこと思って。

Tags: URL
本日のツッコミ(全2件) [ツッコミを入れる]

ψ chiko [SMかぁ・・・]

ψ さかい [(問) 生け花とSMの共通点について考察せよ。(10点) ……って、もちろん冗談ですが。;-)]


2002-12-11

λ. 銀歯が取れた

久野君が買ってきた夕張メロン味のハイチューを噛んでいたら銀歯が取れてしまった。これは久野君の陰謀に違いないと思う(笑)のだけど、久野君は恐いので何も言えません。

Tags: tom

λ. 「日本経済の現状と金融政策」

というタイトルで、植田和男(日本銀行政策委員会審議委員)の講演があったので、聴いてきました。

λ. Smalltalkと継続

「SmalltalkにもContinuationがあって、云々」という話がどうもピンと来なかったので、検索してみたら Continuation (Smalltalk Textbook 27) というページを見つけた。これだと、確かにCPSで書かれてはいるけど、言語として first class continuation をサポートしているとは言えないような……

と思ったけど、http://minnow.cc.gatech.edu/squeak/2119を見ると、Squeakにはcall/ccがあるのか。なるほどなるほど。

λ. レッシグの講演

そういえば、明日ネットワーク社会論ローレンス・レッシグ氏の講演があるそうです。あぁ、こんなことならCODEコモンズ読んどけば良かった……

でも、そもそも予算編成論と重なってるんだよなぁ。こっちは財務省財務総合政策研究所研究部総括主任研究官の田中秀明氏で、こっちはこっちで聴いてみたいしなぁ……


2003-12-11

λ. [ruby-dev:22234] Re: yet another inconsistency about EOF between StringIO and IO

ruby本体へのパッチを送るのは初めてなのでちょっと緊張した。

Tags: ruby

λ. 偽弦「スードストラディヴァリウス」 & 幻神「飯綱権現降臨」

偽弦「スードストラディヴァリウス」 と 幻神「飯綱権現降臨」をゲット。これで、132/141。

Tags: 東方

λ. hugs-i18n

日本語がまともに使える処理系がないのは嘆かわしいので、Hugsを国際化(というかUnicode化)すべくちょっとだけHack中。まだ、Lexer/Parserに手を入れていないので、これくらいしか出来ない。

% export LC_ALL=ja_JP.eucJP
% echo '
main :: IO ()
main = 
    do s <- getContents
       putStrLn (show (length s))
' > test.hs
% echo -n 'こんにちは世界' > test.txt
% runhugs test.hs < test.txt
7
Tags: haskell
本日のツッコミ(全4件) [ツッコミを入れる]

ψ non [> hugs-i18n 期待してます。]

ψ nobsun [http://www.golubovsky.org/software/hugs-patch/hugs_unicode..]

ψ さかい [ガーン! もうあったんですね。 あーぁ、半日無駄にしちゃったか (T_T) ちなみに、私の実装は main :..]

ψ ミユ [エッチをはやくしてー]


2004-12-11

λ. HaskellでScheme処理系を実装 (2)

多値を実装。(call-with-values producer consumer)consumer への参照を含む特別なフレームをコントロールスタックにプッシュして、producerを呼び出すことにした。(values arg1 arg2 ...) でコントロールスタックのスタックトップを確認して、それがcall-with-valuesによって作られたフレームだったら、引数をそのまま引き渡す形でconsumerにジャンプする。

何も考えずに実装しちゃったけど、こんなのでいいのかな?

λ. 第二回圏論勉強会

というわけで、先日書いた通り、圏論勉強会の二回目がありました。人数も増えて結構盛り上がったし、とても楽しかったです。

Tags: 圏論

2006-12-11

λ. Shortcut fusion is correct by Patricia Johann

以前から読まなくちゃと思ってはいたのだけど、<URL:http://d.hatena.ne.jp/m-a-o/20061206#p1>で見かけたのをきっかけに読んでみた。操作的(operational)なモノの見方に慣れていなかったので苦戦。証明は追えたけど、いまいち実感がわかない。

TT-closedness の定義は面白い。 スタックの関係と項の関係の間の sT⊇s ⇔ r⊆rT という随伴から定義されるclosure。

「lazy PolyPCF」の lazy の意味は lazy λ-calculus (20040102#p03 を参照)のと同じ意味。lazy PolyPCF を扱うには、Free Theorems in the Presence of seq でのように inequational logical relation にすればよいのだろうけど、もう結果は出てるのかな?

結局、operational に考えることのメリットは何か? impredicative polymorphism があるとモデルを考えるのが大変なのに対して、operational semantics と contextual equivalence に基づけば、複雑なモデルを考えなくて済むということか? しかし、fix と impredicative polymorphism を持つ言語のモデルで、admissibleな関係に限定したparametricityが成り立つモデルは知られていないのだろうか? もしそのようなモデルが知られているのなら、同程度の労力で short-cut fusion の正しさを示すことは可能であるように思う(TT-closednessを示すのも領域理論的なadmissibilityを示すのも似たようなものだろう)。

Tags: 論文

2007-12-11

λ. Wellfounded induction in Agda2

Coqの整礎帰納法(Wellfounded induction)はどうやって実現されているのか見てみたら、accessibility predicate を定義して、それに対する通常の帰納法になっているようだった。 なるほど、整礎帰納法は accessibility predicate に関する通常の帰納法になってしまうのね。面白い。 Coqはまだ良くわからないので、とりあえずAgda2で似たようなもの(?)を書いてみる。

Rel : Set -> Set1
Rel X = X -> X -> Set

-- The accessibility predicate
data Acc {X : Set} (_<_ : Rel X) (x : X) : Set where 
  AccIntro : ((y : X) -> y < x -> Acc _<_ y) -> Acc _<_ x

-- A relation is wellfounded if every element is accessible
Wellfounded : {X : Set} -> (R : Rel X) -> Set
Wellfounded {X} R = (x : X) -> Acc R x

-- Wellfounded induction
wInd : {X : Set} -> {_<_ : Rel X} -> (wf : Wellfounded _<_) ->
       {P : X -> Set} ->
       ((x : X) -> ((y : X) -> y < x -> P y) -> P x) ->
       (x : X) -> P x
wInd {X} {_<_} wf {P} F x = f x (wf x)
  where
    f : (x : X) -> (Acc _<_ x) -> P x
    f x (AccIntro ch) = F x (\y r -> f y (ch y r))

これを length (filter p xs) ≦ length xs の証明 と組み合わせると、ようやく停止性の証明されたクイックソートが書けそうw

あと、一階述語論理と違ってCoqやAgdaで整礎性を表現できるのは、単なる不動点ではなく最小不動点を定義できるからか。一階述語論理の「Acc(x) ⇔ ∀y. y < x → Acc(y)」だと最小不動点であることを表現できないのが問題になる。

関連

Tags: agda coq

2008-12-11

λ. DrHylo: A tool for deriving hylomorphisms

DrHylo is a tool for deriving hylomorphisms from a restricted Haskell syntax. It is based on the algorithm first presented in the paper Deriving Structural Hylomorphisms From Recursive Definitions at ICFP'96 by Hu, Iwasaki, and Takeichi. The generated code can be run with Pointless Haskell, allowing the visualization of the recursion trees of Haskell functions.

【2009-11-04 追記】 まず、ホームページにある以下の例を試してみる。

module Sample where

swap :: (a,b) -> (b,a) 
swap (x,y) = (y,x) 

data Nat = Zero | Succ Nat 

len :: [a] -> Nat 
len [] = Zero 
len (h:t) = Succ (len t)

これに対して、DrHylo -iSample.hs とすると、以下のような感じでhylomorphismの三つ組み表現で出てきて、「おー!」という感じ。

{-# LANGUAGE TypeFamilies #-}
module Sample where
import Generics.Pointless.Combinators
import Generics.Pointless.Functors
import Generics.Pointless.RecursionPatterns

swap :: (a, b) -> (b, a)
swap = app . (((curry ((snd . snd) /\ (fst . snd))) . bang) /\ id)

data Nat = Zero
         | Succ Nat

type instance PF Nat = (:+:) (Const One) Id

instance Mu Nat where
        inn (Left (_)) = Zero
        inn (Right (v1)) = Succ v1
        out (Zero) = Left (_L)
        out (Succ v1) = Right (v1)

len :: [a] -> Nat
len
  = hylo
      (_L :: Fix ((:+:) (Const One) Id))
      (app . (((curry (app . ((eithr . ((curry (inn . (inl . bang))) /\ (curry (inn . (inr . snd))))) /\ snd))) . bang) /\ id))
      (app . (((curry (app . ((eithr . ((curry (inl . bang)) /\ (curry (inr . (snd . snd))))) /\ (out . snd)))) . bang) /\ id))

ただ、以下のような関数

plus :: Nat -> Nat -> Nat
plus m Zero = m
plus m (Succ n) = Succ (plus m n)

に対しては、

plus :: Nat -> Nat -> Nat
plus = app . (((fix . (curry (curry (curry (app . ((eithr . ((curry (fst . (((snd . fst) . fst) /\ (snd . fst)))) /\ (curry (inn . (inr . (app . ((app . ((((snd . fst) . fst) . fst) /\ (fst . (((snd . fst) . fst) /\ (snd . fst))))) /\ snd))))))) /\ (out . (snd . ((snd . fst) /\ snd))))))))) . bang) /\ id)

となってしまって、hylomorphismを導出できない。 他にも色々試してみたが、思ったほどにはhylomorphismを導出できない感じ。

Tags: haskell

2009-12-11

λ. 「最強の時間管理術」 by パク・ジョアン・スックチャ

文字通りの時間管理術を期待して聞きに行ったら、IMDの国際競争力ランキングとかワークライフバランスとかみたいな聞きあきた話がメインで、肝心の時間管理の話は手帳の使い方とかTODOリストとかの、これも良くある話だけだったので、ちょっとガッカリ。

あと、「定時退社で早く帰ってもやることがなくて困る人が多いはず」というような、大企業の仕事人間へのステレオタイプで話してたけど、聴衆にほとんどそういう反応をしている人がいなくて、ちょっと可笑しかった。定時退社で仕事が終わらなくて困るというのは分かるけど、やる事ややりたい事がなくて困るというのは正直想像がつかないな。