Saltar a contenido

Sesión 01: Repaso Racket

  • Racket es un lenguaje de programación multiparadigmas: Funciones, Imperativo, O.O, eventos
  • Racket esta basado en el lenguaje LISP Basado en Listas
  • Una lista esta compuesta por CABEZA y COLA, existe el caso base de la lista vacia, en otras palabras es una estructura RECURSIVA
  • Tenemos nombres que son INMUTABLES y se definen con la palabra define (define variable 1)
  • Sin embargo podemos manejar estado con el operador set!
  • Los tipos son dinamicos, se determinan en ejecucion (define variableB “hola”)
  • Las funciones son ciudadanos de primera clase: son iguales que los valores por ende se pueden enviar como parametro o retornar de funciones
  • La sintaxis es en notacion prefija
    • Notacion infija Python/C/java 1+3
    • Racket (+ 1 3)
  • La sintaxis esta regida por parentesis ( )
  • Se evaluan los parentesis mas internos primero y se evalua de izquierda a derecha

¿Que tipo de notación usar Racket?

Notación prefija basada en parentesis, la operacion SIEMPRE VA DE PRIMERO

(+ 1 2)
(f 2 3)
(list 1 2 3)
(define a 2)

Condicionales

(cond
    [<pregunta> <respuesta>]
    ...
    [else <respuesta>]
)

(if
    <pregunta>
    <respuesta si verdad>
    <respuesta otro caso>
)

Funciones

(define <nombre>
    (lambda ( <argumentos> )
        <expresion>
    )
)

(define operacion
    (lambda (a b c)
        (if (> a 3) b c)
    )
)

Listas

(cons 1 (cons 2 (cons 3 empty))))
(list 1 2 3)
'( 1 2 3) ;Tener cuidado con los llamados a funciones

(car lista) ;Primero/Cabeza
(cdr lista) ;Resto/Cola
(car (cdr lista)) ;Segundo
;Se resuelve primero los parentesis internos de izquierda a derecha
(cadr lista)
...