2007-08-01から1ヶ月間の記事一覧
なぜだめなんだろうか。眠くてもうだめ。 main = piStart False Nothing mainPr mainPr :: Maybe (I (), NewP) -> PiMonad () mainPr _ = do s <- new fork $ fib 10 s s' <- recv s cout
なんか時間のかかる処理がしたかったので、フィボナッチ数の計算をしようと思った。(意味不明) そんで π 計算でフィボナッチ数を計算するプログラムを書かなくちゃなーと思って、ややめんどくなってすぐやめる。(おい) 前からちらちら見ていた "Monad for Fu…
killThread という関数を使えば、別に Maybe とかで頑張らなくてもいいね。 main = do putStrLn "Enter number: " n <- getLine id <- forkIO $ fib (read n) putStrLn "Press any key to stop calculation." getChar killThread id putStrLn "Now thread st…
これまた適当に書きました。sfib が汚い。フィボナッチ数を裏で計算している途中で何かキーを入力すると、計算が止まります。(しばらく待ってても結果が出力されないことで確認できます)でも、計算を止めないとなぜかデッドロックする模様。はて。 import Co…
無限ループなのになぜか終了してしまうという問題は、id:mzp に、最後の forkOS を消せばいいとアドバイスされて解決されました。サンクス。 うむ、たしかに親は子の終了を待たないってどっかに書いてあったな。なんで気がつかなかったんだろう。 あと Concu…
Concurrent Haskell で適当に書いてみる。そしたらなぜかデッドロックしないんですけど。うむぅ。 というか、コンパイルして実行すると、なんとしばらくすると終了してしまうのです。無限ループしてるはずなんだけどなぁ…。(http://d.hatena.ne.jp/zyxwv/200…
Haskell は遅延評価だから、Maybe の意味があるわけか…。 手続き型言語の例外とまったく同じように扱えるわけだね。
http://d.hatena.ne.jp/zyxwv/20070823 のモナド則から、Haskell でよく使われるモナド則を導く予定。これって Coq が使えるんじゃないだろうか。しっかり紙でやってしまったけども。 とりあえず簡単なやつから。導出できたら随時追記。 m * λa. unit a => m…
研究のために、GUI プログラミングの勉強をしている。これまで GUI プログラミングをした経験が全くないので、作法とかがよくわからない反面、新鮮で面白い。
とりあえずメモだけ…。 map :: (a -> b) -> (M a -> M b) map fm = m * λa.unit (f a) join :: M (M a) -> M a join z = z * λm.m map id = id map (f . g) = map f . map g map f . unit = unit . f map f . join = join . map (map f) join . unit = id jo…
Haskell での乱数の使い方の確認のために。でもこれだと種が同じなので毎回答えが一緒。普通の乱数が使いたければ System.Random.getStdRandom とかを使えばいいが、もちろん IO がつく。 import System.Random (randomRs, mkStdGen) import System (getArgs…
プログラムの資料を読んだりしてても、あんまりさぼってる気にならないのはとてもいいことだ。院試前はそうはいかなかったから。 これからは研究しなきゃーみたいなプレッシャーと闘うことになるのかな〜。
独習 Scheme 3週間という資料を印刷してあるのを見つけ、ぱらぱらと見てみる。前半はまぁいいとして、後半からは、 マクロ オブジェクト指向プログラミング 継続(コルーチンとか) 非決定計算 エンジン みたいな話がでてきて結構濃い。もうちょっと前にこれを…
前に書いたスクリプトが、一部のサイトでは TypeError と出て動かないことが判明。 エラーログよると、"aaa-greasemonkey-functions.user.js" の中で怒られている感じ。謎…。
読んでた。結構おもしろい。けど、"Paradoxes of classical predicate calculus" と題されたとこが謎。英語力が足りないのか論理学の知識が足りないのか。 あと、forall とか exists とかの扱いがいまいちわかってない気がするな。坂部先生の資料で自然演繹…
なんじゃそれ…。
メモメモ。 y f = f (y f) fact f x = if x==0 then 1 else x * f (x-1) Main> y fact 10 3628800 Main> Scheme で書かれた Y Combinator の解説を読んだけど、僕にはちょっとわからんかった。遅延評価のある Haskell だとすごく簡単で、わかりやすい(気がす…
コピーあるいは印刷した資料で勉強してるとよく思う。なんでかっていうと、書き込んで勉強した資料がどこにいったかわからんくなるから。今まで印刷あるいはコピーした資料はバインダに綴じて全部とってあるけど、なにがどこにあるかさっぱりわからん。ちょ…
Google 翻訳の結果もポップアップできるようにしてみた。 あんまり使ったことなかったけど、 Google 翻訳(英→日)っていまいちの精度だね。無料のものに文句をつけるのもどうかと思いますが。
最近は JavaScript ばっかりな気がする。今日学んだことは、イベントオブジェクト(?)のプロパティは値が代入されていないことがあること。 例えば onmouse っていうイベントだと、マウスの位置を表す pageX っていうプロパティはもちろんちゃんと代入される…
あぁー。Mac だと、Control ってのは Command のことなのか。それはいかんわー。 Control が押されているかを取得しようとしてて、どうもうまくいかんなーと思ってたらこんなオチが。
XMLHttpRequest は、そういえばローカルなサーバ以外とは通信できないんだったね…。そりゃ Security Violation とかでまくるよ。どんだけ時間無駄にしたんだ…。
この前、"必ず引数を2倍した値を返す関数"みたいなものを型で表せないかなーとか考えてた。 double :: Num a => a -> Nibai a みたいな。適当だけど。 型の上で足し算かけ算はできた(http://d.hatena.ne.jp/zyxwv/20070730)ので、それを利用すればいいのかな…
stories -> story みたいな変換をやるようにした。ソースがすっごい汚い(というか適当すぎ)のでなんとかしたいところ。 あと、データ(オブジェクト?)の型がよくわからん。たくさんありすぎじゃない?
最近は内容のないエントリばっかな気がするけど。Djinn というやつがおもしろそうな感じ(なにを今更)。これも試験が終わったら少し触ってみることにしよう。 というか、こいつの仕組みが知りたい。TAPL を読んだらわかるだろうか。
うーん、毎回混乱するなぁ。どうやって実装するもんなのかな…。
それはそうと今日は LL 魂だったそうです。月曜日の勉強会ではそのレポートが聞けるはずなので楽しみです。勉強会のメンバから3人も参加してるってのはなかなかすごいことだと思う。(しかも発表者が2人) でも、今まで愛用してきたるるぽがつぶれてしまったの…
英語の勉強しなきゃ〜 -> NewYorkTimes 読むか〜 -> ポップアップしたとこのリンクが相対リンクで記述されてるせいでいろいろ不便〜 -> 相対リンクを補って、発音記号とかwavファイルとかがきちんと参照できるようにした。勉強しろよ俺!
とりあえず適当に動くようになった。Scheme と違うのはカリー化ができるところと、中置演算子とか結合の優先度とかがあること。
夏休みはみんなで CPU を作ろう!とか言っても誰も乗ってきそうにない。某T大の CPU 実験てのがおもしろそうすぎてうらやましい。とりあえず FPGA がないとなんも始まらんね。そこらへんの研究室から借りてこられないかなー。