-calculus terms can be informally/intuitively categorized, such as:( f x . (f (f (f x))))) is a church natural (3)( a b . a) is a church boolean (true)( c n . (c 1 (c 2 (c 3 n)))) is a church list ([1,2,3])( s z . (s ( s z . (s ( s z . (s ( s z . z))))))) is a peano natural (3)That is, while the untyped lambda calculus obviously doesn't have explicit types, one can certainly recognize patterns on terms and categorize them based on their behavior - as if those had a type. When you say: a church number is a function that applies another function n times to an argument you are informally characterizing a wide range of -terms. My question is: is there any way to formalize that intuition? Any system/theory that meaningfully categorizes (untyped) -terms?
Is there any meaning behind the classification of -terms in classes such as church number and church list?
functional programming;lambda calculus