mirror of
https://github.com/CatalaLang/catala.git
synced 2024-09-20 00:41:05 +03:00
81 lines
1.4 KiB
Plaintext
81 lines
1.4 KiB
Plaintext
```catala
|
|
declaration scope S:
|
|
input cond content boolean
|
|
internal f1 content decimal depends on x content integer
|
|
output out content decimal
|
|
|
|
scope S:
|
|
definition f1 of x under condition cond
|
|
consequence equals decimal of (x * 2)
|
|
definition f1 of x under condition not cond
|
|
consequence equals x / 2
|
|
definition out equals f1 of 10
|
|
```
|
|
|
|
|
|
|
|
```catala-test-inline
|
|
$ catala Typecheck --check-invariants
|
|
┌─[RESULT]─
|
|
│ All invariant checks passed
|
|
└─
|
|
┌─[RESULT]─
|
|
│ Typechecking successful!
|
|
└─
|
|
```
|
|
|
|
```catala-test-inline
|
|
$ catala typecheck
|
|
┌─[RESULT]─
|
|
│ Typechecking successful!
|
|
└─
|
|
```
|
|
|
|
```catala
|
|
declaration scope T1:
|
|
strue scope S
|
|
sfalse scope S
|
|
output o1 content decimal
|
|
output o2 content decimal
|
|
|
|
scope T1:
|
|
definition strue.cond equals true
|
|
definition sfalse.cond equals false
|
|
definition o1 equals strue.out
|
|
definition o2 equals sfalse.out
|
|
```
|
|
|
|
```catala-test-inline
|
|
$ catala test-scope T1
|
|
┌─[RESULT]─
|
|
│ o1 = 20.0
|
|
│ o2 = 5.0
|
|
└─
|
|
```
|
|
|
|
## Multi-argument function
|
|
|
|
```catala
|
|
declaration scope S2:
|
|
output f content decimal depends on
|
|
x content integer,
|
|
y content integer
|
|
|
|
scope S2:
|
|
definition f of x, y equals x / y
|
|
|
|
declaration scope T2:
|
|
s2 scope S2
|
|
output o content decimal
|
|
|
|
scope T2:
|
|
definition o equals 10. * s2.f of 12, 3
|
|
```
|
|
|
|
```catala-test-inline
|
|
$ catala test-scope T2
|
|
┌─[RESULT]─
|
|
│ o = 40.0
|
|
└─
|
|
```
|