私は式(map . map)
のタイプを理解しようとしています。 (.)
のタイプは(b -> c) -> (a -> b) -> a -> c
なので、mapは関数(b -> c)
と(a -> b)
に適合しない2つの引数を取るので、マップ関数ではどのように動作するのか分かりません。タイプ(地図。地図)
0
A
答えて
5
引用GHCiの:
Prelude> :t map.map
map.map :: (a -> b) -> [[a]] -> [[b]]
しかし、マップ自体のために、タイプがあり、我々が持っている場合は、だから、
map :: (a -> b) -> ([a] -> [b])
として見ることができます
map :: (a -> b) -> [a] -> [b]
その (.) :: (t2 -> t3) -> (t1 -> t2) -> t1 -> t3
:
- タイプ
t1
は(a -> b)
- タイプ
t2
が([a] -> [b])
- タイプ
t3
が、私はそれを考えるのが好き([[a]] -> [[b]])
1
一つの方法は、map
のにa -> b
を回すことであるであるです[a] -> [b]
ですので、map . map
は2回します。最初のマップはa -> b
を[a] -> [b]
に変え、2番目のマップはプロセスを繰り返して[[a]] -> [[b]]
にします。
は、それはかなりかなり論理[a] -> [b]
にmap
を適用する[[a]] -> [[b]]
にそれを回すだろうと思える、「a -> b
にmap
を適用すると、[a] -> [b]
に変換します」、そう。ファンクションにmap
を2回適用するだけです。なお
: `こと
-- apply map to a function once
map :: (a -> b) -> ( [a] -> [b] )
-- apply map to a function twice
map . map :: (a -> b) -> ([[a]] -> [[b]])
-- apply map to a function three times
map . map . map :: (a -> b) -> ([[[a]]] -> [[[b]]])
関連する問題
- 1. スパークRDD-地図と地図地図
- 2. 地図内の地図java
- 3. 地図上のプロット点R地図パッケージ
- 4. イギリス郡地図と画像地図
- 5. 地図でクロザールの地図をサブ
- 6. 地図上の地図のポイント
- 7. 地図
- 8. 地図
- 9. 地図
- 10. 地図
- 11. 地図
- 12. 地図上の地域地図の変更AndroidSdk
- 13. シンクロナイズド地図は地図の下に考えてみましょ地図
- 14. Android:カスタム地域地図
- 15. 地図パンダシリーズは
- 16. リーフレットの地図
- 17. 地図inアンドロイドスタジオ
- 18. 地図ボックスエラー
- 19. 地図JSON
- 20. HERE地図
- 21. 地図範囲++
- 22. 地図オーバーレイバルーンクローズ
- 23. 地図のジオコーディング
- 24. SceneKit - 地図キューブテクスチャ
- 25. リフト地図
- 26. 地図3リスト
- 27. 地図タイル(リーフレット)
- 28. オフライン地図タイルオプション
- 29. ジェネリック:地図に
- 30. リーフレットブランク地図
マインド - > B - >(B - - > C)'> C 'が'の略です。 Haskellでは、すべての関数は* one *引数しか取らない。 –
私はそれについて考えていました。しかし、私はそれを 'a - >(b - > c)'または '(a - > b) - > c 'に分けて決定することはできませんでした。しかし、あなたが言うことは今私にとって意味をなさない。私はmapを "one-parameter-function"とみなしたいと思うなら、その型は '(a - > b) - >([a] - > [b])'最初のパラメータ( '(a - > b)'関数)を与えると、返されるのは '([a] - > [b])'型の関数です。 '(a - > b)'と '(a - > [b])'の型は '(a - > b)'の 'a'と' b 'マップ) '? – Nicrophorus
'a - > b - > c'は' a - >(b - > c) 'と同じですが、'(a - > b) - > c 'とは異なります。 – user3927886