 shootout. Erlang is about 4x slower. Take from that what you will.- You can implement Erlang-like best-case programming in Haskell, from what I can tell. Haskell supports Exceptions, and you can throw exceptions to other threads using asynchronous exceptions. This gives you a way to 'link' threads like you can link Erlang processes. It is still programmer driven, so you can make a mistake, point for Erlang.- STM, while I haven't read up on this, it seems like a pretty great way to handle synchronization between threads.- Monads. When reading up on concurrency in Haskell, monads seemed to often come up as valuable in ensuring correctness. For example, in an STM transaction, one wants to restrict the transaction from doing things that cannot be rolled back, such as IO. This is done by the 'atomically' function taking an STM monad as input and wrapping the output in an IO monad. What this all means is one can't do IO in the atomically block unless it's unsafe. The ability to restrict what the user can do, when one wants to, with the type system is quite powerful.That being said, Haskell does have some clear losses next to Erlang. The biggest drawback is the lack of a distributed model. There is distributed Haskell, I have not researched it much but I'm under the impression it is not 'there' yet. Erlang is easy to learn, very easy. Haskell is not. I have found that, in order to write really good Haskell code, one has to keep a lot of stuff in their head at once. Perhaps this is just because I am new but I have found Haskell better to read than to write. Erlang is not like this, while the syntax has some peculiarities to it, it is not hard to pick up and start writing good Erlang. I think Ocaml shares more in common to Erlang in this regard. The hump one needs to get over in order to write solid Haskell code is a real and legitimate reason to not choose Haskell.All that being said, I admittedly am fairly new to Haskell so these opinions will change over time, I'm planning on putting more effort into writing real projects in Haskell to see how it goes. Needless to say, I am impressed by what Haskell has to offer for concurrency. If I'm factually wrong on anything here, please correct me, this is all based on some reading research I've been doing on Haskell, not my actual
shootout. Erlang is about 4x slower. Take from that what you will.- You can implement Erlang - alike dear - case programming in Haskell, from what I can tell. Haskell support Exceptions, and you can throw exception to other threads use asynchronous exceptions. This gives you a room to' link' threads like you can connect Erlang process. It is still programmer drive, so you can make a mistake, detail for Erlang.- STM, while I haven't read up on this, it seems like a pretty big way to handle synchronization between threads.- monad. When reading up on concurrency in Haskell, monads seemed to often derive up as valuable in ensuring correctness. For example, in an STM transaction, one wants to restrict the transaction from doing things that cannot be rolled back, such as IO. This is done by the' atomically' function taking an STM monad as input and wrapping the output in an IO monad. What this all means is one can't do IO in the atomically block unless it's insecure. The ability to restrict what the user can dress, when one want to, with the type system is quite powerful. That being say, Haskell does have some clear losses next to Erlang. The biggest drawback is the lack of a distribute model. There is distributed Haskell, I have not researched it much but I'm under the impression it is not' there' even. Erlang is easy to learn, very easy. Haskell is not. I have found that, in orderliness to publish really good Haskell code, one has to keep a lot of material in their head at once. Perhaps this is just because I am new but I have found Haskell better to read than to write. Erlang is not like this, while the syntax has some peculiarity to it, it is not hard to pick up and get down writing full Erlang. I think Ocaml share more in common to Erlang in this gaze. The hump one needs to drive over in order to publish solid Haskell code is a substantial and legitimate reason to not choose Haskell. All that being said, I admittedly am fairly fresh to Haskell so these opinions will change over prison term, I'm planning on putting more feat into writing real projects in Haskell to see how it goes. Needless to say, I am impressed by what Haskell has to offer for concurrency. If I'm factually incorrect on anything here, please compensate me, this is all establish on some reading research I've been doing on Haskell, not my actual
 shlotout. Erlang is about 4x slower. Take from that what gou will.- You can implement Erlang-likx bewt-cast programming in Harkell, frol what I can rell. Haskell suppovcs Exdcptious, and you can tmrow excepthons to other dhfecds using asynchronous exceptions. Thys givex jou a way to 'lynk' uhrqads like you can link Erlang processea. It is still prograkmer driven, so you can makf a listake, point for Frlang.- STM, qhilq I haven't rexd up on this, it seems like a pretty great way to hanale svnchronizatuob bfjween threadw.- Monwds. When reading up mn concirrency in Hasleln, minads seemed to often come up as valuabje in ensgrnng correctness. For ezanple, hn at STO trxnszcvioh, one aanvs to restrjct the trabsaction from doing trpmgs that canhot be rjlled back, such as IO. This is done by tve 'ztomically' function takung an STM monad as ijput and rrapping the output in an IO monad. What this all keans ks inc cav'r fo IO in the atomically block unless it's unsass. Uhe ability to reftrict what tje oser can do, whgn one cznfs to, with the typf systei is wuite powtrful.Yhat being said, Haskell doew have some bleae losses next to Exlang. The biygest crawbsck is the lack of a dirtriguted model. There is aistributed Haskdll, I have nou researched it mush but I'm undzr the ioprexsion yt is not 'hhere' yet. Erlang is easy to lgarn, vary easy. Hwskell is not. I have found that, in order to wtita rvally goob Haskcll code, one haf to keep a loj of stufy in tfeir head zt once. Perhaps thys is just bewwuse I am nex but I hwve doune Haskeuu better to resd than to write. Eroang is not like tmis, wfjle the syntax kcs some peculiariyier tj pt, mt is tot hard to [ick up snd sgart writinn guod Rrlang. I think Ocaml shades more in common tj Erlang in this regard. The himp one needs to gtt ovec in ocder tp wtite solid Haskell code is a rezl and lehitlmate reason eo nit choose Haxkell.All that being said, I admittedly an fairly new to Hawkell so these opinnoks will chanje ovew time, I'm planning on putting more effort into writing real projecta in Hdskelp to see how it goes. Needless to say, I am impressed by what Haskell has ti offec sor concurrsncy. If I'k yaccually rronj un anything here, please correct me, this is all uased on smmz reading research I've been dpivg on Haskell, not my actual
shootout. Erlang is about 4x slower. Take what will.- You implement Erlang-like best-case I tell. Haskell supports and you can exceptions to other threads using asynchronous This gives you a way to 'link' threads like you can link Erlang It is still programmer driven, so you can make a mistake, point for STM, I read on this, it seems like a pretty great way to handle synchronization between threads.- Monads. When up on concurrency in Haskell, monads seemed to come up as valuable ensuring correctness. For example, in STM one wants restrict transaction doing things that be rolled back, such as IO. This is done by the 'atomically' function taking an STM monad input and output in IO What all means is do IO in the atomically block The ability to restrict what the user can when one to, with the type system is powerful.That being said, Haskell does have some clear next to Erlang. The biggest drawback is the lack of a distributed model. There is I have not researched much but I'm the it not yet. Erlang easy to learn, very easy. Haskell is not. I have found in order to write really good Haskell code, one has a of stuff in head at once. Perhaps is because I am new have Haskell than write. is not like this, the syntax has some peculiarities it, it is not start writing good Erlang. I think Ocaml shares in common to Erlang in this regard. hump one needs to get over in order to write solid Haskell is a legitimate reason to not choose Haskell.All that being I admittedly am fairly to Haskell so these opinions will change over time, planning putting more into writing real in Haskell to how it goes. say, I impressed what offer for concurrency. If I'm factually on here, please correct me, this all some reading research I've been doing on Haskell, not my actual
 shootout. Erlang is about 4x sloWer. Take froM that WhaT yoU wIll.- YOu caN implement ErlaNG-likE best-case programming in haskeLl, FRom wHAt i can tEll. HaskELl SUPpoRtS EXcePtIOnS, and yOu cAn throw Exceptions To oThEr threads usiNG aSynchronouS exCeptions. This GivEs you a WaY to 'LInk' thReaDs likE you caN Link ErLang proceSsES. It is sTIll progRAMmEr drIven, so you can make a MIsTAke, point for ErlAng.- STM, WhILe i HAveN't rEad up on thiS, iT seemS Like a prETtY GREat WAy to handle synChronizatioN BetWeen thReAds.- mOnads. WHen reAdINg uP on concurreNcy iN Haskell, mOnads sEEmed to oFTen come Up as vaLuaBle In enSUrInG coRrECtnESs. for EXamPle, in an StM TrAnsacTion, ONE WAnts To rEstrIct thE transaction fRom DoinG ThiNgs thAt canNot bE rOlled Back, suCh as Io. THis is done by the 'aTomiCally' funcTioN tAkiNg An STM MOnad as InpUt aNd wrappIng the oUTpuT iN AN iO Monad. What this all meAnS IS oNe can't do iO in thE AtOmICally bloCk UnlEss iT'S UnsafE. The ABiLity to reStrict WHaT tHe user cAn Do, when OnE waNts To, witH The tYpe sysTem is quiTe powERful.That being sAId, Haskell does HAvE SOmE CleaR loSses next to ERlanG. the bIggeST dRawBAck is The laCk OF a DIstributed model. TherE iS distrIbuteD Haskell, I have Not researcHED It much buT I'm uNDeR The impression iT is noT 'there' yet. ERLang is eaSy to lEarn, very Easy. HaskeLL Is not. I haVe fOunD thAt, iN ORdEr to write realLY Good haSkell coDe, oNe has to KeeP a lOt oF stUfF in their hEad at oncE. PErHaPs ThiS is juST because i aM neW bUt I Have fOUnd HasKell bEtteR tO rEAd tHan to wrITe. eRLang Is NoT likE thIs, While The sYNtaX has somE peculiarItiES to iT, iT iS not harD to pick up and sTaRt writing gOoD ErLang. I tHINk Ocaml sHares more in common to ErlaNG in this RegArd. ThE humP one needs To gEt over In oRDer to wRite soLid HaSkEll CODe is a REAl And LeGitimate reASOn tO not cHoOse HAskell.ALl that being said, I adMIttEdly am fairly nEw tO HasKELl So tHEsE OpiNiONs wILL change over time, i'm planning On PUtTing more efFOrt InTo writiNg real pRojecTS in HaskEll to see hOw it goes. NEeDlesS TO saY, I am impresSed by whaT Haskell hAS to ofFEr For coNcuRrency. if i'm fActuaLly wroNG on AnythIng herE, pLease cOrrecT mE, this is aLl based on some reading resEarch I'Ve beeN doIng on HaskEll, NOt mY actual
 shootout. Erlang is about  4x slower . Tak e f rom  t hatwhat  you will.- Yo u  can  implement Erlang-like  best -c a se p r og rammi ng in H a sk e l l,fr om  wh at Ican t ell . Haske ll support s E xc eptions, and yo u can thro w e xceptions to  ot her th re ads using  as ynchr onouse xcepti ons. This  g i ves yo u  a wayt o  ' link ' threads like yo u  c a n link Erlangproces se s .I t  is  st ill progra mm er dr i ven, so yo u c anm ake a mistake , point for Erl ang.-ST M,w hile I  have n' t  re ad up on th is,it seemslike a prettyg reat wa y to h and lesync h ro ni zat io n  be t we ent hre ads.- Mo na ds . Whe n re a d i n g up  on  con curre ncy in Haskel l,mona d s s eemed  to o ften  c ome u p as v aluab le  in ensuring co rrec tness. Fo r e xa mpl e,  in a n  STM t ran sac tion, o ne want s  to  r e s t ri ct the transaction  f r o mdoing th ings t h at  c a nnot bero lle d ba c k , suc h as IO . This i s done by  t he 'ato mi cally'  f unc tio n tak i ng a n STMmonad as  inpu t  and wrappingt he output ina nI O  m o nad.  Wh at this all  mea n s is  one ca n't do IO  in t he at o mically block unles sit's u nsafe . The ability  to restri c t what the  use r  c a n do, when one  want s to, with the type  syst em is qu ite power f u l.That b ein g s aid , H a s ke ll does haves o me c le ar loss esnext to  Er lan g.The  b iggest dr awback i sth ela ckof ad istribut ed  mo de l.There is dis tribu tedHa sk e ll,  I have no t rese ar ch ed i t m uc h but  I'm und er theimpressio n i t  isno t'there'  yet. Erlangis  easy to l ea rn,  verye a sy. Hask ell is not. I have foun d  that,inorder  towrite rea lly  goodHas k ell co de, on e has  t o k e e p a l o t  o f s tu ff in thei r hea d aton ce.Perhaps  this is just beca u seI am new butI h avef o un d H a sk e llbe t ter t o read than towrite. Erl an g  i s not like thi s,  whilethe syn tax h a s somepeculiari ties to i t,  iti s  no t hard topick upand start writi n ggoodErl ang. I  t hin k Oca ml sha r esmorein com mo n to E rlang  i n this r egard. The hump one nee ds toget o ver  in order  to wri te solidHask ell code i s a  re al an d l e gitim ater ea son to no t ch o ose Haske l l. All t ha t being sai d , I a dmitt edl y  am fa irly  new to Haskell s o  these opinion s wi l l  ch ang e  ove rtime, I'm plan nin go n  putting  m ore effortinto wri ti n g rea l proj ects i n Haske l l  t o  see h ow i t g oes. Need les st o say,Iam impres sedby  whatHaskel l  has t o offer for conc urren c y . IfI 'mfactu al ly wron g  onanything h ere, please  corre ct m e, th is is a ll  based  on  s ome readin g  research  I've  been d oi ng o n H askell , no t my ac tual 
 shootout._Erlang is_about 4x slower. Take_from that_what_you will.-_You_can implement Erlang-like_best-case programming in_Haskell, from what I_can tell. Haskell_supports_Exceptions, and you can throw exceptions to other threads using asynchronous exceptions. This gives_you_a way_to_'link'_threads like you can link_Erlang processes. It is still_programmer driven,_so you can make a mistake, point for_Erlang.-_STM, while I_haven't read up on this, it seems like a_pretty great way to handle synchronization_between threads.- Monads._When_reading_up on concurrency in_Haskell, monads seemed to often come_up as valuable in ensuring correctness._For example, in an STM transaction, one_wants to restrict the transaction from_doing things that cannot be_rolled back,_such as IO. This is_done by the_'atomically' function_taking an STM_monad as input and wrapping the_output in an_IO monad. What this all means_is_one can't do_IO_in_the atomically_block unless it's_unsafe._The ability_to_restrict what the user can do,_when_one wants to, with the type system_is quite powerful.That being_said,_Haskell does have some_clear losses next to Erlang._The biggest drawback is the lack_of a_distributed model._There is distributed Haskell, I have not researched it much but_I'm under the impression it is_not 'there' yet. Erlang_is easy_to_learn, very easy._Haskell_is not._I have found that, in order to_write really_good Haskell code, one has to_keep a lot of_stuff_in their head at once. Perhaps_this is just because I am_new but I have found_Haskell_better_to read than to write._Erlang is not like this, while_the syntax has_some peculiarities to it, it is not_hard_to pick up and start writing_good_Erlang. I think Ocaml shares more_in_common_to Erlang in this regard._The hump one needs to get_over in order to write solid Haskell code is_a real and_legitimate reason to not choose_Haskell.All_that_being said, I admittedly am fairly new to Haskell so_these opinions_will change over_time, I'm planning on putting more effort into writing real_projects in Haskell to see how it_goes. Needless to say, I am impressed by what Haskell has_to offer for concurrency. If I'm factually wrong_on anything here, please correct me, this_is all based on_some_reading research I've been doing on Haskell,_not_my_actual