----- 25/06/18 ----- > Volevo provare a "tradurre" da Java a Scheme questo programma: > > Scanner input = new Scanner(System.in); > int S=0; > int n; > for (int nr=1; nr<=15; nr++) { > System.out.println("inserisci numero: "); > n=input.nextInt(); > S=S+n; > } > System.out.println(S); > } > > Pero' non saprei come fare in Scheme due cose. > La prima riguarda il ciclo for: devo proprio usare la ricorsione > oppure esiste qualche altro modo per fare i cicli in Scheme? > La seconda cosa riguarda il fatto che in questo programma i valori > da sommare devono essere forniti tramite lo standard input > e non saprei come farlo in Scheme. ----- In scheme ci sono strumenti per fare piu' o meno tutto, compresa l'iterazione, ma nel corso e' inteso per introdurre la programmazione funzionale "pura". Nella programmazione funzionale pura non ci sono assegnazioni e iterazioni, per cui non ha molto senso tradurre il programma riportato sopra in Scheme. Per acquisire dati in sequenza dall'input sono piu' adatti Java o altri linguaggi a base imperativa. Riscrivere un programma del genere in un linguaggio funzionale sarebbe solo un esercizio sintattico, ma non aggiungerebbe concettualmente nulla. Il consiglio e' quindi di applicare Scheme per definire "funzioni" e per riflettere sulla ricorsione e sugli argomenti e valori "funzionali", come negli esempi e negli esercizi pubblicati attraverso le pagine online del corso. Per esempio il programma riportato sopra puo' essere ripensato in termini di procedura Scheme ricorsiva che, data una lista di interi, ne restituisce la somma. ----- * -----