【发布时间】:2016-03-01 20:48:09
【问题描述】:
我正在对 Erlang、Haskell、Elixir 和 ES6 进行比较,我对 Erlang 和 Elixir 不太熟悉,但我想公平地表示所有这些语言,那么这样的 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).
- 谢谢大家!
顺便说一句,如果你们想看,这里是 Haskell 版本:
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?
update似乎是最经济的方式。 -
请不要在 Stack Overflow 上要求代码审查。
-
我投票结束这个问题,因为它是关于代码审查的。
-
对不起,伙计们。我对 StackOverflow 还是比较陌生,我不知道你没有在这里做代码审查。我会转移问题。
-
@ChristopherDumas 发布指向新版本问题的链接,可能在此处的 erlang 聊天室中(不确定将问题移至此处是否会使它们消失)。 Erlang 社区非常小,我想我只见过 Erlang 问题在主要问题上真正处理过。