0

与えられた:

λ: let x = 1 + 2

sprint私はその値を出力するために実行します:

λ: :sprint x
x = _

さすがに無評価です。

しかし、評価した後x

λ: x
3

sprintまだ出力_、つまり未評価:

λ: :sprint x
x = _

何故ですか?

4

1 に答える 1

3

xポリモーフィックだからです。

と比べて:

Prelude> let x = 1 + 2 :: Int
Prelude> :sprint x
x = _
Prelude> x
3
Prelude> :sprint x
x = 3
Prelude>

ポリモーフィックである場合xGHCI はサンクを特定の値に置き換えることはできません。これは、後で別の型として評価する可能性があるためです。

于 2016-06-22T04:00:49.647 に答える