catala/doc/syntax/syntax.tex
2022-02-09 17:33:58 +01:00

1532 lines
30 KiB
TeX

\documentclass[a3paper,landscape]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[left=1cm,right=1cm,top=1cm,bottom=1cm]{geometry}
\usepackage{multicol}
\usepackage{bookman}
\usepackage{booktabs}
\usepackage{minted}
\pagestyle{empty}
\newcommand{\li}[1]{\texttt{#1}}
\begin{document}
\begin{center}
2022-02-09
\hfill
{\Huge\bfseries\sffamily
Catala Syntax Cheat Sheet}
\hfill
v.0.5.0
\end{center}
\hrule
\begin{multicols*}{2}
\section*{Literate programming}
\begin{center}
\begin{tabular}{p{0.15\columnwidth}p{0.275\columnwidth}p{0.275\columnwidth}}
\toprule
Feature & English syntax & French syntax \\\midrule
Heading &
\vspace*{-1.75em}
\begin{minted}{catala_en}
## Foo
### Bar
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
## Foo
### Bar
\end{minted}
\vspace*{-1.75em}
\\
Code block &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
```
\end{minted}
\vspace*{-1.75em}
\\
Metadata block &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala-metadata
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala-metadata
```
\end{minted}
\vspace*{-1.75em}
\\
File inclusion &
\vspace*{-1.75em}
\begin{minted}{catala_en}
> Include: foo.catala_en
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
> Inclusion: foo.catala_fr
\end{minted}
\vspace*{-1.75em}
\\
\bottomrule
\end{tabular}
\end{center}
\newcommand*\FancyVerbStartString{```catala}
\newcommand*\FancyVerbStopString{```}
\section*{Metadata declaration}
\begin{tabular}{p{0.22\columnwidth}p{0.3\columnwidth}p{0.425\columnwidth}}
\toprule
Feature & English syntax & French syntax \\\midrule
Structure declaration &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
declaration structure Foo:
data bar content integer
data baz content boolean
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
déclaration structure Foo:
donnée bar contenu entier
donnée baz contenu booléen
```
\end{minted}
\vspace*{-1.75em}
\\
Enumeration declaration &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
declaration enumeration Foo:
-- Bar content integer
-- Baz
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
déclaration énumeration Foo:
-- Bar contenu entier
-- Baz
```
\end{minted}
\vspace*{-1.75em} \\
Scope declaration &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
declaration scope Foo:
internal bar content integer
internal baz condition
fizz scope Buzz
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
déclaration champ d'application Foo:
interne bar contenu entier
interne baz condition
contexte fizz champ d'application Buzz
```
\end{minted}
\vspace*{-1.75em} \\
Input-output qualifiers &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
internal bar content ...
output baz content ...
input fizz content ...
input output buzz content ...
context biz content ...
context output boz content ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
interne bar contenu ...
sortie baz contenu ...
entrée fizz contenu ...
entrée sortie buzz contenu ...
contexte biz contenu ...
contexte sortie boz contenu ...
```
\end{minted}
\vspace*{-1.75em} \\
\bottomrule
\end{tabular}
\section*{Types}
\begin{center}
\begin{tabular}{p{0.175\columnwidth}p{0.2\columnwidth}p{0.2\columnwidth}}
\toprule
Feature & English syntax & French syntax \\\midrule
Natural integers &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
integer
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
entier
```
\end{minted}
\vspace*{-1.75em}
\\
Rational numbers &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
decimal
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
décimal
```
\end{minted}
\vspace*{-1.75em}
\\
Booleans &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
boolean
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
booléen
```
\end{minted}
\vspace*{-1.75em}
\\
Money &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
money
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
argent
```
\end{minted}
\vspace*{-1.75em}
\\
Date &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
date
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
date
```
\end{minted}
\vspace*{-1.75em}
\\
Duration &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
duration
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
durée
```
\end{minted}
\vspace*{-1.75em}
\\
Function &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
Foo depends on Bar
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
Foo dépend de Bar
```
\end{minted}
\vspace*{-1.75em}
\\
Collection &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
collection Foo
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
collection Foo
```
\end{minted}
\vspace*{-1.75em}
\\
\bottomrule
\end{tabular}
\end{center}
\section*{Literals}
\begin{center}
\begin{tabular}{p{0.15\columnwidth}p{0.275\columnwidth}p{0.275\columnwidth}}
\toprule
Feature & English syntax & French syntax \\\midrule
Integers &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
65536
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
65536
```
\end{minted}
\vspace*{-1.75em}
\\
Decimals &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
65536.262144
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
65536.262144
```
\end{minted}
\vspace*{-1.75em}
\\
Money &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
$1,234,567.89
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
1 234 567,89
```
\end{minted}
\vspace*{-1.75em}
\\
Date &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
|2021-01-31|
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
|2021-31-01|
```
\end{minted}
\vspace*{-1.75em}
\\
Durations &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
254 day 4 month 1 year
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
254 jour 4 mois 1 an
```
\end{minted}
\vspace*{-1.75em}
\\
Boolean &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
true false
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
vrai faux
```
\end{minted}
\vspace*{-1.75em}
\\
\bottomrule
\end{tabular}
\end{center}
\section*{Scope use and related items}
\begin{center}
\begin{tabular}{p{0.22\columnwidth}p{0.35\columnwidth}p{0.35\columnwidth}}
\toprule
Feature & English syntax & French syntax \\\midrule
Scope use &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
scope Foo: ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
champ d'application Foo: ...
```
\end{minted}
\vspace*{-1.75em}
\\
Use-wide condition &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
scope Foo
under condition bar: ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
champ d'application Foo
sous condition bar: ...
```
\end{minted}
\vspace*{-1.75em}
\\
Unconditional definition &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
definition foo equals ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
définition foo égal à ...
```
\end{minted}
\vspace*{-1.75em}
\\
Conditional definition &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
definition foo under condition
bar consequence equals ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
définition foo sous condition
bar conséquence égal à ...
```
\end{minted}
\vspace*{-1.75em}
\\
Rule\newline(definition for conditions) &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
rule foo under condition
bar consequence fulfilled
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
règle foo sous condition
bar conséquence rempli
```
\end{minted}
\vspace*{-1.75em}
\\
Negative rule &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
rule foo under condition
bar consequence not fulfilled
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
règle foo sous condition
bar conséquence non rempli
```
\end{minted}
\vspace*{-1.75em}
\\
Function definition/rule &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
definition foo of bar ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
définition foo de bar ...
```
\end{minted}
\vspace*{-1.75em}
\\
Labeled definition or rule &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
label foo definition bar ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
étiquette foo définition bar ...
```
\end{minted}
\vspace*{-1.75em}
\\
Exception to label &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
exception foo definition bar ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
exception foo définition bar ...
```
\end{minted}
\vspace*{-1.75em}
\\
Exception to implicit &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
exception definition bar ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
exception définition bar ...
```
\end{minted}
\vspace*{-1.75em}
\\
Assertion &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
assertion...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
assertion ...
```
\end{minted}
\vspace*{-1.75em}
\\
\bottomrule
\end{tabular}
\end{center}
\section*{Expressions}
\begin{center}
\begin{tabular}{p{0.2\columnwidth}p{0.375\columnwidth}p{0.345\columnwidth}}
\toprule
Feature & English syntax & French syntax \\\midrule
Pattern matching &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
match ... with pattern
-- Foo of foo: ...
-- Bar : ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
selon ... sous forme
-- Foo de foo: ...
-- Bar: ...
```
\end{minted}
\vspace*{-1.75em}
\\
Pattern test and optional binding &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
... with pattern Foo
... with pattern Bar of bar and ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
... sous forme Foo
... sous forme Bar de bar et
```
\end{minted}
\vspace*{-1.75em}
\\
Constructor injection &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
Foo content ... Bar
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
Foo contenu ... Bar
```
\end{minted}
\vspace*{-1.75em}
\\
Structure literal &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
Foo { -- bar: ... -- baz: ...}
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
Foo { -- bar: ... -- baz: ...}
```
\end{minted}
\vspace*{-1.75em}
\\
Structure field access &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
(...).foo
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
(...).foo
```
\end{minted}
\vspace*{-1.75em}
\\
Function call &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
... of ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
... de ...
```
\end{minted}
\vspace*{-1.75em}
\\
Subscope variable &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
foo.bar
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
foo.bar
```
\end{minted}
\vspace*{-1.75em}
\\
Conditional &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
if ... then ... else ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
si ... alors ... sinon
```
\end{minted}
\vspace*{-1.75em}
\\
\bottomrule
\end{tabular}
\end{center}
\section*{Collections}
\begin{center}
\begin{tabular}{p{0.175\columnwidth}p{0.325\columnwidth}p{0.4\columnwidth}}
\toprule
Feature & English syntax & French syntax \\\midrule
Collection literal &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
[ ...; ...; ...]
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
[ ...; ...; ...]
```
\end{minted}
\vspace*{-1.75em}
\\
Presence test &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
... in ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
... dans ...
```
\end{minted}
\vspace*{-1.75em}
\\
Cardinal &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
number of ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
nombre de ...
```
\end{minted}
\vspace*{-1.75em}
\\
Existence test &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
exists foo in ... such that ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
existe foo dans ... tel que ...
```
\end{minted}
\vspace*{-1.75em}
\\
For all test &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
for all foo in ... we have ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
pour tout foo dans ... on a ...
```
\end{minted}
\vspace*{-1.75em}
\\
For all test &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
for all foo in ... we have ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
pour tout foo dans ... on a ...
```
\end{minted}
\vspace*{-1.75em}
\\
Map/filter &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
map for foo in ... of ...
filter for foo in ... of ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
application pour foo dans ... de ...
filtre pour foo dans ... de ...
```
\end{minted}
\vspace*{-1.75em}
\\
Aggregation &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
sum money for foo in ... of ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
somme argent pour foo dans ... de ...
```
\end{minted}
\vspace*{-1.75em}
\\
Conditional count &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
number for foo in ... of ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
nombre pour foo dans ... de ...
```
\end{minted}
\vspace*{-1.75em}
\\
Extremum &
\vspace*{-1.75em}
\begin{minted}[fontsize=\scriptsize]{catala_en}
```catala
maximum integer initial ... for ... in ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}[fontsize=\scriptsize]{catala_fr}
```catala
maximum entier initial ... pour ... dans ...
```
\end{minted}
\vspace*{-1.75em}
\\
Arg-extremum &
\vspace*{-1.75em}
\begin{minted}[fontsize=\tiny]{catala_en}
```catala
content minimum decimal initial ... for ... in ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}[fontsize=\scriptsize]{catala_fr}
```catala
contenu minimum décimal initial ... pour ... dans ...
```
\end{minted}
\vspace*{-1.75em}
\\
\bottomrule
\end{tabular}
\end{center}
\section*{Operators}
\begin{center}
\begin{tabular}{p{0.2\columnwidth}p{0.3\columnwidth}p{0.3\columnwidth}}
\toprule
Feature & English syntax & French syntax \\\midrule
Integer to decimal &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
integer_to_decimal of ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
entier_vers_décimal de ...
```
\end{minted}
\vspace*{-1.75em}
\\
Date parts &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
get_day of ...
get_month of ...
get_year of ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
accès_jour de ...
accès_mois de ...
accès_année de ...
```
\end{minted}
\vspace*{-1.75em}
\\
Logical inclusive or &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
... or ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
... ou ...
```
\end{minted}
\vspace*{-1.75em}
\\
Logical exclusive or &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
... xor ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
... ou bien ...
```
\end{minted}
\vspace*{-1.75em}
\\
Logical and &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
... and ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
... et ...
```
\end{minted}
\vspace*{-1.75em}
\\
Polymorphic structural equality &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
... = ...
... != ...
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
... = ...
... != ...
```
\end{minted}
\vspace*{-1.75em}
\\
Integer sum &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
(integer) + (integer)
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
(entier) + (entier)
```
\end{minted}
\vspace*{-1.75em}
\\
Integer substraction &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
(integer) - (integer)
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
(entier) - (entier)
```
\end{minted}
\vspace*{-1.75em}
\\
Integer multiplication &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
(integer) * (integer)
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
(entier) * (entier)
```
\end{minted}
\vspace*{-1.75em}
\\
Integer division &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
(integer) / (integer)
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
(entier) / (entier)
```
\end{minted}
\vspace*{-1.75em}
\\
Integer comparison &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
< <= > >=
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
< <= > >=
```
\end{minted}
\vspace*{-1.75em}
\\
Decimal sum &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
(decimal) +. (decimal)
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
(décimal) +. (décimal)
```
\end{minted}
\vspace*{-1.75em}
\\
Decimal substraction &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
(decimal) -. (decimal)
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
(décimal) -. (décimal)
```
\end{minted}
\vspace*{-1.75em}
\\
Decimal multiplication &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
(decimal) *. (decimal)
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
(décimal) *. (décimal)
```
\end{minted}
\vspace*{-1.75em}
\\
Decimal division &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
(decimal) /. (decimal)
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
(décimal) /. (décimal)
```
\end{minted}
\vspace*{-1.75em}
\\
Decimal comparison &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
<. <=. >. >=.
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
<. <=. >. >=.
```
\end{minted}
\vspace*{-1.75em}
\\
Money sum &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
(money) +$ (money)
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
(argent) +€ (argent)
```
\end{minted}
\vspace*{-1.75em}
\\
Money substraction &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
(money) -$ (money)
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
(argent) -(argent)
```
\end{minted}
\vspace*{-1.75em}
\\
Money multiplication &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
(money) *$ (decimal)
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
(argent) *€ (décimal)
```
\end{minted}
\vspace*{-1.75em}
\\
Money division &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
(money) /$ (money)
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
(argent) /(argent)
```
\end{minted}
\vspace*{-1.75em}
\\
Money comparison &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
<$ <=$ >$ >=$
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
<€ <=€ >€ >=
```
\end{minted}
\vspace*{-1.75em}
\\
Date sum &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
(date) +@ (duration)
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
(date) +@ (durée)
```
\end{minted}
\vspace*{-1.75em}
\\
Date substraction &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
(date) -@ (date)
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
(date) -@ (date)
```
\end{minted}
\vspace*{-1.75em}
\\
Date comparison &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
<@ <=@ >@ >=@
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
<@ <=@ >@ >=@
```
\end{minted}
\vspace*{-1.75em}
\\
Duration sum &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
(duration) +^ (duration)
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
(durée) +^ (durée)
```
\end{minted}
\vspace*{-1.75em}
\\
Duration substraction &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
(duration) -^ (duration)
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
(durée) -^ (durée)
```
\end{minted}
\vspace*{-1.75em}
\\
Duration division &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
(duration) /^ (duration)
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
(durée) /^ (durée)
```
\end{minted}
\vspace*{-1.75em}
\\
Duration comparison &
\vspace*{-1.75em}
\begin{minted}{catala_en}
```catala
<^ <=^ >^ >=^
```
\end{minted}
\vspace*{-1.75em}
&
\vspace*{-1.75em}
\begin{minted}{catala_fr}
```catala
<^ <=^ >^ >=^
```
\end{minted}
\vspace*{-1.75em}
\\
\bottomrule
\end{tabular}
\end{center}
\end{multicols*}
\end{document}