// fetch 中で変数の値を書き換えているので副作用が発生する let fetch() = let ret = read16 mem pc pc <- pc + 2 ret let opr1, opr2 = fetch(), fetch() // このような書き方だと環境依存で実行順序が保証されない
副作用のある関数の結果を、上のような方法で複数の変数に同時に代入すると、 環境によって実行順序が変わることがあるので、opr1とopr2の中身がそのときどきに よって違うことがあるため、推奨されない。
これはF#だけの話ではなく、他のプログラミング言語にも言える。
追記
F#は環境依存で実行順序が変わることはない。
でも一般的な話として、環境依存で想定外の動きをするような書き方をするべきではない。