関数型プログラミングが『銀の弾丸』であるという非常識な常識2022への意見・感想と作者の反応
第1節:まず、「2022年現在」という記述から著者は未来人であることが推察されます。あるいは俺が寝てる間に2022年になっていたのかもしれない。
2021-12-10 13:00:03第3節:JavaScriptコードのreduceに初期値を指定していないのはどういう意図だろう?Haskellとかのfold関数は普通初期値を指定するものだが。
2021-12-10 13:10:33@Ken74047924 私はHaskellでAtCoderに参戦して(アルゴリズムを色々書いて)ある程度の実績を出したり、Haskell処理系のGHCに貢献したり、Standard MLで自作コンパイラーを描いたりしていますが、それも「薄っぺらい」とおっしゃいますか?
2021-12-10 13:19:07@Ken74047924 @fumieval 果たして、他人を「薄っぺらい」とか言って誹謗中傷しているのはどちらでしょうね?
2021-12-10 13:31:16第5節:「〜のオブジェクトは、数学の集合(Sets)に相当し」←どこが? 「メソッドは、数学の二項演算子に相当しており」←concatの例だけからそれを言うのは論理の飛躍では?
2021-12-10 13:40:57第5節:「二項演算子を活用するという根幹の目的」:関数型プログラミングの話かと思っていたらいつの間にか二項演算子原理主義になっていた
2021-12-10 13:44:46JavaScriptに演算子オーバーロードを期待するのは難しいのだから、演算子オーバーロードが欲しければaltJSを作る方が筋がいいと思うなあ。著者との見解の相違ってやつ。
2021-12-10 13:46:55第5節:initialValueを取らないと(配列が空の時に)まともに動作しないreduceを「二項演算子」と言い張るのは無理がある。
2021-12-10 13:56:25@Ken74047924 現実問題としてJavaScriptのreduceは空配列にinitialValueが指定されないとTypeErrorを投げる(自動で単位元を追加してくれない)ので、そう主張したいのであればJavaScriptじゃない言語、独自の言語を作ってください。
2021-12-10 14:11:04第7節:JavaScriptでパターンマッチするライブラリーがあるのか……。あと、パターンマッチは「マッチさせる式」と「パターン」「マッチした場合の処理」の3つの構成要素があると思うんだけど、それも二項演算として解釈するのか
2021-12-10 14:21:05第8節:「natural(4)という別の値に交換してもコードが壊れないことは事前によくわかっている」→natural(0)にしたら壊れるんだよなあ
2021-12-10 14:33:51内心fumievalさんも結構攻撃的だよなあと思っていて、最初の「治安が悪い」はそれも含めてのつもりだったけど、Ken氏も負けず劣らず攻撃的だったね(他人を「薄っぺらい」とか「半端者」とか言ってさあ)
2021-12-10 14:43:41@Ken74047924 自然数を1以上とするのはいいでしょう。そういう流儀もあります。では空配列は配列に含みますか?空配列に「二項演算として」reduceを適用するとTypeErrorが出ますが、空配列は配列に含めないということでしょうか?
2021-12-10 14:53:15第10節:TypeScriptで関数の行先を指定するのに使うのはtype annotationで、普通はtype assertion(as)は使わなくないか
2021-12-10 15:02:17第13節:f(x)だとネストした時にカッコが多くなって大変だ。うんうん。だから独自のパイプライン記法でP(3)['>'](f)['>'](g)と書く、と。カッコが多いのはどっちだ?
2021-12-10 15:18:1413.5: PとかcustomType, customOperatorの定義はどこかな?そう言うライブラリーがあるのだろうか。
2021-12-10 15:23:56