Lazy

From Esolang
Jump to navigation Jump to search
This article is not detailed enough and needs to be expanded. Please help us by adding some more information.

Created by User:MagiMaster in 2006 (and conceived much earlier). Its main goal is to use lazy evaluation and have functions as first-class objects. Also, it tries to do everything as a function definition.

Currently this specification is incomplete.

Example

A simple example is the cat program:

main()=output(input())

Another example:

fib(0)=1
fib(1)=1
fib(n)=+(fib(-(n,1)),fib(-(n,2)))
main()=output(fib(input()))

Built-in functions

  • +(x,y), -(x,y), *(x,y), /(x,y), %(x,y)
  • input(), output(n)

Computational class

Lazy is Turing-complete as it includes the μ-recursive functions. To show this, the only non-trivial function to define is μy f(y,x1,...,xk) (which does not actually have y as parameter, y is bound by the μ), which for a specific f can be given as follows:

μy f(y,x1,...,xk) = g(0,x1,...,xk)
g(n,x1,...,xk) = if0(f(n,x1,...,xk),n,g(+(n,1),x1,...,xk))
if0(0,a,b) = a
if0(n,a,b) = b