09 luglio, 2019

Notarelle storiche sul Lisp - 3


Continuo da qui l'esplorazione dagli inizi del Lisp.

Continuo l'esame di Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I, sono giunto a Recursive Functions of Symbolic Expressions.

We shall first define a class of symbolic expressions in terms of ordered pairs and lists. Then we shall define five elementary functions and predicates, and build from them by composition, conditional expressions, and recursive definitions an extensive class of functions [...] We shall then show how these functions themselves can be expressed as symbolic expressions, and we shall define a universal function °°apply that allows us to compute from the expression for a given function its value for given arguments. Finally, we shall define some functions with functions as arguments and give some useful examples.

le S-expressions (S sta per simboliche) sono formate usando i caratteri speciali ., ( e ) e un set infinito di simboli atomici distinti. Cose note a parte che le lettere devono essere maiuscole e sono ammessi gli spazi perché gli elementi delle liste sono separati da virgole, cosa che sarà presto rivista.

S-expressions are then defined as follows:
  1. Atomic symbols are S-expressions.
  2. If e1 and e2 are S-expressions, so is (e1 . e2).
Examples of S-expressions are
  • AB
  • (A . B)
  • ((AB . C) . D)

An S-expression is then simply an ordered pair, the terms of which may be atomic symbols or simpler S-expressions. We can can represent a list of arbitrary length in terms of S-expressions as follows. The list (m1, m2, ..., mn) is represented by the S-expression (m1 . (m2 . ( ... (mn .NIL) ... ))) dove NIL è il simbolo usato per terminare le liste.

Functions of S-expressions and the Expressions That Represent Them. We now define a class of functions of S-expressions. Le funzioni sono scritte nel modo convenzionale (M-expressions) usando lettere minuscole.

Vengono definite car, atom, eq, car, cdr, cons. E poi le [r]ecursive S-functions. We get a much larger class of functions (in fact, all computable functions) when we allow ourselves to form new functions of S-expressions by conditional expressions and recursive definition.

Poi subst, equal, append, among [?], pair, assoc.

Representation of S-Functions by S-Expressions. S-functions have been described by M-expressions. We now give a rule for translating M-expressions into S-expressions, in order to be able to use S-functions for making certain computations with S-functions and for answering certain questions about S-functions. Questa descrizione è diversa da quella che si sarebbe usata in seguito, salto.

The Universal S-Function apply. Uh! qui descrizione lunga, salto, da leggere nell'originale.

Inoltre eval, quote, e label.

Functions with Functions as Arguments. There are a number of useful functions some of whose arguments are functions. They are especially useful in defining other functions. One such function is maplist, simile a map di Racket. Esempi d'uso plus e times.

È difficile per me riassumere, anche perché sono troppo legato dal sapere dove si va a parare. Il post continua a non piacermi ma l'ho già rimaneggiato troppe volte; sono solo considerazioni personali, non leggetelo.
🔴

Nessun commento:

Posta un commento