¿Qué es la REPL de Elixir y cómo se usa?

Поделиться
HTML-код
  • Опубликовано: 26 окт 2024

Комментарии • 8

  • @makigas
    @makigas  3 года назад +7

    Ahora sí que empieza a tener sentido que compartas esta playlist en canal #random del Slack de tu empresa. 🙃

  • @salvadorcano553
    @salvadorcano553 3 года назад

    Gracias por la aportación, sigo el curso con entusiasmo, esperando llegar a algo más complicado, algo que me demande un poco más. Gracias de nuevo.

  • @EliukBlau
    @EliukBlau 3 года назад +4

    Ojo Dani, si bien la explicación sirve, lo más correcto es diferenciar entre Expresiones y Sentencias, considerando que en Elixir casi todo puede ser o devolver una expresión. Una Sentencia ejecuta o declara algo, imperativamente. Una Expresión evalúa una operación y devuelve un resultado. Esto podría no parecer muy significativo, pero con un ejemplo tiene más sentido. Imaginar lo siguiente en cualquier lenguaje C-like, por ejemplo:
    int valor = 1 + 1 ;
    La parte `int valor` es una sentencia. La parte `1+1` es una expresión. El ` = ` y ` ; ` en este caso son necesidades sintácticas que el lenguaje pide para esa sentencia en concreto (que es una declaración con inicialización), por lo que solo nos importa para este ejemplo los dos primeros elementos mencionados.
    Ahí se ve claramente la diferencia entre una sentencia (que ejecuta algo, pero no evalúa nada) y una expresión (que evalúa una operación y devuelve un resultado inmediatamente).

    • @makigas
      @makigas  3 года назад +3

      Claro, pero por temas de nombres que le dan a las cosas hay que ir con cuidado para evitar confusiones. En Elixir también se le llaman "sentencias" a las estructuras del lenguaje como condicionales y demás. Pero es importante diferenciar entre esas sentencias y las de un programa imperativo, porque como dices, en Elixir casi todo devuelve expresiones, sentencias también.
      Mientras que en un C-like, if() es una sentencia que ejecuta cosas, en Elixir, if es una sentencia pero también una expresión que evalúa como cualquier otra. Al igual que en otros lenguajes de programación funcionales, para Elixir "if edad >= 18, do: :adulto, else: :menor" evalúa a alguna de las expresiones que la componen. (Esto se empieza a revelar más adelante en esta lista)
      Ojo que algunos lenguajes imperativos también se saltan su propia norma y tienen sentencias que parecen devolver cosas. Diría que en los C-like la única excepción es la asignación, por eso se pueden hacer cosas como "if ((fd = fopen(stdout, "w")) != NULL)", donde el resultado de asignar a fd es también devuelto para usarlo en el IF. Dejo fuera ejemplos como Ruby porque es otro de esos lenguajes que no oculta ser multiparadigma teniendo mutaciones de estado pero sentencias que evalúan. (Los if de ruby evalúan a la última expresión de la branch que haya tomado, pero a la vez dentro de una branch se puede hacer una declaración imperativa como `@x = true`).

    • @DorganDash
      @DorganDash 3 года назад +2

      @@makigas ​ @makigas: tutoriales de programación Puede que peque un poco de pedante pero en Elixir absolutamente todo es una expresión(a diferencia de Erlang que además tiene "formas"). if es una expresion, case es una expresion, with es una expresion, todas son expresiones y todas devuelven algo(inclusive raise y throw, que devolverían nil pero llaman a :erlang.error y cambian el flujo del programa). Las semanticas de if no estan garantizadas tampoco y no hay absolutamente ninguna regla en el lenguaje que la diferencie de cualquier otra macro(he leído el parser y compilador varias veces), aunque afortunadamente practicamente toda la comunidad está de acuerdo en que cambiar la semántica de funciones de la librería estándar es una muy mala práctica. Cuando mucha gente considera Elixir como un miembro honorario de la familia de los lisp, en parte tiene que ver con esto.
      En cualquier caso muy buena serie de videos, se la recomendé a un amigo que quiere aprender a programar y en elixir 👌

  • @albertochacon8912
    @albertochacon8912 3 года назад +2

    REPL por las siglas en inglés de «Read-Eval-Print-Loop», también conocido como alto nivel interactivo o consola de lenguaje. *wikipedia

  • @martinh7544
    @martinh7544 3 года назад +1

    Dar like al vídeo al instante de comenzar :v