3
カレー機能と可変機能を同時に使用することはできますか?
動的に型付けされた関数型プログラミング言語でカリー化関数と可変関数の両方を使用可能にすることを考えていますが、可能かどうかは疑問です。 擬似コードは次のとおりです。 sum = if @args.empty then 0 else @args.head + sum @args.tail これはすべての引数を合計することになっています。次に、それsum自体が数値として扱われる場合、結果はになり0ます。例えば、 sum + 1 +数値でのみ機能すると仮定して、1に等しくなります。ただし、sum == 0true であっても、sum引数がいくつ与えられても(したがって、「部分的に適用」と「可変」が同時に)、たとえば g = sum 1 2 3 その後gに等しく6、しかし、我々はまだ、さらに適用することができますg。たとえば、g 4 5 == 15trueです。この場合、オブジェクトgをリテラル6で置き換えることはできません。整数として扱われた場合は同じ値を生成しますが、内部には異なるコードが含まれているためです。 この設計を実際のプログラミング言語で使用すると、混乱やあいまいさが生じますか?