User Tools

Site Tools


programming:elixir:hello_world

Hello world !

IO.puts("Hello world!")
 
# Same as IO.puts but do not add a new line at the end
IO.write("Hello world !")

Interactive Elixir Session

iex

Help

h
Kernel is Elixir's default environment
In Elixir, (almost) everything is a function

Reading values

name = IO.gets("Salut, comment tu t'appelles ? ")
 
IO.write("Salut " <> name)

Atom

An atom type represents a fixed constant. The atom value is simply its own name.
# All atoms are preceded with a :
variable = :an_atom

Cond

Cond follows the first path that evaluates to true. If no path evaluates to true, an error is raised by the runtime.
cond do
    x > 10 -> :this_might_be_the_way
    y < 7 -> :or_that_might_be_the_way
    true -> :this_is_the_default_way
end

_ (Underscore)

When there is a _ instead of a variable or a value, it means the value will be ignored and any value will be accepted
{_, denominator} = Float.ratio(0.25)
# => {1, 4}
# the variable `denominator` is bounded to the value 4
[1, _, 3] = [1, "toto", 3]
# => [1, "toto", 3]

Sigils ( symbols with magical powers )

A sigil is an alternative syntax for representing and working with literals
A sigil starts with a tilde (~), followed by an upper- or lowercase letter, some delimited content, and perhaps some options
The delimiters can be <…>, {…}, […], (…), |…|, /…/, “…”, and '…'
The letter determines the sigil’s type:
 
~C  A character list with no escaping or interpolation
~c  A character list, escaped and interpolated just like a single-quoted string
~D  A Date in the format yyyy-mm-dd
~N  A naive (raw) DateTime in the format yyyy-mm-dd hh:mm:ss[.ddd]
~R  A regular expression with no escaping or interpolation
~r  A regular expression, escaped and interpolated
~S  A string with no escaping or interpolation
~s  A string, escaped and interpolated just like a double-quoted string
~T  A Time in the format hh:mm:ss[.dddd]
~W  A list of whitespace-delimited words, with no escaping or interpolation
~w  A list of whitespace-delimited words, with escaping and interpolation

For

number = IO.gets("Salut, entre un nombre : ") |> String.trim() |> String.to_integer()
 
for i <- 1..number do
  IO.puts("#{i}")
end

In elixir, values are not modified. Values are transformed on output.

Example :

name = "Toto"
 
if (name == "Toto") do
  IO.puts("Inside condition before name being changed: " <> name)
  name = "Robin"
  IO.puts("Inside condition after name being changed: " <> name)
end
 
IO.puts("Outside condition after name being changed: " <> name)

Output :

Inside condition before name being changed: Toto
Inside condition after name being changed: Robin
Outside condition after name being changed: Toto

Example with date :

d1 = ~D[2023-04-25]
 
IO.puts(d1)
IO.puts(Date.add(d1, 5))
IO.puts(d1)

Output :

2023-04-25
2023-04-30
2023-04-25
programming/elixir/hello_world.txt · Last modified: 2023/05/02 14:52 by ateixeira