bitterharvest’s diary

A Bitter Harvestは小説の題名。作者は豪州のPeter Yeldham。苦闘の末に勝ちえた偏見からの解放は命との引換になったという悲しい物語

2015-01-01から1年間の記事一覧

Reactive-banana 紹介(10)

11.Asteroids アステロイド・ゲームはアタリ社(米国)が1979年に作成したゲームである。当時は、アーケードと呼ばれたが、ゲームができる専門店があり、店には一人がけのゲーム専用機が設置されていた。そこで遊べるゲームをアーケード・ゲームと呼んで…

ターキーを焼く

今年も、ターキーを焼きました。でも、例年とは趣きを異にしています。いつものように、ターキーを仕入れようと明治屋に出かけたのですが、あいにく売り切れでした。あきらめきれずに、置いてありそうなほかの店も回ってみましたが、残念ながら、見つけるこ…

Reactive-banana 紹介(9)

10.Wave クリスマスは過ぎてしまったが、今年もまた、いろいろなところでイルミネーションを楽しむことができた。今回の話題は、飾り立てたイルミネーションには豪華さでは到底及ばないが、技術的な深みでは凌駕していると思われる光のウェイブが伝搬する…

Reactive-banana 紹介(8)

9.Bar Tab 知っている人は少ないと思われる用語だが、アメリカでレストランで食事をしようとする時に、Bar Tabという言葉に出くわす。日本だと、レストランで食事をしようとする時は、そのまま席に招かれる。しかし、アメリカでは、食事をする前に、バーで…

Reactive-banana 紹介(7)

8.Animation Reactive Bananaの基本的な機能の説明が続いたので、Functional Reactive Programming (FRP)の応用分野の一つであるアニメーション・プログラムの解説をしよう。とは、言ってもとても簡単なプログラムである。Reactive Bananaのロゴをカーソル…

Lego BotsをHaskellで動かす-Netwireに実装する(2)

6.Netwireに実装する(続き) 修士課程の院生が、Raspberry PiにNetwireの5.0.0の版がインストールできることを教えてくれた(5.0.1はprofunctorがインストールできない)。そこで、5か月前に書いた記事(Lego BotsをHaskellで動かす-Netwireに実装する)…

Reactive-banana 紹介(6)

7.NetMonitor 今回の例は、ネットワークのモニタで、入力と出力のパケット数を表示する。簡単なプログラムだが、Reactive-bananaで記述されるプログラムの基本的な構成をとっている。そこで、今回は、Reactive-bananaの基本的な枠組みを紹介しながら、ネッ…

Functional Reactive Programming - 目次 

1.ボールの衝突をFunctional Reactive Programmingで表現する(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)、(9)、(10)、(11) 2.Reactive-Bananaの紹介(1)、(2)、(3)、(4)、(5)、(6)、(7)、(8)、…

RaspberryPi - 目次

1.Raspberry PiからLego Mindstormsを使用できるようにする―準備 2.Raspberry PiからLego Mindstormsを使用できるようにする―BrickPiの解剖(1)、(2) 3.HaskellでLego Mindstormsを制御する(1)、(2) 4.HaskellでLegoのモータとセンサをRa…

Haskellで学ぶ圏論・入門編 - 目次

1.写像を対象に 2.写像を対象に(モノイド圏) 3.写像で扱うことの利点(1)、(2)、(3) 4.デカルト圏論(理論) 5.デカルト圏論(応用)

Reactive-bananaの紹介(5)

6. TwoCounters 前回の記事では、upとdownで増減する一つのカウンタを扱ったが、今回は、二つのカウンタを扱うことにする。upとdownのボタンの他にswitchというボタンを用いてカウンタを切替える。 6.1 ユーザ・インタフェース 例によって、ユーザ・イ…

Reactive-bananaの紹介(4)

5.Counter 振舞いについては、前の二つの記事で、テキストフィールドを用いて説明した。今回は、reactive programmingのもう一つの一翼を担うイベントについて説明する。この記事でのプログラムのタイトルは、Counterである。upとdownのボタンがあり、upが…

Reactive-bananaの紹介(3)

4.Currency Converter 2回目の話題は外国為替変換である。ドルとユーロでの変換を自動的に行ってくれるもので、エントリーは、ドルとユーロの金額入力(表示も)の二つである。マウスでどちらかのエントリーをクリックすると、クリックしたエントリーがフ…

Reactive-bananaの紹介(2)

3.Arithmetic reactive-banana-bxには例題が用意されている。今回は、その中の一つであるArithmeticについて、そのプログラムの内容を解説する。Arithmeticは、整数の足し算を実時間で実行してくれる。画面上に二つのエントリーが用意されていて、一つは被…

Reactive-bananaの紹介(1)

1.Reactive-banana 今年(2015年)の10月29日に、1.0版のreactive-bananaが公開された。作成者は、Heinrich Apfelmusである。開発版から完成版への移行であると作者は謳っている。これからは、大きな変化もなさそうなので、紹介してもよいレベルに達したも…

ボールの衝突をFunctional Reactive Programmingで表現する(11)

11.プログラム プログラムが完成したので、まず、動いているところから、観察してみよう。最初の動画は、大きさも質量も同じ二つのボールがビリヤード台の上を、物理法則に従って、動作する様子を示したものである。 次の動画は、大きさの比が1:2で、質量…

ボールの衝突をFunctional Reactive Programmingで表現する(10)

今年の秋は、天候に恵まれ、秋たけなわの日が多い。先日、伊豆の稲取にある細田高原を訪れた。かっては、茅葺屋根の材料となる茅の産地としてこの地方の産業を支えていたそうである。箱根の仙石原の7倍はあるすすき畑を観光地にしようということで開発を促進…

ボールの衝突をFunctional Reactive Programmingで表現する(9)

10.ビリヤード台で衝突するボール 今までは、一直線上の二つのボールが衝突する現象を扱ってきたが、ここではビリヤード台のような長方形の箱の中で運動する二つのボールの衝突について扱うこととする。 10.1 原理 二つのボールは前と同じように等速で…

ボールの衝突をFunctional Reactive Programmingで表現する(8)

9.壁でも跳ね返る二つのボール 9.1 プログラムの実行 完成したプログラムの実行結果を最初に見る。なかなか面白い動きをしていることが分かる。 9.2 壁で跳ね返った時の位置 前回の記事で一直線上を走る二つのボールの衝突についてのプログラムが完…

ボールの衝突をFunctional Reactive Programmingで表現する(7)

8.一直線上で衝突するボール(完成編) 8.1 微小間隔時間をパラメータで引き渡す 前の記事では、計算の時間間隔を値で与えたが、この値は、コンピュータの速度やプログラム内部の設定などで変わる可能性があるので、プログラムの中でパラメータとして渡…

ボールの衝突をFunctional Reactive Programmingで表現する(6)

7.一直線状で衝突するボール(基本部分) 7.1 基本的な考え方 衝突するボールでは、二つのボールが存在する。そこで、\(t\)の時間での二つのボールの値をb1,b2で表すこととする。また、ボールの値を作り出してくれるWireをballとする。また、ボールが衝…

ボールの衝突をFunctional Reactive Programmingで表現する(5)

6.Reactive Functional Programmingの神髄 以前の記事で、ニュートン力学に従って落下する物体が地面で跳ね返る様子を記述したが、その時のプログラムは次のようになっていた。 rec a <- pure aInit -< undefined v <- integralWith' correct vInit -< (a,…

ボールの衝突をFunctional Reactive Programmingで表現する(4)

5.すり抜けるボール 衝突するプログラムをいきなり設計するのは、少し、手ごわいので、易しいものから、順番に組み立てていく。まずは、衝突を検知しないプログラムを作成する。これは、二つのボールが正しく動くことを確認するためのプログラムである。 …

ボールの衝突をFunctional Reactive Programmingで表現する(3)

4.追突するボールをプログラミングするために準備 先の記事で、一直線上を走る二つのボールでの追突後の速度を求めた。即ち、二つのボールの質量をそれぞれ\(m_1\),\(m_2\)、追突前の速度をそれぞれ\(v_1\), \(v_1\)とすると、追突後の速度はそれぞれ \(v'…

ボールの衝突をFunctional Reactive Programmingで表現する(2)

3.追突するボール 簡単な問題で本質をつかんで、一般的な問題に進むのが、常套手段である。特に、高校時代に勉強して以来何十年も力学系の問題などは解いたことはないので、その感覚を取り戻すためにも、簡単な問題を解く中でいろいろなことを観察するのが…

ボールの衝突をFunctional Reactive Programmingで表現する(1)

今年の夏は、気象庁の発表によれば、平年並みの暑さだったそうである。後半に入って、気温がずっと下がったせいだ。しかし、気温が下がり始めるのと同時にマレーシアに行ったものにとっては、この夏はずっと猛暑であったように感じている。とても、過ごしに…

クアラルンプール

8月23日から28日まで、国際会議で、クアラルンプールを訪問した。マレーシアに対しては、452メートルの高さを誇るペトロナス・ツインタワーを建設できるまでになった経済成長と、この国から日本に留学してくる学生がとても穏やかであるという印象を出発前に…

Haskell+Ubuntu Mate+Raspberry Pi (3)

8.Haskellラッパー wiringPiの実装が終了したので、HaskellからRaspberry PiのGPIOを利用できるようにするために、ラッパーを作成する。これには、Haskellの外部関数インタフェースを利用すればよい。このインタフェースは、WiringHs.hsとして作成し、GitH…

Haskell+Ubuntu Mate+Raspberry Pi (2)

7.wiringPiを実装する シェルスクリプトを用いてのgpioの制御は、LEDの点滅のような単純な場合には、大きな問題を生じない。しかし、本格的なプログラムを書くときは適しているとは言えない。Raspberry Piにはgpioの制御のためにwiringPiというライブラリ…

Haskell+Ubuntu Mate+Raspberry Pi (1)

1.Ubuntu Mate Raspberry Piの第二世代が2015年2月より販売され(プロセッサはARMv7)、それに伴って、利用できるOSも多様化した。Ubuntを利用したいという開発者にとっては、これは大きなニュースである。Raspberry Pi 2用にUbuntu Mate (15.04)も用…