F calculus

From Esolang
Jump to navigation Jump to search

F Calculus is a Combinatory logic system with as only combinator 'F'

It was devised to see how simple a Combinator could be when it has to both access an oracle and do logic. it is also inspired by SE calculus

Description

F i => if i has a beta normal form then λx.λy.λz.xz(y(λw.z)) else λx.x

Function application through .

Although it does not matter, you can use brackets

Spacing allowed but not needed.

Examples

Tromp's & mtve's α

.FF

Reads as: If F has a normal form (it does) return λx.λy.λz.xz(y(λw.z)) (alpha) else return λx.x


Identity function I

.F.....FF.FF.FF..FF.FF.FF 

.....FF.FF.FF..FF.FF.FF does not have a beta normal form, and thus applying F on it returns the identity function. Abreviated as I

Becomes λx.x

Constant making function K

 ...FF..FF.FF.......FF..FF.FF.FF.FF.FF.FF.FF

Alternatively read as ..A.AA......A.AAAAAAA where A is alpha

Becomes λx.λy.x, And abreviated as K

Substitution function S

....FF..FF....FF.FF...FF.FF..FF.FF..FF..FF...FF.FF..FF.FF.FF.FF

Read as ...A.A...AA..AA.AA.A.A..AA.AAAA

Becomes λx.λy.λz.(xz)(yz), Abreviated As S

Boolean oracle

..S..S..S..S.KFI.KK.K.KI.KK

Returns True if the input has a normal form, else false.