Pairs
構(gòu)建:
- 語(yǔ)法(syntax):
(e1, e2)
- 類型檢查(type check):
- e1有類型ta,e2有類型tb;得到一個(gè)新類型:ta * tb
- 求值規(guī)則(evaluation rules):
- 計(jì)算參數(shù),e1得到va, e2得到vb,結(jié)果(va, vb)。備注:a pair of values is a value !
訪問:
- 語(yǔ)法(syntax):
2-Tuples :
val e = (e1, e2)
#1 e 返回e1
#2 e 返回e2
- 類型檢查(type check):
- e有類型:ta * tb,所以#1 e有類型:ta,#2 e有類型:tb
- 求值規(guī)則(evaluation rules):
- e有值:(va, vb),所以#1 e有值:va,#2 e有值:vb
Tuples
構(gòu)建:
- 語(yǔ)法(syntax):
(e1, e2, ..., en)
- 所以,Pairs只是一個(gè)2維元組(2-Tuples)
- 類型檢查(type check):
- 有類型:ta * tb * ... * tn
- 求值規(guī)則(evaluation rules):
- 有值:(ta, tb, ..., tn)
訪問:
參考Pairs
實(shí)例
簡(jiǎn)單:
val aPairs = (1, 2) (* type: int * int value: (1, 2) *)
val bPairs = (1+1, 2+4) (* type: int * int value: (2, 6) *)
val cPairs = (true, 2+4) (* type: bool * int value: (true, 6) *)
組合:
val caPairs = (1, (2, 4)) (* type: int * (int * int) value: (1, (2, 4) *)
val caPairs = (5+6, (2, 3+2)) (* type: int * (int * int) value: (11, (2, 5) *)
val cPairs = ((true, 1), 2+4) (* type: ((bool * int) * int) value: ((true, 1) * 6)
理論上可以嵌套任意層數(shù)