「ストリーム」を含む日記 RSS

はてなキーワード: ストリームとは

2016-05-25

http://anond.hatelabo.jp/20160524164501

関数型という枠組みの中にミュータブルな時間要素が純粋に収まるようにしているのがFRPだろ。

ストリーム関数の外部に持つFRP純粋関数型っていうのは少数派でしょ。

関数の結果が引数以外で決まるわけだからさ。

多分、純粋とかの定義もまた違うんだろうね。

関数型の拡張」で全部丸く収まると思うんだけど。

いやそもそも岡部氏が複雑なアプリになるとFRP必要

これはGUIアプリ(対話的なアプリ)ってことでいいのかな。

コンパイラだとかをFRPで書かないでしょ。

ユーザから入力リアルタイムに処理するプログラムにはFRP有効だよね。

事実、「駱駝」は「状態渡しはむしろ異常」って書いた上に、

OCamlでは」じゃないの?

全部純粋関数型(引数戻り値に収める、状態渡し)にするのを良しとするHaskellと違って、OCaml副作用部分的に使うのが普通で、IOモナドみたいな入出力までも純粋に書くための道具立てが揃ってない、それでちょっと冗長になる、ってことでしょ?

OCamlの元々の推奨スタイルならもっと短く書けるんでしょ?

俺はそう読んだけど。

それっぽい書き込みほどそうやって、事実誤認だ、と強調するから、なんで当事者でもないのに、そんなことが断言できて、電波だということになるんだ?

だって駱駝でも住井でもない面識も無い俺の書き込みが住井扱いされるんだもの

いやだから、どの関数で読み書きされようと、誰が書き換えようとも、時間にたいしてイミュータブルな定数なんだから、定数は定数なのよ。

いやだからグローバル変数使ってるプログラム欠点をそのまま持ってるじゃん

グローバル変数使ってるプログラム欠点説明する必要ある?

2016-05-24

http://anond.hatelabo.jp/20160524161137

拡張なら「関数型的じゃない」っていわれたら「関数型を拡張してるから」って答えればいいだけの話

関数型という枠組みを拡張しているのではなく、関数型という枠組みの中にミュータブルな時間要素が純粋に収まるようにしているのがFRPだろ。「関数型を拡張してるから」というのは、また独自拡張だ、という批判を許すし、FRP関数型の拡張だというのは誤解を招くし、語弊もある。

FRPの効力を否定なんて誰もしてない(よね)

いやそもそも岡部氏が複雑なアプリになるとFRP必要だ、と批判すると状態渡しで充分だ、という反発があった。それが誤魔化しだとして、今に至るし、否定されているから一連のブログでの徹底的なまでの反撃がなされている。

「これが正しい関数型でお前らの状態渡しは間違ってる」みたいに言うから荒れる

事実、「駱駝」は「状態渡しはむしろ異常」って書いた上に、岡部氏のコードの倍の分量の複雑なコードしか示せなかった。あの無理して書いたのが第三者にもまるわかりの状態渡しの実装って間違ってるんじゃないの?

個人的電波だと思うのはこういう匿名書き込みを住井だ駱駝だ言い出すところ

これまでのアンチ岡部のやり方を眺めていると、被害者岡部氏の分析には一定の信ぴょう性が認められるよね?

しかも、それっぽい書き込みほどそうやって、事実誤認だ、と強調するから、なんで当事者でもないのに、そんなことが断言できて、電波だということになるんだ?という素朴な疑問がある。当事者から否定してるんだろ、と誰が見てもおもうだろ。

ストリームから定数とか、過去の値保存してるから定数とか言ってみたところで、プログラム内の色んな関数から読み書きされる可能性があって誰が書き換えたか中身読まないとわからないんじゃ、グローバル変数使ってるプログラム欠点をそのまま持ってるじゃん

いやだから、どの関数で読み書きされようと、誰が書き換えようとも、時間にたいしてイミュータブルな定数なんだから、定数は定数なのよ。

グローバル変数ってのはFRP関係ないだろ?

http://anond.hatelabo.jp/20160524151555

FRPライブラリサブタイトルに、 library that provides first class reactive value 'over time' と書かれている、これ拡張じゃないのか?

拡張なら「関数型的じゃない」っていわれたら「関数型を拡張してるから」って答えればいいだけの話

すでに出たサンプルからFRPの効力がまざまざと見せつけられている。

FRPの効力を否定なんて誰もしてない(よね)

「これが正しい関数型でお前らの状態渡しは間違ってる」みたいに言うから荒れる

間違っている電波

個人的電波だと思うのはこういう匿名書き込みを住井だ駱駝だ言い出すところ

いやだから、定数なんだから書き換わらないんだよ、FRPストリームconst 定数なんだから

ストリームから定数とか、過去の値保存してるから定数とか言ってみたところで、プログラム内の色んな関数から読み書きされる可能性があって誰が書き換えたか中身読まないとわからないんじゃ、グローバル変数使ってるプログラム欠点をそのまま持ってるじゃん

http://anond.hatelabo.jp/20160524145224

よーわからんw 岡部氏は、自作ライブラリHPで、

FRP純粋理想とする関数型+時間で変化するストリームを値にマップして扱うリアクティブプログラミングの組み合わせ

まり関数型の拡張っていうなら誰も反対無いと思うんだけど。

FRPライブラリサブタイトルに、 library that provides first class reactive value 'over time' と書かれている、これ拡張じゃないのか?

https://www.npmjs.com/package/timeengine

HaskellのIOモナドみたいな別の抽象化DISりつつ、FRPこそ正しい関数型みたいに言うから荒れるんじゃないの?

IOモナドDisってるのかどうかまでは知らない。しかし、すでに出たサンプルからFRPの効力がまざまざと見せつけられている。

荒れるのは自由だけど、両方正しいとかそういうのじゃなくて、間違っている電波だみたいな叩きしかなくて、要するに感情論で反対派は反発しているだけでOK?

あるよ。

関数がどのパラメータ依存して、何を結果として返すのか明確になる。

グローバルな値を参照したり書き換えたりしてたら、関数の中身読まないとわからなくなる。

短いプログラムならそれでもいいけどね。

別の誰かが書いてたように、上位スコープ内に定義されてるDOMでも、数学ライブラリでもなんでも、引数関数に渡すのか?

グローバルな値を参照したり書き換えたりして

いやだから、定数なんだから書き換わらないんだよ、FRPストリームconst 定数なんだから

関数型のわかりやす説明であって、住井派に反対してるとか、岡部路線とかじゃないよね、と。

オブジェクト指向と対比して考え方をまず学ぶって岡部路線、住井グループはそれを目の敵にしていて集団的攻撃している様をみたプログラミングコミュニティは逃げ、その後、不毛な大地のみが残った。

http://anond.hatelabo.jp/20160524142313

FRP純粋理想とする関数型+時間で変化するストリームを値にマップして扱うリアクティブプログラミングの組み合わせっていうなら、別に誰も反論しないと思うけど。

まり関数型の拡張っていうなら誰も反対無いと思うんだけど。

HaskellのIOモナドみたいな別の抽象化DISりつつ、FRPこそ正しい関数型みたいに言うから荒れるんじゃないの?

全部の時間依存関数にそういうことをする意味はない

あるよ。

関数がどのパラメータ依存して、何を結果として返すのか明確になる。

グローバルな値を参照したり書き換えたりしてたら、関数の中身読まないとわからなくなる。

短いプログラムならそれでもいいけどね。

初心者からFRPのことまで考えてないんだろう。

関数型のわかりやす説明であって、住井派に反対してるとか、岡部路線とかじゃないよね、と。

http://anond.hatelabo.jp/20160524140005

この辺でさ、岡部氏のFRPは、時間軸を持つストリームとしての値っていうのを、特別扱いして外部に持ってるわけじゃん?

岡部氏のFRP」ではなくて、FRPっていうのはそういうもの

反対してる人は、状態を外部(関数引数でも戻り値でも無い所)に持つの関数型的でない、って言ってたわけじゃん?

俺も岡部氏のコード見ながら、この点考えてみたが、時間依存FRPの値を__TIMEVALUEのようなひとつオブジェクトにまとめて、逐一すべての関数引数に加えれば?と思ったが、全部の時間依存関数にそういうことをする意味はない、岡部氏のコードは、反対派ブログに書かれているコードよりも可読性が高く、コード量も半分とか圧倒しているし、「状態渡し」ではアプリは作れない、というのも岡部氏が正面切って批判するまで誰もはっきりと言わなかったことも反対派の信用性がない理由。それに「岡部氏のFRP」とか文句言う反対派の理解が怪しいと俺も思うようになった。

上で引用してるのは「状態渡し」推奨の立場じゃないの?

初心者からFRPのことまで考えてないんだろう。それだけFRPの「考え方」っていうのは難しいんだよ。

http://anond.hatelabo.jp/20160524133941

このように何か処理を実行した際に、入力として受けつけたデータ以外の物が変化することを"副作用がある"と表現するようです。

関数型言語はこの副作用のないプログラムを目指します。

引数データを受け取り、それ以外の情報を使わず戻り値を返す」関数を作ることを考えましょう

外部に依存しないよう関数の入出力を定める

この辺でさ、岡部氏のFRPは、時間軸を持つストリームとしての値っていうのを、特別扱いして外部に持ってるわけじゃん?

反対してる人は、状態を外部(関数引数でも戻り値でも無い所)に持つの関数型的でない、って言ってたわけじゃん?

岡部氏は時間グローバルなのが当たり前、引数戻り値で表す必要はない(全てを引数戻り値表現する「状態渡し」ではアプリは作れない)って立場じゃん?

上で引用してるのは「状態渡し」推奨の立場じゃないの?

なんで状態渡し否定派の岡部氏の路線になるの?

2016-05-20

http://anond.hatelabo.jp/20160520150555

状態渡しはまやかしだ、とか時間を軸にしたストリームを外部に持ったFRPこそが正しく実用的な関数型、みたいに言うから反対されるって言ってんの。

http://anond.hatelabo.jp/20160520145208

変数」を「時間上のストリーム現在時刻での値」とか言い換えても同じことです。念のため。

命令型ならば、そもそもそういう言い換え=パラダイムの変化は生じない。

そもそもおまえは、

時間軸上のストリーム

という

__x

ってのと、その分布値のひとつである

__x.t

区別さえついてないっぽい。

かなりのアホだな。

http://anond.hatelabo.jp/20160520144913

違うわアホ

同じ一つの変数の値が「処理系評価する時刻」によって変わるのであれば、

それは命令プログラムですね。

同じ一つの変数.ではなく定数というのは、

__x という、時間ストリームであり、

その__x上の分布は、「処理系評価する時刻」に従って広がっている。

このイミュータブルな世界観理解できず、命令型だとしか見られないのは、ライブラリ設計者の問題ではなくて、

おまえの脳の問題。つまりアホなんだわ。

http://anond.hatelabo.jp/20160520144913

変数」を「時間上のストリーム現在時刻での値」とか言い換えても同じことです。念のため。

http://anond.hatelabo.jp/20160520143856

うん、だから、「おまえ」が、

__x.t = 1 と定義した時間

__x.t = 2 と定義した時間

が異なるじゃん。

__xは、時間ストリームだ、って定義なのに、だからおまえは馬鹿なんだよ。自覚持てよ。

http://anond.hatelabo.jp/20160520142159

「別の場所」じゃなくて、

分布値を包括するストリームな。

「別の場所」とか言ってる時点で何も理解できてない。

http://anond.hatelabo.jp/20160520142159

無限ループなのはおまえだろ。

もう一回だけまとめると、__x.t=__x.t+1のような単純な例はもちろん、

その「おまえが書いた命令コード」について、

処理系が、右辺を先に評価して、左辺に代入する

解釈してやった場合

岡部氏のライブラリは、右辺の評価時間におけるxの値を、左辺の評価時間におけるxの値としてイミュータブルなストリーム上に分布する、という説明になるんだろ?

馬鹿から理解できない?

kenokabe氏のGUIコードイベントのたびに同じ変数t(実体はvalOnT)の値を更新しており、

ライブラリの内部的にはな。まだ内部で破壊的代入してるってゴネてるの?精神病

timeengineはライブラリの内部実装だけでなくユーザから見ても関数型ではなく命令型。

ユーザが見ても関数型だが、おまえみたいに命令型のコードかけば、その文脈でも関数型の値が帰ってきたり、定義することができる。

それだけだが、馬鹿から理解できないか

これは過去の値が別の場所に保存されていようが無関係

お前自身がすすんで命令型のコード書いてるんだから、その評価時間のズレで「過去時間」ってのが発生するんだが、命令コード意味しってるかい

http://anond.hatelabo.jp/20160520132506

kenokabe氏が「タイマー解像度設定しながらマウスイベントを同時にとってなんかやる」とか言ってる部分がまさに

(本当の)FRPで書かれたプログラムを実際のハードウェア上で実行するために

ストリームから要素を取り出す」なり「時刻をパラメタとする関数現在時刻に適用」してるところね。

念のため、コードを読まない(読めない?)人のために補足。

http://anond.hatelabo.jp/20160520115435

ストリームから要素を取り出すなり、関数を呼び出すなりして

写像」を「時刻」に適用しなければ実行できるわけないけど

実際に動いてるし、その部分のコードの入口も明示されたのに、

自分に都合の悪いことは徹底的に曲解して「なかったこと」にするのね。

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/20160518160748

http://anond.hatelabo.jp/20160517023637

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

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

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

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

はっきりと「処理系が」って書いてあるのに、K氏は本気で

ユーザプログラムにf(0),f(1),f(2),...みたいなコードがないのが

反論」になると思ったのだろうか……

まさか本当に「処理系」という言葉がわからなかった??

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/20160517022608

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

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

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

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

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

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

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

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/20160516173812

関数型的じゃないよね」って、そりゃお前が思い込んでるおまえら関数型ってのが「状態渡し」に限定されてるからだ。

から現在時刻やらがストリームの一点となってる、FRPとか理解できねーんだろ?って話。

おまえのなかの限定的関数型<FRP

おまえは未知の理解しにくいものを、「関数型的じゃないよね」っていちゃもんつけてるだけ。

馬鹿馬鹿のくせに、理解できないもの否定してんじゃねーよ、ってこと。

http://anond.hatelabo.jp/20160516173021

お絵かきアプリコードがそうだったから?

あんな単純な、マウス座標を扱うときに、マウス座標の状態変数FRPストリーム)の階層グローバルなのは当たり前だけど、

なんか変な思い込みできちゃった?w

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