şükela:  tümü | bugün
  • lambda calculus'te and, or, not gibi operatörleri ve true, false, 42 gibi değerleri fonksiyon olarak temsil etmeye yarayan kodlama yöntemi.

    örnek olarak boolean değerleri şu şekilde tanımlanır:
    true: \t. \f. t
    false: \t. \f. f

    and operatörü de şu şekilde tanımlanabilir:
    \x. \y. x y (\t. \f. f)

    buradaki son parantez içinde false değeri olduğuna dikkat edelim.

    şimdi şu işlemi(and true false) beta reduction kullanarak sadeleştirirsek, üstte true olarak tanımladığımız değeri elde ederiz:

    (\x. \y. x y (\t. \f. f)) (\t. \f. t) (\t. \f. f)

    benzer şekilde or ve not operatörleri de şu şekilde tanımlanabilir:
    or: \x. \y. x (\t. \f. t) y
    not: \x. x (\t. \f. f) (\t. \f. t)

    tüm bu operatörlerin çalışma mantığı aslında aşağıdaki fonksiyonun eğer k true ise l'ye, false ise m'ye sadeleşmesinden gelir

    \k. \l. \m k l m