Editing Combinatory logic
Content that violates any copyrights will be deleted. Encyclopedic content must be verifiable through citations to reliable sources.
Latest revision | Your text | ||
Line 133: | Line 133: | ||
This process is also known as ''abstraction elimination''. This definition is exhaustive: any lambda expression will be subject to exactly one of these rules (see [[Combinatory logic#Summary of lambda calculus|Summary of lambda calculus]] above). |
This process is also known as ''abstraction elimination''. This definition is exhaustive: any lambda expression will be subject to exactly one of these rules (see [[Combinatory logic#Summary of lambda calculus|Summary of lambda calculus]] above). |
||
Same results gives using simply SKI transform with the ten rules, called as "Curry optimizing rules". |
|||
# B I ⇒ I |
|||
# B ( K a ) ⇒ K ( K a ) |
|||
# B a I ⇒ a |
|||
# B a ( K b ) ⇒ K ( a b ) |
|||
# C K ⇒ K I |
|||
# C ( K a ) ⇒ B K a |
|||
# S K ⇒ K I |
|||
# S ( K a ) ⇒ B a |
|||
# S a I ⇒ W a |
|||
# S a ( K b ) ⇒ C a b |
|||
There are also 602 similar rules. For example: |
|||
# W ( B a ) ⇒ B a M |
|||
# W ( S a ) ⇒ S a M |
|||
# M W ⇒ W M |
|||
It is related to the process of ''bracket abstraction'', which takes an expression ''E'' built from variables and application and produces a combinator expression [x]E in which the variable x is not free, such that [''x'']''E x'' = ''E'' holds. A very simple algorithm for bracket abstraction is defined by induction on the structure of expressions as follows:{{sfn|Turner|1979}} |
It is related to the process of ''bracket abstraction'', which takes an expression ''E'' built from variables and application and produces a combinator expression [x]E in which the variable x is not free, such that [''x'']''E x'' = ''E'' holds. A very simple algorithm for bracket abstraction is defined by induction on the structure of expressions as follows:{{sfn|Turner|1979}} |