Skip to content

Instantly share code, notes, and snippets.

@rafaelmv
Last active November 22, 2015 03:21
Show Gist options
  • Save rafaelmv/a46c412a6e674bb255d3 to your computer and use it in GitHub Desktop.
Save rafaelmv/a46c412a6e674bb255d3 to your computer and use it in GitHub Desktop.
Elixir notes

Elixir

Funciones -> Funciones Misma entrada, misma salida Efecto Vegas: Lo que pasa en la función se queda en la función.

Extensiones

  • .exs -> Script como buena práctica siempre finaliza con s
  • .ex -> Compilar

Características

  • Sistema de macros
  • Patter matching
  • Zero-index access
  • Keyword arguments
  • Expresiones regulares

Código Elixir -> Abstract Syntax Tree -> Código de Bite de BEAM -> Código Máquina

Objetivos del lenguaje

  • Facilidad de aprender
  • Compatibilidad
  • Extensibilidad
  • Productividad

Productividad

  • Documentación MD -> Python
  • Herramientas(ExUnit, IEx, Mix) -> Go, JS
  • Paquetes(Hex) -> Ruby
  • REPL
  • Releases(exrm)

Erlang

  • erts = Erlang Runtime System
  • smp = Simetric multi processign
  • Async Threads = Number of threads erlang raise
  • hipe = código fuente a código procesador
  • dtrace = Trackeo chido

No usar ctrl + c en producción

imposibru

========================================

iex(1)> h <<module>>

Muesta información del módulo

iex -S mix

Permite utilizar el código en el Shell intereactivo

Elixir Syntax

¿Sentencias o expresiones? En lenguajes funcionales se usa el estilo declarativo utilizando expresiones.

Expresiones: tienen valor asociado Sentencia: no tiene valor asociado

defmodule Geometry do
  def rectangle_area(a, b) do
  	a * b
  end
end

La última operación que realiza la función es lo que retorna.

Se pueden anidar módulos.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment