wneuper@59353
|
1 |
(* Quick introduction to ML, session 3 *)
|
neuper@42088
|
2 |
|
wneuper@59592
|
3 |
theory ML4_Datastructure imports Isac.Isac_Knowledge begin
|
neuper@42088
|
4 |
|
wneuper@59472
|
5 |
text\<open>This course follows the book:
|
neuper@42088
|
6 |
J.D.Ullmann, Elements of ML Programming. Prenctice Hall 1998.
|
wneuper@59472
|
7 |
Contents:\<close>
|
neuper@42088
|
8 |
|
wneuper@59472
|
9 |
text \<open>
|
neuper@42088
|
10 |
datastructures are tuples and list already introduced, and two further datastructures in ML,
|
neuper@42088
|
11 |
records and "datatypes"
|
wneuper@59472
|
12 |
\<close>
|
wneuper@59472
|
13 |
section \<open>7.1 Record Structures\<close>
|
neuper@42088
|
14 |
|
wneuper@59472
|
15 |
ML \<open>
|
neuper@42088
|
16 |
val wn = {firstname = "Walther", lastname = "Neuper", age = 62, male = true};
|
neuper@42088
|
17 |
val tl = {firstname = "Thomas", lastname = "Leh", age = 17, male = true};
|
neuper@42088
|
18 |
wn = tl;
|
neuper@42088
|
19 |
val {firstname, ...} = tl;
|
neuper@42088
|
20 |
val {firstname = n, ...} = tl;
|
neuper@42088
|
21 |
val {age, ...} = tl;
|
neuper@42088
|
22 |
val {age = tage, ...} = tl;
|
wneuper@59472
|
23 |
\<close>
|
neuper@42088
|
24 |
|
wneuper@59472
|
25 |
section \<open>6.2 Datatypes\<close>
|
wneuper@59472
|
26 |
ML \<open>
|
neuper@42088
|
27 |
infix +++ ***;
|
neuper@42088
|
28 |
datatype formula =
|
neuper@42088
|
29 |
Num of int
|
neuper@42088
|
30 |
| Var of string
|
neuper@42088
|
31 |
| op +++ of formula * formula
|
neuper@42088
|
32 |
| op *** of formula * formula;
|
wneuper@59472
|
33 |
\<close>
|
wneuper@59472
|
34 |
ML \<open>
|
neuper@42088
|
35 |
(Num 2 *** Num 3) +++ Num 4;
|
neuper@42088
|
36 |
(Num 2 *** Num 3) +++ ((Num 2 *** Num 3) +++ Num 4);
|
neuper@42088
|
37 |
2;
|
neuper@42088
|
38 |
Num 2;
|
neuper@42088
|
39 |
(Num 2 *** Var "x") +++ ((Num 2 *** Num 3) +++ Var "c");
|
wneuper@59472
|
40 |
\<close>
|
neuper@42088
|
41 |
|
wneuper@59472
|
42 |
section \<open>Preview to Isabelle's terms\<close>
|
wneuper@59472
|
43 |
ML \<open>
|
Walther@60565
|
44 |
parse_test @{context};
|
Walther@60565
|
45 |
parse_test @{context} "234 * bbb + ccc";
|
wneuper@59472
|
46 |
\<close>
|
neuper@42088
|
47 |
|
wneuper@59472
|
48 |
ML \<open>
|
neuper@42088
|
49 |
@{term "5"}
|
wneuper@59472
|
50 |
\<close>
|
neuper@42088
|
51 |
end
|