bitterharvest’s diary

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

Functional Reactive Programming

Reactive Bananaで学ぶリアクティブ・プログラミング(4)

6.時間 Reactive Bananaでは時間は連続的であるが、ここで説明しているモデルでは、時間は離散的である。モデルでは、時間は0で始まる自然数を用いて、次の様に定めている。 -- | Natural numbers (poorly represented). type Nat = Int -- | The FRP mode…

Reactive Bananaで学ぶリアクティブ・プログラミング(3)

5.音符をイベントに 最近は楽譜を作成するソフトには素晴らしいものがいくつかあり、わざわざ、Reactive Bananaを用いて楽譜を表そうとしても意味がないのかもしれない。しかし、現実の世界を関数型言語でどのように表すことができるのかを提示することは…

Reactive Bananaで学ぶリアクティブ・プログラミング(2)

昨日は退職者慰労会が催された。これで、本当に退職するのだなあという実感がわいてきた。家に戻って、退職後の仕事をする場所の整備に取り掛かった。主たる仕事は、文章を書いたり、プログラムを作成したりなので、まず最初にパソコン関係の設置を行った。…

Reactive Bananaで学ぶリアクティブ・プログラミング(1)

1.退職というイベント 2か月近くもブログが中断してしまったが、別れの季節の年度末を迎えたためである。多くの大学では卒業論文を課している。私が所属している大学も、そのようになっているので、追い込みとなる1月は、その指導に多くの時間がとられる。…

関数型リアクティブ・プログラミング入門 ― イベント

2.イベント 関数型リアクティブプログラミングは、シミュレーションに応用すると面白いと思う。そんなことを考えながら、最近、山室京子著『大江戸商い白書』を読んでいる。この本は、江戸時代の商人たちの実像を、当時のデータから数値解析で、明らかにし…

関数型リアクティブ・プログラミング入門 ― リアクティブ・プログラミング

1.リアクティブ・プログラミング Reactive programmingの意味を明確にしたいと思って、reactiveをオンラインのLongman辞書で調べてみた。すると、reacting to events or situations rather than starting or doing new things yourself(自分自身で新しい…

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のロゴをカーソル…

Reactive-banana 紹介(6)

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

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)

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