「frp」を含む日記 RSS

はてなキーワード: frpとは

2016-05-20

http://anond.hatelabo.jp/20160519142942

何度も指摘されているが「岡部氏のFRP」は同じメンバ変数tに何度も値を上書きしてるだけの

FRP以前に関数型でもない普通命令プログラムいくら論文曲解したり哲学とか言い訳しても

客観的には単なるメンバ変数への破壊的代入。オブジェクトconstをつけたところで

メンバ変数constにはならない。


http://kenokabe-techwriting.blogspot.com/2016/05/ocamlgui-esumii-camloebanonstarter.html

__items.t = __value.t

コードで、これがもし破壊的代入ならば、

const ListElement = __Element(__([__items])

.__(() => ......

というように、「破壊」されたはずの、過去の__items.tすべてのデータアクセスして列挙表示できてるのは何故?

説明どうぞ?

http://anond.hatelabo.jp/20160520054338

http://kenokabe-techwriting.blogspot.jp/2016/05/frp_18.html

使ってるライブラリソースコード=「処理系」なるもの

残りは全部、使ってるライブラリソースコードからfrequencyやリフレッシュレートやら、timerの解像度っぽいことをアピールしてるみたいですが、

タイマー解像度設定しながらマウスイベントを同時にとってなんかやることと、

実際のシステム時刻t=0,1,2,…に適用して

状態f(0),f(1),f(2),…を得る、という本来FRPの基本原理

ってまったく違うでしょ?

誤魔化すなと。

その「処理系」ふくめて、マウスポインターの状態を、

実際のシステム時刻t=0,1,2,…のtから

状態f(0),f(1),f(2),…を得る

というのはどこだ?とけなされているのだけど、

イベントごとに写像されているのだから状態f(t)だ、とかいうのなら、

岡部氏の言う時間軸をストリームにする、という話と関係ないのに、

ただ「実際のシステム時刻t=0,1,2,…」って言いたかっただけちゃうんか?ってのは見るものすべてにバレてる誤魔化しだ、って意味でしょ?

http://anond.hatelabo.jp/20160519190929

http://kenokabe-techwriting.blogspot.jp/2016/05/frp_18.html

使ってるライブラリソースコード=「処理系」なるもの

残りは全部、使ってるライブラリソースコードからfrequencyやリフレッシュレートやら、timerの解像度っぽいことをアピールしてるみたいですが、

タイマー解像度設定しながらマウスイベントを同時にとってなんかやることと、

実際のシステム時刻t=0,1,2,…に適用して

状態f(0),f(1),f(2),…を得る、という本来FRPの基本原理

ってまったく違うでしょ?

誤魔化すなと。

その「処理系」ふくめて、マウスポインターの状態を、

実際のシステム時刻t=0,1,2,…のtから

状態f(0),f(1),f(2),…を得る

というのはどこだ?とけなされているのだけど、

イベントごとに写像されているのだから状態f(t)だ、とかいうのなら、

岡部氏の言う時間軸をストリームにする、という話と関係ないのに、

ただ「実際のシステム時刻t=0,1,2,…」って言いたかっただけちゃうんか?ってのは見るものすべてにバレてる誤魔化しだ、って意味でしょ?

http://anond.hatelabo.jp/20160520051838

言い訳だよね?

結局、nonstarterは「状態渡し」でもFRPでも複雑なアプリになっても事情は全く同じということを主張しているのだから、その真実性を証明してくれと要求されているにすぎない。

http://anond.hatelabo.jp/20160520061815

nonstarter氏のエントリについても、kenokabe氏は

>>(イベントシグナから状態シグナルを構成する際に状態遷移をそうした関数表現する必要が出てくるので)

??????意味不明

>まあ、この人物がFRPが何たるか理解していないのは、ほぼ確実でしょう。

などと言っていますが、「イベントシグナル」(各時間ごとの入力の列)から状態シグナル」(各時間ごとの出力の列)を「構成」する、

平たく言えば前者から後者への関数定義しようとすると、例えば前者をe1,e2,e3,...、後者s1,s2,s3,...として、

多くの場合s1とe1からs2を求め、s2e2からs3を求め、s3とe3からs4を求め…となるので

s2 = f(s1,e1)

s3 = f(s2,e2)

s4 = f(s3,e3)

...

なるfを考えれば、そのfがまさに状態渡しを行う遷移関数のものになります

このことはnonstarter氏のエントリでもHaskellFRPライブラリで書かれたGUIプログラム実例を用いて具体的に説明されているのですが、

それが「意味不明」に思えるとしたら「FRP理解していない」のはどちらなのでしょうか……

http://anond.hatelabo.jp/20160519142942

状態渡し派」なんてレッテル張り典型的詭弁藁人形論法)。

誰も状態渡しで何でも簡単に書けるなんて言ってないし、状態渡しで書くべきとも言ってない。

お絵かきアプリ」には自称FRP絶対必要、という明らかに誤った主張に対する反例として

nonstarter他が「状態渡し」を挙げただけ。

それなのにHaskellから認めないとか、OCamlでも簡単だったから認めないとか……

自分で「FRP必要」と断言して挙げた例題なのに。

2016-05-19

http://anond.hatelabo.jp/20160518171946

何度も指摘されているが「岡部氏のFRP」は同じメンバ変数tに何度も値を上書きしてるだけの

FRP以前に関数型でもない普通命令プログラムいくら論文曲解したり哲学とか言い訳しても

客観的には単なるメンバ変数への破壊的代入。オブジェクトconstをつけたところで

メンバ変数constにはならない。

 

じゃあOCaml純粋関数型や(本当の)FRPで複雑なGUIアプリが書けるかと言うと、

理論的には不可能ではないかもしれんが、もともと非純粋なので

誰もそういうライブラリを整備してないから、ライブラリから作るのは

まあ面倒だろうし、わざわざ非純粋関数型言語純粋関数型のGUIを作る動機

現時点ではまずないだろう。これもすでに指摘されているとおり。

 

もっとも「岡部氏」は「お絵かきアプリ」も「FRP実装が必ず必要となります。」と自分ブログで断言し、

その反例としてOCamlやらHaskellやらのコード直ちに書かれた以上、また話を逸らすのも大概ではある。

2016-05-18

http://anond.hatelabo.jp/20160518171946

状態渡し派の関数型には書けない次なるお題のいいアイデアある?

FRPかいても複雑さは一緒です!とかいいながら、またHaskell+ReactiveBananaかElm使ったら笑うけどなw

http://anond.hatelabo.jp/20160518170332

まあお絵かきは綺麗に書けるってことでいいんじゃないの?

そんで岡部氏のFRPでは綺麗に書けて、状態渡し派の関数型には書けない次なるお題でとどめを刺せばいいんでは?

http://anond.hatelabo.jp/20160518164005

そんな「状態渡し」の話はもう周回遅れでとっくに終わってる。

複雑なGUIアプリ関数型で「状態渡し」で書いたら、そのうちスケールしなくなる、ってのは例の当事者が認めてて、

FRPに話がようやく移ったのが今。

http://kenokabe-techwriting.blogspot.jp/2016/05/timeengine-frp.html

2016-05-17

http://anond.hatelabo.jp/20160517162141

FRPでなく状態渡しでも書ける!」ってのだけみたけど、

どこにFRP,特に

http://anond.hatelabo.jp/20160517023637

ライブラリユーザ現在時刻から状態への写像fを

参照透明な関数なりストリームなりで記述して、

それを処理系が実際のシステム時刻t=0,1,2,…に適用して

状態f(0),f(1),f(2),…を得る、という本来FRPの基本原理

っていうお絵かきアプリがあるのかねえ。まあ逃げたい、という意気込みだけはわかった。

まあ、あるんなら、リンク場所明示して出してみな。無いものは出せないよなw

http://anond.hatelabo.jp/20160517162141

FRPでなく状態渡しでも書ける!」ってのだけみたけど、

どこにFRP,特に

http://anond.hatelabo.jp/20160517023637

ライブラリユーザ現在時刻から状態への写像fを

参照透明な関数なりストリームなりで記述して、

それを処理系が実際のシステム時刻t=0,1,2,…に適用して

状態f(0),f(1),f(2),…を得る、という本来FRPの基本原理

っていうお絵かきアプリがあるのかねえ。まあ逃げたい、という意気込みだけはわかった。

まあ、あるんなら、リンク場所明示して出してみな。無いものは出せないよなw

http://anond.hatelabo.jp/20160517023637

>それを処理系が実際のシステム時刻t=0,1,2,...に適用して状態f(0),f(1),f(2),...を得る、という本来FRPの基本原理

じゃあ、その「本来FRPの基本原理」なるもので、お絵かきアプリ実装してみせて?って突っ込まれてるよw

http://kenokabe-techwriting.blogspot.jp/2016/05/frp.html

http://anond.hatelabo.jp/20160517022608

>それをユーザから見て命令変数への破壊的代入ではなく参照透明な関数インターフェースで実現するのがいわゆるモナドや(誰かの独自解釈ではない本来の)FRP

はい、戯れ言への反論がkenokabeよりBlogでされました。

http://kenokabe-techwriting.blogspot.jp/2016/05/frp.html

http://anond.hatelabo.jp/20160517022608

命令プログラムFRPとか言ってる人が決定的に理解していない点は、

ライブラリユーザ現在時刻から状態への写像fを

参照透明な関数なりストリームなりで記述して、

それを処理系が実際のシステム時刻t=0,1,2,...に適用して

状態f(0),f(1),f(2),...を得る、という本来FRPの基本原理だと思う。

まさに実装命令的だけど(誰かさんもそこは正しい)、

ライブラリユーザは参照透明な関数型の記述可能

http://anond.hatelabo.jp/20160516152330

それをユーザから見て命令変数への破壊的代入ではなく

参照透明な関数インターフェースで実現するのが

いわゆるモナドや(誰かの独自解釈ではない本来の)FRP

http://elm-lang.org/examples/time

view : Model -> Html Msg
view model =
  let
    angle =
      turns (Time.inMinutes model)

    handX =
      toString (50 + 40 * cos angle)

    handY =
      toString (50 + 40 * sin angle)
  in
    svg [ viewBox "0 0 100 100", width "300px" ]
      [ circle [ cx "50", cy "50", r "45", fill "#0B79CE" ] []
      , line [ x1 "50", y1 "50", x2 handX, y2 handY, stroke "#023963" ] []
      ]

HaskellライブラリもElmのような言語も、サンプルもJavaScript実装

ググればWikipediaで出てくるレベル

https://en.wikipedia.org/wiki/Functional_reactive_programming#Implementations

2016-05-16

http://anond.hatelabo.jp/20160516194527

いや、おまえは、単に、マウスイベントを拾って、FRPストリームに流す、という接続部分、つまりFRP変数への書き込みについて、イチャモンつけてるんだよな?おまえにとっての「自動」の「同期」って何?

マウス位置と、変数自動的に同期してくれる

マウスイベントなりをラップしたFRPライブラリで、そのラップイベント宣言したら、ラップ変数自動的に流れるとかそういうこと言いたいんだろうが、そこからその変数関数なりで変換して行くのに、それがラップされてようがされてまいが、手間はまったく一緒だって理解してる?

あと、そういう既知のイベントなら、既知のマウスイベントなりを全部ラップしてやろうとおもえば、やれないことないだろうし、できるが、

既知ではない、FRPライブラリラップされてないIOイベントとかどうすんの?w あほなの?w

たとえば、HTTPイベントWebSocketイベント、全部FRPライブラリラップして、

>マウス位置と、変数自動的に同期してくれる

みたいにやるのか? 誰かが書いてくれるまで待つとか?w

あと、マウス位置から10オフセットさせたい、とかオプションも無数にありうるわな?

オプションサポートされてないラップだったらどうすんの?w やっぱアホなの?w

最初からネイティブイベントあったら、かんたんにできるだろ?ラップAPI参照せずにすむだろ?あほなの?w

あと、そういう原理的にアホな実装FRPライブラリかくあるべき!って誰が決めたの?アホなおまえが決めたの?w

http://anond.hatelabo.jp/20160516183801

「お前が意味理解していること」の大前提を当然同時に示しながら批判するなら批判しろや。

それは示してるつもりだけど

マウスイベントFRPライブラリラッピングして、そのラッピングした場所に、リアクティブな処理を書き込むのがFRPライブラリだという定義

そこまでは言わないけど「状態自動的に最新に更新してくれる」はFRPライブラリ要件じゃないの?

入力と内部状態の同期を意識しなくても、内部状態は常に最新を反映している、っていうのがFRP抽象化だと思うんだけど。

マウス位置と、変数自動的に同期してくれるのはその1つでしょ?

https://en.wikipedia.org/wiki/Reactive_programming

automaticallyってあるじゃん

http://anond.hatelabo.jp/20160516192742

まず、

>……と言っても聞き入れていただけるとは思えないので、私ももうこれ以上の書き込みはやめます

できるだけ丁寧に技術的な誤りだけを指摘したつもりですが、やはり誹謗中傷しか返ってこないようで残念です。

住井乙。 実名相手反論するのなら実名でオモテでやれ、糞が。おまえこれまで一度たりとして、正面きって、自分名前かけて批判したことあんのか?

ほんと卑怯者の糞だよな?

次。

> __x.t = __x.t + 1;

2

自分で、わざわざ

命令言語破壊的代入そのものコード書いて、論理破綻だと?頭湧いてんのか?

JavaScriptにおいて、時間軸を抽象化したファーストクラスを導入したFRPライブラリ実装することは、

JavaScriptにおいて、おまえがやらかしたような命令言語破壊的代入そのものコードを書くことを禁じる仕組みを導入することとを保証するものでもなんでもない。

「できるだけ丁寧に技術的な誤りだけを指摘したつもり」とか、おまえが相当頭悪いのは前から知ってるので、今更だ。

おわり

http://anond.hatelabo.jp/20160516173021

岡部氏のコード時間軸を抽象化したファーストクラスになってないでしょ?

なってるけど?それしかやってないライブラリだし。

つーか、おまえの悪質なイチャモンにはうんざりしてるんで、なってないでしょ?とかほざく前に、どこがどうなってないのか?「お前が意味理解していること」の大前提を当然同時に示しながら批判するなら批判しろや。

自分で書き換えるんじゃ抽象化されてないじゃん。自分で書き換えなくても、フレームワーク側で自動的に最新の状態に保ってくれる仕組みが「時間軸を抽象化」してるってことでしょ?

えーっとどういうこと?

マウスイベントFRPライブラリラッピングして、そのラッピングした場所に、リアクティブな処理を書き込むのがFRPライブラリだという定義

で、どこの誰がそんなオレオレFRP定義をしたんだい?w ソースをどうぞ?W

あのなあ、「時間軸を抽象化したファーストクラス」ってのは、別にイベントから自動的更新される「読み取り専用」じゃねーのよw

イベントと紐付いてない、他の、「時間軸を抽象化したファーストクラス」との関係性を記述するときに「読み取り専用」ならどうやって記述するの?

おら、こたえてみろボンクラ

http://anond.hatelabo.jp/20160516182929

岡部氏のコード時間軸を抽象化したファーストクラスになってないでしょ?

なってるけど?それしかやってないライブラリだし。

つーか、おまえの悪質なイチャモンにはうんざりしてるんで、なってないでしょ?とかほざく前に、どこがどうなってないのか?「お前が意味理解していること」の大前提を当然同時に示しながら批判するなら批判しろや。

自分で書き換えるんじゃ抽象化されてないじゃん。自分で書き換えなくても、フレームワーク側で自動的に最新の状態に保ってくれる仕組みが「時間軸を抽象化」してるってことでしょ?

えーっとどういうこと?

マウスイベントFRPライブラリラッピングして、そのラッピングした場所に、リアクティブな処理を書き込むのがFRPライブラリだという定義

で、どこの誰がそんなオレオレFRP定義をしたんだい?w ソースをどうぞ?W

あのなあ、「時間軸を抽象化したファーストクラス」ってのは、別にイベントから自動的更新される「読み取り専用」じゃねーのよw

イベントと紐付いてない、他の、「時間軸を抽象化したファーストクラス」との関係性を記述するときに「読み取り専用」ならどうやって記述するの?

おら、こたえてみろボンクラ

http://anond.hatelabo.jp/20160516182201

FRPとは時間軸を抽象化したファーストクラス

岡部氏のコード時間軸を抽象化したファーストクラスになってないでしょ?

自分で書き換えるんじゃ抽象化されてないじゃん。

自分で書き換えなくても、フレームワーク側で自動的に最新の状態に保ってくれる仕組みが「時間軸を抽象化」してるってことでしょ?

http://anond.hatelabo.jp/20160516181416

まず、

1.繰り返しになるが、お前の言う「グローバル変数」とかいイチャモン批判になっていない。なぜなら、サンプルコードでそれがグローバルなのは、単に、マウスイベント、座標と、階層が一層の単純で、一層=グローバルになっているだけ。おまえの初見思い込みを延々と押し付けトンチンカンイチャモンつけるな。

2.ブログ公式サイトにさんざん説明されているとおり、FRPとは時間軸を抽象化したファーストクラスリアクティブ関数ひも付けもので、その実装とDEMOコードがさんざん示されている。その上で、「おれのおもってること違う?」とか、馬鹿駄々こねているようにしかみえないし、「違う」と切り捨てる気にしかならない。

3.FRP変数、定数と、リアクティブな振る舞いはサンプルコードにおいて接続されて実装されているし、自分イベント拾って、とか、そのイベントをあるFRPライブラリがわざわざなんかでラッピングして、無駄に使いにくくしようとも、素のママでかけるFRPライブラリであっても、FRPライブラリはこうであるはずだ、とかいうお前の無知とは無関係

http://anond.hatelabo.jp/20160516174234

FRPって関数型プログラミング+リアクティブプログラミングでしょ?

そんで、リアクティブプログラミングって、

__drawFrom.t = {
        x: e.clientX,
        y: e.clientY
      };

みたいなグローバル変数を書き換えるコード自分で書くんじゃなくて、

この変数とこの入力欄/入力ボタンは結びついてます、って書くだけで、フレームワーク利用者に見えないところで、自動的更新してくれる仕組みだよね?

既存FRPライブラリってそうじゃない?

自分イベント拾ってグローバル変数書き換えてたらFRPじゃないよね?

違う?

ログイン ユーザー登録
ようこそ ゲスト さん