값들의 집함; 모든 value는 타입을 가지고 있고, procedure 또한 그렇다
Scheme
;; 1,2,3 ... ,10, ACE = 11, TEEAN = 12, LOAD = 13
여기서 이렇게 정의 되어 있을때 처리값이 1이나, 15가 들어온다면 에러를 내는 주범이 될 것 이다.
lambda (a b c) (if (> a 0)(+ b c)(- b c)))
lambda (p) (if (p) “hi” “bye”))
ex, int -> int -> int
let add a b = a + b
let incr = add 1
; incr 2
; 3
; incr 3
; 4
프로시저를 한번 정의하고 재사용성을 높임
type Person = {
Name: string
Aag: int
}
let p = ("kyeongin", 28) ; 두개를 동시에 줘야해서 And Type
; val p : string * int
let p2 = {
Name = "Kyeongin"
Age = 28
}
; val p2 : Person = {Name = "Kyeongin", Age = 28}
type Gender =
| Male
| Female
type Color
| Red
| Green
| Blue
Red의 Type은 Color
let head ls =
match ls with
| x :: xs -> x
| _ -> fallwith "head error"
‘a list -> ‘a
‘a를 type variable 이라고 표현함. ‘a의 type에 따라서 list의 type이 변하며, 무엇이 오던 간에 같은 동작을 함.