Commit 220d6177 authored by Achilles Benetopoulos's avatar Achilles Benetopoulos

Add datatypes to arithm server example

parent d5dc8bc2
...@@ -806,25 +806,6 @@ session type της μιας στο session type της άλλης θα οδηγ ...@@ -806,25 +806,6 @@ session type της μιας στο session type της άλλης θα οδηγ
\end{tabular} \end{tabular}
\end{center} \end{center}
%%\begin{center}
%% \begin{tabular}{||c c c c||}
%% \hline
%% Col1 & Col2 & Col2 & Col3 \\ [0.5ex]
%% \hline\hline
%% 1 & 6 & 87837 & 787 \\
%% \hline
%% 2 & 7 & 78 & 5415 \\
%% \hline
%% 3 & 545 & 778 & 7507 \\
%% \hline
%% 4 & 545 & 18744 & 7560 \\
%% \hline
%% 5 & 88 & 788 & 6344 \\ [1ex]
%% \hline
%% \end{tabular}
%%\end{center}
\begin{lstlisting}[language=Erlang, caption=-sestype() annotation, basicstyle=\tiny] \begin{lstlisting}[language=Erlang, caption=-sestype() annotation, basicstyle=\tiny]
-sestype({{server, 0}, -sestype({{server, 0},
?f_rec_tag(1, [?sa_offer_tag([{?dt_any_tag, [?sa_recv_tag(?dt_any_tag, ?f_rec_tag(1, [?sa_offer_tag([{?dt_any_tag, [?sa_recv_tag(?dt_any_tag,
...@@ -879,9 +860,6 @@ annotations θα οδηγούσε σε απόρριψη αρκετών σωστ ...@@ -879,9 +860,6 @@ annotations θα οδηγούσε σε απόρριψη αρκετών σωστ
ο έλεγχος θα είχε αποτύχει, καθώς το $any$ αποτελεί τον υπερτύπο όλων των τύπων δεδομένων της Erlang. ο έλεγχος θα είχε αποτύχει, καθώς το $any$ αποτελεί τον υπερτύπο όλων των τύπων δεδομένων της Erlang.
% TODO
Το type lattice δίνεται στο σχήμα 5.Χ.
\subsection{Έλεγχος peers} \subsection{Έλεγχος peers}
Πέραν του $-sestype()$, εισάγουμε και άλλο ένα annotation: $-peers()$. Χρησιμοποιώντας αυτό, ο προγραμματιστής μπορεί να Πέραν του $-sestype()$, εισάγουμε και άλλο ένα annotation: $-peers()$. Χρησιμοποιώντας αυτό, ο προγραμματιστής μπορεί να
υποδείξει στο σύστημά μας πως πρέπει να ελέγξει ότι δύο συναρτήσεις αποτελούν τα δύο άκρα ενός πρωτοκόλλου επικοινωνίας. υποδείξει στο σύστημά μας πως πρέπει να ελέγξει ότι δύο συναρτήσεις αποτελούν τα δύο άκρα ενός πρωτοκόλλου επικοινωνίας.
...@@ -1199,30 +1177,49 @@ sqrt_client(Server, N) -> ...@@ -1199,30 +1177,49 @@ sqrt_client(Server, N) ->
\begin{lstlisting}[language=Erlang, caption=Arithmetic Server Implementation, basicstyle=\tiny] \begin{lstlisting}[language=Erlang, caption=Arithmetic Server Implementation, basicstyle=\tiny]
-sestype({{server, 0}, -sestype({{server, 0},
?f_rec_tag(1, [?sa_offer_tag([{?dt_atom_tag, [?sa_recv_tag(?dt_atom_tag, ?dt_tuple_tag([])), ?f_rec_tag(1, [?sa_offer_tag([{?dt_atom_tag, [?sa_recv_tag(?dt_atom_tag,
?sa_recv_tag(?dt_integer_tag, ?dt_tuple_tag([])), ?dt_tuple_tag([?dt_atom_tag, ?dt_pid_tag])),
?sa_recv_tag(?dt_integer_tag, ?dt_tuple_tag([])), ?sa_recv_tag(?dt_atom_tag,
?sa_send_tag(1, ?dt_tuple_tag([])), ?sa_rec_tag(1)]}, ?dt_tuple_tag([?dt_atom_tag, ?dt_pid_tag, ?dt_integer_tag])),
{?dt_atom_tag, [?sa_recv_tag(?dt_atom_tag, ?dt_tuple_tag([])), ?sa_recv_tag(?dt_atom_tag,
?sa_recv_tag(?dt_integer_tag, ?dt_tuple_tag([])), ?dt_tuple_tag([?dt_atom_tag, ?dt_pid_tag, ?dt_integer_tag])),
?sa_send_tag(1, ?dt_tuple_tag([])), ?sa_rec_tag(1)]}, ?sa_send_tag(1,
{?dt_atom_tag, [?sa_recv_tag(?dt_atom_tag, ?dt_tuple_tag([])), ?dt_tuple_tag([?dt_atom_tag, ?dt_pid_tag, ?dt_integer_tag])),
?sa_recv_tag(?dt_integer_tag, ?dt_tuple_tag([])), ?sa_rec_tag(1)]},
?sa_send_tag(1, ?dt_tuple_tag([])), ?sa_rec_tag(1)]}, {?dt_atom_tag, [?sa_recv_tag(?dt_atom_tag,
?dt_tuple_tag([?dt_atom_tag, ?dt_pid_tag])),
?sa_recv_tag(?dt_atom_tag,
?dt_tuple_tag([?dt_atom_tag, ?dt_pid_tag, ?dt_integer_tag])),
?sa_send_tag(1,
?dt_tuple_tag([?dt_atom_tag, ?dt_pid_tag, ?dt_integer_tag])),
?sa_rec_tag(1)]},
{?dt_atom_tag, [?sa_recv_tag(?dt_atom_tag,
?dt_tuple_tag([?dt_atom_tag, ?dt_pid_tag])),
?sa_recv_tag(?dt_atom_tag,
?dt_tuple_tag([?dt_atom_tag, ?dt_pid_tag, ?dt_integer_tag])),
?sa_send_tag(1,
?dt_tuple_tag([?dt_atom_tag, ?dt_pid_tag, ?dt_number_tag])),
?sa_rec_tag(1)]},
{?dt_atom_tag, [?sa_recv_tag(?dt_atom_tag, ?dt_tuple_tag([]))]}])])}). {?dt_atom_tag, [?sa_recv_tag(?dt_atom_tag, ?dt_tuple_tag([]))]}])])}).
-sestype({{sum_client, 2}, -sestype({{sum_client, 2},
?f_rec_tag(1, [?sa_send_tag(1, ?dt_tuple_tag([])), ?sa_send_tag(1, ?dt_tuple_tag([])), ?f_rec_tag(1, [?sa_send_tag(1, ?dt_tuple_tag([?dt_atom_tag, ?dt_pid_tag])),
?sa_send_tag(1, ?dt_tuple_tag([])), ?sa_recv_tag(?dt_atom_tag, ?dt_tuple_tag([])), ?sa_send_tag(1, ?dt_tuple_tag([?dt_atom_tag, ?dt_pid_tag, ?dt_integer_tag])),
?sa_send_tag(1, ?dt_tuple_tag([?dt_atom_tag, ?dt_pid_tag, ?dt_integer_tag])),
?sa_recv_tag(?dt_atom_tag, ?dt_tuple_tag([?dt_atom_tag, ?dt_pid_tag, ?dt_integer_tag])),
?sa_rec_tag(1)])}). ?sa_rec_tag(1)])}).
-sestype({{neg_client, 2}, -sestype({{neg_client, 2},
?f_rec_tag(1, [?sa_send_tag(1, ?dt_tuple_tag([])), ?sa_send_tag(1, ?dt_tuple_tag([])), ?f_rec_tag(1, [?sa_send_tag(1, ?dt_tuple_tag([?dt_atom_tag, ?dt_pid_tag])),
?sa_recv_tag(?dt_atom_tag, ?dt_tuple_tag([])), ?sa_rec_tag(1)])}). ` ?sa_send_tag(1, ?dt_tuple_tag([?dt_atom_tag, ?dt_pid_tag, ?dt_integer_tag])),
?sa_recv_tag(?dt_atom_tag, ?dt_tuple_tag([?dt_atom_tag, ?dt_pid_tag, ?dt_integer_tag])),
?sa_rec_tag(1)])}).
-sestype({{sqrt_client, 2}, -sestype({{sqrt_client, 2},
?f_rec_tag(1, [?sa_send_tag(1, ?dt_tuple_tag([])), ?sa_send_tag(1, ?dt_tuple_tag([])), ?f_rec_tag(1, [?sa_send_tag(1, ?dt_tuple_tag([?dt_atom_tag, ?dt_pid_tag])),
?sa_recv_tag(?dt_atom_tag, ?dt_tuple_tag([])), ?sa_rec_tag(1)])}). ?sa_send_tag(1, ?dt_tuple_tag([?dt_atom_tag, ?dt_pid_tag, ?dt_integer_tag])),
?sa_recv_tag(?dt_atom_tag, ?dt_tuple_tag([?dt_atom_tag, ?dt_pid_tag, ?dt_number_tag])),
?sa_rec_tag(1)])}).
\end{lstlisting} \end{lstlisting}
Τα contracts αυτά μας λένε το εξής: Τα contracts αυτά μας λένε το εξής:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment