Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Web Analytics
Cookie Policy Terms and Conditions Talk:Erlang (programming language) - Wikipedia, the free encyclopedia

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)
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 languageErlang (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

Please help improve this article or section by expanding it.
Further information might be found on the talk page or at requests for expansion.
This article has been tagged since January 2007.

"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 time testassign2 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)

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu