ProgrammingのTipなど

サンク

サンク(thunk)とは
ある関数を
もう一つ別の関数からわざと呼び出す形にすることで
遅延評価させるプログラミング技法です
通常、サンク関数は引数のない形式の関数にします

遅延評価とはその関数の評価を遅らせて
その評価(関数の中身の実行)の結果が必要なタイミングに行わせる評価戦略です

二つの引数を足し算する関数があるとします
そして10+90を計算します
これは通常の評価方法なのでそのまま計算されます
(define (plus2 x y) (+ x y))
(print (plus2 10 90))
>100

ここにthunk関数を挟むと
すぐに10+90は計算はされません
これが遅延評価されてることになります
(define (plus2 x y) (+ x y))
(define (thunk1) (plus2 10 90))

サンクを余分に一回実行させることで計算結果が得れます
これでプログラマーの望む任意のタイミングでその関数の計算を実行できます
(print (thunk1))
>100
もしくは別の関数に渡して実行させる場合
(define (callFunc func) (func))
(print (callFunc thunk1))
>100
別の計算に渡す場合
(print (* 2 (thunk1)))
>200
となります

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

メニュー2

開くメニュー

閉じるメニュー

  • アイテム
  • アイテム
  • アイテム
【メニュー編集】

管理人/副管理人のみ編集できます