私は現在、Haskell が特定の関数を適用しようとする順序を理解しようとしています。次のような関数呼び出しがある場合:
exec:: Stm -> State -> State
exec (Seq s1 s2) = \s -> exec s2 (exec s1 s)
これは、各コードフラグメントが環境の構造を変更する可能性があるプログラムを実行するより大きなプログラムの一部であり、現在の変数の割り当てを追跡します。その場合、haskell が誤って間違った部分を最初に実行しないようにするにはどうすればよいでしょうか? この正確な行を継続スタイルで行うと、次のようになるので、私は尋ねています:
type Cont = State -> State
exec:: Stm -> Cont -> Cont
exec (Seq s1 s2) = \c -> exec s1 (exec s2 c)
haskell が括弧内の内側の部分を最初に実行すると、順序が乱れるため、プログラムの意味が変わる可能性があります。私はこれを自分で理解できないように見えるので、助けていただければ幸いです。