scrambled
Concept

Curry y combinator

Modified just now
Books JourneyProgramming Language Theory Statusreviewing Tags
  • lambda calculus
  • semantics

fix=λf. (λx. f (x x)) (λx. f(x x))\text{fix} = \lambda f.\ (\lambda x.\ f\ (x\ x))\ (\lambda x.\ f (x\ x))

  • Details

    fix g[fg](λx. f (x x)) (λx. f (x x))(λx. g (x x)) (λx. g (x x))[xλx. g (x x)]g (x x)g ((λx. g (x x)) (λx. g (x x)))=g (fix g)\begin{aligned} \text{fix}\ g &\to [f \mapsto g] (\lambda x.\ f\ (x\ x))\ (\lambda x.\ f\ (x\ x)) \\ &\to (\lambda x.\ g\ (x\ x)) \ (\lambda x.\ g\ (x\ x)) \\ &\to [x \to \lambda x.\ g\ (x\ x)] g\ (x\ x) \\ &\to g\ ((\lambda x.\ g\ (x\ x))\ (\lambda x.\ g\ (x\ x))) \\ &= g\ (\text{fix}\ g) \end{aligned}

    • In a Call by value evaluation strategy, this diverges because it continues to evaluate fix g\text{fix}\ g.
    • In a Call by name evaluation strategy, fix g\text{fix}\ g does not diverge because gg gets applied to fix g\text{fix}\ g.