Qual è la definizione pratica minima per il linguaggio dello schema?

7

Qual è il più piccolo pratico insieme di primitive che può essere usato per definire il linguaggio Scheme?

Ad esempio, map può essere definito come

(define (map proc lis)
   (cond ((null? lis)
          '())
         ((pair? lis)
          (cons (proc (car lis))
                (map proc (cdr lis))))))

Le funzioni in questa definizione possono essere ridotte in modo simile a primitive più piccole?

    
posta Robert Harvey 01.05.2015 - 07:37
fonte

2 risposte

2

Consiglio vivamente di leggere il libro di Queinnec Lisp In Small Pieces , ha diversi capitoli per rispondere alla tua domanda, tenendo conto della tua richiesta di praticità (senza la quale un semplice lambda-calcolo sarebbe sufficiente); passa anche dal semplicistico interprete mini-schema (come implementazione di eval ) a un compilatore Lisp completo (al bytecode e al C).

La tua domanda richiede la risposta a un intero libro e il libro di Queinnec è quel libro.

    
risposta data 01.06.2015 - 07:16
fonte
3

La risposta a questa domanda dipenderà quasi interamente dal tuo termine in corsivo, pratico . Probabilmente ti senti molto diverso da quello che faccio su ciò che costituisce esattamente la praticità. Ovviamente, puoi spogliare tutto fino al calcolo lambda e finire con un linguaggio completo di turing che include solo lambda, varrefs e applicazione.

    
risposta data 01.05.2015 - 19:02
fonte

Leggi altre domande sui tag