我在做Erlang,Haskell,Elixir和ES6的比較,我對Erlang和Elixir沒有太多的瞭解,但我想公平地表示所有這些語言,那麼這個Erlang代碼是否好呢?這是Erlang代碼的習慣嗎?
-module(mapreduce).
-export([map_reduce/1]).
add_to_key(KV, Sum) -> {Key, Value} = KV,
Tmp = proplists:get_value(Key, Sum, 0),
Newlist = proplists:delete(Key, Sum),
lists:append([{Key, Value + Tmp}], Newlist).
map_reduce(Pl) -> lists:foldl(fun add_to_key/2, [], Pl).
- 謝謝你們!
順便說一句,如果你們想看到的,這裏的哈斯克爾版本:
module MapReduce where
import qualified Data.Map as M
mapReduce :: [(String, Int)] -> [(String, Int)]
mapReduce = foldl addToKey []
where addToKey hl (k, v) = M.toList . M.insertWith (+) k v $ M.fromList hl
任何你想在erlang中使用列表的理由?爲什麼不是[dict](http://www.erlang.org/doc/man/dict.html)? 'update'似乎是最經濟的方法。 – rampion
請不要要求對Stack Overflow進行代碼審查。 – Jubobs
我投票結束這個問題作爲題外話題,因爲它是關於代碼審查。 – Jubobs