• Non ci sono risultati.

Tipi di Dato in SML

N/A
N/A
Protected

Academic year: 2021

Condividi "Tipi di Dato in SML"

Copied!
8
0
0

Testo completo

(1)

Tipi di Dato in SML

Luca Abeni, Csaba Kiraly

April 20, 2017

(2)

Tipi Predefiniti

• Tipi di dato predefiniti di ML: bool, int, real, char, string e unit

• A partire da questi, tipi aggregati / composti / strutturati:

v a l sq = fn ( a , b ) => a ∗ a + b ∗ b ; ha tipo

i n t ∗ i n t −> i n t

• Dominio: int * int

(3)

Tuple

• Definite tramite prodotto cartesiano

• unit: tuple di 0 elementi

• Tuple di 1 elemento corrispondano con l’elemento stesso:

> ( 6 ) ;

v a l i t = 6 : i n t

> ( 6 ) = 6 ;

v a l i t = t r u e : b o o l

(4)

Tuple & Pattern Matching

• Su tuple, spesso pattern matching

> v a l c = ( ” p i greco ” , 3 . 1 4 ) ;

v a l c = ( ” p i greco ” , 3 . 1 4 ) : s t r i n g ∗ r e a l

> v a l ( p i g r e c o , p i ) = coppia ; v a l p i = 3.14 : r e a l

v a l p i g r e c o = ” p i greco ” : s t r i n g

• Usato per “spacchettare” elementi di una tupla

(5)

Funzioni come Tipo

• Funzione: valore memorizzabile

• Il tipo di un valore di tipo funzione `e dominio→codominio:

i n t ∗ i n t −> i n t

• Abbiamo visto anche esempi pi `u complessi ( i n t ∗ i n t ) −> i n t −> i n t

• Funzione che riceve come argomenti una coppia di interi ed un intero e ritorna un intero (vedi

Curry)

(6)

Nuovi Nomi per Tipi Esistenti...

• Standard ML permette di definire dei sinonimi per tipi di dato esistenti, usando il costrutto “type”

> type t i m e t = i n t ; type t i m e t

> v a l a : t i m e t = 5 ; v a l a = 5 : t i m e t

> v a l b : t i m e t = 1 ; v a l b = 1 : t i m e t

> a + b ;

v a l i t = 6 : t i m e t

(7)

Ma non Nuovi Tipi!

• time t non `e un nuovo tipo, ma solo un sinonimo per int:

> v a l c = 3 ;

v a l c = 3 : i n t

> a + c ;

v a l i t = 8 : t i m e t

(8)

Datatype

• “type” associa solo un nuovo nome ad un tipo esistente

• “datatype” definisce nuovi tipi di dato:

datatype c o l = red | b l u e | green ;

• Il pattern matching funziona anche con questi tipi fun t r a n s l a t e red = ” r o t ”

| t r a n s l a t e b l u e = ” b l a u ”

| t r a n s l a t e green = ” gruen ” ;

> t r a n s l a t e green ;

Riferimenti

Documenti correlati

La variabile di destinazione di un’assegnazione può avere tipo diverso dal tipo dell’espressione. int

 In C, la differenza tra carattere e numero è sfumata: il tipo di dati char char è un valore intero rappresentato con un byte, che può essere utilizzato per memorizzare sia

 Le parole chiave char char, int int, float float, double double, ed enum enum descrivono i tipi base; short short, long long, signed signed, unsigned unsigned sono i

aggiungiPrima: inserisci un oggetto prima della posizione corrente aggiungiDopo: inserisci un oggetto dopo la posizione corrente rimuoviCorrente: elimina dalla sequenza l’oggetto

Tipi riferimento Tipi di dato associati alla definizione di una classe; una variabile riferimento memorizza il riferimento ad un oggetto di una classe. Tipi primitivi Tipi di

• Linguaggi debolmente tipati: linguaggi nei quali i tipi possono essere ignorati, p.e...

puntatore a una funzione che accetta un intero e non restituisce

Come spiegato nelle dispense, una tale definizione non risulta invece fondata per insiemi co-induttivi, i cui elementi non possono essere analiz- zati in base alla loro