\section{Operatoren}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Perl 6's Operatoren}
Teil 2 - Die Operatoren von Perl 6
\end{frame}
\subsection{Arten}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Operator Arten}
("Periodic Table of Operators")\\
\ \\
\uncover<2>{
übersichtlicher ist es, wenn man nach mathematischen
Aspekten kategorisiert:
\begin{itemize}
\item unäre Operatoren (prefix, postfix)
\item binäre Operatoren (infix, circumfix)
\item nulläre Operatoren
\item tertiäre Operatoren
\end{itemize}
In dieser Reihenfolge werde ich die Operatoren nun vorstellen.
}
\end{frame}
\subsection{unäre}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{unäre Operatoren}
\input{code/op/op-arten.pl.tex}
\end{frame}
\subsection{binäre}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{binäre Operatoren}
\input{code/op/op-arten2.pl.tex}
\end{frame}
\subsection{andere}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{andere Operatoren}
\input{code/op/op-arten3.pl.tex}
\end{frame}
\subsection{Syntax}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{weitere Aufrufsmöglichkeiten}
\input{code/op/aufruf1.pl.tex}
\end{frame}
\subsection{Beispiel}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Wolf im Schafspelz}
\input{code/op/typen-konvertierung.pl.tex}
\end{frame}
\subsection{Zuweisung}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Zuweisungs-Operatoren}
\input{code/op/zuweisung.pl.tex}
\end{frame}
\subsection{Bindungstest}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Bindungstest}
\input{code/op/bind1.pl.tex}
\end{frame}
\subsection{Vergleiche}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Vergleichs-Operatoren}
Vergleichs-Operatoren liefern 'true' oder 'false':
\input{code/op/vergl1.pl.tex}
\end{frame}
\subsection{Wiederholungen}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Wiederholungs-Operatoren}
\input{code/op/wiederholungs-ops.pl.tex}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Wiederholungs-Operatoren}
\input{code/op/wurf1.pl.tex}
\end{frame}
% \subsection{Zip}
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \begin{frame}
% % for %ages.kv -> $name, $age {
% % print $name, " is now ", $age;
% % }
% \end{frame}
\subsection{Bereiche}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Bereichs-Operator}
\input{code/op/bereichs-ops.pl.tex}
\end{frame}
\subsection{Kontext}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Kontext-Operatoren}
\input{code/op/kontext-ops.pl.tex}
\end{frame}
% * Void Kontext
% Expects no value.
% * Scalar Kontext
% Expects a single value. A composite value returns a reference to itself in scalar context.
% * Boolean Kontext
% Expects a true or false value. This includes the traditional definitions of truth--where 0, undef, and the empty string are false and all other values are true--and values flagged with the properties true or false.
% * Integer Kontext
% Expects an integer value. Strings are treated as numeric and floating-point numbers are truncated.
% * Numeric Kontext
% Expects a number, whether it's an integer or floating-point, and whether it's decimal, binary, octal, hex, or some other base.
% * String Kontext
% Expects a string value. It interprets any information passed to it as a string of characters.
% * Objekt Kontext
% Expects an object, or more specifically, a reference to an object.
% * List context
% Expects a collection of values. Any single value in list context is treated as a one-element list.
% * Flattening list context
% Expects a list. Flattens out arrays and hashes into their component parts.
% * Non-flattening list context
% Expects a list. Treats arrays, hashes, and other composite values as discrete entities.
% * Lazy list context
% Expects a list, just like non-flattening list context, but doesn't require all the elements at once.
% * Hashlist context
% Expects a list of pairs. A simple list in hashlist context pairs up alternating elements.
\subsection{logische Operatoren}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Kontext-Operatoren}
\input{code/op/logik1.pl.tex}
\end{frame}
\subsection{Smart-Match}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Smart-Match-Operatoren}
\input{code/op/smart1.pl.tex}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Smart-Match-Operatoren}
\input{code/op/smart2.pl.tex}
\end{frame}
\subsection{Hyper}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Hyper-Operatoren}
\input{code/op/hyper1.pl.tex}
\end{frame}
\subsection{Reduktion}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{logische Reduktions-Metaoperatoren}
\textellipsis wenden den in den Klammern stehenden \\
Operator auf alle Elmente einer Liste an:
\input{code/op/reduce1.pl.tex}
\end{frame}
\subsection{Junktionen}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Glückspiele...}
Angenommen, man darf drei mal Würfel, bis man eine 6 hat.
\input{code/op/wurf2.pl.tex}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Glückspiele...}
Angenommen, bei drei Würfen muss genau eine 6 bei sein:
\input{code/op/wurf3.pl.tex}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Alterskontrolle}
\input{code/op/junkt1.pl.tex}
\end{frame}
% Table: Junctions
%
% Function Operator Relation Meaning
% all & AND Operation must be true for all values.
% any | OR Operation must be true for at least one value.
% one ^ XOR Operation must be true for exactly one value.
% none NOT Operation must be false for all values.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% $a = +@array # Anzahl der Elemente
%
% eigenschaften von variablen: traits und properties
%
% Junktionen
% all($a,$b) any($a,$b) one($a,$b) not($a,$b)
%
% Junktionen sind Objekte.
% sie können verglichen werden:
% if all($a,$b)==none($c,$d) {...}
% Methoden sind:
% .values()
% .dump()
% .pick()
% \end{frame}