imported>Eric Evers |
imported>Eric Evers |
Line 1: |
Line 1: |
| {{subpages}}
| |
| =Erlang Language Programming Tutorials=
| |
|
| |
| ==History==
| |
|
| |
| The erlang language was first written in prolog by Joe Armstrong. Ref:audio interview with Joe Armstrong from (http://www.se-radio.net). Joe is a known fan of prolog and borrowed much syntax from prolog in the design of erlang. This first prolog version of erlang was slow and motivated the creation of a virtual machine. Later an emulator called the BEAM was written in C and is about 200,000 lines of C code. It is thought that erlang is short for "Ericsson Language", due to its place of birth.
| |
|
| |
| ==Overview== | | ==Overview== |
|
| |
|
Line 14: |
Line 7: |
|
| |
|
| Erlang has been around for 20 years and has a large library of functions available, especially for networking and the web. | | Erlang has been around for 20 years and has a large library of functions available, especially for networking and the web. |
|
| |
| ==Basic Erlang==
| |
|
| |
| :[[/Command Line|Get to know the Command Line]]
| |
| :[[/Terms|Terms]]
| |
| :[[/Pattern Matching|Pattern Matching]]
| |
| :[[/Expressions|Expressions]]
| |
| :[[/Functions|Functions]]
| |
| :[[/guards|Guards]]
| |
| :[[/Modules|Modules]]
| |
| :[[/Errors|Errors]] - working with exceptions
| |
| :[[/Processes|Processes and Messages]]
| |
| :[[/Trap_exit|Trapping Exit Signals]]
| |
| :[[/Timeouts|Timeouts]]
| |
| :[[/Macros|Macros]]
| |
| :[[/Techniques of Recursion|Techniques of Recursion]]
| |
| :[[/List Comprehensions|List Comprehensions]]
| |
| :[[/List Comments/]]
| |
|
| |
| ==Syntax==
| |
| Functions are defined by the domain of the arguments and the number of arguemnts. A function ends with a period. A function over a particular domain of values is separated by a semicolon. The arrow shows how a particular function of a particular value or variable maps to an output.
| |
|
| |
| fact(0) -> 1;
| |
| fact(N) when is_integer(N) ->
| |
| fact(N-1)*N.
| |
|
| |
| :[[Erlang_programming_language/Tutorials/Advanced_syntax|Advanced Syntax]]
| |
|
| |
| ==Simple Types==
| |
|
| |
| Basic types in erlang include:
| |
| *atom - alice
| |
| *integer - 3
| |
| *float - 3.1415
| |
| *pid - a process id number <0.42.0>
| |
| *list - [ things in square brackets ]
| |
| *tuple - { things in curly braces }
| |
|
| |
| ==Advanced Types==
| |
| *binary - a binary data block, <<42>>
| |
| *function - a function, F = fun(X) -> X*X end.
| |
| *port - a path for data to flow to the outside world
| |
| *reference - a unique id over all processes
| |
| *record - the standard erlang data structure
| |
|
| |
| ==Modules==
| |
|
| |
| ===Adding/Replacing Modules===
| |
| Erlang is picky about updating or replacing modules of the same name.
| |
| You should completely remove the old module code from the directory tree,
| |
| not just rename the containing directory.
| |
|
| |
| ===Popular Modules===
| |
| :[[Erlang_programming_language/Tutorials/Math|math]]
| |
| :[[Erlang_programming_language/Tutorials/gb_sets|gb_sets]]
| |
| :[[Erlang_programming_language/Tutorials/Lists|lists]]
| |
| :[[Erlang_programming_language/Tutorials/regexp|regexp: Regular Expressions]]
| |
|
| |
| ===Nonstandard Modules===
| |
| :[[Erlang_programming_language/Tutorials/eunit|Eunit]] Unit Testing Module
| |
|
| |
| ==Object Oriented Programming with erlang==
| |
|
| |
| :[[Erlang_programming_language/Tutorials/erlangOOP|Objects with erlang]]
| |
|
| |
| ==Functional Programming with erlang==
| |
|
| |
| :[[Erlang_programming_language/Tutorials/Folding|Fun with folding]]
| |
| :[[Erlang_programming_language/Tutorials/Iterator|Iterator]]
| |
| :[[Erlang_programming_language/Tutorials/Simplify|Simplify Numeric Types]] (auto-demotion of numerical types)
| |
|
| |
| ==Example programs==
| |
|
| |
| :[[Erlang_programming_language/Tutorials/Hello|Hello World (Serial)]]
| |
| :[[Erlang_programming_language/Tutorials/Tree_Hello|Hello World (parallel) ]]
| |
| :[[Erlang_programming_language/Tutorials/Linda_Sieve|Prime Sieve with Linda]]
| |
| :[[Erlang_programming_language/Tutorials/Agents|Autonomous Agents in Erlang]] -- def: [[Autonomous Agent]].
| |
|
| |
| ==Advanced OTP==
| |
|
| |
| ===Databases===
| |
|
| |
| :[[Erlang_programming_language/Tutorials/ETS|ETS programming]]
| |
| :[[Erlang_programming_language/Tutorials/DETS|DETS programming]]
| |
| :[[Erlang_programming_language/Tutorials/Mnesia|Mnesia database]]
| |
|
| |
| ====Mnesia====
| |
|
| |
| ==Advanced Erlang==
| |
| :[[Erlang_programming_language/Tutorials/Yecc|Making parsers with yecc]]
| |
| :[[Erlang_programming_language/Tutorials/Evaluation|Evaluation]]
| |
|
| |
| ==Projects using erlang==
| |
| *CouchDB - a scalable database for Apache
| |
| *Wings3D - a 3-D editor
| |
|
| |
| ==References==
| |
|
| |
| [http://www.erlang.org/doc/man/| 1 - Erlang Man Pages at Erlang,org]
| |