私は最近Haskellについてたくさん読んでいます、そしてそれが純粋に関数型言語であることから得られる利点。(私はLispのモナドについて議論することに興味がありません)(少なくとも論理的に)副作用のある関数を可能な限り分離することは私にとって理にかなっています。私はsetf
他の破壊的な関数をたくさん使ってきました、そして私はLispと(ほとんどの)その派生物でそれらの必要性を認識しています。
どうぞ:
(declare pure)
コンパイラの最適化に役立つ可能性があるものはありますか?それとも、すでに知っているので、これは論点ですか?- 宣言は、関数やプログラム、または少なくとも純粋であると宣言されたサブセットを証明するのに役立ちますか?それとも、プログラマー、コンパイラー、および証明者にはすでに明らかであるため、これも不要なものですか?
- 他に何もないとしても、コンパイラーがこの宣言で関数の純粋さを強制し、Lispプログラムの可読性/保守性を高めることはプログラマーにとって有用でしょうか?
- これは意味がありますか?それとも私は今考えることすらできないほど疲れていますか?
ここで洞察をいただければ幸いです。コンパイラの実装または証明可能性に関する情報は大歓迎です。
編集
明確にするために、私はこの質問をCommonLispに限定するつもりはありませんでした。それは明らかに(私が思うに)特定の派生言語には当てはまりませんが、他のLispのいくつかの機能がこの種の機能をサポートする(またはサポートしない)傾向があるかどうかも興味があります。