• Non ci sono risultati.

Linguaggi di Programmazione Progetto (III “esonero”) data di assegnazione

N/A
N/A
Protected

Academic year: 2021

Condividi "Linguaggi di Programmazione Progetto (III “esonero”) data di assegnazione"

Copied!
2
0
0

Testo completo

(1)

A.A. 2003-04

Linguaggi di Programmazione

Progetto (III “esonero”)

data di assegnazione: 13 maggio 2004 data di consegna: 1 giugno 2004

Inferenza dei tipi in SML

1. Definire in SML un datatype term che implementi la sintassi del linguag- gio Fun con annotazioni esplicite dei tipi. Scrivere un programma SML che esegua il type checking dei termini di term.

2. Scrivere un programma SML che implementi l’inferenza dei tipi sui termini di Fun (senza annotazioni esplicite dei tipi).

Hint

(* Il linguaggio Fun --- *)

datatype term = BOOL of bool | INT of int | VAR of string | FN of string * term | APPL of term * term |

LET of string * term * term;

(* Esempio: il termine

fn x => (let val y = (fn z => x y) in z y end) si scrive come segue: *)

val t = FN("x", LET("y",

FN("z", APPL(VAR("x"), VAR("y"))), APPL(VAR("z"), VAR("y"))));

(2)

(* la funzione isfree ha tipo string * term -> bool.

isfree(x,M) controlla se x occorre libera in M. *) fun isfree (_, BOOL(_)) = false

| isfree (_, INT(_)) = false

| isfree (x, VAR(y)) = (x = y)

| isfree (x, FN(y,M)) = (x <> y) andalso (isfree(x,M))

| isfree (x, APPL(M,N)) = isfree(x,M) orelse isfree(x,N)

| isfree (x, LET(y,M,N)) = isfree(x,M) orelse

((x <> y) andalso isfree(x,N));

Riferimenti

Documenti correlati

In contrast to our pseudocode of Chapter 5 in which we requested the execution of a procedure by a statement such as “Apply the procedure DeactivateKrypton,” as

Il programmatore puo` astrarre dai dettagli legati all’architettura ed esprimere i propri algoritmi in modo simbolico. ☞ Sono indipendenti dalla

Siccome le regole specificano il significato delle espressioni in modo operazionale, si dice che esse definiscono una semantica operazionale di tali espressioni. Alcune regole

Induzione matematica e strutturale sono casi particolari di un potente metodo di prova chiamato induzione ben fondata In questa lezione vedremo in dettaglio:. ¾ Induzione

Supponiamo di voler estendere le espressioni aritmetiche di IMP includendo un nuovo operatore “^” con il significato di elevamento a potenza. La sintassi di Aexp di IMP verrà

Negli anni sessanta, Christopher Strachey e Dana Scott riuscirono a superare le limitazioni della semantica operazionale introducendo una semantica più astratta basata sull’utilizzo

La sintassi specifica sia la struttura lessicale del linguaggio (come costruire le parole a partire dai caratteri dell’alfabeto) sia le regole per la costruzione delle

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