Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Elixir (programming language)

From Wikipedia, the free encyclopedia
Programming language running on the Erlang virtual machine
icon
This articlerelies excessively onreferences toprimary sources. Please improve this article by addingsecondary or tertiary sources.
Find sources: "Elixir" programming language – news ·newspapers ·books ·scholar ·JSTOR
(June 2023) (Learn how and when to remove this message)

Elixir
elixir programming language
Elixir
Paradigmsmulti-paradigm:functional,concurrent,distributed,process-oriented
Designed byJosé Valim
First appeared25 May 2012; 13 years ago (2012-05-25)[1][2][3]
Stable release
1.19.5[4] Edit this on Wikidata / 9 January 2026; 33 days ago (9 January 2026)
Typing disciplinedynamic,strong
PlatformErlang
LicenseApache License 2.0[5]
Filename extensions.ex, .exs
Websiteelixir-lang.org
Influenced by
Clojure,Erlang,Ruby
Influenced
Gleam,LFE

Elixir is afunctional,concurrent,high-levelgeneral-purposeprogramming language that runs on theBEAMvirtual machine, which is also used to implement theErlang programming language.[6] Elixir builds on top of Erlang and shares the same abstractions for buildingdistributed,fault-tolerant applications. Elixir also provides tooling and anextensible design. The latter is supported by compile-timemetaprogramming withmacros andpolymorphism via protocols.[7]

The community organizes yearly events in the United States,[8] Europe,[9] and Japan,[10] as well as minor local events and conferences.[11][12]

History

[edit]

José Valim created the Elixir programming language as aresearch and development project at Plataformatec. His goals were to enable higher extensibility and productivity in the Erlang VM while maintaining compatibility with Erlang's ecosystem.[13][14]

Elixir is aimed at large-scale sites and apps. It uses features ofRuby, Erlang, andClojure to develop a high-concurrency and low-latency language. It was designed to handle large data volumes. Elixir is also used in telecommunications, e-commerce, and finance.[15]

In 2021, the Numerical Elixir effort was announced with the goal of bringing machine learning, neural networks, GPU compilation, data processing, and computational notebooks to the Elixir ecosystem.[16]

Features

[edit]

Examples

[edit]

The following examples can be run in aniexshell or saved in a file and run from thecommand line by typingelixir<filename>.

ClassicHello world example:

iex>IO.puts("Hello World!")Hello World!

Pipe operator:

iex>"Elixir"|>String.graphemes()|>Enum.frequencies()%{"E" => 1, "i" => 2, "l" => 1, "r" => 1, "x" => 1}iex>%{values:1..5}|>Map.get(:values)|>Enum.map(&&1*2)[2, 4, 6, 8, 10]iex>%{values:1..5}|>Map.get(:values)|>Enum.map(&&1*2)|>Enum.sum()30

Pattern matching (a.k.a. destructuring):

iex>%{left:x}=%{left:5,right:8}iex>x5iex>{:ok,[_|rest]}={:ok,[1,2,3]}iex>rest[2, 3]

Pattern matching with multiple clauses:

iex>caseFile.read("path/to/file")doiex>{:ok,contents}->IO.puts("found file:#{contents}")iex>{:error,reason}->IO.puts("missing file:#{reason}")iex>end

List comprehension:

iex>forn<-1..5,rem(n,2)==1,do:n*n[1, 9, 25]

Asynchronously reading files with streams:

1..5|>Task.async_stream(&File.read!("#{&1}.txt"))|>Stream.filter(fn{:ok,contents}->String.trim(contents)!=""end)|>Enum.join("\n")

Multiple function bodies withguards:

deffib(n)whennin[0,1],do:ndeffib(n),do:fib(n-2)+fib(n-1)

Relational databases with the Ecto library:

schema"weather"dofield:city# Defaults to type :stringfield:temp_lo,:integerfield:temp_hi,:integerfield:prcp,:float,default:0.0endWeather|>where(city:"Kraków")|>order_by(:temp_lo)|>limit(10)|>Repo.all

Sequentially spawning a thousand processes:

fornum<-1..1000,do:spawnfn->IO.puts("#{num*2}")end

Asynchronously performing a task:

task=Task.asyncfn->perform_complex_action()endother_time_consuming_action()Task.awaittask

[citation needed]

See also

[edit]

References

[edit]
  1. ^Valim, José (25 May 2012)."Elixir v0.5.0 released".elixir-lang. Retrieved22 January 2026.
  2. ^"Elixir's Evolution: History and Ecosystem".Software Patterns Lexicon. 23 November 2024.Archived from the original on 22 January 2026. Retrieved22 January 2026.
  3. ^Woo, Jiahao (15 January 2024)."The Story of Elixir".OSS History.Archived from the original on 15 January 2024. Retrieved22 January 2026.
  4. ^"Release 1.19.5". 9 January 2026. Retrieved21 January 2026.
  5. ^"elixir/LICENSE at master · elixir-lang/elixir · GitHub".GitHub.
  6. ^"Most Popular Programming Languages of 2018 - Elite Infoworld Blog". 30 March 2018. Archived fromthe original on 9 May 2018. Retrieved8 May 2018.
  7. ^abcdefg"Elixir".elixir-lang. Retrieved17 February 2013.
  8. ^"ElixirConf". Retrieved11 July 2018.
  9. ^"ElixirConf". Retrieved11 July 2018.
  10. ^"Erlang & Elixir Fest". Archived fromthe original on 30 March 2019. Retrieved18 February 2019.
  11. ^"Elixir LDN". Archived fromthe original on 12 July 2018. Retrieved12 July 2018.
  12. ^"EMPEX - Empire State Elixir Conference". Retrieved12 July 2018.
  13. ^Elixir - A modern approach to programming for the Erlang VM. Retrieved17 February 2013.
  14. ^José Valim - ElixirConf EU 2017 Keynote.Archived from the original on 17 November 2021. Retrieved14 July 2017.
  15. ^"Behinde the code: The One Who Created Elixir". Retrieved25 November 2019.
  16. ^"Numerical Elixir (Nx)".GitHub. Retrieved6 May 2024.
  17. ^"Writing assertive code with Elixir". 24 September 2014. Retrieved5 July 2018.
  18. ^Loder, Wolfgang (12 May 2015).Erlang and Elixir for Imperative Programmers. "Chapter 16: Code Structuring Concepts", section title "Actor Model": Leanpub. Retrieved7 July 2015.{{cite book}}: CS1 maint: location (link)
  19. ^Wlaschin, Scott (May 2013)."Railway Oriented Programming".F# for Fun and Profit.Archived from the original on 30 January 2021. Retrieved28 February 2021.

Further reading

[edit]
National
Other
Retrieved from "https://en.wikipedia.org/w/index.php?title=Elixir_(programming_language)&oldid=1336115666"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp