2004-12-01から1ヶ月間の記事一覧

トートロジー

要するに内田教授はトートロジー(同語反復)の話をしているんだけれども、教授の言うとおり、世の中の文系の人っていうのは、自分の論じている内容のトートロジーに意外なほど鈍感だよね。という自分も文系なんだが。正直、これは学生に限らないな、と最近…

ColorFunction

よさげなColorFunction として Hue[Log[1 + # ] ]& を発見したのでメモ。 赤 -> 黄色 -> 緑 -> 青 等高線を考えると線形のHue[Log[2] #] & のほうがいいか。

mapいろいろ

mymapFoldR, mymapTrad 結城さんのhttp://www.hyuki.com/haskell/20041222145051の mymapFoldR :: (a -> b) -> [a] -> [b] mymapFoldR f = foldr ((:) . f) []は*1、 mymapFoldR f (x:xs) => f x:mymapFoldR f xsと評価されます。したがって、 mymapTrad f […

気をつけろ!スタンド攻撃だ!

574 :ジョジョネタ :04/12/18 14:32:06 id:jIMAo6kX この前友人と三人で、近くにある出るっていう噂の空き家に深夜探検しに行った。 車を駐車して家の前に立ってみると何となく異様な雰囲気がした。 普通のマイホームなのに凄く存在感があって威圧されてる…

お題 連続関数の列挙

http://www.sampou.org/cgi-bin/haskell.cgi?Everyday%3a2004-12-20&l=jp おまけの方の解答がよくわからなかったので自分でやってみる。 問題 (A, X), (B, Y): 位相空間, f: A -> B, g: Y -> X とする。このとき "∀a∈A, ∀y∈Y. f(a) ∈ y ⇔ a ∈ g(y)" ⇔ "fは連…

[Haskell] 単純連分数[id:yts:20041219#p1]に追記。 だれも間違いを発見してくれなければ、そのうち(http://www.sampou.org/cgi-bin/haskell.cgi?Everyday%3a2004-12-19&l=jpの内容によっては)前日のコードと例だけでも書き込んでみる予定。56桁の証明も書き…

単純連分数

http://www.sampou.org/cgi-bin/haskell.cgi?Everyday%3a2004-12-19&l=jpより。 TODO 実数ωとはなんだろう? 追記(2004-12-20) このエントリを書いた後にhttp://www.sampou.org/cgi-bin/haskell.cgi?Everyday%3a2004-12-19&l=jpが更新された。特別な数ではな…

Remember AA in Calender

関数引数のpermutation (4)

いつまで引っ張るのかという感じですが…型をrefineするcast a を id :: (a -> b) -> (a -> b) にするようなcastのこと">*1が安全だと仮定すると、このように動くものが書ける。 *FunArgPerm2> [f 1 2 3 | f <- permArgsMono 3 (\a b c -> [a, b, c :: Int])]…

a.equals(b)の非対称性を気持ち悪いと思わなくなっている自分に気がついた。昔は思っていたのに。Haskellで関数の演算子的な記法a `f` bや演算子の関数的な記法(== a)に慣れて、そのあたりの感覚がliberateされてしまったのだと思う。

Reference and Polymorphism

型安全性のためにOcamlは多相性を(計算の起こらない)変数の束縛のみに制限しているということを知った。 Haskellでは多相性に制限はかかっていないのでIORef(リファレンス)にunsafePerformIO(副作用)の併せ技で型安全性を壊せる。 cast :: a -> b cast x = u…

情報読解力

日本学生の読解力低下が問題ではなく文化差異が問題だを読んだ。8日のエントリだけど。なるほどこれは読解力の問題ではないな、と同意

タイトルバー(?)を小さくしてみた。

関数引数のpermutation (3)

今度は [a b c, a c b, ...] に \a b c -> f をmapするというとてもマクロ的な作戦。 x <- newName strで作った変数はschemeのマクロのように変数の衝突を回避するけれど、 mkName strで作った変数は文字どおりstrのままでダイナミックスコープ。 permArgs' …

関数引数のpermutation (2)

Template Haskell版。型の縛りがないので、素直に相対位置で([id:yts:20041210#p1]では型をあわせるために絶対位置で変数の置換を行っている)自分自身を呼び出して再帰できる。 permArgs :: Int -> ExpQ permArgs n = [| \f -> map ($ f) $(pgen n) |] pgen …

Source Code Documentation

Haddock, Doxygen, RDocといったツールはソース内の定義と、コメント中のマークアップからドキュメントを生成する。そのためそれらのツールは対象とする言語を少なくともパースできなければならない。しかし、コンパイラが持っているパーサをまた作るのは本…

Infix trick

メモ。Haskell-Cafeより。 infixr 0 -:, :- data Infix f y = f :- y x -:f:- y = x `f` y main = print $ [1,2,3] -: zipWith (+) :- [4,5,6]http://www.haskell.org/pipermail/haskell-cafe/2002-July/003215.html

引数の数の自動判定

お題: 関数引数のpermutationの蛇足。 *TestFunArgPerm> [f 1 2 3 | f <- permArgs' (\a b c -> [a, b, c])] [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]{-# OPTIONS -fglasgow-exts -fallow-undecidable-instances #-} {-# OPTIONS -fallow-overlap…

お題: 関数引数の permutation

面白かった。 permArgs n f = map ($ f) $ g n g [] = [id] g xxs@(x:xs) = [r . j| r <- subs xxs, j <- g xs] subs xs = scanl (flip (.)) id xs suc n = flip: map (.) n one = [] two = suc one three = suc two four = suc three five = suc four 追記(…

Existential Types

Existential typeとは、(1)のようにforallがデータコンストラクタの前について定義されるデータ型のことをいう*1。(2)とは違って、forallで修飾された型変数ができあがった型のパラメータになっていないことに注意して欲しい。 (1) data Proc i o = forall b…

Hypersetの使いかた

丁寧な説明ありがとうございます。 意味が(公理がどうインプリメントされているのか)わかってきました。数学を計算機上で表現、理解するということには独特の面白さを感じます。 考えてみると x = singleton (Right x)を"解く"(デコレーションを求める)とい…

チーズonクラコットというのをコンビニで見つけた。クラコットにのったチーズを期待したのだが*1、材料にチーズらしいものがない。ただのクラコットだった。 *1:チーズのほうが字が小さい時点で妙だとは思った

Defaulting?

上記のHypersetを試していて発見したGHCiの挙動。 *Hyperset> :t let x = singleton (Right x) in x let x = singleton (Right x) in x :: forall a. (Ord a) => Set a *Hyperset> let x = singleton (Right x) *Hyperset> :t x x :: Set Integer *Hyperset>…

Re: Re:スーパータイピング

toList等はポリモーフィックなリストに入れて返さないといけませんね。いろいろ書かなくてはいけなくなるので少なくとも結構面倒になりそうなので、する価値がないかもしれないと思います。こんなものをイメージしていました。 data List u = forall uos. Ur…

n 番目の文字列

解答(修正版) a. "!!!!!!!;6'uVO%_e" b. "!\"#$%&'fosI;t`Hg" c. "\"%'[03569FfLoUXy" 追記 ['!'..'z']ではありませんでした。ついでに書き直したもの。 import Control.Monad.Fix (fix) solveall = [solve g t characters 16 largenum | (g, t) <- [(gen_a,…

私は権威主義者には徹頭徹尾なれそうもない。しかし、権威を持つに至ったのにはそれなりの理由があり、そこを尊敬することは忘れてはならない*1。 *1:同様のことが注に書いてあることを発見

ネットの中の「最下層」でない人は「便所の落書き」扱いされるというのがよっぽど嫌なのだろう。その「ストレス」で「短絡」的に「ロジックよりも個人的な恨みを優先」して「「ぶちまけ言葉」を書きなぐって」いる。トラウマにでもなっているのか。それとも…

武蔵は随分強くなった。とはいえ、セフォー戦は、攻撃を全部ブロックされていたし(これは逆も似たようなものだが)、セフォーの方が優勢に見えたが。攻勢の方にポイントがつくK-1式判定はやめたのだろうか*1。決勝のドローも。最近素人の試合ばかりでプロレス…

モンゴル人の名前

朝青龍の本名「ドルゴルスレン・ダグワドルジ」のうち、「ドルゴルスレン」が父親の名前、「ダグワドルジ」が本人の名前。 qualified nameという感じ。再帰的に先祖まで辿ってみたい。被るときはさらに「祖父名・父名・本人名」となるシステムだったらいいの…

AVL(GADT)

GADTを使ったAVLにFiniteMap-likeなインターフェイスをかぶせてベンチマークしてみた。かなり遅い。insとdelを対称っぽくするためにbalanceでコンストラクタのつけ外しが増えているので、多分酒井さんのもののよりも遅いでしょう。AVL.tgz(修正)*1 *1:Mainta…