求值策略英文evaluation strategy)係指一隻程式語言用咩方法嚟同啲表達式做求值。

主要策略

編輯

舉例說明,想像家陣要行以下噉嘅表達式[1]

  def double x = (plus x x)
  def average x y = (divide (plus x y) 2)

正常次序求值(normal-order evaluation)嘅話,會做嘅嘢係「吓吓都郁手拆咗最左嗰個子程序先」→

(double (average 2 4)) =>
(plus (average 2 4) (average 2 4)) =>
(plus (divide (plus 2 4) 2) (average 2 4)) => ...

而用應用次序求值(applicative-order evaluation)嘅話,會做嘅嘢係「吓吓都郁手拆咗最入嗰個子程序先」→

double (average 2 4) =>
double (divide (plus 2 4) 2) =>
double (divide 6 2) => ...

唔同嘅求值策略都有各自嘅利弊,同一條表達式,有可能用一種求值策略會攞到正確答案,但用另一種求值策略就會搞到輕機[2]

睇埋

編輯
  1. Abelson, Harold; Sussman, Gerald Jay (1996). Structure and Interpretation of Computer Programs (Second ed.). Cambridge, Massachusetts: The MIT Press. p. 21-22.
  2. Normal, Applicative and Lazy Evaluation. Kevin Sookocheff.