В Схеме и Ракетке шаблон стратегии ... ждать его ... применение функции.
На странице стратегии Википедии приведен пример ее использования:
//StrategyExample test application
class StrategyExample {
public static void main(String[] args) {
Context context;
// Three contexts following different strategies
context = new Context(new ConcreteStrategyAdd());
int resultA = context.executeStrategy(3,4);
context = new Context(new ConcreteStrategySubtract());
int resultB = context.executeStrategy(3,4);
context = new Context(new ConcreteStrategyMultiply());
int resultC = context.executeStrategy(3,4);
}
}
В Схеме или Ракетке вы просто напишите это как:
(+ 3 4)
(- 3 4)
(* 3 4)
И, если вы хотите передать стратегию, которая будет применена к набору аргументов, она может выглядеть следующим образом:
#lang racket
(define (apply-strategy strategy context)
(strategy context))
Действительно, единственной основной причиной существования паттерна Стратегия является слабость системы типов Java.