2010-12-30 13 views
6

Sto iniziando a imparare Lisp con uno sfondo Java. In esercizio di SICP ci sono molte attività in cui gli studenti dovrebbero creare funzioni astratte con molti parametri, comeTroppi argomenti per la funzione

(define (filtered-accumulate combiner null-value term a next b filter)...) 

in exercise 3.11. In Java (linguaggio con disciplina di tipizzazione sicura e statica) - un metodo con più di 4 argomenti di solito odora, ma in Lisp/Schema non lo fa, vero? Mi chiedo quanti argomenti usi nelle tue funzioni? Se lo usi in produzione, fai tanti strati?

+1

Cosa c'è di sbagliato in un metodo con 4 più di 4 argomenti? – Falmarri

+0

@Falmarri, di solito è difficile tenere a mente tali API + puoi sbagliare in ordine di argomenti. –

+1

Questi non sembrano motivi per limitarsi arbitrariamente a 4 argomenti. – Falmarri

risposta

12

SICP è un libro utilizzato nel corso introduttivo di informatica. Mentre spiega alcuni concetti avanzati utilizza un linguaggio molto piccolo, un sottoinsieme del linguaggio Scheme e un sub-sottoinsieme di qualsiasi Schema o Lisp del mondo reale che fornisce un'implementazione tipica.

Ad esempio, non sono state sviluppate macro in SICP. Aggiungi che lo schema standard ha solo i parametri posizionali per le funzioni.

In 'reale' Lisp o Scheme si può utilizzare uno o più dei seguenti elementi:

  • oggetti o record/strutture (chiusure povero uomo) cose che di gruppo. Un oggetto passato può contenere diversi elementi di dati, che altrimenti dovrebbero essere passati "diffusi".

  • valori predefiniti per variabili facoltative. Quindi dobbiamo solo passare quelli che vogliamo avere un certo valore non predefinito

  • argomenti facoltativi e denominati. Ciò consente elenchi di argomenti flessibili che sono molto più descrittivi.

  • argomenti calcolati. Il valore o il valore predefinito di argomenti possono essere calcolati sulla base di altri argomenti

conduce Sopra a più complicata per scrivere interfacce funzionali, che sono spesso più facile da usare.

In Lisp è utile disporre di nomi descrittivi per gli argomenti e fornire anche la documentazione in linea per l'interfaccia. L'ambiente di sviluppo mostrerà informazioni sull'interfaccia di una funzione, quindi questa informazione è in genere solo una sequenza di tasti o viene visualizzata automaticamente.

È anche un buon stile per qualsiasi interfaccia non banale che dovrebbe essere utilizzata in modo interattivo dall'utente/sviluppatore per controllarne gli argomenti in fase di runtime.

+0

Grazie. Leggerò di più su) –

Problemi correlati