アカウント名:
パスワード:
つまり
もし、制御を分散させる(モジュール化してテストしやすくしたり、プラガブルにしたりする)のが本質的に不可能
になったら、それは妥協した関数型プログラミングなだけです。例えて言えば、オブジェクト指向プログラミングなのに静的・グローバル型の値を使いまくるとか。
関数型プログラミングでは入力と出力のみが可変なので、制御を行う部分はユーザーが担ったりフレームワークで吸収したりするべきなのではないでしょうか。
コメント有難うございます。 少し言い方が弱かったでした。(というより未整理状態?) 例を挙げますと、(以下変数は全て十進18桁、内小数5桁)・aとbを掛けcで割り、小数以下3桁で四捨五入(5は無条件に切り上げ)し、 dに転記する。・dをfで割り、小数点以下切り捨てし、gに転記する。の場合、「aとbとcが入力でgが出力の関数だ」というと、プログラマーの人は納得する(関数で良いと思う)けれど、業務知識を授けてくれる業務の人はいい顔しないと思います。(2つは順番の組み換えに余裕が全くないのでそこの所を軽く見られると嫌がる。) 関数⇔制御で対比すると、・一皮むくと関数内に制御が有るという状況が必ず出来ます。#ただしこの場合は制御が分散していないので問題無いです。 ちょっと未整理でした。
少し考えてみましたが、 ★制御とは、切り捨てでは無いか?!と思いました。制御には、コード(値が2値で無いフラグ)を良く使います。1:男、2:女、3:不明とかです。これは多様な性を切り捨て、処理を簡便に安定的にする働きが有ります。もし次世代の性別コードが策定され、3つより多い種類となった場合でも、いざ策定された後には、「自分だけの性なので、特別な性別コードを振るべきだ」と言っても、無理でしょう。制御とは、コードとは切り捨てだからです。 制御が切り捨てだとすると、・早い、正確・コードを得るタイミング(コードを算定できるだけの豊富な 情報が捨てられず残っているタイミング)以降は、 再度コードを得る事が出来ない。 すなわち、処理に(かなり)強い順序の強制が有る。・コードを算定できるだけの豊富な情報を捨てずに残しておくと しても、元データから常に立ち戻って処理をするのは遅くなる。 1分が100分になり、1時間が100時間になるに違いない。となるでしょう。 切り捨てを一切しない、逆関数が成り立つシステムは遅いです。データベースにインデックスを作る事も出来ないでしょうし、もっと粗い分類も、コード化しないと毎回全データをなめまくりになるからです。 早く不自由な「制御」こそ凝集されるべきで、条件の緩い「関数」は、便利なフットプリントを「制御」に譲るのが良いと思います。#電車内で、人の迷惑を一切斟酌せず、足の踏み場をわがままに#確保する女性の様ですが、関連が有るのかは不明です。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
海軍に入るくらいなら海賊になった方がいい -- Steven Paul Jobs
関数型プログラミングには副作用がない (スコア:0)
つまり
もし、制御を分散させる(モジュール化してテストしやすく
したり、プラガブルにしたりする)のが本質的に不可能
になったら、それは妥協した関数型プログラミングなだけです。
例えて言えば、オブジェクト指向プログラミングなのに静的・グローバル型の値を使いまくるとか。
関数型プログラミングでは入力と出力のみが可変なので、
制御を行う部分はユーザーが担ったりフレームワークで吸収したりするべきなのではないでしょうか。
Re: (スコア:1)
コメント有難うございます。
少し言い方が弱かったでした。(というより未整理状態?)
例を挙げますと、(以下変数は全て十進18桁、内小数5桁)
・aとbを掛けcで割り、小数以下3桁で四捨五入(5は無条件に切り上げ)し、
dに転記する。
・dをfで割り、小数点以下切り捨てし、gに転記する。
の場合、「aとbとcが入力でgが出力の関数だ」というと、プログラマーの
人は納得する(関数で良いと思う)けれど、業務知識を授けてくれる業務の
人はいい顔しないと思います。(2つは順番の組み換えに余裕が全くないので
そこの所を軽く見られると嫌がる。)
関数⇔制御で対比すると、
・一皮むくと関数内に制御が有る
という状況が必ず出来ます。
#ただしこの場合は制御が分散していないので問題無いです。
ちょっと未整理でした。
Re:関数型プログラミングには副作用がない (スコア:1)
少し考えてみましたが、
★制御とは、切り捨てでは無いか?!
と思いました。
制御には、コード(値が2値で無いフラグ)を良く使います。
1:男、2:女、3:不明
とかです。
これは多様な性を切り捨て、処理を簡便に安定的にする
働きが有ります。
もし次世代の性別コードが策定され、3つより多い種類となった
場合でも、いざ策定された後には、「自分だけの性なので、
特別な性別コードを振るべきだ」と言っても、無理でしょう。
制御とは、コードとは切り捨てだからです。
制御が切り捨てだとすると、
・早い、正確
・コードを得るタイミング(コードを算定できるだけの豊富な
情報が捨てられず残っているタイミング)以降は、
再度コードを得る事が出来ない。
すなわち、処理に(かなり)強い順序の強制が有る。
・コードを算定できるだけの豊富な情報を捨てずに残しておくと
しても、元データから常に立ち戻って処理をするのは遅くなる。
1分が100分になり、1時間が100時間になるに違いない。
となるでしょう。
切り捨てを一切しない、逆関数が成り立つシステムは遅いです。
データベースにインデックスを作る事も出来ないでしょうし、
もっと粗い分類も、コード化しないと毎回全データをなめまくり
になるからです。
早く不自由な「制御」こそ凝集されるべきで、条件の緩い「関数」
は、便利なフットプリントを「制御」に譲るのが良いと思います。
#電車内で、人の迷惑を一切斟酌せず、足の踏み場をわがままに
#確保する女性の様ですが、関連が有るのかは不明です。