Slide 1

Slide 1 text

Introdução ao Elixir Por Joel Jucá

Slide 2

Slide 2 text

O projeto Criada em 2011 por José Valim (sim, um brasileiro!) Executa na máquina virtual Erlang (BEAM) Capaz de usar código e bibliotecas Erlang Excelente kit de ferramentas (Mix, Hex, etc.) Framework web de excelente qualidade, inspirado no Ruby on Rails (Phoenix) Ecossistema novo, mas moderno e funcional

Slide 3

Slide 3 text

A linguagem Compilada, funcional, de propósito geral Destaque para funções de alta ordem e recursão Pattern matching e guards (YES!) Mesmo modelo e conceitos de concorrência do Erlang/BEAM

Slide 4

Slide 4 text

Elixir 101: shell interativo Os primeiros passos com a linguagem podem ser dados através do shell interativo (REPL) IEx: $ iex

Slide 5

Slide 5 text

Tipos básicos # Comentários Ruby-like # Strings e charlists "Hello, Elixir!" # string "Hello, Elixir!" # charlist (lista de números/code points) # Números 123 # integer 123_456 # integer 0x7B # integer 12.3 # Float # Átomos (atoms; o mesmo que symbols em Ruby) :elixir_rocks # Tuplas result = {:ok, "Tuplas com um atom no início são bem comuns"} # Listas langs = ["C", "Elixir", "Go", "Java", "Python"]

Slide 6

Slide 6 text

Módulos # hello.ex defmodule Hello def hello do "Hello, there!" end end

Slide 7

Slide 7 text

Funções Funções são identificadas por seu nome e sua aridade. # Funções nomeadas existem dentro de módulos defmodule Hello # sum/2 def sum(x, y) do x + y end # hello/0 def hello do IO.puts sum(10, 15) # => 25 end end

Slide 8

Slide 8 text

Pattern matching x = 1 1 = x

Slide 9

Slide 9 text

Operador match nome_sobrenome = ["Joel", "Juca"] [nome, "Juca"] = nome_sobrenome ["Joel", sobrenome] = nome_sobrenome

Slide 10

Slide 10 text

Pattern matching em funções defmodule Hello # multiply/0 def multiply(10, y) do IO.puts "Somar qualquer número a dez é muito fácil!" 10 + y end def multiply(x, 0) do IO.puts "Ops! Qualquer número multiplicado por zero é zero." 0 end def multiply(x, y) do x * y end end

Slide 11

Slide 11 text

Material de estudos Primeiros passos: https://elixir-lang.org/getting-started/introduction.html Referência rápida: https://learnxinyminutes.com/docs/elixir/

Slide 12

Slide 12 text

Obrigado! Joel Jucá GitHub: /joelwallis Twitter: @joelwallis1