Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lisp-DrScheme
Primera Parte
Programacin Funcional
!
"
$
#
!
#
# %
# &%
'
%
#
(
!
Scheme
)&
*
# %
( #
#
! +%
,
.% )
-%
$
)
$
%)
% $
Scheme
)&
%
#
#
'
&
# % ( #
0
)&
!
#%
#
*&
2 !$
)&
!$
/
)&
(
3
!
(
Ejemplo:
> (+ (* 3 (+ (* 2 4) (+ 3 5))) (+ (- 10 7) 6))
57
> (define tamao 2)
Tamao
> tamao
2
> (+ 3 tamao)
5
> (* 2 tamao)
4
Definicin de Variables
(define Pi 3.14159)
Pi
(define radio 10)
Radio
(define circunferencia (* 2 Pi radio))
Circunferencia
> circunferencia
62.8318
Funciones en Lisp
Ejemplo:
*
5*
7
'
+*4''
+
+
6+
Ejemplo:
*
+
*4/
5*
86 9::;:
+
+
7+
*<
*
! 5<
+
+
5+
Ejemplo:
*
5*
8;
*
*> *
=
'%+
'
+*
6 ;+
%+
+
+
5*
*
5 * 9+
96
*8 +
=
*> 8+*1
8+
+
+
Funciones Booleanas
*
* 19? +
*@ 9+
+
5 * 19? 9+
A
5 * 19? B+
A
Funciones Booleanas
*
*
1
191:? +
*< 9 +*< :+
+
+
*
*
1
1
191:1 1 ! 18C? +
191:? +*5@ 8C+
+
+
Sintaxis del if
* <
5<
<
5
5+
Ejemplo:
*
*6'
+
* *5@ '6+*4''
+
* *
*< '6+*5 '16+
+*> '8+
*D'6+
+
+
+
5 * 6 7+
8:
5 * 6 C+
8
Ejemplo:
*
* ;'
+
*
**5@ '6+*> *4''
+8+
+
**@ 'C+6+
*
*4'''
+
+
+
+
5 * ;;+
8C
Ejemplo:
*
*
E
*<@
8CCC+C C7CF
E
*<@
9CCC+C C79F
E C C9CF
+
+
*
1
*D*> '% +;+
+
*
? +
*5@ BC+
+
*
* G +
*G
H
* G +
*
1
'% +
+
H
+
*
+*
+*
+
+
+
*
* *
*G
@5*
H
KC
LC
BC
H
-I H
+
?*
+
+*G
H
-I H
+
H
IJ/ I3 H
+
+
+
+
H
Definiciones Internas:
*
*
*
*
1
'% +
*D*> '% +;+
+
*
*
? +
*5@ BC+
+
*
*
+
* G +
*G
H
H
+
* G +
*
1
*
+*
+*
+
+
+
*
*
+
* *
?*
+
+*G
H
-I H
+
*G
H
IJ/ I3 H
+
+
+
*
+
+
@5*
+
H
KC
7C
9C
H
IJ/ I3
@5*
1
M
+
!
D
D
! 0
Procesamiento simblico
Un smbolo es una secuencia de caracteres
precedida por un signo de comillas simple:
Ejemplos:
N
N
N
O;
N
N%P
N
P ?
N &
Procesamiento simblico
Scheme tiene una sola operacin bsica de
manipulacin de smbolos: symbol=?,
Es una operacin de comparacin, recibe dos
smbolos y produce true si y slo si los dos
smbolos son idnticos:
Ejemplos;
(symbol=? 'Hola 'Hola) = true
(symbol=? 'Hola 'Hello) = false
(symbol=? 'Hola x) = true si x almacena 'Hola
(symbol=? 'Hola x) = false si x almacena 'Hello
Procesamiento simblico
Los smbolos fueron introducidos a la computacin por los
investigadores en inteligencia artificial que queran disear
programas que pudieran tener conversaciones con la gente.
Por ejemplo la funcin respuesta, que responde con alguna
observacin a los diferentes saludos:
(define (respuesta s)
(cond
[(symbol=? s 'buenos-dias) 'Hola]
[(symbol=? s 'como-esta?) 'bien]
[(symbol=? s 'buenas-tardes) 'buenas]
[(symbol=? s 'buenas-noches) 'estoy-cansado]))
Q
*
*
+
*@ C+*@ 8+
+
* *
8
*4 *
*1
8+
+
+
+
+
*
*
8 +
88 +
+
1
+
*
* *5
*
*4
+*> 8+ +
+
+
Modelo de Sustitucin
*
*
*
*
*
*
1
1
1
1
1
8 7+
8 8 7+
8 6 7+
6 ;7+
: 7 7+
67 9 7+
Ejemplo 2:
Q
*
*
* ! +
**@ C+C+
**@ 8+8+
*
*> * ! *1
8+
+* ! *1
6+
+
+
+
+
+
* !8 +
* !1 8 C 8 C +
+
* !1 8
* *5@ +
* !1
*>
+*> 8+ +
+
+
Q
*
* !8 +
* !1
8C +
+
* !1
! +
* *@ C+
!
* !1
*> !+ *1
8+
+
+
+
Ejemplo 2:
define (serie2 a n)
(if (> a n)
0
(+ (* a a) (serie2 (+ a 1) n))))
Ejemplo 3:
(define (serie3 a n)
(if (> a n)
0
(+ (/ 1 (+ (* a a) 1)) (serie3 (+ a 1) n))))
/
*
*
* *5
C
*> *
+
+
+*
*> 8+ +
+
+
+
Ejemplo:
(define (cuadrado a)
(* a a))
(define (sum f a n)
(if (> a n)
0
(+ (f a) (sum f (+ a 1) n))))
(define (serie2 a n)
(sum cuadrado a n))
(define (termino i)
(/ i (+ (cubo i) 1)))
(define (serie3 a n)
(sum termino a n))
Funciones Lambda
!
,
'0
*
*<
5+<
5+
Ejemplo:
(lambda (x) (+ x 4))
Ejemplo:
=>(define cubo
(lambda (x) (* x x x)))
cubo
=>(cubo 3)
27
Ejemplo:
(define (serie f a n)
(if (> a n)
0
(+ (f a) (serie f (+ a 1) n))))
(define (serie4 a n)
(serie (lambda (i) (/ i (+ (cubo i) 1))) a n))
'0
*
**<
*<
<
<
85
5 < ' 5+
+
5+
*
*
**
*
*1
1!
1!
R2)/R+
*4R2)/R+
+
*4*4R2)/R+C 6+
+
+
+
+
+
*
*
6 R2)/R+
! *'
+
*1 *4R2)/R+*4*4R2)/R+'
+
+
+
+
@5**
LCC C
@5*
AE
8C 8CC+C 6+
8C 8CC+
LLK:896F
cuando h es pequeo.
Cdigo:
*
*
*
&+
! *'
+
*D*1 * *> '&+
+* '
+
+&+
+
+
@5**
! C CCC8+9+
B9 CC89CCCCKK;67
@5*
! C CCC8+
AE
LLKB8L7F
GRACIAS..