引数の順序は、Array.get
とDict.get
の順番になっていますか?ほとんどのマップ/フィルタ関数の順序は意味があります。関数はコレクション(またはより一般的にはモナド)の前にあります。`get`関数への引数の順序の根拠
MyCollection.map : (a -> b) -> MyCollection a -> MyCollection b
これにより、コレクションを渡す前に、小さなものからより高い機能を構成することが容易になります。
なぜ、インデックス/キーはget関数のコレクションの前に来るのですか?
Dict.get : comparable -> Dict comparable v -> Maybe v
高機能を構成するのが難しくなるようです。引数が逆転した場合、1は書くことができます:
ids : List Int
myObjects : Dict Int a
selectObjects = List.map (Dict.get myObjects) ids
をしかし、その代わりに、私はこれを書くことを考え出すことができる最良の方法は次のとおりです。
ids : List Int
myObjects : Dict Int a
selectObjects = List.map (\id -> (Dict.get id myObjects)) ids
私は何かが足りないのですか?引数の順序がArray.get
,Dict.get
などの理由は何ですか?
['flip'](http://package.elm-lang.org/packages/elm-lang/core/4.0.5/Basics#flip)を使って、lambda:' Listを削除することができます。 map(flip Dict.get myObjects)ids' –
私はこの提案に感謝しますが、私はこれを回避する方法を尋ねていませんでした。これは非常に簡単です。私はFPにはあまり経験がないので、議論命令の背後にある推論を知りたいと思います。私は、ライブラリの設計が許すいくつかの利点があるかどうかを知りたいと思います。 – Eric
私は、Haskellの['Data.Map.lookup'](http://hackage.haskell.org/package/containers-0.5.7.1/docs/Data-Map-Strict.html##)のように設計されていると思いますv:lookup)関数であり、偶然、Haskell wikiのパラメータ順序の[bad examples](https://wiki.haskell.org/Parameter_order#Bad_examples)セクションの下にリストされています。 –