2022-12-12 18:20:48 +03:00
|
|
|
```catala
|
|
|
|
declaration scope S:
|
|
|
|
output x content integer
|
|
|
|
|
|
|
|
scope S:
|
|
|
|
definition x equals 0
|
|
|
|
|
|
|
|
# Map
|
2022-12-14 17:45:13 +03:00
|
|
|
assertion (i + 2) for i among [1; 2; 3] = [3; 4; 5]
|
2022-12-12 18:20:48 +03:00
|
|
|
|
|
|
|
# Filter
|
2022-12-14 17:45:13 +03:00
|
|
|
assertion (i among [1; 2; 3] such that i >= 2) = [2; 3]
|
2022-12-12 18:20:48 +03:00
|
|
|
|
|
|
|
# Sum
|
|
|
|
assertion sum integer of [1; 2; 3] = 6
|
2022-12-14 17:45:13 +03:00
|
|
|
assertion sum integer of (i + 2) for i among [1; 2; 3] = 12
|
2022-12-12 18:20:48 +03:00
|
|
|
|
|
|
|
# Count
|
|
|
|
assertion number of [1; 2; 3] = 3
|
2022-12-14 17:45:13 +03:00
|
|
|
assertion (number of i among [1; 2; 3] such that i >= 2) = 2
|
2022-12-12 18:20:48 +03:00
|
|
|
|
|
|
|
# Extremum
|
2022-12-14 17:45:13 +03:00
|
|
|
assertion maximum of [1; 2; 3] or if collection empty then 10 = 3
|
|
|
|
assertion maximum of (decimal of i) for i among [1; 2; 3] or if collection empty then 10. = 3.
|
2022-12-12 18:20:48 +03:00
|
|
|
|
|
|
|
# Arg extremum
|
2022-12-14 17:45:13 +03:00
|
|
|
assertion (i among [1; 2; 3]
|
2022-12-13 15:28:01 +03:00
|
|
|
such that decimal of ((2 - i) * (2 - i)) is minimum
|
2022-12-14 17:45:13 +03:00
|
|
|
or if collection empty then 42)
|
2022-12-12 18:20:48 +03:00
|
|
|
= 2
|
|
|
|
```
|
|
|
|
|
|
|
|
```catala-test-inline
|
|
|
|
$ catala scopelang -s S
|
|
|
|
let scope S (x: integer|internal|output) =
|
|
|
|
let x : integer = ⟨true ⊢ 0⟩;
|
|
|
|
assert reduce
|
|
|
|
(λ (x1: integer) (x2: integer) →
|
|
|
|
if
|
|
|
|
let i : integer = x1 in
|
2022-12-13 15:28:01 +03:00
|
|
|
to_rat_int 2 -! i *! 2 -! i <.
|
2022-12-12 18:20:48 +03:00
|
|
|
let i : integer = x2 in
|
2022-12-13 15:28:01 +03:00
|
|
|
to_rat_int 2 -! i *! 2 -! i then x1 else x2) 42 [1; 2; 3] =
|
2022-12-12 18:20:48 +03:00
|
|
|
2;
|
|
|
|
assert reduce
|
|
|
|
(λ (x1: decimal) (x2: decimal) → if x1 >. x2 then x1 else x2)
|
2022-12-13 15:28:01 +03:00
|
|
|
10. map (λ (i: integer) → to_rat_int i) [1; 2; 3] = 3.;
|
2022-12-12 18:20:48 +03:00
|
|
|
assert reduce
|
|
|
|
(λ (x1: integer) (x2: integer) → if x1 >! x2 then x1 else x2)
|
|
|
|
10 [1; 2; 3] = 3;
|
|
|
|
assert length filter (λ (i: integer) → i >=! 2) [1; 2; 3] = 2;
|
|
|
|
assert length [1; 2; 3] = 3;
|
|
|
|
assert reduce (λ (x1: integer) (x2: integer) → x1 +! x2) 0
|
|
|
|
map (λ (i: integer) → i +! 2) [1; 2; 3] = 12;
|
|
|
|
assert reduce (λ (x1: integer) (x2: integer) → x1 +! x2) 0 [1; 2; 3] = 6;
|
|
|
|
assert filter (λ (i: integer) → i >=! 2) [1; 2; 3] = [2; 3];
|
|
|
|
assert map (λ (i: integer) → i +! 2) [1; 2; 3] = [3; 4; 5]
|
|
|
|
```
|
|
|
|
|
|
|
|
```catala-test-inline
|
|
|
|
$ catala interpret -s S
|
|
|
|
[RESULT] Computation successful! Results:
|
|
|
|
[RESULT] x = 0
|
|
|
|
```
|