Lispkit Lisp es un ámbito léxico , puramente funcional subconjunto de Lisp ( " Pure Lisp ") desarrollado como un banco de pruebas para la programación funcional conceptos. Se utilizó por primera vez para la experimentación temprana con la evaluación perezosa . El desarrollador Peter Henderson publicó en 1980 una implementación basada en máquina SECD escrita en una variante de ALGOL . [1] El compilador y la máquina virtual son altamente portátiles y, como resultado, se han implementado en muchas máquinas.
Idioma base
El lenguaje base proporciona las siguientes funciones solamente, pero las extensiones se analizan en el libro de Henderson [1] para el apoyo explícito de la evaluación perezosa y la programación no determinista .
- átomo
- dada una expresión, devuelve Verdadero si su valor es atómico; Falso si no.
- agregar
- dadas dos expresiones devuelve la suma de sus valores numéricos.
- carro
- dada una expresión cuyo valor es un par, devuelve el primer valor del par.
- cdr
- dada una expresión cuyo valor es un par, devuelve el segundo valor del par.
- contras
- dadas dos expresiones devuelve un par de valores que consta de sus valores.
- div
- dadas dos expresiones devuelve el cociente de sus valores numéricos.
- eq
- dadas dos expresiones, devuelve Verdadero si sus valores son iguales; Falso si no.
- Si
- dadas tres expresiones devuelve el valor de la segunda si el valor de la primera es Verdadero; de lo contrario, devuelve el valor de la tercera.
- lambda
- dada una lista de argumentos y una expresión, los devuelve como una función.
- dejar
- dada una expresión con declaraciones (como expresiones con nombre visibles en la expresión) devuelve su valor.
- letrec
- como let, excepto que los nombres declarados también son visibles en las propias declaraciones.
- leq
- dadas dos expresiones, devuelve Verdadero si el valor de la primera es numéricamente menor o igual que el valor de la segunda; Falso si no.
- mod (o rem)
- dadas dos expresiones, devuelve el módulo (también conocido como el resto) de sus valores numéricos.
- mul
- dadas dos expresiones, devuelve el producto de sus valores numéricos.
- cita
- dada una expresión, devuelve esa expresión como un valor.
- sub
- dadas dos expresiones, devuelve la diferencia de sus valores numéricos.
Las funciones lambda , let y letrec son similares pero tienen diferencias sutiles en la forma en que tratan las variables nombradas que las hacen útiles de diferentes maneras. lambda define y devuelve una función, let vincula expresiones a nombres de variables, y letrec es esencialmente similar a let excepto que permite la definición de funciones y valores recursivos , por ejemplo, series infinitas.
Referencias
Otras lecturas
- Henderson, Peter; Jones, Geraint A .; Jones, Simon B. (1983). El manual LispKit . Laboratorio de Computación de la Universidad de Oxford. ISBN 0-902928-18-X.