関数型プログラミングに興味があるので、 Google スプレッドシートファイルのスクリプト環境でこのアプローチを試すことにしました。スクリプト言語はGoogle Apps Scriptであり、基本的にはjavascriptです。また、一部の (すべてではないにしても) ES6 構文もサポートしています。
問題は、次のようなコードを直接実行できないことです。
let a = 4;
Logger.log(a);
つまり、グローバルに実行することはできません。任意の名前の関数を定義し、その関数内にコードを配置する必要があります。関数を実行できるため、関数はコードを内部で実行します。
ですから、「なぜこの動作が純粋な関数型コードの記述に問題を引き起こすのか?」と疑問に思うかもしれません。私が知っているように、純粋関数に関する最も重要な要素は次の 2 つです。
1)関数内でグローバル変数/関数を使用してはなりません。代わりに、パラメーターとして(そしてもちろん引数として)渡す必要があります。
2) 関数内で関数を定義することは、コードの読みやすさと構成の点であまり良い考えではありません。
したがって、1つの「メイン」関数だけでなく、より多くの関数を(いくつかのことを行うために)定義したいのですが、2つのうち少なくとも1つに違反することなく、コードを(全体として)記述する単一の方法を見つけることができませんでした上記のステートメント。
つまり、非純粋な関数を少なくとも 1 つ作成しないと、何も記述できません。