Estratto del documento

CAML light

Meta language

scrivi:# 3;; doppioCAML risponde- : int = 3valore dell'espressione

il nome del*baddeab in valore nessunnome

tipole instobelodeterminato dopoaver fatto usointerlerenza del tipo

Per associare un nome ad un valore si usa l'espressione let

# let n = 3+7;; n : int = 10

# let f n = n+1;;

nome parameto

funzione funziale

f : int -> int = <fun>

nome chiamata funzione

# f 2;;

# let f (n, m) = n + m + 3;;

# f (3,5);;- : int = 8

funzioni Curries (argomenti in sequenza)# let f n m = n m + 3;; la funziona prende il primo argomento (n)e restituisce una funzione che prendeun argomento m e dà il risultato

f : int -> (int -> int) = <fun>

prodotto cateter valo -> usando variabile= metodo coppia

come trasformare una funzione nella versione dipped

# let t (n, m) = 2*m + n;;

t : int*int -> int = <fun>

# let s f m = f (n, m);; s : int -> int -> int = <fun>

funzioni polimofche -> possono essere applicate a qualsiasi--tipo--

# let f (n, m) = n f; l ; a -> a = <fun>

# f “abc” ;; - : string -> “abc”

# let f (n, m) = (n, m);; f : l*l+l

# f (3 ; 4.5);; ;; = int -> float = <fun>

CAML light

Meta language

scirto:

# 3;; Doppiovalore dell'espressioneun nome che èmodificato unvalore nessunvaloreInferenza dei tip

Per associare un nome ad un valore si usa l'espressione let

# let n = 3 + 7;; n : int = 10# let f n = n + n;;nuovo parametron nuovo

nel corpo

f : int → int = tipizzazione

Definizione Funzione

NB

  • somma tra int
  • somma tra float

Il prodotto scalareteorema della sodoarbjecti

Funzione Complessa

# let f n m = n int m + 3;;

la parte sinistra (m)e l'esercizio una funzione che prendeun argomento m e da il risultato

f : int → (int → int) = anomenafunziotua a suplicfacosì f ib prodocadenain# let t (n, m) = 2 * m + n;;

t : int×int int =

Funzioni polimorfe → possono essere applicate su qualsiasi tipo

# let f n m = mf : ('a 'b) → 'b = # f "abc" ;; string "abc"# let f (n,m) = (n,m)f : 'a * 'b =

# let g (n,m) = (n,m+1); # g (3,4.5);

Espressione Condizionale

if E then E1 else E2

T stesso tipo

# let REC f n = i - if n=ø then ø else 2+f(n-1);;

f: int → int = fun

Liste

Sono strutture omogenee

Def: # [10,-3,4]; ∷ int list = [...]

[ ] lista vuota

[ ], ... b ] ∷ [...]∷[ ]

X ... :: xs

(3; 4) :: [] = [(3; 4)]

# (let g n=n+1;); g ∷ int→int = fun

total HD minore/nessun/elemento

head hd: ∷ ’b list→’b list

# (let g n=n+1;)

NB let n=n+1;

Definire una funzione che restituisca l'ultimo elemento di una lista

# let rec last l = if l=[] then hd l else last (tl l);;es:s = [3;4] -> 4 : int

Rimuovere l'ultimo elemento di lista

# let rec rimuovelast l = if tl l = [] then [] else hd l ::rimuovelast (tl l);; rimuovelast [3;4] -> [3]

rimuovelast [3;4;5] -> [3;4];; rimuovelast [4;5;0] -> [3;4];; []

Lunghezza di una lista

let rec len l = if l = [] then 0 else 1 + (len (tl l));;len : 'a list -> int =

Pattern (modello) è una espressione che contiene variabili (non che possono essere istanziate a valori)

es x:=[][5] -> 5: []Si possonoriconoscerepattern possono essere confrontati a valori instanziandole variabili a valori

X::y::xs pineocordi:ocale dovea quali teti sitoconcomparare?3 : [] no!4 tuttelele in zezione[] no!2: 3 : [] si!2: 34:3:[] si!x y ys

# match [3;4] with[] -> 0x::xs -> x;

- : int = 3lunghezza di una lista# let rec len l = match l with

[] -> 0x :: xs -> 1 + len (xs);;

Ultimo elementolet rec last l = match l with

[x] -> xx::xs -> last xs;;

Pattern Matching

# match l withpattern1 ->| pattern2 -> ...

Si cerca di un valore dell'espressione con i pattern in sequenza.x::y::xs -> last (y::ys);;

Decontol Pattern Multivalenteesclusivo(es: volglio che possoessere ugualato solo proupattern)

es x: x::xsnon sono multivalente esclusivo.

Operatore di concatenazione @ in Haskell

# [3; 4] ⊙ [5; 6] ;;

- :[3; 4; 5; 6]

Proprietà

  1. □⊙E ⊙ e = ⊙□⊙E =
Anteprima
Vedrai una selezione di 6 pagine su 25
Appunti e Funzioni CAML Light Pag. 1 Appunti e Funzioni CAML Light Pag. 2
Anteprima di 6 pagg. su 25.
Scarica il documento per vederlo tutto.
Appunti e Funzioni CAML Light Pag. 6
Anteprima di 6 pagg. su 25.
Scarica il documento per vederlo tutto.
Appunti e Funzioni CAML Light Pag. 11
Anteprima di 6 pagg. su 25.
Scarica il documento per vederlo tutto.
Appunti e Funzioni CAML Light Pag. 16
Anteprima di 6 pagg. su 25.
Scarica il documento per vederlo tutto.
Appunti e Funzioni CAML Light Pag. 21
1 su 25
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Simone_S di informazioni apprese con la frequenza delle lezioni di Programmazione 1 e Laboratorio e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Pisa o del prof Barbuti Roberto.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community