アカウント名:
パスワード:
つまり
もし、制御を分散させる(モジュール化してテストしやすくしたり、プラガブルにしたりする)のが本質的に不可能
になったら、それは妥協した関数型プログラミングなだけです。例えて言えば、オブジェクト指向プログラミングなのに静的・グローバル型の値を使いまくるとか。
関数型プログラミングでは入力と出力のみが可変なので、制御を行う部分はユーザーが担ったりフレームワークで吸収したりするべきなのではないでしょうか。
コメント有難うございます。 少し言い方が弱かったでした。(というより未整理状態?) 例を挙げますと、(以下変数は全て十進18桁、内小数5桁)・aとbを掛けcで割り、小数以下3桁で四捨五入(5は無条件に切り上げ)し、 dに転記する。・dをfで割り、小数点以下切り捨てし、gに転記する。の場合、「aとbとcが入力でgが出力の関数だ」というと、プログラマーの人は納得する(関数で良いと思う)けれど、業務知識を授けてくれる業務の人はいい顔しないと思います。(2つは順番の組み換えに余裕が全くないのでそこの所を軽く見られると嫌がる。) 関数⇔制御で対比すると、・一皮むくと関数内に制御が有るという状況が必ず出来ます。#ただしこの場合は制御が分散していないので問題無いです。 ちょっと未整理でした。
入力パラメータの指定順に意味があり組み替えできないと理解しているからこそプログラマーは納得してくれますし、一方でパラメータの指定順に意味が無い世界で過ごしている業務の人は納得してくれないのだと思います。つまり軽く見ているのは業務の人側。入力パラメータが並列に見えるabcなのがいけないのかもしれませんが。もしかしたら(ここにはありませんが)関数名が汎用に見えるのがいけないのかもしれません。例えば同じような計算を行っているとしても、違う業務なら違う関数名をつけるはずです。そしてその中で同じ汎用関数を呼び出すでしょう。
単に「関数」と言った時、無条件に「陽関数」のみに限定してしまうのが敗因かも知れません。「陰関数」を念頭に置けば、・普通のプログラムの何行目から何行目までに、関数を見出すとかも有り得、殊更に「関数型」をいう必要も無く、みんなが穏やかに過ごす世界を想像できます。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
目玉の数さえ十分あれば、どんなバグも深刻ではない -- Eric Raymond
関数型プログラミングには副作用がない (スコア:0)
つまり
もし、制御を分散させる(モジュール化してテストしやすく
したり、プラガブルにしたりする)のが本質的に不可能
になったら、それは妥協した関数型プログラミングなだけです。
例えて言えば、オブジェクト指向プログラミングなのに静的・グローバル型の値を使いまくるとか。
関数型プログラミングでは入力と出力のみが可変なので、
制御を行う部分はユーザーが担ったりフレームワークで吸収したりするべきなのではないでしょうか。
Re: (スコア:1)
コメント有難うございます。
少し言い方が弱かったでした。(というより未整理状態?)
例を挙げますと、(以下変数は全て十進18桁、内小数5桁)
・aとbを掛けcで割り、小数以下3桁で四捨五入(5は無条件に切り上げ)し、
dに転記する。
・dをfで割り、小数点以下切り捨てし、gに転記する。
の場合、「aとbとcが入力でgが出力の関数だ」というと、プログラマーの
人は納得する(関数で良いと思う)けれど、業務知識を授けてくれる業務の
人はいい顔しないと思います。(2つは順番の組み換えに余裕が全くないので
そこの所を軽く見られると嫌がる。)
関数⇔制御で対比すると、
・一皮むくと関数内に制御が有る
という状況が必ず出来ます。
#ただしこの場合は制御が分散していないので問題無いです。
ちょっと未整理でした。
Re: (スコア:0)
入力パラメータの指定順に意味があり組み替えできないと理解しているからこそプログラマーは納得してくれますし、
一方でパラメータの指定順に意味が無い世界で過ごしている業務の人は納得してくれないのだと思います。
つまり軽く見ているのは業務の人側。
入力パラメータが並列に見えるabcなのがいけないのかもしれませんが。
もしかしたら(ここにはありませんが)関数名が汎用に見えるのがいけないのかもしれません。
例えば同じような計算を行っているとしても、違う業務なら違う関数名をつけるはずです。
そしてその中で同じ汎用関数を呼び出すでしょう。
Re:関数型プログラミングには副作用がない (スコア:1)
単に「関数」と言った時、無条件に「陽関数」のみに限定してしまうのが
敗因かも知れません。
「陰関数」を念頭に置けば、
・普通のプログラムの何行目から何行目までに、関数を見出す
とかも有り得、殊更に「関数型」をいう必要も無く、みんなが穏やかに
過ごす世界を想像できます。