私は最近Scalaを学んでいます。よく知っているとは言えませんが、私は Haskell に少し精通しています。
Haskell に慣れていない人のための括弧書き
私が Haskell で気に入っている特徴の 1 つは、関数がファースト クラスの市民であるだけでなく、副作用 (アクションと呼びましょう) も含まれていることです。実行時に type の値を与えるアクションはa
、特定の type に属しIO a
ます。これらのアクションは、他の値とほとんど同じように渡すことができ、興味深い方法で組み合わせることができます。
実際、副作用を実行することはできないため、Haskell で何かを行うには、副作用を組み合わせることが唯一の方法です。むしろ、実行されるプログラムはmain
、関数によって返される結合されたアクションです。これは、プログラムに実際に電力を消費する以外のことをさせながら、関数を純粋にすることができる巧妙なトリックです。
このアプローチの主な利点は、副作用を実行するコードの部分をコンパイラが認識しているため、それらのエラーを検出するのに役立つことです。
実際の質問
たとえば、特定の関数内で副作用を実行しないことが保証されるように、コンパイラに副作用をチェックさせる方法はありますか?