Talk:Erlang (programming language)
From Wikipedia, the free encyclopedia
Contents |
[edit] Name origin
I believe Erlang was ERgonomic LANGuage ? --> never heard about that
"Erlang is named after A. K. Erlang. It is sometimes mistakenly thought that its name is as abbreviation of ERicsson LANGuage, owing to its heavy use inside Ericsson."
Well, it's quite a pun because Erlang was created inside Ericsson, so its name is an abbreviation of ERicsson LANGuage too.
[edit] Movie
It looks like "Erlang the Movie" was taken down from the Erlang website, whether due to bandwidth cost or to sheer embarrassment it's not clear. If it ever shows up at some permanent-looking address, I recommend a link here. I do have a copy, but I'd rather not publish it myself (not least due to copyright concerns). --—Ashley Y 10:52, 2005 Apr 16 (UTC)
- I removed the link some time ago - after seeing the size of this monster, I guessed only few would appreciate it. What was content of this movie? --Pavel Vozenilek 16:12, 16 Apr 2005 (UTC)
-
- It explains the features of Erlang. They make them clear by an example with a telephone central. --Ejabberd 22:50, 16 Apr 2005 (UTC)
- There's a torrent of the movie available here: http://thepiratebay.org/details.php?id=3425809 -- Björn Lindström 22:55, 4 January 2006 (UTC)
- Google video has an 11 minute version. I don't know if it is the same as the downloadble one. http://video.google.com/videoplay?docid=-5830318882717959520 --Joshd 08:52, 4 June 2006 (UTC)
[edit] trapexit.org
I'd commented out link to this website: it looks dead, discussion forum is completely down. On main Erlang list I read that something there broke down in January and it doesn't seem to be fixed. When (if) the things will get better please uncomment the link. Thanks. Pavel Vozenilek 14:27, 19 February 2006 (UTC)
18 Aug 2006: I put in the link to www.trapexit.org as we have revived it :) /Mazen @ trapexit.org
[edit] Criticism, Review, Comparison?
I was hoping this page would tell me if the language was any good :) I wanted to see a criticism section, a brief mention of it's strengths and weakenesses, or a comparison to other languages used for the same purpose. Mathiastck 01:55, 23 June 2006 (UTC)
[edit] Haskell Roots?
Does Erlang have an Haskell roots? Looking at quicksort, I'd say so, but I don't know. If so, what are they? --69.61.168.145 02:01, 20 August 2006 (UTC)
- Erlang predates Haskell by almost a decade. The similarity you observe between quicksort implementations is most likely because both languages are functional programming languages that emphasize recursion and provide good list manipulation capabilities. --Allan McInnes (talk) 04:15, 20 August 2006 (UTC)
-
- Thanks for the info. Do you know if Haskell borrowed from Erlang? My comment was mostly a syntatic comment. Quicksort in Lisp/Scheme or OCaml look, syntatically, nothing like Erlang/Haskell, at least to me.--69.61.168.145 03:32, 23 August 2006 (UTC)
-
-
- Here is what the Erlang FAQ has to say about the syntax:
- 10.3 Where does Erlang syntax come from?
- Mostly from prolog. Erlang started life as a modified prolog. ! as the send-message operator comes from CSP. Eripascal was probably responsible for , and ; being separators and not terminators.
- —Tobias Bergemann 09:17, 23 August 2006 (UTC)
- Here is what the Erlang FAQ has to say about the syntax:
-
-
-
- The Haskell syntax is mostly borrowed from Miranda and Hope. Given their very different roots I would be surprised if there were any direct borrowings between Erlang and Haskell. — Tobias Bergemann 09:24, 23 August 2006 (UTC)
-
[edit] Armstrong's thesis
I've added a link to Armstrong's thesis, as it is an essential Erlang reading Dmitriid 12:02, 25 August 2006 (UTC)
[edit] Requested move
Erlang programming language → Erlang (programming language) – Conformance with WP naming conventions LotLE×talk
The page was moved. Move discussion is here: Wikipedia talk:WikiProject Programming languages/Renaming poll.
[edit] Mnesia
"Mnesia" redirects here, but this page does not explain it, and has a "see also" link to this redirect.
[edit] About typing
The article says Erlang uses single assignment and dynamic typing. Aren't these two characteristics mutually exclusive? --Pezezin 17:07, 18 November 2006 (UTC)
- No. Single assignment means that a name can have a value bound to it only once within a given scope. But it doesn't place any limits on what the type of the value being bound has to be. So I can write
-module(test). -export([testassign1/1, testassign2/1]). testassign1(A) -> B = A, B. testassign2(A) -> B = 1, B = A, B.
- and when I use these functions
testassign1
works just fine for values of various types
Eshell V5.5 (abort with ^G) 1> c(test.erl). {ok,test} 2> test:testassign1(256). 256 3> test:testassign1(3.1415927). 3.14159 4> test:testassign1("some text"). "some text"
- but
testassign2
spits up an error, since it's trying to bind a value to B twice
6> test1:testassign2(256). =ERROR REPORT==== 18-Nov-2006::18:33:41 === Error in process <0.31.0> with exit value: {{badmatch,256},[{test1,testassign2,1},{shell,exprs,6},{shell,eval_loop,3}]} ** exited: {{badmatch,256}, [{test1,testassign2,1},{shell,exprs,6},{shell,eval_loop,3}]} **
- As the example above shows, the function
testassign2
will fail even when the type of the new value I'm trying to bind is the same as the type that B is already bound to. The error isn't a type error, it's an attempt to assign different values to B. The only timetestassign2
doesn't generate an error is when the value passed to it is the same as the value it internally binds to B - in that case the second "assignment" simply confirms that B is already bound to '1'.
8> test1:testassign2(1). 1
- Dynamic typing means that the types of the values bound to a name aren't checked until runtime (dynamically). That means that I can write
-module(test). -export([testtypes/1]). testtypes(A) -> B = if A > 0 -> 5; A =< 0 -> "some text" end, A + B.
- which sometimes binds the value '5' to the name 'B', and other times binds "some text" to 'B'. This will compile just fine (you can try it if you install Erlang).
Eshell V5.5 (abort with ^G) 1> c(test.erl). {ok,test}
- But when I run the function
testtypes
I get an error when I pass it negative values, since addition isn't defined for the the string type.
2> test:testtypes(3). 8 3> test:testtypes(-3). =ERROR REPORT==== 18-Nov-2006::18:24:23 === Error in process <0.31.0> with exit value: {badarith,[{test,testtypes,1},{erl_eval,do_apply,5},{shell,exprs,6},{shell,eval_loop,3}]} ** exited: {badarith,[{test,testtypes,1}, {erl_eval,do_apply,5}, {shell,exprs,6}, {shell,eval_loop,3}]} **
- A statically checked language (like say Haskell) would have caught that problem at compile-time rather than runtime.
- Hope that clarifies things some. --Allan McInnes (talk) 01:51, 19 November 2006 (UTC)
[edit] Factorial
The factorial example,
fac(0) -> 1; fac(N) when N > 0 -> N * fac(N-1).
is overly complicated and does not use matching effectively. Is there anything wrong with this?
fac(0) -> 0; fac(1) -> 1; fac(N) -> N * fac(N - 1).
Aside from neither being tail recursive. --Mnp 18:15, 3 February 2007 (UTC)