# vettori e matrici come liste - fun prodottoScalare l m = reduce sum 0 (map prod (accoppia l m)); > val prodottoScalare = fn : int list -> int list -> int - prodottoScalare l l; > val it = 14 : int # osservare come sia possibile mappare una funzione binaria - fun sommaVettoriC l m = applicaLista (map (fn x => sumc x) l) m; > val sommaVettoriC = fn : int list -> int list -> int list # osservare come lo stesso schema di programmi scala alla somma di matrici - fun sommaMatriciC A B = applicaLista (map (fn x=> sommaVettoriC x) A) B; > val sommaMatriciC = fn : int list list -> int list list -> int list list # ma anche usando accoppia e funzioni di coppia: - fun sommaVettori(l, m) = map sum (accoppia l m); > val sommaVettori = fn : int list * int list -> int list - fun sommaMatrici(A, B) = map sommaVettoriC (accoppia A B); > val sommaMatrici = fn : int list list * int list list -> int list list