pater999 / unitn-linguaggi-programmazione-sml Goto Github PK
View Code? Open in Web Editor NEWRepository contenente esami con soluzione proposti durante lo sbarramento dell'esame di Programmazione Funzionale (prof Kuper).
Repository contenente esami con soluzione proposti durante lo sbarramento dell'esame di Programmazione Funzionale (prof Kuper).
Di seguito le domande nuove (rispetto al simulatore) presenti nella mia versione di esame di luglio. Non assicuro la correttezza delle risposte. Il simulatore io lo ho usato l'ultima volta l'11 luglio, quindi non so se alcune di queste siano già state inserite.
DOMANDA 1:
un ADT è definito essere un modello matematico di un user-defined type, insieme a tutte le operazioni su quel modo:
DOMANDA 2:
un linguaggio di programmazione (come FORTRAN) usa una allocazione fissa della memoria (in compilazione). Questo tipo di linguaggio non può supportare:
DOMANDA 3:
il cut=! in Prolog:
DOMANDA 4: [non sono sicura della risposta, so solo che non è sicuramente la 3]
in Prolog:
DOMANDA 5: [non è la 2]
si assuma che A sia un array di lunghezza 40. Trovare il 30simo elemento
Aggiungo di seguito alcune domande - sempre non inserite nel simulatore quando lo ho usato io - dell'appello di giugno che mi hanno mandato.
DOMANDA 6:
Memorizzare array in ordine di riga o colonna:
DOMANDA 7:
Pointer reversal is used in garbage collection:
DOMANDA 8:
In ML 4+3.0 genera come risultato:
DOMANDA 9:
Dato il seguente programma ML:
structure Struct1 = struct; val i = 3; type t = int; val x = 4; end; signature SIG1 = sig; val i:int; type t; val x: t; end; structure Struct2:> SIG1 = Struct1;
Indicare il risultato di Struct2.x = Struct2.i;
Esercizio
Si scriva una funzione conta_duplicati (avente tipo ''a list -> (''a * int) list) che riceve come argomento una lista di ''a e restituisce una lista di tuple ''a * int. La funzione conta_duplicati ritorna una lista di coppie (elemento, numero di occorrenze dell'elemento), cioè per ogni elemento distinto e della lista di input, la lista di output contiene una coppia (e, numero di occorrenze di e).
Come esempio, l'invocazione conta_duplicati [2, 2, 2, 2]; deve avere risultato [(2,4)],
conta_duplicati ["lunedi'", "lunedi'", "martedi'", "lunedi'"]; deve avere risultato [("lunedi'",3), ("martedi'",1)] e
conta_duplicati ["blu", "verde", "verde", "blu", "rosso"]; deve avere risultato [("blu",2), ("verde",2), ("rosso",1)].
IMPORTANTE: notare il tipo della funzione!.
L'ordine delle coppie all'interno della lista risultante non è rilevante.
La funzione conta_duplicati deve essere definita in un file .sml autocontenuto ma separato da qualsiasi codice di test si sia usato. Il file .sml deve contenere la chiamata a conta_duplicati. Si consegni il file .sml contenente la definizione di conta_duplicati rinominandolo Cognome_Nome_Matricola.sml.
Ciao,
l'esame di quest'anno era nuovo, purtroppo non ho il testo esatto, ma dovrebbe essere una cosa del genere:
"""
scrivere una curried function “f” che prenda in input una lista di stringhe[ai, ai+1, …] e un intero n, e ritorni una lista di stringhe[bi, bi+1, …] in cui bi è uguale ad ai solo se la lunghezza di ai è minore o uguale ad n, altrimenti bi è uguale ad ai senza il primo carattere.
Esempio:
>f [" ", "ab", "abc", "abcd", "abcde"] 3;
val it = [" ", "ab", "abc", "bcd", "bcde"]: string list
"""
Questa è la mia soluzione che è stata considerata valida:
fun f (nil) n = nil | f (a::l) n = if (length (explode a) <= n) then a::(f (l) n) else implode(tl(explode(a)))::(f (l) n);
Ciao! Grazie mille innanzitutto per la dispensa.
L'esame pratico di Febbraio 2023 era quello dell'ambiente vuoto intonil, stesso testo e stessa soluzione
test di esame ML da 13.02.2024:
Scrivere una funzione preffixes (di tipo string -> string list) che presa in input una stringa,
ritorni una lista di tutti i preffissi della stringa, compresa la stringa stessa ed escusa la stringa vuota.
(nota: esista una funzione map che permette appendere un elemento a ogni elementi da lista)
Esempi:
> preffixes "ciao";
val it : ["c" , "ci", "cia", "ciao"];
> preffixes "";
val it : [];
> preffixes "hi world";
val it : ["h", "hi", "hi ", "hi w", "hi wo", "hi wor", "hi worl", "hi world"];
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.