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) |