mirror of
https://github.com/CatalaLang/catala.git
synced 2024-11-10 15:04:15 +03:00
1469 lines
21 KiB
TeX
1469 lines
21 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}
|
|
2021-03-15
|
|
\hfill
|
|
{\Huge\bfseries\sffamily
|
|
Catala Syntax Cheat Sheet}
|
|
\hfill
|
|
v.0.2.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}
|
|
\\
|
|
Article&
|
|
\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}
|
|
> Begin metadata
|
|
> End metadata
|
|
\end{minted}
|
|
\vspace*{-1.75em}
|
|
&
|
|
\vspace*{-1.75em}
|
|
\begin{minted}{catala_fr}
|
|
> Début métadonnées
|
|
> Fin métadonnées
|
|
\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}
|
|
\\
|
|
Master file\newline (only inclusions)&
|
|
\vspace*{-1.75em}
|
|
\begin{minted}{catala_en}
|
|
> Master file
|
|
\end{minted}
|
|
\vspace*{-1.75em}
|
|
&
|
|
\vspace*{-1.75em}
|
|
\begin{minted}{catala_fr}
|
|
> Fichier maître
|
|
\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:
|
|
context bar content integer
|
|
context baz condition
|
|
context fizz scope Buzz
|
|
```
|
|
\end{minted}
|
|
\vspace*{-1.75em}
|
|
&
|
|
\vspace*{-1.75em}
|
|
\begin{minted}{catala_fr}
|
|
```catala
|
|
déclaration champ d'application Foo:
|
|
contexte bar contenu entier
|
|
contexte baz condition
|
|
contexte fizz champ d'application Buzz
|
|
```
|
|
\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
|
|
|01/01/2021|
|
|
```
|
|
\end{minted}
|
|
\vspace*{-1.75em}
|
|
&
|
|
\vspace*{-1.75em}
|
|
\begin{minted}{catala_fr}
|
|
```catala
|
|
|01/01/2021|
|
|
```
|
|
\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}{catala_en}
|
|
```catala
|
|
maximum integer for ...
|
|
```
|
|
\end{minted}
|
|
\vspace*{-1.75em}
|
|
&
|
|
\vspace*{-1.75em}
|
|
\begin{minted}{catala_fr}
|
|
```catala
|
|
maximum entier pour ...
|
|
```
|
|
\end{minted}
|
|
\vspace*{-1.75em}
|
|
\\
|
|
Arg-extremum&
|
|
\vspace*{-1.75em}
|
|
\begin{minted}{catala_en}
|
|
```catala
|
|
content minimum decimal for ...
|
|
```
|
|
\end{minted}
|
|
\vspace*{-1.75em}
|
|
&
|
|
\vspace*{-1.75em}
|
|
\begin{minted}{catala_fr}
|
|
```catala
|
|
contenu minimum décimal pour ...
|
|
```
|
|
\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}
|
|
\\
|
|
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 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} |