Definiciones, funciones y comentarios

Qué son las definiciones, cómo asociamos expresiones a identificadores y como podemos parametrizar esas definiciones (construir funciones). También, cómo usar los comentarios.

En Racket, la programación funcional se basa en la creación de definiciones que asignan nombres a expresiones, y estas definiciones son la base para construir programas. Para empezar a trabajar con definiciones, utilizamos la palabra clave define dentro de paréntesis, siguiendo la sintaxis característica de Racket y Lisp, donde casi todo se escribe entre paréntesis.

Por ejemplo, si queremos asignar el valor 42 a un nombre, podemos escribir:

(define sentido-de-la-vida 42)

Con esto, sentido-de-la-vida se convierte en una expresión cuyo valor es 42. Podemos probarlo ejecutando el código y luego escribiendo sentido-de-la-vida, lo que nos devolverá 42. Es importante destacar que en Racket los nombres suelen escribirse en minúsculas y con guiones para separar palabras, aunque el lenguaje es bastante flexible y permite usar símbolos poco comunes, como signos de interrogación o incluso símbolos matemáticos.

Además de valores numéricos, podemos definir cadenas de texto o cualquier otra expresión. Por ejemplo:

(define pi 3.14159)
(define phi 1.618)
(define recio "no limpio pescado")

Aquí, pi y phi son números con decimales, y recio es una cadena de caracteres. Recordemos que para los números decimales se utiliza el punto como separador, siguiendo la notación inglesa.

Un aspecto fundamental para mantener nuestro código claro y comprensible es el uso de comentarios. En Racket, los comentarios se escriben con el símbolo punto y coma ;. Todo lo que esté después de este símbolo en la misma línea será ignorado por el intérprete. Por ejemplo:

; Creamos algunas definiciones de constantes
(define pi 3.14159) ; Pi es un número irracional

Podemos escribir comentarios en líneas separadas o al final de una línea de código, aunque es más recomendable usar líneas separadas para mayor claridad. Para comentarios multilínea, Racket ofrece una sintaxis especial que comienza con #| y termina con |#. Todo lo que esté entre estos símbolos será ignorado, lo que facilita escribir comentarios extensos sin tener que poner punto y coma en cada línea:

#|
Este es un comentario
multilínea en Racket.
Podemos escribir todo lo que queramos aquí.
|#

Avanzando hacia definiciones más complejas, podemos crear funciones que reciban parámetros y devuelvan resultados en función de ellos. Para definir una función, seguimos usando define, pero en lugar de asignar un valor simple, ponemos una lista con el nombre de la función y sus parámetros como primer argumento, y luego la expresión que define el cuerpo de la función.

Por ejemplo, para definir una función que calcule la media de dos números a y b, escribimos:

(define (media a b)
  (/ (+ a b) 2))

Aquí, (media a b) es una lista que indica que media es una función con dos parámetros. El cuerpo de la función suma a y b y luego divide el resultado entre 2 usando el operador /. Al ejecutar esta definición, podemos llamar a la función con valores concretos, como (media 3 5), y obtendremos 4.

La sintaxis basada en listas y paréntesis puede parecer extraña al principio, pero Racket ayuda visualmente resaltando los ámbitos de los paréntesis para facilitar la lectura y escritura del código.

También podemos definir funciones con más parámetros. Por ejemplo, una función que sume tres números a, b y c:

(define (sumar a b c)
  (+ a b c))

Al llamar a (sumar 3 4 5), obtendremos 12. Más adelante, aprenderemos cómo crear funciones que acepten un número variable de parámetros, pero por ahora estas definiciones con un número fijo de argumentos son un buen punto de partida.

En resumen, en Racket definimos nombres y funciones usando define, aprovechamos la flexibilidad de la sintaxis con paréntesis y listas, y mantenemos nuestro código claro con comentarios simples o multilínea. Estas herramientas básicas nos permiten construir programas funcionales y sentar las bases para explorar conceptos más avanzados como las listas y funciones con parámetros variables.

Lista de reproducción
  1. 1
    Introducción al entorno
    16 minutos
  2. 2
    Definiciones, funciones y comentarios
    16 minutos
  3. 3
    Tipos de datos
    23 minutos
  4. 4
    Listas: manipulación, iteración y recursión
    25 minutos
  5. 5
    Todo sobre las condicionales
    17 minutos
  6. 6
    Revisitando las definiciones
    15 minutos
  7. 7
    Funciones lambda (lo básico)
    13 minutos
  8. 8
    Asignaciones con let y let*
    9 minutos