# Clip/Examples

Examples for the Clip programming language.

## Hello world

"Hello world

Self-explanatory, but note that the closing quotation mark is not needed.

## Cat

When compiled, this is expanded to:

[M ]

Thus, the main supplier hits the end of the program, so it asks the user for the next line of input.

## Quine

-12.3

A less trivial quine:

F"[Fx{'F\xx`"[Fx{'F\xx`

Or just:

[t+t\t]"[t+t\t]"

## Factorial

r*`,On
r   .- reduce                     -.
*`  .- with multiplication        -.
,   .- the list of numbers from   -.
O   .- 1           to             -.
n   .- the number represented by  -.

[implicit] the next line of input.

## Fibonacci (inefficient)

Fn[Fx?<x3O]+F(xF((x
F    .- apply the function F to     -.
n    .- the number represented by   -.

[implicit] the next line of input

[Fx  .- define F as a function of x -.
?    .- if                          -.
<x3  .- x is less than 3            -.
O    .- then 1                      -.
]    .- else                        -.
+    .- the sum of                  -.
F    .- the function F applied to   -.
(x   .- one less than x             -.
F    .- the function F applied to   -.
(    .- one less than               -.
(x   .- one less than x             -.

## Fibonacci (efficient)

FZOn[Fx[y[z?zFy+xy(z]x]}}
F    .- apply the function F to     -.
Z    .- 0                           -.
O    .- 1                           -.
n    .- the number represented by   -.

[implicit] the next line of input

[Fx  .- define F as a function of x -.
[y   .- a function of y             -.
[z   .- a function of z             -.
?    .- if                          -.
z    .- z isn't zero                -.
F    .- then apply F to             -.
y    .- y                           -.
+xy  .- the sum of x and y          -.
(z   .- one less than z             -.
]    .- else                          -.
x    .- x                             -.
]    .- end if statement              -.
}    .- return function of z        -.
}    .- return function of y        -.