45 lines
713 B
Markdown
45 lines
713 B
Markdown
# SCL: Simple CAS Language
|
|
|
|
## Syntax
|
|
|
|
As one would expect, you can evaluate simple infix expressions:
|
|
|
|
```scl
|
|
> 1 + 1
|
|
= 2
|
|
```
|
|
|
|
You can also define your own functions:
|
|
|
|
```scl
|
|
> f(x) = 2x
|
|
> f(2)
|
|
= 4
|
|
```
|
|
|
|
Symbolic algebra is done in the following manner:
|
|
|
|
```scl
|
|
> f(x) = e^x
|
|
> diff(f, x:sym, 2)
|
|
= e^x
|
|
```
|
|
|
|
SCL will dynamically decide on types, but you can state them explicitly as
|
|
well:
|
|
|
|
```scl
|
|
> f(x:int) = 2x
|
|
> f(2.2)
|
|
! f(x:int): x must be of type int.
|
|
```
|
|
|
|
Variables can be defined, with several attributes:
|
|
|
|
```scl
|
|
> a = 1 // Interpret type automatically.
|
|
> b:int = 1 // Must be int.
|
|
> c:const:int = 1 // Constant: value can never change.
|
|
> x:sym // Treated symbolicaly.
|
|
```
|