main =
let
one = Debug.log "one" 1
two = Debug.log "two" 2
three = Debug.log "three" 3
in
show "Hello"
は順序が反転しているように見える方法を
var main = function() {
var three = A2($Debug.log,
"three",
3);
var two = A2($Debug.log,
"two",
2);
var one = A2($Debug.log,
"one",
1);
return $Graphics$Element.show("Hello");
}();
お知らせまでコンパイルされます。我々は結合せで何か他のものに依存している別の値を導入した場合、次のようではなく、たまたま:
main =
let
one = Debug.log "one" 1
two = Debug.log "two" 2
three = Debug.log "three" 3
four = Debug.log "four" three + one
in
show "Hello"
が長いとそれの短いしたがって上がらない値が「ということです
var main = function() {
var three = A2($Debug.log,
"three",
3);
var two = A2($Debug.log,
"two",
2);
var one = A2($Debug.log,
"one",
1);
var four = A2($Debug.log,
"four",
three) + one;
return $Graphics$Element.show("Hello");
}();
に変身同じスコープ内の別の値に依存するtはボトムアップで処理されます。値が同じスコープ内の別の値に依存する場合、値は別々に処理され、一番下に置かれます。
これは実装の詳細です。
let節は命令のリストではなく、一連の宣言であり、コンパイラは自由に "実行順序"を決定できます。一般に、機能的にプログラミングするときは、通常、実行順序を気にする必要はなく、概念とデータの関係に気を付ける必要があります。 – thSoft