2017-06-20 87 views
-6

erlang映射函數和haskell映射函數有什麼不同?Haskell和Erlang映射函數

in erlang map - >M1 = #{name=>john,age=>25}

哈斯克爾地圖 - >map :: (a -> b) -> [a] -> [b]

+2

這不是Erlang的地圖功能,那是地圖數據結構。 – Dogbert

+0

可以請你解釋一下erlang地圖數據結構@Dogbert –

回答

9

二郎,則maps數據結構,您在其中存儲你準。它的工作原理類似於字典。然而二郎具有map function

map(Fun, Map1) -> Map2 

類型:

  • Fun = fun((K, V1) -> V2)
  • Map1 = Map2#{} =
  • K = V1 = V2 = term()

就像@Pascal在他的回答中所說的,map函數是在各種數據結構(數組,......)上定義的。

map哈斯克爾你形容不是一個數據結構,是函數變換元素的列表爲元素的另一個列表。這是以懶惰的方式完成的。請注意,這裏map因此適用於特定的數據結構:列表[a]。雖然這可能在未來發生變化。

這兩者並沒有太大的關係。他們共享一個名字,因爲「映射」通常意味着你在其他值上投射值。

+0

爲了完成Willem的回答,erlang提供了各種數據結構的map函數:用於已經提到的地圖,還有數組,dicts,gb-trees,列表,orddicts。 – Pascal