前に書いたものよりかは、分かりやすい。ハマらなかった。8行目Int()を付けないと、計算がおかしくなった。切り捨てで無いようです。
関数型プログラミングでは、駄目なんでしょうね。変数を使って、値を変えているので。例えば、これが大きなプログラムの一部だとして、バグの入る可能性は有るんでしょうか?
前に書いたものよりかは、分かりやすい。ハマらなかった。8行目Int()を付けないと、計算がおかしくなった。切り捨てで無いようです。
関数型プログラミングでは、駄目なんでしょうね。変数を使って、値を変えているので。例えば、これが大きなプログラムの一部だとして、バグの入る可能性は有るんでしょうか?
結構複雑なコードを単純なREPLから作り上げる方法が、自分にはマジックに思えてしまうんです。
ただ、殆どの関数型言語ではインタプリタを備えてるんで、コンパイラだけの言語よか神経は使いませんね。
ちょっと疑問ですが、ocamlはデバッグに使えるようなツールがありそうですが(ocamlbrower &),
バグのないプログラムは無いように思いますが、CとかVBなら無駄なステップを入れて、監視できますが、関数型言語でも出来るんですか?F#については統合環境があります。
何しろ自分はデバッグが命ですので、統合環境を使わないと何も出来ないと思います。(笑)
それが「高階関数」を使いたい時、なんですよ。
結局、関数型言語ってプログラミングをする際に「こうだったらいいのに・・・」と思った「こうだったら」が詰め込まれてる、って事です。
要するに、プログラミング言語を設計する以上「不便になるように」設計するヤツはいないんですよ(笑)。と言う事は、VBとかCの「不便さ」を解消するように作られている。
だから関数型言語を使うのは難しくないし、むしろ逆に「簡単になる」ように作られてる、って事ですね。
前回、実行時間を測るトコがありました。結局Subを2個作ったんですが、関数が引数として、関数を受け取れればと、思った。ですね。VBではうまい方法がないようです。DLLとかの方法はありそうですが、面倒そうです。
うん、まぁそうかなぁ。
っつーか「如何に手抜きするか」が関数型プログラミングなんで(笑)。
逆に言うとisamさんはマジメなのかもしんない(笑)。
例えばね、関数型プログラミング観点ですと。
[1, 2, 3, 4]
ってリストがあるとするでしょ?
で考えるのはこのリストを反転させてくっつけちゃう事なんですよ。
[1, 2, 3, 4] + [4, 3, 2, 1]
だから1個1個の値に付いては考えないんです。「リストをまとめて」どうすっか、ってのを考えるんですよね。
恐らく、VBだと、配列とか最初に大きさ宣言して使うでしょ?
VBは良く知らないですが、BASICはそうですしね。
つまり、伸縮自在な「リスト」みたいなブツを使う言語で初めて「ひっくり返して繋げてしまえ」って思うわけです。
それがプログラミング言語に「便利な」言語と「不便な」言語がある、って言う理由です。
とにかく「使ってるプログラミング言語が」思考に影響を与えるんですよ。
Cなんかでも基本固定長配列なんで、「配列ひっくり返して繋げてしまえ」とかなかなか思えない、とかそういう弊害があるわけです。
> これが大きなプログラムの一部だとして、バグの入る可能性は有るんでしょうか?
それはありますね。