# Change

Jump to navigation Jump to search

Change is a substitution based programming language and can be translated to lambda calculus

## Some Things

### Text

Use " to make text

```"hello"
"some text"
```

Use ' (if you want) to make letter

```'a'
'b'
'this is also valid'
"s"
"o is the previous one"
```

### Substitutions

text(a)(b) replace all a's in text with b

```"hello"('e')('o') #hollo
"text"("ex")("xe") #txet
```

### Vars

vars are for simplification like how vars are used in some lambda calculuses

```a = "hi"
b = "hello"
c = "hi world"("hi")("hello") #hello world
c #hello world
```

### Funcs

also a simplification

```sToEs a:
return a('s')('es')
sToEs("potatos") #potatoes
```

## Lambda Calculus

i said it could be translated to lambda calculus, so this is how

### Example

```id = λx.x
id x #x
```

that is a lambda abstraction for the identity function heres it in change

```id a:
return a
id "x" #x
```

### How To Do

take all inputs of the function

```λxy.yx
```

which is x, y put them in a function

```func x y:
...
```

then insert the code for it

```func x y:
return y(x)
```

done

### Another Way?

You can use all of the substitution stuff to do it:

#### Before

```id = λx.x
id y #y
```

#### After

```same = "x"
id x:
return same("x")(x)
id "y" #y
```