トップ 最新 追記

日々の流転


2009-05-01 [長年日記]

λ. なぜ0で割ってはいけないのか? リンゴの分配から体の公理まで

こういうのいいよね。 ただ、「体の公理から0で割ってはいけないことを証明」という表現ちょっとは正確でないように思う。確かに、体の公理の「a≠0 ⇒ a×a-1=1」からガードを外すことは出来ないのだけど、この公理をそのままにしておいて 0-1 を適当に定義してしまうことには何の問題もないので。

参考


2009-05-02 [長年日記]

λ. iPhoneのEvernoteで「Unknown Error u11」というエラーが……

iPhoneのEvernoteでノートを編集すると、アップロード時にときどき「Unknown Error u11」というエラーが出て、アップロードできなくなることがある。これなんだろ……

[Unknown error u11]

Tags: iPhone

2009-05-03 [長年日記]

λ. 雑誌

[サンデー毎日]

家を整理していたら、学生時代*1の懐かしい雑誌が出てきたっぽい。

*1 僕のではなく、親父のだけど(笑

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

ψ タナカコウイチロウ [東大紛争、といえば入試が無かった時期ですね。 一番左の雑誌にある表紙のポスターって、橋本治のでは?。]

ψ さかい [おお、そうみたいですね。Wikipediaにも書いてありました。 http://ja.wikipedia.org/w..]


2009-05-04 [長年日記]

λ. 『本物のプログラマはHaskellを使う』読者の集い

参加した。(後で書く)

ustream.tvでの中継に初挑戦してみたが、どうも思うようにはいかなくてちょっと残念。

DoubleがBoundedのインスタンスになっていない話は、そういえばも同じこと書いてたな。

Control.Monad.Errorで定義されている MonadPlus IO インスタンスは、Control.Monad のドキュメントにある m >> mzero == mzero の条件を満たさないのね。

mtlが現在のLazyバージョンとStrictバージョンの構成になった経緯について聞いてみれば良かったな。

JHCの存在型にまずい点があったというようなことを言ったが、どうも<URL:http://article.gmane.org/gmane.comp.lang.haskell.prime/436> のあたりの話と混同してた気がしてきた…… orz

m-a-oさんに初めてお会いした。

Tags: haskell

λ. "Do we Need Dependent Types?" by Daniel Fridlender, Mia Indrika

Hindley Milner オンリーだから、型クラスも使わないのか。 アドホックすぎだけど面白い。

(<<) :: [a -> b] -> [a] -> [b]
(f:fs) << (a:as) = f a : (fs << as)
_ << _ = []

zero :: [a] -> [a]
zero = id

succ :: ([b] -> c) -> [a -> b] -> [a] -> c
succ = \n fs as -> n (fs << as)

one = succ zero :: [a -> b] -> [a] -> [b]
two = succ one :: [a -> b -> c] -> [a] -> [b] -> [c]

zipWith :: ([a] -> b) -> a -> b
zipWith n f = n (repeat f)

zipWith2 :: (a -> b -> c) -> [a] -> [b] -> [c]
zipWith2 = zipWith two

あと、(<<) は Applicative ZipList の <*> と同じかな。

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

ψ osiire [集いお疲れさまでしたー。モナドの話じゃなくて恐縮ですが「Haskellで飯を食うには」とかの話題って出ました?]

ψ さかい [お疲れ様でしたー。 「Haskellで飯を食うには」は「質問への回答 の発表資料」に載っている話と、あとは黒田さん的..]


2009-05-05 [長年日記]

λ. Pure Prolog Implementation...なんか (PPIM)

昔読みかけで挫折したwambookを読み返して、ちゃんと理解するのを目標に参加。昔印刷したwambookを本棚から発掘して会場へ向かった。

WAMをきちんと理解しなおすという目的は、m0h1canさんの説明が分かり易かったこともあり、結構果たせたように思う。 が、肝心の実装に私はなんだか駄目な感じに迷走してた orz

  1. 最初はWAMからLLVMへの変換か何か出来たらいいなぁとか漠然と思ってた。
  2. が、それは置いていて先ずはリファレンスインプリメンテーションが必要だろうということで、wambookを参照しながら、WAM の small step の操作的意味論をHaskellで書く。
  3. しかし、配列操作の山にウンザリする。
  4. 面倒になってきて、LLVMのドキュメント読んだり、横道にそれまくる。
  5. 気がついたら8時ごろ orz

が、さすがに何も作らなかったというのは悲しすぎるので、最後の一時間と帰りの電車で、超簡単な処理系だけ書いた。Prolog.hs

昨日に続いて今日もustream.tvでストリーミングしてみたんだけど、今日は昨日のような数十分の遅延は発生しなかった。昨日はemobileで今日は無線LANだったからかな。なんにせよ、よかったよかった。

参考


2009-05-06 [長年日記]

λ. Haskell→Isabelle

ranhaさんが書いていた Haskabelle*1に少し興味を持つ。 HaskellプログラムをIsabelleに変換するものらしい。 マニュアルによると、例えば以下のようなHaskellプログラム

module Classes where

class Monoid a where
  nothing :: a
  plus :: a -> a -> a

instance Monoid Integer where
  nothing = 0
  plus = (+)

-- prevent name clash with Prelude.sum
summ :: (Monoid a) => [a] -> a
summ [] = nothing
summ (x:xs) = plus x (summ xs)

class (Monoid a) => Group a where
  inverse :: a -> a

instance Group Integer where
  inverse = negate

sub :: (Group a) => a -> a -> a
sub a b = plus a (inverse b)

theory Classes
imports Nats Prelude
begin
class Monoid = type +
  fixes nothing :: 'a
  fixes plus :: "'a => 'a => 'a"

instantiation int :: Monoid
begin
  definition nothing int :: "int"
  where
    "nothing int = 0"
  definition plus int :: "int => int => int"
  where
    "plus int = (op +)"
instance ..
end

fun summ :: "('a :: Monoid) list => ('a :: Monoid)"
where
"summ Nil = nothing"
| "summ (x # xs) = plus x (summ xs)"

class Group = Monoid +
  fixes inverse :: "'a => 'a"

instantiation int :: Group
begin
  definition inverse int :: "int => int"
  where
    "inverse int = uminus"
instance ..
end

fun sub :: "('a :: Group) => ('a :: Group) => ('a :: Group)"
where
  "sub a b = plus a (inverse b)"
end

というIsabelleの記述に変換されるとか。 Isabelleの構文をきちんと知らないので、良くは分からないけど。

ただ、Haskellのデータ型や関数をIsabelleの普通のデータ型や関数に変換しているため、変換結果はIsabelleに停止しない関数として拒絶されることがあるそうだ。 (その辺りはどうしているのかなぁ、と思ったら案の定)

調べてみると、HaskellからIsabelleへの変換の試みは他にもいくつかあるみたいだな。 Implementation of a Pragmatic Translation from Haskell into Isabelle/HOL はHaskabelleと同じくそのまま単純に変換している。 一方、Paolo Torrini, Christoph Lueth, Christian Maeder, Till Mossakowski. Translating Haskell to Isabelle は、Isabelle用の領域理論のライブラリであるIsabelle/HOLCFを使った領域理論的な記述へと変換しているので、扱いは面倒だけど、停止しない関数が拒絶されるといった問題は無い。

*1 綴りが難しいよ (><)


2009-05-08 [長年日記]

λ.

帰りに虹が見えた。 虹は綺麗だったけど、ちょっと不気味だなと思う。

[虹]


2009-05-09 [長年日記]

λ. アブ大量発生

アブが大量に発生して、家にも気がついたら20匹くらい侵入してきていた。羽音のする虫は苦手なのでちょー怖かったが、帰ってきた親父が撃退してくれて、親父が頼もしかった。しかし、まだどうも羽音が近くから聞こえるなと思ったら、天井のライトの裏に……

[天井のライトの裏のアブ] [天井のライトの裏のアブ]

ひぃぃいぃぃいぃぃ


2009-05-10 [長年日記]

λ. 第五十二回圏論勉強会

今日は圏論勉強会写真

Tags: 圏論

2009-05-20 [長年日記]

λ. ドラクエ風ステータス

小熊さんがやっているのを見て、試してみたら、こんなの出た。 HP2って瀕死過ぎる。

[酒井政裕のステータス]