1.1        FP, FPP e FL

FP (Function Programming) è un linguaggio ideato da John Backus e presentato nel 1977 all’ACM Turing award lecture[1]. Il linguaggio non ha variabili, ma solo funzioni ed operazioni su funzioni

In FP vi sono:

Io version: 20070226

Input: Def IP:Insert +.Forall *.Transpose

  Command: Def IP

Input: IP:1 2 3:3 4 5

  Command: IP

  Command: Transpose

  Command: Forall *

  Command: Insert +

26

Input: Def Fact:Insert *.Natural

  Command: Def Fact

Input: Fact:7

  Command: Fact

  Command: Natural

  Command: Insert *

5040

Put command Fact:2

Input: Fact:2

  Command: Fact

  Command: Natural

  Command: Insert *

2

Press any key to exit

·         oggetti  cioè atomi  (numeri, caratteri, simboli, Vero e Falso), ed insiemi di atomi, compreso anche l’atomo "bottom", indicato con , che rappresenta il risultato di funzioni che non terminano o che non hanno risultato, come la divisione per 0,

·         funzioni su oggetti che restituiscono oggetti, l’associazione fra funzione e oggetto è l’operatore : detto application,

·         Forme funzionali, cioè funzioni su funzioni.

I simboli qui utilizzati, differiscono, in parte, da quelli dell’articolo di Backus.

Vi sono funzioni aritmetiche e su oggetti, di fatto liste.

Esempi di funzionali sono:

Nel linguaggio si possono definire funzioni combinando funzioni e funzionali:

Def IP:Insert +.Forall *.Transpose

Nell’esempio è riportata l’esecuzione di alcune funzioni FP (con "l’invenzione" della funzione Natural). L’interprete è stato scritto con il linguaggio IO (v. IO par. 2.37 ).

Nello stesso articolo è presentato FFP (Formal FP) una estensione con la possibilità di definire nuovi funzionali e l’introduzione della gestione della memoria, sostanzialmente per memorizzare risultati intermedi. Backus propone poi una nuova classe di sistemi di calcolo utilizzanti lo stile funzionale e che chiama AST (Applicative StateTtransition).

FL (Function Level) è una conseguenza delle idee alla base di FP ed è creato  all’ IBM Almaden Research Center in collaborazione con John Williams e Edward Wimmers nel 1989.

1.1.1             Implementazioni

FP Sean O'Rourke implementazione in Perl, implementazione in Java, "oc-fp'' in Objective Caml per Christophe Deleuze.


[1] "Can programming be liberated from the von Neumann style?", John Backus, Communications of the ACM, 21, 8, pp.613-641, 1978