タプルメンバーに関数引数として関数を適用する方法はありますか?そうでない場合は、任意の数の引数を持つ関数を作成し、その引数になるように、 "tail"に別の関数を適用することができますか?OCamlで展開できないタプル
5
A
答えて
7
一般的に、いいえ。 2つの引数の場合は、のcurry
とuncurry
関数を使用できます。
printf
の内部が行うように、Obj
モジュールで何かを調理することも可能かもしれないが、私は遠く離れているから滞在します。難しいのは、型システムが、一般化されたcurry
またはuncurry
関数の型を表現する方法を提供していないということです。型システムでは、タプルの長さに渡って "計算"することはできません.2タプルは2タプルであり、(a*b*c)
は実際には(a*b)
であり、別のコンポーネントがあることを表現する方法はありません。 printf
は、型を正しく動作させるためにコンパイラから特別なサポートを受けています。その結果、関数型は書式タイプの一部になります(タプルでは同様の解決策は機能しません)。
7
言語自体では、任意のサイズのタプルで関数を定義することはできません。
しかし、this folding techniqueに従うことで任意の数の引数で関数を定義することは可能です(SMLについてはそこに記述されていますが、OCamlでも同様に機能します)。
関連する問題
- 1. OCamlでタプルを印刷
- 2. Ocamlタプル型ミスアンダー
- 3. Pythonで辞書付きタプルを展開する
- 4. タプル用のインライン展開はなぜ機能しないのですか?
- 5. タプルを展開せずにリストにタプルを追加
- 6. なぜOCamlで引数をタプルするのが好きですか?
- 7. "正方形"タプルのOcamlパターンマッチング?
- 8. Ocaml-タプルの繰り返し
- 9. Androidでフラグメントを展開できないのですか?
- 10. inループと比較したforループでのタプル展開の振る舞い
- 11. C++ - 関数のインライン展開ができないときは?
- 12. jenkins経由で戦争を展開できない
- 13. Herokuでアプリケーションを展開できない - Rake :: DSLエラー
- 14. JComboBoxがJTable TableHeaderで展開できない
- 15. Phusion PassengerでApacheにSpreeを展開できない
- 16. MVC .NET Webサービス展開モードでSharepointサイトにアクセスできない
- 17. スケーラブルなzipkin展開をどのように展開できますか?
- 18. モバイルでブートストラップドロップダウンが展開されない
- 19. OCaml - タプル内のリスト参照とのパターンマッチング
- 20. SSISを展開する - SSPIコンテキストを生成できない
- 21. Hyperledger Composerがビジネスネットワークを展開できない
- 22. Edeliver - 展開後にポート4000にアクセスできない
- 23. Tomcat上に展開されたWARファイルにアクセスできない
- 24. ドラッグアンドドロップ後にJTreeを展開できないようにする
- 25. コンボボックスが集中して展開できない
- 26. 5gbfree.comに展開されたWebサイトにアクセスできない
- 27. Rancher:ゼロダウンタイムで展開できますか
- 28. Herokuで展開できません
- 29. KnockoutJSでKendoPanelBarを展開できません - なぜですか?
- 30. Pythonは名前付きタプルの2次元リストを展開します