Tema 2: Características de la programación funcional
Tema 2: Características de la programación funcional
Tema 2: Características de la programación funcional
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Tema</strong> 2: <strong>Características</strong> <strong>de</strong> <strong>la</strong> <strong>programación</strong> <strong>funcional</strong><br />
(* x (factorial (- x 1)))))<br />
>(factorial 8)<br />
40320<br />
>(factorial 30)<br />
265252859812191058636308480000000<br />
Sumatorio<br />
Otro ejemplo <strong>de</strong> función recursiva es el sumatorio <strong>de</strong>s<strong>de</strong> un número inicial hasta un límite.<br />
Matemáticamente se expresa con <strong>la</strong> siguiente fórmu<strong>la</strong>:<br />
En Scheme:<br />
(<strong>de</strong>fine (sumatorio min max)<br />
(if (> min max)<br />
0<br />
(+ min (sumatorio (+ 1 min) max))))<br />
> (sumatorio 3 12)<br />
75<br />
Por último un ejemplo utilizando símbolos y <strong>la</strong>s funciones que vimos en una c<strong>la</strong>se anterior<br />
empty?, first, bf y equal?.<br />
Recor<strong>de</strong>mos qué hace cada una <strong>de</strong> estas funciones:<br />
• (empty? pa<strong>la</strong>bra): comprueba si pa<strong>la</strong>bra es una ca<strong>de</strong>na vacía<br />
• (first pa<strong>la</strong>bra): <strong>de</strong>vuelve el primer carácter <strong>de</strong> un símbolo (como símbolo a su<br />
vez)<br />
• (bf pa<strong>la</strong>bra): <strong>de</strong>vuelve el resto <strong>de</strong> un símbolo, <strong>de</strong>spués <strong>de</strong> haber quitado su primer<br />
carácter<br />
• (equal? pal1 pal2): comprueba si dos símbolos son iguales<br />
La función (elemento? x pa<strong>la</strong>bra) <strong>de</strong>vuelve #t o #f <strong>de</strong>pendiendo <strong>de</strong> si x es un<br />
símbolo que está <strong>de</strong>ntro <strong>de</strong> pa<strong>la</strong>bra:<br />
(<strong>de</strong>fine (elemento? x pa<strong>la</strong>bra)<br />
(cond<br />
((empty? pa<strong>la</strong>bra) #f)<br />
((equal? x (first pa<strong>la</strong>bra)) #t)<br />
(else (elemento? x (bf pa<strong>la</strong>bra)))))<br />
> (elemento? 'a 'ho<strong>la</strong>)<br />
#t<br />
Page 11<br />
Copyright © 2006 Depto. CCIA, Universidad <strong>de</strong> Alicante All rights reserved.