catala/tests/test_array/good/aggregation_3.catala_en

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

87 lines
2.5 KiB
Plaintext
Raw Normal View History

2022-12-12 18:20:48 +03:00
```catala
declaration scope S:
output x content integer
scope S:
definition x equals 0
# Map
assertion (i + 2) for i among [1; 2; 3] = [3; 4; 5]
2022-12-12 18:20:48 +03:00
# Filter
assertion (i among [1; 2; 3] such that i >= 2) = [2; 3]
assertion ((i + 2) for i among [1; 2; 3] such that i > 2) = [5]
2022-12-12 18:20:48 +03:00
# Sum
assertion sum integer of [1; 2; 3] = 6
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
assertion (number of i among [1; 2; 3] such that i >= 2) = 2
2022-12-12 18:20:48 +03:00
# Extremum
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
assertion (i among [1; 2; 3]
such that decimal of ((2 - i) * (2 - i)) is minimum
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) =
2023-11-07 13:52:09 +03:00
let x : integer = error_empty ⟨ ⟨true ⊢ 0⟩ | false ⊢ error_empty ∅ ⟩;
assert (map (λ (i: integer) → i + 2) [ 1; 2; 3 ]) = [ 3; 4; 5 ];
assert (filter (λ (i: integer) → i >= 2) [ 1; 2; 3 ]) = [ 2; 3 ];
assert (map (λ (i: integer) → i + 2)
filter (λ (i: integer) → i > 2) [ 1; 2; 3 ])
2023-05-02 11:58:45 +03:00
= [ 5 ];
2023-04-17 16:10:47 +03:00
assert (reduce
2023-06-12 16:21:06 +03:00
(λ (sum1: integer) (sum2: integer) → sum1 + sum2)
0
2023-04-17 16:10:47 +03:00
[ 1; 2; 3 ])
2023-05-02 11:58:45 +03:00
= 6;
2023-04-17 16:10:47 +03:00
assert (reduce
2023-06-12 16:21:06 +03:00
(λ (sum1: integer) (sum2: integer) → sum1 + sum2)
0
map (λ (i: integer) → i + 2) [ 1; 2; 3 ])
2023-05-02 11:58:45 +03:00
= 12;
assert (length [ 1; 2; 3 ]) = 3;
assert (length filter (λ (i: integer) → i >= 2) [ 1; 2; 3 ]) = 2;
2023-04-17 16:10:47 +03:00
assert (reduce
(λ (max1: integer) (max2: integer) →
2023-06-12 16:21:06 +03:00
if max1 > max2 then max1 else max2)
10
2023-04-17 16:10:47 +03:00
[ 1; 2; 3 ])
= 3;
2023-04-17 16:10:47 +03:00
assert (reduce
(λ (max1: decimal) (max2: decimal) →
2023-06-12 16:21:06 +03:00
if max1 > max2 then max1 else max2)
10.
map (λ (i: integer) → to_rat i) [ 1; 2; 3 ])
2023-05-02 11:58:45 +03:00
= 3.;
2023-04-17 16:10:47 +03:00
assert (reduce
(λ (i_1: integer) (i_2: integer) →
if
(let i : integer = i_1 in
to_rat ((2 - i) * (2 - i)))
< let i : integer = i_2 in
to_rat ((2 - i) * (2 - i))
2023-07-07 15:50:32 +03:00
then
i_1
2023-06-12 16:21:06 +03:00
else i_2)
42
2023-04-17 16:10:47 +03:00
[ 1; 2; 3 ])
2023-05-02 11:58:45 +03:00
= 2
2022-12-12 18:20:48 +03:00
```
```catala-test-inline
$ catala interpret -s S
[RESULT] Computation successful! Results:
[RESULT] x = 0
```