2010-05-01から1ヶ月間の記事一覧

iPad買ってきた!

さっそくXCodeを起動してUse for Developmentを選択する。それからADCに行って新しいProvisioningを作らねば!とりあえず動いたが単純に二倍に拡大されただけなので大味だ(笑)アプリを同期中。先日iPhoneにWikipediaを入れたのでこれでどこでもWikipediaが読…

MUROTOで回転と位置が取れていることがわかりやすように動画を取り直した

中身のないメッセージを不特定多数に機械的に投げることが「楽しい」らしい

なにが「あー、楽しい」だ。ちらりと見て受け取り側でこのサービスに「もう自分には送ってくるな」と登録する方法がみつからなかったので、とりあえず送ってきた人をblock and report spamしました。まあ、こういうのを送ってくる人とは価値観が相容れないの…

MUROTOでネギを振ってみた

iPadまだ買えてないようわああん、ってことでミクを買ってきてMurotoを使ってネギを振らせてみた。動画を取るのに自分のiPhone 3GSを使うので友達のiPhone 3Gでデモしたけど、自分の3GSに比べて遅いなぁ。iPadだともっとサクサク動くかも。

MUROTO: iPad/iPhoneの上に載せたフィギュアでアプリを操作するシステム

解説動画を作った。Hacker's Cafe Blog: MUROTO: tangible figure as a controller for iPad apps

Random

mainの中でmkStdGenするぎりぎりまでIOモナドで包まない、ってのにチャレンジしてみた。 import Random dice :: (RandomGen g) => g -> (Int, g) dice g = randomR (1, 6) g dice_seq :: (RandomGen g) => g -> [Int] dice_seq g = let first_result = dice …

今朝の日記

Twitterから転載 乗換駅を乗り過ごす 別の駅で乗り換えることにする 気がつくとその駅についてすでにドアが開いている 慌てる 考え事していたら乗換駅についていて、あわてて近くの手すりにかかっていたビニール傘をもって外にでたら、自分の左肘にも同じビ…

Makeで展示してきた

Hi! Did you come from Global Voice? Thank you for your interest in our products. You can get more information (movies, source code, how to) from http://code.google.com/p/muroto/ (added on 31 Jul 2010)眠いので簡単に。 iPhoneにフィギュアを押…

続き

破壊的更新をするにはControl.Monad.STを使うといいらしい。 by id:pi8027ST Monad examples - Data.Random

続き

[count_n (next_turn game) [(step_game game play) >> (while_game_finished select_ai_for_monte) | _ <- [1..100]] | play <- hands] この時点でそれぞれの着手選択肢について着手した後ゲームが終わるまで100回実行した結果、勝ったのが自分である回数の…

ポイントフリー

Twitterから転載 ラムダ使わずにプログラム書くの難しい。一つの値を名前に束縛せずに複数箇所で使うってどうやるんだ。Sコンビネータ的なものが用意されてる? Control.ApplicativeにSコンビネータあった →Control.ApplicativeのがSコンビネータだと書いて…

昨日の続き

@pi8027 あともっと fold とか使ってくれないと読めません。本物の Haskeller は再帰もラムダ式もあまり使わない! @pi8027 countM a l = sequence l >>= return.length.filter (a==) なるほど。sequence で[IO Int]がIO [Int]になって、 >>= f で fに[Int]が…

IOモナドのリスト

IO Intが100個入っているリストがあるんですが、Intが1の物の個数を調べるにはどうしたらいいのでしょう。こんな関数を作ったらIOなんてデータコンストラクタはないと言われました。 won :: IO Int -> Int -> Bool won (IO x) y = (x == y) The monad laws I…

昨日の続き

ゲームと着手を受け取って、更新した新しいゲームを返す関数と、ゲームを受け取ってゲームが終わったかどうかと誰が勝ったのかを返す関数を作った。 -- ゲームと着手を受け取って、更新した新しいゲームを返す step_game :: Game -> Play -> IO Game step_ga…

モジュール

うまくいかない。これでimport Aとimport Bを切り替えることで挙動が変わります、ってのをやりたかったんだけど「module B where」の冒頭でパーサーエラーだ。 module A where newtype Foo = MakeFoo {foo :: Integer} newtype Bar = MakeBar {bar :: String…

昨日の続き

モジュールに分けてetcはまた先でも出来るだろうからほっといて進もう T3GameとT3Playを作るのはやめて、GameとPlayにした。 -- ゲームの局面を受け取って選択可能な手のリストを返す possible_hands :: Game -> [Play] possible_hands game = [MakePlay i |…

Terminal.appのタブに表示される内容を変えるには

Mac

printf '\e]2;nishio\a'http://www.macosxhints.com/article.php?story=20060502160527780 http://www.macosxhints.com/article.php?story=20010522025350220本当は「bash」とか「python2.6」とか表示されているのを「nishio」とかに置き換えたかったんだが…

昨日の続き

眠いけどこれだけは書き残しておかねば。 昨日のこの問題: ... is a rigid type variable bound by ... この記事でOCamlのモジュールシステムを使ってるみたいな方法で解決するのが正しいような気がした。第 6回 OCamlの「モジュール・システム」 - 数理科学…

レバレッジメモ: バルタサル・グラシアンの成功の哲学—人生を磨く永遠の知恵

人を待っていて本屋でパラパラめくったバルタザール・グラシアンの本が、いろいろ歯に衣を着せていない感じで面白かったのでアマゾンで買ってみた: バルタサル・グラシアンの成功の哲学—人生を磨く永遠の知恵 やたらと人を褒めるのは賢明ではない。それは真…

... is a rigid type variable bound by ...

なんでこれがエラーになるのかわからないのは、まだなにか理解出来ていことがあるってことなんだろうな。 class Foo a where foobar :: (Bar b) => a -> b class Bar a newtype AFoo = MakeAFoo {foo_value :: Int} newtype ABar = MakeABar {bar_value :: I…

設計設計設計、すこし実装

とりあえずいきなり作ろうとしているゲーム全体の作成に着手したら、細かい実装上の「あれってどうするんだ?」に気をとられて全体の設計が疎かになると思ったのでゲームは3目並べにした。ゲームがなんであっても再利用できるようなライブラリが作りたいわけ…

モナド復習中

main = do x <- rollDice print x から main = do rollDice >>= print からdoを取り除く main = rollDice >>= print 簡単簡単。 http://www.sampou.org/haskell/report-revised-j/exps.html#sect3.14

表現媒体を変えると思考が整理される

モンテカルロ木探索のコードをPythonで書いていて、結局のところめんどくさいバグを発生させないためにはゲーム盤面の情報を持っているオブジェクトを破壊的に変更しないことが重要なのだと気づいた。もう一つ気づいたことは「人間が盤面を見て手を入力する…

三倍速いカウンタ

忘れてた。カウンタを作ったときは継承して3倍速いred_counterも作ることにしているんだった。 # class red_counter= object inherit counter as super method push = super#push; super#push; super#push; end;; Warning S: this expression should have ty…

The standard library http://pauillac.inria.fr/ocaml/htmlman/manual034.html

!

「!」は否定じゃなくて参照型の中身を取り出す演算子なのか!http://ocaml.jp/OCaml%E5%85%A5%E9%96%80%283%29

すごく高いクレーン

のように見えないかな

眠くなくなってきた

お酒飲んだら眠かったのが一周して眠く無くなった お風呂にお湯を入れている新しい言語覚えたらとりあえずFibだよね。最初の10個とか取りたいけど http://pauillac.inria.fr/ocaml/htmlman/libref/List.html には「頭10個を取る」って関数はなさそうだ。Pyth…

破滅ラウンジにいってきた

座席は段ボール。机はロリコン漫画。気がついたら盗聴されてた!!id:Yoshioriとこれがどういう方法で出来ているのはマクドで食事しながら1時間ほどしゃべってて、tcpdumpでLingrやTwitterへの投稿を見たりするところまでは簡単にできて、あとはAirMacをアク…

クリエイティビティの教育に関する考察

クリエイティビティはどうすれば教育できるだろうか?エーリヒ・フロムが言うように、教育には「機械のように考える人間を作り出す」という側面もある。機械のように考えるとはどういうことだろうか。同じ入力に対して同じ出力しか返さないということだろう…