mirror of
https://github.com/CatalaLang/catala.git
synced 2024-09-19 16:28:12 +03:00
Fix code in LaTeX literate output
pfffff
This commit is contained in:
parent
c31ebdf3f8
commit
41eb25e9e0
@ -122,8 +122,8 @@ let wrap_latex
|
|||||||
\newunicodechar{→}{$\rightarrow$}
|
\newunicodechar{→}{$\rightarrow$}
|
||||||
\newunicodechar{≠}{$\neq$}
|
\newunicodechar{≠}{$\neq$}
|
||||||
|
|
||||||
\newcommand*\FancyVerbStartString{```catala}
|
\newcommand*\FancyVerbStartString{\PYG{l+s}{```catala}}
|
||||||
\newcommand*\FancyVerbStopString{```}
|
\newcommand*\FancyVerbStopString{\PYG{l+s}{```}}
|
||||||
|
|
||||||
\fvset{
|
\fvset{
|
||||||
numbers=left,
|
numbers=left,
|
||||||
|
@ -1,681 +0,0 @@
|
|||||||
\documentclass{article}
|
|
||||||
|
|
||||||
\usepackage[T1]{fontenc}
|
|
||||||
\usepackage[utf8]{inputenc}
|
|
||||||
\usepackage{multicol}
|
|
||||||
\usepackage{calc}
|
|
||||||
\usepackage{ifthen}
|
|
||||||
\usepackage{epsfig}
|
|
||||||
%\usepackage{bookman}
|
|
||||||
%\usepackage{booktabs}
|
|
||||||
\usepackage{upquote} % Uncurly the quotes
|
|
||||||
\usepackage{etoolbox} % for backquote fix
|
|
||||||
\usepackage[scaled=0.8]{DejaVuSans}
|
|
||||||
\usepackage[scaled=0.8]{DejaVuSansMono}
|
|
||||||
\usepackage{mdframed} % nice frames
|
|
||||||
\usepackage[nobottomtitles]{titlesec} % better titles
|
|
||||||
\usepackage{enumitem}
|
|
||||||
\usepackage{minted}
|
|
||||||
\usepackage[a4paper,landscape,margin=1cm,includehead,headsep=2ex,nofoot]{geometry}
|
|
||||||
\usepackage{fancyhdr}
|
|
||||||
\usepackage{hyperref}
|
|
||||||
|
|
||||||
\usemintedstyle{manni}
|
|
||||||
|
|
||||||
\setlist[itemize]{noitemsep, topsep=0pt}
|
|
||||||
|
|
||||||
% backquote dejavu fix
|
|
||||||
\makeatletter
|
|
||||||
\chardef\straightquote@code=\catcode`'
|
|
||||||
\chardef\backquote@code=\catcode``
|
|
||||||
\catcode`'=\active \catcode``=\active
|
|
||||||
\patchcmd{\@noligs}
|
|
||||||
{\textasciigrave}
|
|
||||||
{\fixedtextasciigrave}
|
|
||||||
{}{}
|
|
||||||
\newcommand{\fixedtextasciigrave}{%
|
|
||||||
\makebox[.5em]{\fontencoding{TS1}\fontfamily{fvs}\selectfont\textasciigrave}% Vera Sans
|
|
||||||
}
|
|
||||||
\catcode\lq\'=\straightquote@code
|
|
||||||
\catcode\lq\`=\backquote@code
|
|
||||||
\makeatletter
|
|
||||||
|
|
||||||
% fancyvrb and mdframed stuff
|
|
||||||
\newmdenv[bottomline=false,rightline=false]{topleft}
|
|
||||||
\newmdenv[topline=false,leftline=false]{bottomright}
|
|
||||||
\DefineVerbatimEnvironment{Verbacorner}{Verbatim}{}
|
|
||||||
\surroundwithmdframed[bottomline=false,rightline=false]{Verbacorner}
|
|
||||||
\fvset{commandchars=@\{\}}
|
|
||||||
|
|
||||||
\ifthenelse{\lengthtest { \paperwidth = 11in}}
|
|
||||||
{ \geometry{top=.5in,left=.5in,right=.5in,bottom=.5in} }
|
|
||||||
{\ifthenelse{ \lengthtest{ \paperwidth = 297mm}}
|
|
||||||
{\geometry{top=1cm,left=1cm,right=1cm,bottom=1cm} }
|
|
||||||
{\geometry{top=1cm,left=1cm,right=1cm,bottom=1cm} }
|
|
||||||
}
|
|
||||||
\pagestyle{empty}
|
|
||||||
|
|
||||||
%% \makeatletter
|
|
||||||
%% \renewcommand{\section}{\@startsection{section}{1}{0mm}%
|
|
||||||
%% {-1ex plus -.5ex minus -.2ex}%
|
|
||||||
%% {0.5ex plus .2ex}%x
|
|
||||||
%% {\normalfont\large\bfseries}}
|
|
||||||
%% \renewcommand{\subsection}{\@startsection{subsection}{2}{0mm}%
|
|
||||||
%% {-1ex plus -.5ex minus -.2ex}%
|
|
||||||
%% {0.5ex plus .2ex}%
|
|
||||||
%% {\normalfont\normalsize\bfseries}}
|
|
||||||
%% \renewcommand{\subsubsection}{\@startsection{subsubsection}{3}{0mm}%
|
|
||||||
%% {-1ex plus -.5ex minus -.2ex}%
|
|
||||||
%% {1ex plus .2ex}%
|
|
||||||
%% {\normalfont\small\bfseries}}
|
|
||||||
%% \makeatother
|
|
||||||
|
|
||||||
%% \makeatletter
|
|
||||||
%% \let\origsection\section
|
|
||||||
%% \renewcommand\section{\vspace{5em}\origsection}
|
|
||||||
%% \makeatother
|
|
||||||
|
|
||||||
% Don't print section numbers
|
|
||||||
\setcounter{secnumdepth}{0}
|
|
||||||
|
|
||||||
\setlength{\parindent}{0pt}
|
|
||||||
\setlength{\parskip}{1ex}
|
|
||||||
|
|
||||||
\pagestyle{fancy}
|
|
||||||
\newcommand{\makeheader}[3]{
|
|
||||||
\fancyhead[L]{
|
|
||||||
\begin{minipage}{150pt}
|
|
||||||
\includegraphics[width=24mm]{by-sa.pdf}
|
|
||||||
\end{minipage}
|
|
||||||
}
|
|
||||||
\fancyhead[C]{
|
|
||||||
\LARGE{\bfseries #1}
|
|
||||||
}
|
|
||||||
\fancyhead[R]{
|
|
||||||
{\scriptsize
|
|
||||||
#2 $\cdot$ Revision \#1 \copyright\ \the\year$\quad$
|
|
||||||
\begin{minipage}{30pt}
|
|
||||||
\vspace{-3pt}
|
|
||||||
\includegraphics[width=\textwidth]{logo.pdf} %defined at bottom
|
|
||||||
\end{minipage}
|
|
||||||
}}
|
|
||||||
\fancyfoot[L]{}
|
|
||||||
\fancyfoot[C]{}
|
|
||||||
\fancyfoot[R]{}
|
|
||||||
}
|
|
||||||
|
|
||||||
\newenvironment{absolutelynopagebreak}
|
|
||||||
{\par\nobreak\vfil\penalty0\vfilneg
|
|
||||||
\vtop\bgroup}
|
|
||||||
{\par\xdef\tpd{\the\prevdepth}\egroup
|
|
||||||
\prevdepth=\tpd}
|
|
||||||
|
|
||||||
\newcommand{\vb}{\usefont{T1}{DejaVuSansMono-TLF}{b}{n}}
|
|
||||||
|
|
||||||
\newenvironment{libcomments}{\begin{itemize}[topsep=-10000pt]}{\end{itemize}}
|
|
||||||
|
|
||||||
\setlength{\headheight}{20.1pt}
|
|
||||||
\setlength{\headsep}{10pt}
|
|
||||||
|
|
||||||
\renewcommand{\familydefault}{\sfdefault} % everything sans-serif
|
|
||||||
|
|
||||||
%Url handling
|
|
||||||
\hypersetup{
|
|
||||||
colorlinks=true,
|
|
||||||
urlcolor=black,
|
|
||||||
linkcolor=black,
|
|
||||||
citecolor=black
|
|
||||||
}
|
|
||||||
|
|
||||||
% font size -> set to equivalent to footnotesize of 10 pt
|
|
||||||
% it affect only the \\normalsize command, all are still relative to default's
|
|
||||||
% article one (10pt)
|
|
||||||
\newcommand\articlenormalsize{\fontsize{10pt}{12pt}\selectfont}
|
|
||||||
\renewcommand\normalsize{\footnotesize}
|
|
||||||
|
|
||||||
% redefine sections padding
|
|
||||||
\makeatletter
|
|
||||||
\renewcommand{\section}{\@startsection{section}{1}{0mm}%
|
|
||||||
{-1ex plus -.5ex minus -.2ex}%
|
|
||||||
{0.5ex}%
|
|
||||||
{\normalfont\large\bfseries}}
|
|
||||||
\renewcommand{\subsection}{\@startsection{subsection}{2}{4mm}%
|
|
||||||
{-1ex}%
|
|
||||||
{0.5ex}%
|
|
||||||
{\normalfont\articlenormalsize\bfseries}}
|
|
||||||
\renewcommand{\subsubsection}{\@startsection{subsubsection}{3}{16mm}%
|
|
||||||
{-1ex plus -.5ex minus -.2ex}%
|
|
||||||
{1ex plus .2ex}%
|
|
||||||
{\normalfont\small\bfseries}}
|
|
||||||
\makeatother
|
|
||||||
|
|
||||||
%\pagestyle{empty}
|
|
||||||
% set section counter to 0
|
|
||||||
\setcounter{secnumdepth}{0}
|
|
||||||
|
|
||||||
% Text at right
|
|
||||||
%\raggedright
|
|
||||||
|
|
||||||
% Set up the interline space in tables
|
|
||||||
\renewcommand{\arraystretch}{0.0}
|
|
||||||
|
|
||||||
% https://github.com/gpoore/minted/issues/82
|
|
||||||
\makeatletter
|
|
||||||
\newenvironment{catala}{%
|
|
||||||
\VerbatimEnvironment
|
|
||||||
\let\FV@ListVSpace\relax
|
|
||||||
\begin{minted}[autogobble]{catala_en}}%
|
|
||||||
{\end{minted}}
|
|
||||||
\makeatother
|
|
||||||
|
|
||||||
% https://github.com/gpoore/minted/issues/82
|
|
||||||
\makeatletter
|
|
||||||
\newenvironment{catala-expr}{%
|
|
||||||
\VerbatimEnvironment
|
|
||||||
\let\FV@ListVSpace\relax
|
|
||||||
\begin{minted}[autogobble,firstline=2,escapeinside=||]{catala_en}}%
|
|
||||||
{\end{minted}}
|
|
||||||
\makeatother
|
|
||||||
|
|
||||||
\begin{document}
|
|
||||||
|
|
||||||
\makeheader{The Catala Syntax \hspace{2em}\small english version}{v0.8.0}{1}
|
|
||||||
% warning: this is repeated for p.2
|
|
||||||
% \begin{center}
|
|
||||||
% 2022-12-15
|
|
||||||
% \hfill
|
|
||||||
% {\Huge\bfseries\sffamily
|
|
||||||
% Catala Syntax Cheat Sheet}
|
|
||||||
% \hfill
|
|
||||||
% v.0.8.0
|
|
||||||
% \end{center}
|
|
||||||
% \hrule
|
|
||||||
|
|
||||||
\begin{multicols}{3}
|
|
||||||
|
|
||||||
\newlength\cola
|
|
||||||
\setlength\cola{\dimexpr .4\columnwidth -2\tabcolsep}
|
|
||||||
\newlength\colb
|
|
||||||
\setlength\colb{\dimexpr .6\columnwidth -2\tabcolsep}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\section{Literate programming}
|
|
||||||
|
|
||||||
\begin{tabular}{@{}p{\cola}p{\colb}@{}}
|
|
||||||
Heading & \begin{catala}
|
|
||||||
# Title
|
|
||||||
### Sub-subtitle
|
|
||||||
\end{catala}
|
|
||||||
\\
|
|
||||||
Code block &
|
|
||||||
\begin{catala}
|
|
||||||
```catala
|
|
||||||
```
|
|
||||||
\end{catala}
|
|
||||||
\\
|
|
||||||
Metadata block & \begin{catala}
|
|
||||||
```catala-metadata
|
|
||||||
```
|
|
||||||
\end{catala}
|
|
||||||
\\
|
|
||||||
File inclusion & \begin{catala}
|
|
||||||
> Include: foo.catala_en
|
|
||||||
\end{catala}
|
|
||||||
\\
|
|
||||||
\end{tabular}
|
|
||||||
|
|
||||||
%% \newcommand*\FancyVerbStartString{```catala}
|
|
||||||
\newcommand*\FancyVerbStopString{```}
|
|
||||||
|
|
||||||
|
|
||||||
\section{Types and literals}
|
|
||||||
|
|
||||||
\begin{tabular}{@{}p{\cola}p{\colb}@{}}
|
|
||||||
\begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
boolean
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
&
|
|
||||||
\begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
true false
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
\begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
integer
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
&
|
|
||||||
\begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
65536
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
\begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
decimal
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
& \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
65536.262144 37%
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
\begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
money
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
&
|
|
||||||
\begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
$1,234,567.89
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
\begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
date
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
&
|
|
||||||
\begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
||2021-01-31||
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
\begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
duration
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
&
|
|
||||||
\begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
254 day 4 month 1 year
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
\begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
collection integer
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
&
|
|
||||||
\begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
[ 12; 24; 36 ]
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
\begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
decimal depends on money
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
&
|
|
||||||
\begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
f of x equals x / $12.0
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
\begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
Struct1
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
&
|
|
||||||
\begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
Struct1 { -- fld1: 9 -- fld2: false }
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
\begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
Enum1
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
&
|
|
||||||
\begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
Case1 content 12 Case2
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
\end{tabular}
|
|
||||||
|
|
||||||
\section{Expressions}
|
|
||||||
|
|
||||||
\begin{tabular}{@{}p{\cola}p{\colb}@{}}
|
|
||||||
Local definition & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
let x equals 36 - 5 in ...
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Pattern matching & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
match expr with pattern
|
|
||||||
-- Case1 of x: ...
|
|
||||||
-- Case2 : ...
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Pattern test and optional binding & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
expr with pattern Case1
|
|
||||||
expr with pattern Case1 of x
|
|
||||||
and x >= 2
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Structure field access & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
struc1.fld2
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Function call & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
f of $44.50
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Subscope variable & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
sub1.var0
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Direct scope call & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
outut of Scope1
|
|
||||||
with { -- fld1: 9 -- fld2: true }
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Conditional & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
if ... then ... else ...
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
\end{tabular}
|
|
||||||
|
|
||||||
\section{Metadata declaration}
|
|
||||||
|
|
||||||
\begin{tabular}{@{}p{\cola}p{\colb}@{}}
|
|
||||||
|
|
||||||
Structure declaration &
|
|
||||||
\begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
declaration structure Struct1:
|
|
||||||
data fld1 content integer
|
|
||||||
data fld2 content boolean
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Enumeration declaration & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
declaration enumeration Enum1:
|
|
||||||
-- Case1 content integer
|
|
||||||
-- Case2
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Scope declaration & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
declaration scope Scope1:
|
|
||||||
internal var1 content integer
|
|
||||||
internal var2 condition
|
|
||||||
sub1 scope Scope0
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Input-output qualifiers & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
internal var1 content ...
|
|
||||||
output var3 content ...
|
|
||||||
input var4 content ...
|
|
||||||
input output var5 content ...
|
|
||||||
context var6 content ...
|
|
||||||
context output var7 content ...
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
State transitions declaration & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
internal var1 content ...
|
|
||||||
state before_f
|
|
||||||
state after_f
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
\end{tabular}
|
|
||||||
|
|
||||||
\section{Operators and built-ins}
|
|
||||||
|
|
||||||
\begin{tabular}{@{}p{\cola}p{\colb}@{}}
|
|
||||||
Logical operators & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
not a
|
|
||||||
a and b
|
|
||||||
a or b # "or otherwise"
|
|
||||||
a xor b # exclusive or
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Arithmetic & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
- a
|
|
||||||
a + b a - b
|
|
||||||
a * b a / b
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Comparison &
|
|
||||||
\begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
a = b a != b
|
|
||||||
a > b a < b
|
|
||||||
a >= b a <= b
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Conversions & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
decimal of 44
|
|
||||||
money of 23.15
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Rounding & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
round of $9.99
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Date parts & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
get_day of ...
|
|
||||||
get_month of ...
|
|
||||||
get_year of ...
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
\end{tabular}
|
|
||||||
|
|
||||||
\columnbreak
|
|
||||||
|
|
||||||
\section{Scope definition}
|
|
||||||
|
|
||||||
\begin{tabular}{@{}p{\cola}p{\colb}@{}}
|
|
||||||
Scope use & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
scope Scope1: ...
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Use-wide condition & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
scope Scope1
|
|
||||||
under condition var1 >= 2: ...
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Unconditional definition & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
definition var1 equals ...
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Conditional definition & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
definition var1
|
|
||||||
under condition ...
|
|
||||||
consequence equals ...
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Rule\newline(definition for conditions) & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
rule var2
|
|
||||||
under condition var1 >= 2
|
|
||||||
consequence fulfilled
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Negative rule & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
rule var2
|
|
||||||
under condition var1 = 0
|
|
||||||
consequence not fulfilled
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Function definition/rule & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
definition f of x equals ...
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Labeled definition or rule & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
label lbl1 definition var1 ...
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Exception to label & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
exception lbl1 definition var1 ...
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Exception to implicit & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
exception definition var1 ...
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
State definition & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
definition var1
|
|
||||||
state before_f
|
|
||||||
equals ...
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Assertion & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
assertion ...
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
\end{tabular}
|
|
||||||
|
|
||||||
\section{Collection operations}
|
|
||||||
|
|
||||||
\begin{tabular}{@{}p{\cola}p{\colb}@{}}
|
|
||||||
|
|
||||||
Presence test & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
coll contains 3
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Cardinal & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
number of coll
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Existence test & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
exists x among coll such that x >= 2
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
For all test & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
for all x among coll we have x >= 2
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Map & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
(x + 2) for x among coll
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Filter & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
x among coll such that x >= 2
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Merge & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
coll1 ++ coll2
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Aggregation & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
sum integer coll
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Count & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
number of coll
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Extremum & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
maximum of coll
|
|
||||||
or if collection empty then -1
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
Arg-extremum & \begin{catala-expr}
|
|
||||||
```catala
|
|
||||||
x among coll
|
|
||||||
such that (x * x) is minimum
|
|
||||||
or if collection empty then -1
|
|
||||||
```
|
|
||||||
\end{catala-expr}
|
|
||||||
\\
|
|
||||||
\end{tabular}
|
|
||||||
|
|
||||||
\end{multicols}
|
|
||||||
\vfill
|
|
||||||
\end{document}
|
|
Loading…
Reference in New Issue
Block a user