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