Programacion scheme

Páginas: 12 (2811 palabras) Publicado: 20 de marzo de 2012
Programación g Declarativa
Tema 2: LISP (SCHEME)

2

Tema 2: LISP (SCHEME)
Introducción Representación de Datos Definición de Funciones Predicados Listas

Programación Declarativa – Tema 2: LISP (SCHEME)

3

Introducción (I)
SCHEME es un dialecto de LISP (LISt Processing). LISP es un lenguaje de programación funcional con una amplia base matemática (lambda-cálculo). La unidad decálculo principal son los símbolos, en notación prefija, ( 3 2). p j (+ )

Programación Declarativa – Tema 2: LISP (SCHEME)

4

Introducción (II)
Otro componente principal de LISP son las listas. Todo lo que esté encerrado entre paréntesis será considerado como una lista lista. En una lista, el primer elemento suele ser el nombre de la función que realiza, y el resto de elementos, losoperandos. p
P.e., (+ 3 2)
Programación Declarativa – Tema 2: LISP (SCHEME)

5

Introducción (III)
La evaluación de los operandos se hace de manera ‘perezosa', es decir, no se realiza perezosa , hasta que hace falta. Es un lenguaje fuertemente funcional ya que funcional, se compone exclusivamente de funciones anidadas en otras f id d t funciones. i

Programación Declarativa – Tema 2: LISP(SCHEME)

6

Introducción (IV)
No existe diferencia entre datos y código cuando hablamos dentro del ámbito de la sintaxis. Ejemplo:
Lista de tres elementos ⇒ (1 2 3) Lista que suma dos elementos ⇒ (+ 1 2) (pepe 1 2) ⇒ función (paco 1 2) ⇒ constante

Programación Declarativa – Tema 2: LISP (SCHEME)

7

Introducción (V)
El otro elemento son los átomos.
Símbolos: Cadena alfanumérica No puedenalfanumérica. aparecer paréntesis porque se usan para de delimitar listas, pe o puede apa ece cua qu e a s as, pero aparecer cualquier otro carácter. Ejemplo: mola, Hola. Números: 1, 2, 33, 7E3... También va a admitir números complejos complejos. P.e., 2 + 3i
Programación Declarativa – Tema 2: LISP (SCHEME)

8

Introducción (VI)
Básicamente, las estructuras del lenguaje son listas y átomos.LISP no es sensible a mayúsculas y minúsculas. minúsculas Para separar los elementos de una lista en LISP, tan sólo es necesario uno o varios espacios. p

Programación Declarativa – Tema 2: LISP (SCHEME)

9

Evaluación de expresiones (I)
LISP no ejecuta expresiones, tan sólo las evalúa. La evaluación consiste en:
Si evaluamos un número, el resultado será ese número. 3→3 La evaluación deun símbolo consistirá en saber su valor, y el resultado será dicho valor. Si un símbolo no tiene asignado un valor, l evaluación f ll i d l la l ió falla. símbolo → valor asignado

Programación Declarativa – Tema 2: LISP (SCHEME)

10

Evaluación de expresiones (II)
Evaluación de listas:
Al evaluar una lista se evalúa el primer elemento lista, (normalmente, el nombre de la función) y a cocontinuación los s gu e es e e e os, co o e uac ó os siguientes elementos, conforme van apareciendo (evaluación ‘perezosa’). Cuando se evalúan todos los elementos que componen la lista, se pasa a evaluar ésta en conjunto. j
lista → ( _ _ _ _ _ _ )

Programación Declarativa – Tema 2: LISP (SCHEME)

11

Evaluación de expresiones (III)
Ejemplo: (+ 3 2)
función suma Evaluamos el valor de lafunción

número 3

número 2

El valor devuelto dependerá de cómo se haya d fi id l f h definido la función ( este caso, l ió (en t la suma).
Programación Declarativa – Tema 2: LISP (SCHEME)

12

Polimorfismo (I)
Estamos acostumbrados a ver el operador '+' como el operador suma, p p pero en algunos g lenguajes puede usarse, p.e., como operador de concatenación.
“Hola” + “mundo” ⇒ “Holamundo” 3+2⇒5 “Hola” + 3 ⇒ “Hola 3”

Esto es lo que se conoce como polimorfismo. LISP admite esta característica.
Programación Declarativa – Tema 2: LISP (SCHEME)

13

Polimorfismo (II)
Ejemplo. Tenemos esta lista de tres elementos: (+ (+ 1 1) 1)
1º un símbolo 2º una lista 3º un número

LISP evalúa de este modo: (+ ( ( (+ 1 1) 1) ⇒ 3 +11 + 2 1 3
Programación Declarativa – Tema 2:...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Scheme
  • Xml-schema
  • comandos scheme
  • Funciones en scheme
  • Arboles Scheme
  • BEACON SCHEME
  • Pyramid schemes
  • Funciones Scheme

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS