Cambi di paradigma

Qualche giorno fa, mentre aggiornavo il mio (magro) curriculum, ho preso una decisione drastica: alla voce sui linguaggi di programmazione conosciuti ho eliminato Pascal e Modula-2 (in effetti sarà un decennio che non scrivo una riga di codice in questi due linguaggi) e ho inserito “Lisp (Scheme)”. Questo sì che è un cambio di paradigma.

Per inciso, suggerisco agli aspiranti logici in ascolto (in particolare a uno) di considerare attentamente l’idea di imparare a programmare in Scheme (o in qualche altro linguaggio funzionale come ML o Haskell), perché potrebbe essere un investimento molto redditizio. Per fare un solo esempio, in Scheme è immediato definire i numerali di Church:

(define zero
  (lambda (f) (lambda (x) x)))
(define (succ n)
  (lambda (f) (lambda (x) (f 1)n f) x)))

in maniera preoccupantemente simile alle corrispondenti formule del lambda-calcolo (a parte il proliferare di parentesi tipico del Lisp):

0λf.λx.x
succλn.λf.λx. f (n f x)

ma con il vantaggio che zero e succ sono ora procedure a tutti gli effetti, che si possono eseguire (o meglio applicare) per vederne concretamente i risultati; il che, soprattutto nella fase di apprendimento, mi sembra un discreto aiuto.

Note   [ + ]

1. n f) x

1 commento

  1. aspirantelogico

    Alberto, pendo dalle tue labbra!
    Sto studiando proprio in questo momento il lambda calcolo (una sua variante per apprendisti, per la verita`)…

Comments are closed.