37 lines
		
	
	
		
			916 B
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			916 B
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: Lists
 | |
| ---
 | |
| ## Lists
 | |
| 
 | |
| In Elixir, lists are data structures comprised of values within square brackets. The values in a list can be any type.
 | |
| ```elixir
 | |
| iex> [1, "string", true]
 | |
| [1, "string", true]
 | |
| ```
 | |
| 
 | |
| ## Immutability
 | |
| 
 | |
| Data structures in Elixir are immutable, so any operations performed on a List will return a new list, leaving the original intact.
 | |
| ```elixir
 | |
| iex> list = [1, "string", true]
 | |
| [1, "string", true]
 | |
| iex> list ++ [2]
 | |
| [1, "string", true, 2]
 | |
| iex> list
 | |
| [1, "string", true]
 | |
| ```
 | |
| 
 | |
| ## Heads and Tails
 | |
| 
 | |
| The head (first element) of a list and the tail (remaining values) can easily accessed with the `hd/1` and `tl/1` operators.
 | |
| ```elixir
 | |
| iex> list = [1, "string", true]
 | |
| iex> hd(list)
 | |
| 1
 | |
| iex> tl(list)
 | |
| ["string", true]
 | |
| ```
 | |
| 
 | |
| #### More Information:
 | |
| * [elixir-lang.org | recursion](https://elixir-lang.org/getting-started/basic-types.html#linked-lists)
 | |
| * [hexdocs | Enum](https://hexdocs.pm/elixir/List.html) |