===== Drawing arrows and coding functions =====
| [[Outline]] $\blacktriangleright$ Drawing arrows and coding functions $\blacktriangleright$ [[A type system as a model for some concepts]] |
==== Guide ====
=== Type system ===
A main part of a type system is a collection of names that stand for so called types. We will draw a lot of simple pictures with those types "lying around".
>do int and maybe string
== Intuitive introductory example ==
Here some type judgements and also some drawings.
== The type Type ==
We draw graph pictures that display parts of our type system.
>Make a more elaborate picture with a circle and some element, and an outer circle for Type.
>Later, draw a similar picture wiht a function (+ element wise maps of it)
>
E.g. the type of integers are part of our system and may we draw the vertex
$$
{\mathbb Z}
$$
== Addition and substraction of integers ==
i : Integer
i = 13
k : Integer
k = 4
n : Integer
n = 2 + 3
m : Integer
m = -70 + n
$13 : {\mathbb Z}$
$4 : {\mathbb Z}$
$k:=4$
$k : {\mathbb Z}$
$(2+3) : {\mathbb Z}$
$n:=2+3$
$n : {\mathbb Z}$
fun : Integer -> Integer
fun x = x + m
g : Integer -> Integer
g x = -x + k
h : Integer -> Integer
h x = 100 + fun x
$g : {\mathbb Z}\to{\mathbb Z}$
The function $g$ is one of an unending list of possible functions
from ${\mathbb Z}$ to ${\mathbb Z}$ that we can define.
Draw
$$
{\mathbb Z}\longrightarrow{\mathbb Z}
$$
or
$$
\require{AMScd}
\begin{CD}
{\mathbb Z}
\\
@V{{}}VV
\\
{\mathbb Z}
\end{CD}
$$
and then
$({\mathbb Z}\to{\mathbb Z}) : {\rm Type}$
F : (Integer -> Integer) -> Integer
F f = 5000 + f k
Draw
$$
({\mathbb Z}\to{\mathbb Z})\longrightarrow{\mathbb Z}
$$
or
$$
\require{AMScd}
\begin{CD}
({\mathbb Z}\to{\mathbb Z})
\\
@V{{}}VV
\\
{\mathbb Z}
\end{CD}
$$
and then
$(({\mathbb Z}\to{\mathbb Z})\to{\mathbb Z}) : {\rm Type}$
Actualy, in this system we have
${\rm Type}:{\rm Type}$
and we so may draw
$$
{\rm Type}
$$
and write
${\mathbb Z}:{\rm Type}$
=== Reference ===
-----
=== Related ===
[[Idris syntax]]
=== Sequel of ===
[[Outline]]