User Tools

Site Tools


programming:elixir:hello_world

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
programming:elixir:hello_world [2023/04/25 13:52] ateixeiraprogramming:elixir:hello_world [2023/05/02 14:52] (current) ateixeira
Line 19: Line 19:
 h h
 </code> </code>
 +
 +> Kernel is Elixir's default environment
 +
 +> In Elixir, (almost) everything is a function
  
 ---- ----
Line 27: Line 31:
  
 IO.write("Salut " <> name) IO.write("Salut " <> name)
 +</code>
 +
 +----
 +
 +==== Atom ====
 +> An atom type represents a fixed constant. The atom value is simply its own name.
 +
 +<code elixir>
 +# All atoms are preceded with a :
 +variable = :an_atom
 +</code>
 +
 +==== Cond ===
 +> Cond follows the first path that evaluates to true. If no path evaluates to true, an error is raised by the runtime.
 +
 +<code elixir>
 +cond do
 +    x > 10 -> :this_might_be_the_way
 +    y < 7 -> :or_that_might_be_the_way
 +    true -> :this_is_the_default_way
 +end
 +</code>
 +
 +==== _ (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
 +
 +<code elixir>
 +{_, denominator} = Float.ratio(0.25)
 +# => {1, 4}
 +# the variable `denominator` is bounded to the value 4
 +</code>
 +<code elixir>
 +[1, _, 3] = [1, "toto", 3]
 +# => [1, "toto", 3]
 +</code>
 +
 +==== 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 '...'
 +
 +<code elixir>
 +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
 </code> </code>
  
Line 50: Line 112:
  
 if (name == "Toto") do if (name == "Toto") do
-  IO.puts("Inside condition before being changed: " <> name)+  IO.puts("Inside condition before name being changed: " <> name)
   name = "Robin"   name = "Robin"
-  IO.puts("Inside condition after being changed: " <> name)+  IO.puts("Inside condition after name being changed: " <> name)
 end end
  
-IO.puts("Outside condition after being changed: " <> name)+IO.puts("Outside condition after name being changed: " <> name)
 </code> </code>
  
Line 61: Line 123:
  
 <code elixir> <code elixir>
-Inside condition before being changed: Toto +Inside condition before name being changed: Toto 
-Inside condition after being changed: Robin +Inside condition after name being changed: Robin 
-Outside condition after being changed: Toto+Outside condition after name being changed: Toto
 </code> </code>
  
programming/elixir/hello_world.1682430776.txt.gz · Last modified: 2023/04/25 13:52 by ateixeira