質問

私はプログラミング言語理論を勉強していますが、怠zyな言語に変異がない確固たる理由を理解することはできません。誰かが理由を知っていますか?

役に立ちましたか?

解決

怠lazとは、関数が実際に評価されないことを意味します。これは、関数呼び出しがコードに表示される順序で必ずしも評価されていないことを意味します。また、評価されないため(存在しない返品値を使用することはできないため)、ボイド関数がないことを意味します。

ただし、副作用(突然変異などであるだけでなく、画面に印刷するだけでも)を実行する関数の場合、それらが実行される順序で重要です。さらに重要なのは、それらがまったく実行されていることです。これは、怠zyな言語が、正しい順序で実行および実行されることを保証する特別なタイプで副作用をエミュレートする方法を必要とすることを意味します。

完全に副作用のないプログラムは役に立たないため(画面に印刷できる必要があります)、怠zyな言語は実際に副作用をサポートします。 IO Monadまたは一意性タイプでそれらをカプセル化するだけです。例として、Haskellには可変配列がありますが、IO Monad内でのみ使用できます。

他のヒント

突然変異とは、プログラムの状態をいつでも確信できず、あらゆるアクションからの副作用を心配する必要があることを意味します。私は実際にそれについて考えてきましたが、突然変異をサポートする完全に怠zyな言語を持つ方法は考えられません。 (私はコンピューター科学者ではありません。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top