নামবিহীন পুনরুক্তি
একটি স্থির-পয়েন্ট সংযোজক হ'ল একটি অর্ডার ফাংশন fix
যা সংজ্ঞায়িত করে সমতাটি সন্তুষ্ট করে
forall f. fix f = f (fix f)
fix f
x
স্থির-পয়েন্ট সমীকরণের একটি সমাধান উপস্থাপন করে
x = f x
একটি প্রাকৃতিক সংখ্যার বর্ণনাকারী দ্বারা প্রমাণ করা যায়
fact 0 = 1
fact n = n * fact (n - 1)
fix
সাধারণ / rec-রিকার্সিভ ফাংশনগুলির তুলনায় নির্বিচারে গঠনমূলক প্রমাণগুলি ব্যবহার করে স্বতঃস্ফূর্ততা ব্যতীত ছাড়াই পাওয়া যায়।
fact n = (fix fact') n
কোথায়
fact' rec n = if n == 0
then 1
else n * rec (n - 1)
যেমন যে
fact 3
= (fix fact') 3
= fact' (fix fact') 3
= if 3 == 0 then 1 else 3 * (fix fact') (3 - 1)
= 3 * (fix fact') 2
= 3 * fact' (fix fact') 2
= 3 * if 2 == 0 then 1 else 2 * (fix fact') (2 - 1)
= 3 * 2 * (fix fact') 1
= 3 * 2 * fact' (fix fact') 1
= 3 * 2 * if 1 == 0 then 1 else 1 * (fix fact') (1 - 1)
= 3 * 2 * 1 * (fix fact') 0
= 3 * 2 * 1 * fact' (fix fact') 0
= 3 * 2 * 1 * if 0 == 0 then 1 else 0 * (fix fact') (0 - 1)
= 3 * 2 * 1 * 1
= 6
এই আনুষ্ঠানিক প্রমাণ যে
fact 3 = 6
পদ্ধতিগতভাবে পুনর্লিখনের জন্য স্থির-পয়েন্ট সংযোজক সমতা ব্যবহার করে
fix fact' -> fact' (fix fact')
ল্যাম্বদা ক্যালকুলাস
Untyped ল্যামডা ক্যালকুলাস লৌকিকতা একটি প্রেক্ষাপটে মুক্ত ব্যাকরণ গঠিত
E ::= v Variable
| λ v. E Abstraction
| E E Application
যেখানে বিটা এবং এটা হ্রাস বিধি v
একসাথে ভেরিয়েবলের ব্যাপ্তি রয়েছে
(λ x. B) E -> B[x := E] Beta
λ x. E x -> E if x doesn’t occur free in E Eta
বিটা হ্রাস বিমোচন x
("ফাংশন") শরীরে পরিবর্তন B
("যুক্তি") দ্বারা শরীরের সমস্ত মুক্ত ইভেন্টকে প্রতিস্থাপন করে E
। এটা হ্রাস অপ্রয়োজনীয় বিমূর্ততা দূর করে। এটি কখনও কখনও আনুষ্ঠানিকতা থেকে বাদ দেওয়া হয়। একটি অদম্য অভিব্যক্তি, যার কোনও হ্রাস বিধি প্রযোজ্য নয়, এটি স্বাভাবিক বা প্রমিত আকারে ।
λ x y. E
সংক্ষিপ্ত
λ x. λ y. E
(বিমূর্ততা বহুগুণ),
E F G
সংক্ষিপ্ত
(E F) G
(অ্যাপ্লিকেশন বাম-সমিতি),
λ x. x
এবং
λ y. y
হয় আলফা-সমতুল্য ।
অ্যাবস্ট্রাকশন এবং অ্যাপ্লিকেশন হ'ল ল্যাম্বদা ক্যালকুলাসের কেবল দুটি "ভাষা আদিম", তবে তারা এনকোডিংয়ের অনুমতি দেয় নির্বিচারে জটিল ডেটা এবং ক্রিয়াকলাপকে ।
চার্চ সংখ্যা হ'ল পিয়ানো-অ্যাক্সিয়োমেটিক প্রাকৃতিকগুলির মতো প্রাকৃতিক সংখ্যার এনকোডিং।
0 = λ f x. x No application
1 = λ f x. f x One application
2 = λ f x. f (f x) Twofold
3 = λ f x. f (f (f x)) Threefold
. . .
SUCC = λ n f x. f (n f x) Successor
ADD = λ n m f x. n f (m f x) Addition
MULT = λ n m f x. n (m f) x Multiplication
. . .
একটি আনুষ্ঠানিক প্রমাণ যে
1 + 2 = 3
বিটা হ্রাসের পুনর্লিখনের নিয়মটি ব্যবহার করে:
ADD 1 2
= (λ n m f x. n f (m f x)) (λ g y. g y) (λ h z. h (h z))
= (λ m f x. (λ g y. g y) f (m f x)) (λ h z. h (h z))
= (λ m f x. (λ y. f y) (m f x)) (λ h z. h (h z))
= (λ m f x. f (m f x)) (λ h z. h (h z))
= λ f x. f ((λ h z. h (h z)) f x)
= λ f x. f ((λ z. f (f z)) x)
= λ f x. f (f (f x)) Normal form
= 3
Combinators
ল্যামডা ক্যালকুলাসে combinators বিমূর্ত কোনো বিনামূল্যে ভেরিয়েবল ধারণ হয়। সর্বাধিক সহজভাবে I
:, পরিচয় সংযোজক
λ x. x
আইসনমোরফিক আইডেন্টিফিকেশন ফাংশন
id x = x
এই জাতীয় সংযোগকারীরা এসকেআই সিস্টেমের মতো কম্বিনেটর ক্যালকুলির আদিম অপারেটর ।
S = λ x y z. x z (y z)
K = λ x y. x
I = λ x. x
বিটা হ্রাস দৃ strongly়ভাবে স্বাভাবিক হচ্ছে না ; সমস্ত হ্রাসযোগ্য এক্সপ্রেশন, "রিডেক্সেস" বিটা হ্রাসের আওতায় স্বাভাবিক আকারে রূপান্তরিত করে না। একটি উত্তম উদাহরণ ওমেগা বিপথগামী আবেদন ω
combinator
λ x. x x
নিজেই:
(λ x. x x) (λ y. y y)
= (λ y. y y) (λ y. y y)
. . .
= _|_ Bottom
বামতম স্যুট এক্সপ্রেসনগুলি ("মাথা") হ্রাসকে অগ্রাধিকার দেওয়া হয়েছে। প্রয়োগমূলক আদেশ প্রতিস্থাপনের আগে যুক্তিগুলিকে স্বাভাবিক করে তোলে, স্বাভাবিক আদেশ দেয় না। দুটি কৌশল হ'ল আগ্রহী মূল্যায়নের সাথে সমান, যেমন সি এবং অলস মূল্যায়ন, যেমন হাস্কেল।
K (I a) (ω ω)
= (λ k l. k) ((λ i. i) a) ((λ x. x x) (λ y. y y))
উত্সাহী আবেদনকারী-আদেশ বিটা হ্রাস অধীনে পরিবর্তন
= (λ k l. k) a ((λ x. x x) (λ y. y y))
= (λ l. a) ((λ x. x x) (λ y. y y))
= (λ l. a) ((λ y. y y) (λ y. y y))
. . .
= _|_
যেহেতু কঠোর শব্দার্থক শব্দে
forall f. f _|_ = _|_
তবে অলস স্বাভাবিক-অর্ডার বিটা হ্রাসের আওতায় আসে
= (λ l. ((λ i. i) a)) ((λ x. x x) (λ y. y y))
= (λ l. a) ((λ x. x x) (λ y. y y))
= a
যদি কোনও অভিব্যক্তির একটি সাধারণ ফর্ম থাকে, তবে স্বাভাবিক-ক্রমের বিটা হ্রাস এটি খুঁজে পাবে।
ওয়াই
স্থির-পয়েন্ট সংযোজকের প্রয়োজনীয় সম্পত্তিY
λ f. (λ x. f (x x)) (λ x. f (x x))
দেওয়া হয়
Y g
= (λ f. (λ x. f (x x)) (λ x. f (x x))) g
= (λ x. g (x x)) (λ x. g (x x)) = Y g
= g ((λ x. g (x x)) (λ x. g (x x))) = g (Y g)
= g (g ((λ x. g (x x)) (λ x. g (x x)))) = g (g (Y g))
. . . . . .
সমতা
Y g = g (Y g)
isomorphic হয়
fix f = f (fix f)
টাইপযুক্ত ল্যাম্বডা ক্যালকুলাস সাধারণ / μ-পুনরাবৃত্ত ফাংশনগুলির তুলনায় নির্বিচারে গঠনমূলক প্রমাণগুলি এনকোড করতে পারে।
FACT = λ n. Y FACT' n
FACT' = λ rec n. if n == 0 then 1 else n * rec (n - 1)
FACT 3
= (λ n. Y FACT' n) 3
= Y FACT' 3
= FACT' (Y FACT') 3
= if 3 == 0 then 1 else 3 * (Y FACT') (3 - 1)
= 3 * (Y FACT') (3 - 1)
= 3 * FACT' (Y FACT') 2
= 3 * if 2 == 0 then 1 else 2 * (Y FACT') (2 - 1)
= 3 * 2 * (Y FACT') 1
= 3 * 2 * FACT' (Y FACT') 1
= 3 * 2 * if 1 == 0 then 1 else 1 * (Y FACT') (1 - 1)
= 3 * 2 * 1 * (Y FACT') 0
= 3 * 2 * 1 * FACT' (Y FACT') 0
= 3 * 2 * 1 * if 0 == 0 then 1 else 0 * (Y FACT') (0 - 1)
= 3 * 2 * 1 * 1
= 6
(বহুগুণে বিলম্ব, সঙ্গম)
চার্চিয়ান অব টাইপযুক্ত ল্যাম্বডা ক্যালকুলাসের জন্য সেখানে স্থির-পয়েন্ট সংযোজকগুলির পাশাপাশি পুনরাবৃত্তিযোগ্যভাবে গণনাযোগ্য অনন্ত উপস্থিত রয়েছে বলে প্রমাণিত হয়েছে Y
।
X = λ f. (λ x. x x) (λ x. f (x x))
Y' = (λ x y. x y x) (λ y x. y (x y x))
Z = λ f. (λ x. f (λ v. x x v)) (λ x. f (λ v. x x v))
Θ = (λ x y. y (x x y)) (λ x y. y (x x y))
. . .
সাধারণ অর্ডার বিটা হ্রাস অব্যক্ত অবধি অবহিত ল্যাম্বদা ক্যালকুলাসকে একটি টুরিং-সম্পূর্ণ পুনর্লিখন সিস্টেম করে।
হাস্কেলে, স্থির-পয়েন্ট সংযোজকটি মার্জিতভাবে প্রয়োগ করা যেতে পারে
fix :: forall t. (t -> t) -> t
fix f = f (fix f)
সমস্ত সাফল্য মূল্যায়নের আগে মূল্যায়ন করার আগে হাস্কেলের অলসতা এক চূড়ান্ত পর্যায়ে পৌঁছে যায়।
primes :: Integral t => [t]
primes = sieve [2 ..]
where
sieve = fix (\ rec (p : ns) ->
p : rec [n | n <- ns
, n `rem` p /= 0])