Liste e
calcolo simbolico
Lolita
(Language for the On-Line Investigation and Transformation of Abstractions)
sviluppato da F Blackwell nel 1967alla Rome Aircraft Base (NY).
E’
un’estensione, indirizzata alla gestione di liste, del sistema STL (Culler-Fried)
per il trattamento di espressioni matematiche.
STL
era dotato di una tastiera alfanumerica più una tastiera i cui tasti erano
associati a funzioni o operazioni matematiche. L’output era su un video
grafico.
Le
istruzioni di Lolita
Aveva
una memoria specializzata, il Symbol Accumulator (SA) ed una serie di comandi
associati a tasti. Tramite tasti funzione si avviano le elaborazioni o si
controllava l’output su video delle espressioni, che erano immesse come
nell’aritmetica tradizionale.
Qui
di seguito un elenco dei comandi:
DLIST
|
Definisce una lista di simboli |
DSYM |
- crei un simbolo |
LS
|
carico un simbolo in SA |
SI
|
Imposta il pointer |
II
|
Incrementa il pointer |
SSB
|
Memorizza un simbolo prima del
pointer |
SSA
|
Memorizza un simbolo dopo il pointer |
ES
|
elimina simbolo |
CON
|
Concatena simboli |
BRANCH
|
Salto condizionato e incondizionato |
DISPLAY
|
Visualizza lalista |
DC |
Formattazione dell’output |
In ambiente IBM 360 esisteva un interprete in
PL/1.
Qui
di seguito una simulazione, largamente arbitraria, di una sessione di lavoro per
ottenere la derivata di un monomio. L’interprete è stato scritto in Neko.(v.
Neko 2.57
)
.
# Lolita (pseudo)
source STORE R1 DSYM S0 0 DSYM S1 1 DSYM Sx x LS R1 # normalize IF TOP _ BRANCH 2 BRANCH
4 IF
E Sx BRANCH 3
SSB S0
SSA S1 IF E Sx SSB S1 IF TOP CON Sx SI 1 IF TOP _ CON S1 DIFFER SI 2 IF NE S0 BRANCH 4 ES SI 1 ES SI 2 IF TOP BRANCH 3 IF NE S1 BRANCH 2 ES DISPLAY |
D:\neko>neko lolita.n insert expression (e.g. 3x5 or x2) enter for end 3 SA: [0] insert expression (e.g. 3x5 or x2) enter for end 3x SA: [3] insert expression (e.g. 3x5 or x2) enter for end x3 SA: [3,x,2] insert expression (e.g. 3x5 or x2) enter for end 3x3 SA: [9,x,2] insert expression (e.g. 3x5 or x2) enter for end -3x-3 SA: [9,x,-4] insert expression (e.g. 3x5 or x2) enter
for end D:\neko> |