LC is a really really really simple language. One of the simplest languages that is Turing Complete.
It has 3 syntactic forms that build its AST: lambda functions (that bring variables into scope), applications (of functions to arguments), and variable access.
It has 1 reduction rule (Whenever there's an application of a lambda, the whole thing is replaced by the lambda's body with references to the lambda's variable substituted by the application's argument.
3 syntactic forms + 1 reduction rule: That's it!
How can you do anything with it? Using "Church encodings" of various things.
Enumerating all of them is going to take a lot of text! So I'll just give you a taste. First, we can encode "multiple argument functions" on top of our single-argument lambdas by simply nesting lambdas:
λx. λy. x
Is a function that given an "x", returns a function that given a "y", returns "x".
Our function of two arguments can return the second argument too:
λx. λy. y
And this suffices to define booleans! True/False just return first/second arg.
True = λt. λf. t
False = λt. λf. f
How can we implement "and" and "or"? They are simply functions that take as input 2 booleans, and return a boolean. Each of the booleans taken/returned are themselves functions of 2 arguments. (Note: Application is denoted by space. so: "f x y" is parsed as ((f x) y), apply f to x, and the result of that to y. So here goes:
and = λb1. λb2. λt. λf. b1 (b2 t f) f
(Take b1,b2 booleans. Then return a function of t,f. Apply b1, in the "true" arg give it "b2 t f". In the "false" arg give it our own false arg (do not call b2 at all).
or = λb1. λb2. λt. λf. b1 t (b2 t f)
The parent comment went further and used an encoding of numbers (which is slightly more complicated than booleans). It also used the "y combinator" which is also just a tricky composition of lambdas and applications that allows feeding a lambda an argument that refers to calling itself recursively. Note that LC has no names except those bound by lambdas, so recursive references are not to be taken for granted! You need trickery such as the Y combinator to do that in the LC.