(\(a, b) -> a < b)
を関数式で表現する方が良いでしょうか?私は何かを見逃していると感じてcurry
と一緒に実験すると、もっと混乱してしまいます。タプルと関数の合成
6
A
答えて
12
curry
ここで使用するのは間違っています。タプル上で動作する関数をカルト関数に変換します。それはuncurry (<)
だ、この場合
uncurry :: (a -> b -> c) -> (a, b) -> c
:あなたはuncurry
で反対のことを、したいです。
(タプルへの書き込み機能で便利なコンビネータのための別の有用なソースはControl.Arrow
である;。(->)
はArrow
のインスタンスであることから、あなたはb -> c
としてa b c
を読むことができる)タイプを見ると
1
はにHaskellの中の最良の方法です任意の関数が何をするのか、最初のアイデアを得る:
curry :: ((a, b) -> c) -> a -> b -> c
uncurry :: (a -> b -> c) -> (a, b) -> c
curry
:ペア→カレー関数の機能(それcurries機能)。
uncurry
:カリング関数→ペアの機能。
Haskell Wiki page on curryingがページの端にある小さな演習を持っています
- 簡素化
curry id
- 簡素化
uncurry const
- エクスプレス
snd
curry
またはuncurry
およびその他の基本的なプレリュード機能を使用し、ラムダ- なしラムダとwiなしで関数
\(x,y) -> (y,x)
を書く唯一のプレリュード関数これらの練習問題を解決しようとすると、彼らはあなたにハスケル型システムと関数のアプリケーションへの大規模な洞察力を与えるでしょう。
uncurry
のいくつかの興味深い用途がありますが、以下の機能に異なる引数を渡すと、彼らが何をするか見てみ:
uncurry (.) :: (b -> c, a -> b) -> a -> c
uncurry (flip .) :: (b -> a -> b1 -> c, b) -> b1 -> a -> c
uncurry (flip (.)) :: (a -> b, b -> c) -> a -> c
uncurry ($) :: (b -> c, b) -> c
uncurry (flip ($)) :: (a, a -> c) -> c
-- uncurry (,) is an identity function for pairs
uncurry (,) :: (a, b) -> (a, b)
uncurry (,) (1,2) -- returns (1,2)
uncurry uncurry :: (a -> b -> c, (a, b)) -> c
uncurry uncurry ((+), (2, 3)) -- returns 5
-- curry . uncurry and uncurry . curry are identity functions
curry . uncurry :: (a -> b -> c) -> (a -> b -> c)
(curry . uncurry) (+) 2 3 -- returns 5
uncurry . curry :: ((a, b) -> c) -> ((a, b) -> c)
(uncurry . curry) fst (2,3) -- returns 2
-- pair -> triple
uncurry (,,) :: (a, b) -> c -> (a, b, c)
uncurry (,,) (1,2) 3 -- returns (1,2,3)
関連する問題
- 1. SML関数とタプル
- 2. 関数と値の合成
- 3. Python:関数返りboolと整数タプル
- 4. スカラ:通常の関数対タプル関数?
- 5. voidメンバ関数のタプル
- 6. Tupled関数合成
- 7. グァバ関数合成
- 8. Python - 値が偶数の場合にのみタプルを作成
- 9. 関数ポインタと推力としてそのパラメータを渡す::タプルをグローバル関数
- 10. Java関数とコンシューマを合成する
- 11. エリクシールの関数の引数としてタプルを使用する
- 12. Cassandra UDA関数のタプル値をマップとタプル値(1日平均)でインスタンス化
- 13. SQLからタプル関係の計算と結合する
- 14. イテレータのタプルをとり、基本型を生成する単項関数
- 15. 関数のリストのタプルを返す
- 16. scipy.integrate.ode、タプルを返す関数の問題
- 17. python速度合成関数
- 18. ジェネリック関数合成ハスケル
- 19. PythonのGroupbyとタプルのリストの数/合計?
- 20. Python 2.7におけるisinstance関数のタプルとリストの実装
- 21. 機能組成、タプルと
- 22. 関数のパラメータとしてタプルを渡す方法
- 23. 内部にモノイドと関数を持つタプルの適用インスタンス
- 24. Haskell:任意のデータ型とタプルを一致させる関数
- 25. パラメータ内の関数をタプルとして使用する
- 26. Pyspark - toDF関数に渡すリスト/タプル
- 27. 合成関数の関数の使用を逆転する
- 28. タプルのリストからタプル要素を結合する。タプル要素はタプルとリストです
- 29. ドメインとタプルの関係計算
- 30. タプルと無限ループの関係