| 패러다임 | 다중 패러다임: 함수형, 동시성, 프로세스 지향, 코드데이터 |
|---|---|
| 설계자 | José Valim |
| 발표일 | 2011 |
| 최근 버전 | 1.13 |
| 최근 버전 출시일 | 2020년 1월 27일 |
| 자료형 체계 | 동적 |
| 운영 체제 | 얼랭 |
| 라이선스 | 아파치 라이선스 2.0 |
| 파일 확장자 | .ex, .exs |
| 웹사이트 | elixir-lang |
| 영향을 받은 언어 | |
| 얼랭, LFE, 파이썬, 루비, 클로저 | |
엘릭서(Elixir)는 얼랭(Erlang) 가상 머신(BEAM) 위에서 동작하는 함수형, 동시성 프로그래밍 언어이다. 엘릭서는 얼랭이 보유하고 있는 분산 처리, 장애 내구성, 실시간, 무정지 애플리케이션 등의 특징을 공유한다. 그에 더해서 프로토콜을 이용해 다형성을 지원하고, Quote과 Unquote 그리고 Macro를 통한 DSL 구현 등의 메타 프로그래밍이 가능하다.
엘릭서 프로그래밍 언어는 José Valim이 설계했으며, Plataformatec 의 연구과제이다. 그는 얼랭 도구와 생태계를 계승하면서 얼랭 VM에서 작동하는 높은 확장성과 생산성을 가진 언어를 만들고자 했다.
아래 예제는 iex 셸에서 실행되거나 파일에 저장될수 있으며 elixir <filename> 과 같이 커맨드라인으로 실행할 수 있다.
Hello world 예제:
IO.puts "Hello World!"
for n <- [1,2,3,4,5], rem(n,2) == 1, do: n*n
#=> [1, 9, 25]
[1, a] = [1, 2]
# a => 2
{:ok, [hello: a]} = {:ok, [hello: "world"]}
# a => "world"
defmodule Fun do
def fib(0), do: 0
def fib(1), do: 1
def fib(n), do: fib(n-2) + fib(n-1)
end