Saltar al contenido

Familias y docentes › Funciones

Guía

Módulo 2: Funciones

La programación funcional enseña a pensar en transformaciones sin efectos secundarios, y la recursión enseña a resolver un problema grande con uno igual pero más pequeño. Son ideas que hoy están en todos los lenguajes.

Lambda, la máquina de jugosλ

Duración sugerida: 45 minutos por lección.

Qué se aprende

LecciónAl terminar, puede…
Máquinas que transformanDefinir y usar funciones propias.
Listas: trenes de vagonesConstruir y recorrer listas.
Recursión: muñecas rusasEscribir una función recursiva con su caso base.
map y filterUsar map y filter con funciones propias.
Reto: la biblioteca con funcionesResolver el problema de la biblioteca con listas y funciones.

Cómo acompañar

A qué estar atentos

Soluciones de los retos

Hay muchas soluciones posibles; esta es una. Úsenla para orientar, no para copiar.

Tu primera función: Define una función cuadrado que multiplique un número por sí mismo, y calcula (cuadrado 7).
(define (cuadrado n)
  (* n n))
(cuadrado 7)
Armar y desarmar trenes: Pon un vagón con el 5 delante del tren: el resultado debe ser (5 1 2 3).
(define tren '(1 2 3))
(cons 5 tren)
Factorial con muñecas: Escribe suma-hasta: (suma-hasta 5) es 5 + 4 + 3 + 2 + 1 = 15. No olvides el caso base.
(define (suma-hasta n)
  (if (= n 0)
      0
      (+ n (suma-hasta (- n 1)))))
(suma-hasta 5)
Máquinas para trenes enteros: Del tren (1 2 3 4 5), quédate con los impares y elévalos al cuadrado: (1 9 25).
(define (cuadrado n)
  (* n n))
(map cuadrado (filter odd? '(1 2 3 4 5)))
La biblioteca con funciones: Calcula cuántos libros están disponibles (la respuesta es 2). Pista: length cuenta los vagones.
(define libros '((principito si) (cocori no) (mamita-yunai si)))
(define (disponible? libro)
  (equal? (car (cdr libro)) 'si))
(length (filter disponible? libros))