\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.

% * Item Kontext
% Expects a single value. A composite value returns a reference to itself in item 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}
