2015-06-01から1ヶ月間の記事一覧
1.Raspberry PiにBrickPiを搭載する Raspberry Piの特徴の一つは、外部の周辺機器との接続が簡単なことである。モータをつけることで動くものを作成できるし、さらに、センサをつければ検知も行えるようになる。一方、Lego Mindstormsには、Legoのブロック…
15.ラケットでピンポン玉を跳ね返す問題の解 Netwireの紹介で、最初に与えた問題は次のようになっていた。問題:Netwireで次のゲームを実現しなさい。仕様:ピンポン玉が空中に投げ出されたとする。この時、ピンポン玉が落ちないように、水平に移動するラ…
14.壁面で跳ね返す 前回の記事の四角いボックスは、キーが押された時、x軸に沿って等速度で左あるいは右に移動した。しかし、側面に壁がないため、いくらでも左あるいは右に進むことができた。この単純なゲームを、もう少し現実的なゲームにするため、両…
13.ボックスを動かす ここでは、四角いボックスを左右に動かす単純なゲームの作成方法について記述する。ゲームは時間とともに進行していく。Netwireでゲームに登場してくるものの振舞いは、Wire型の値で定められている。ゲームが進行する中で、値が変化…
12.キーボードからのイベント 前回、前々回の記事では時間に関するイベントについて記述したが、ここでは、キーボードを操作したときのイベントについて説明する。キーボードからのイベントの処理の仕方は、どのグラフィックスAPIを用いるかによって異な…
11.アロー記法 wireは、入力aを受けて、出力bを出すことで、その振る舞いを表しているが、前の記事では、入力aの存在が分かりにくかったので、wireの本質をとらえにくかったかもしれない。そこで、ここでは、前の記事で用いたプログラムを等価なアロー記…
10.Netwireの概要 振舞いは次のように定義した。 newtype Behavior t a b = Behavior { stepBehavior :: t -> a -> Maybe (b,Behavior t a b) } netwireではデータ型Wireによって振舞いを次のように定めている(5.0以前のNetwireでは、これまでの説明と同…
9.抑制(Inhibition) Netwireを特徴づけている機能の一つは、inhibitionである。この単語のhibitの部分は、ラテン語のhabitで「つかんだり持ち続けたりすること」を表している。接頭語のinは「中に」を表す。例えば、心理学では「ある心理的機能が他の心理…
8.各圏へのインスタンス化 前回の記事で、振舞いを次のように定義した。 newtype Behavior t a b = Behavior { stepBehavior :: t -> a -> (b,Behavior t a b) } この段階では、型として定義しただけなので、いろいろな性質を持たせるために、必要な型クラ…
6.関数型リアクティブ・プログラミング 関数型リアクティブ・プログラミングを特徴づけるのが、スイッチである。これに関してはYampaの記事でいくつか取り上げた。ここでは、最も簡単なスイッチを用いて、Netwireではどのように実現するのかを説明する。ス…
1.Raspberry Pi Raspberry Piは、一番最初の頃のユーザーなのだが、その後、長いことご無沙汰だった。先日、ベトナムで酪農業の支援をしているコンサルタントの方と話をしているときに、地中、地表、地上のあちこちにセンサーを設けて、様々なデータを収集…
5.スイッチ イベントの発生により、振舞いは変化する。例えば、ボールを床に落下させると、床にぶつかって、ボールは跳ね返ってくる。このような状況を記述するために、関数型リアクティブ・プログラミングではスイッチを用いる。スイッチの型シグネチャは…
4.イベント イベントも振舞いと同じように型で表す。即ち、tという時間にeというイベントが発生したとき、 newtype Event t a = Event { getEvent :: (t,a) } というデータ型で表す。これは、振舞いを定義したBehaviorの型と比較するとよく似ていることが…
1.問題 最初からいきなり問題である。問題:Netwireで次のゲームを実現しなさい。仕様:ピンポン玉が空中に投げ出されたとする。この時、ピンポン玉が落ちないように、水平に移動するラケットで反射させなさい。また、左右には壁があるものとし、ピンポン…
1.型付きラムダ計算 バークレイの修士課程の学生だったころに、後にチューリング賞をとることになるM. Blum教授から"Theory Of Algorithms"の講義を受けた。日本の講義と比較すると、バークレイの先生たちの多くは、系統だってわかりやすく説明してくれる…