A First Look at ML
Chapter Five Modern Programming Languages, 2nd ed. 1
A First Look at ML Chapter Five Modern Programming Languages, 2nd - - PowerPoint PPT Presentation
A First Look at ML Chapter Five Modern Programming Languages, 2nd ed. 1 ML Meta Language One of the more popular functional languages (which, admittedly, isnt saying much) Edinburgh, 1974, Robin Milners group There are a
Chapter Five Modern Programming Languages, 2nd ed. 1
Chapter Five Modern Programming Languages, 2nd ed. 2
Chapter Five Modern Programming Languages, 2nd ed. 3
Chapter Five Modern Programming Languages, 2nd ed. 4
Chapter Five Modern Programming Languages, 2nd ed. 5
Chapter Five Modern Programming Languages, 2nd ed. 6
Chapter Five Modern Programming Languages, 2nd ed. 7
Chapter Five Modern Programming Languages, 2nd ed. 8
Chapter Five Modern Programming Languages, 2nd ed. 9
Chapter Five Modern Programming Languages, 2nd ed. 10
Chapter Five Modern Programming Languages, 2nd ed. 11
Chapter Five Modern Programming Languages, 2nd ed. 12
Chapter Five Modern Programming Languages, 2nd ed. 13
Chapter Five Modern Programming Languages, 2nd ed. 14
Chapter Five Modern Programming Languages, 2nd ed. 15
Chapter Five Modern Programming Languages, 2nd ed. 16
Chapter Five Modern Programming Languages, 2nd ed. 17
– first apply f to the single argument a; – then take the value f returns, which should be
– then apply that function to b
Chapter Five Modern Programming Languages, 2nd ed. 18
Chapter Five Modern Programming Languages, 2nd ed. 19
Chapter Five Modern Programming Languages, 2nd ed. 20
Chapter Five Modern Programming Languages, 2nd ed. 21
Chapter Five Modern Programming Languages, 2nd ed. 22
Chapter Five Modern Programming Languages, 2nd ed. 23
Chapter Five Modern Programming Languages, 2nd ed. 24
Chapter Five Modern Programming Languages, 2nd ed. 25
Chapter Five Modern Programming Languages, 2nd ed. 26
Chapter Five Modern Programming Languages, 2nd ed. 27
Chapter Five Modern Programming Languages, 2nd ed. 28
val barney = (3,12.0,"brown") : int * real * string
val point1 = ("red",(300,200)) : string * (int * int)
val it = 12.0 : real
val it = 300 : int
Chapter Five Modern Programming Languages, 2nd ed. 29
val it = (1,2) : int * int
val it = 1 : int
val it = 1 : int
Error: operator and operand don't agree [literal]
in expression: (fn {1=1,...} => 1) 1
Chapter Five Modern Programming Languages, 2nd ed. 30
Chapter Five Modern Programming Languages, 2nd ed. 31
val it = [1,2,3] : int list
val it = [1.0,2.0] : real list
val it = [true] : bool list
val it = [(1,2),(1,3)] : (int * int) list
val it = [[1,2,3],[1,2]] : int list list
Chapter Five Modern Programming Languages, 2nd ed. 32
val it = [] : 'a list
val it = [] : 'a list
Chapter Five Modern Programming Languages, 2nd ed. 33
Chapter Five Modern Programming Languages, 2nd ed. 34
Chapter Five Modern Programming Languages, 2nd ed. 35
val it = [1,2,3,4,5,6] : int list
Chapter Five Modern Programming Languages, 2nd ed. 36
val x = [#"c"] : char list
val y = [#"b",#"c"] : char list
val z = [#"a",#"b",#"c"] : char list
Chapter Five Modern Programming Languages, 2nd ed. 37
val z = [1,2,3] : int list
val it = 1 : int
val it = [2,3] : int list
val it = [3] : int list
val it = [] : int list
Chapter Five Modern Programming Languages, 2nd ed. 38
val it = [#"h",#"e",#"l",#"l",#"o"] : char list
val it = "hi" : string
Chapter Five Modern Programming Languages, 2nd ed. 39
Chapter Five Modern Programming Languages, 2nd ed. 40
Chapter Five Modern Programming Languages, 2nd ed. 41
<function-name> can be any legal ML name The simplest <parameter> is just a single variable
The <expression> is any ML expression; its value
This is a subset of ML function definition syntax;
Chapter Five Modern Programming Languages, 2nd ed. 42
<fun-def> ::= fun <function-name> <parameter> = <expression> ;
Chapter Five Modern Programming Languages, 2nd ed. 43
Chapter Five Modern Programming Languages, 2nd ed. 44
Chapter Five Modern Programming Languages, 2nd ed. 45
Chapter Five Modern Programming Languages, 2nd ed. 46
Chapter Five Modern Programming Languages, 2nd ed. 47
Chapter Five Modern Programming Languages, 2nd ed. 48
Chapter Five Modern Programming Languages, 2nd ed. 49
Chapter Five Modern Programming Languages, 2nd ed. 50
– Tuple types using * – List types using list – Function types using ->
Chapter Five Modern Programming Languages, 2nd ed. 51
– int * bool list same as
– int * bool list -> real same as
Chapter Five Modern Programming Languages, 2nd ed. 52
Chapter Five Modern Programming Languages, 2nd ed. 53
Chapter Five Modern Programming Languages, 2nd ed. 54
Chapter Five Modern Programming Languages, 2nd ed. 55
Chapter Five Modern Programming Languages, 2nd ed. 56