\documentclass{article}
\input camila.mac
\begin{document}

\INCLUDE{seq.cam}
$\begin{array}{l}
strMIN:{\set{str}} \tfunc{str} \\ strMIN(s) \deff \\ \rule{3ex}{0pt}  min-red(
chr(255),s)
\end{array}$

\traco

$\begin{array}{l}
strCAT:{str^{\star}} \tfunc{str} \\ strCAT(l) \deff \\ \rule{3ex}{0pt}  
\COND{
l = \emptylist}{\!\!\mattt{
""}}{
hd(l) \conc 
strCAT(
tl(l))}
\end{array}$

\traco

$\begin{array}{l}
strCenter:str \times int \tfunc{str} \\ strCenter(s,l) \deff \\ \rule{3ex}{0pt}  
\COND{
l = 
strlen(s)}{s}{
\LET 
x = 
l - 
strlen(s)\\
m = 
x / 2\\
r = 
rem(x,2)\\
n = 
m + r 
\IN 
strcat(
strFill(\!\!\mattt{
\mbox{\texttt{" "}}},m),s,
strFill(\!\!\mattt{
\mbox{\texttt{" "}}},n)) 
\TEL}
\end{array}$

\traco

$\begin{array}{l}
strLeft:str \times int \tfunc{str} \\ strLeft(s,l) \deff \\ \rule{3ex}{0pt}  
\COND{
l = 
strlen(s)}{s}{
strcat(
strleft(s,
l - 1),\!\!\mattt{
\mbox{\texttt{" "}}})}
\end{array}$

\traco

$\begin{array}{l}
strRight:str \times int \tfunc{str} \\ strRight(s,l) \deff \\ \rule{3ex}{0pt}  
\COND{
l = 
strlen(s)}{s}{
strcat(\!\!\mattt{
\mbox{\texttt{" "}}},
strRight(s,
l - 1))}
\end{array}$

\traco

$\begin{array}{l}
strFill:str \times int \tfunc{str} \\ strFill(s,l) \deff \\ \rule{3ex}{0pt}  
\COND{
l = 0}{\!\!\mattt{
""}}{s \conc 
strFill(s,
l - 1)}
\end{array}$

\traco

$\begin{array}{l}
strSeq2STR:{str^{\star}} \times str \tfunc{str} \\ strSeq2STR(l,s) \deff \\ \rule{3ex}{0pt}  
strCAT(
seqAddSep(l,s))
\end{array}$

\traco

$\begin{array}{l}
strSet2STR:{\set{str}} \times str \tfunc{str} \\ strSet2STR(X,s) \deff \\ \rule{3ex}{0pt}  
strSeq2STR(\enlist{x \asor x \in X},s)
\end{array}$

\traco

$\begin{array}{l}
strFF2index:A \pfunc{str} \tfunc{{A^{\star}}} \\ strFF2index(ff) \deff \\ \rule{3ex}{0pt}  
\COND{
ff = \left(  \right)}{\emptylist}{
\LET 
m = 
strMIN(
ran(ff))\\
X = \{a \asor a \in 
dom(ff) \wedge 
 ff(a) = m\}\\
l = \enlist{a \asor a \in X} 
\IN l \conc 
strFF2index(
ff \mapds X) 
\TEL}
\end{array}$

\traco
\end{document}
