タプルメンバーに関数引数として関数を適用する方法はありますか?そうでない場合は、任意の数の引数を持つ関数を作成し、その引数になるように、 "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. C++ - 関数のインライン展開ができないときは?
- 3. Herokuでアプリケーションを展開できない - Rake :: DSLエラー
- 4. JComboBoxがJTable TableHeaderで展開できない
- 5. Phusion PassengerでApacheにSpreeを展開できない
- 6. OCaml - タプル内のリスト参照とのパターンマッチング
- 7. Pythonは名前付きタプルの2次元リストを展開します
- 8. コンボボックスが集中して展開できない
- 9. KnockoutJSでKendoPanelBarを展開できません - なぜですか?
- 10. 展開後にExcelシートがASP.NETアプリケーションで開かない
- 11. Primefaces条件付きでLayoutUnitを展開
- 12. GLFWを展開できません。3.2
- 13. CEPHモニタを展開できません
- 14. Tomcat6 webappを展開できません
- 15. Windows Phoneアプリケーション展開(8.1)ツールを使用して展開できません
- 16. どのOCaml標準ライブラリタイプをマーシャリングできないのですか?
- 17. アンドロイドで展開可能なリストビューのイメージアイコン
- 18. ループで展開可能なリストビュー
- 19. Web公開/展開できないのはなぜですか?Web.configを探しますか?
- 20. Glassfish 4に単純なwar-fileを展開できません
- 21. タプルに展開する型リストを作成するにはどうすればよいですか?
- 22. Capistranoを薄いサーバーで展開
- 23. AWSでタスクを展開したい
- 24. 計画内で展開機能を展開する
- 25. シェフの展開リソースで変更を展開する方法は?
- 26. 自然なルックアンドフィールでのOCamlのGUIクロス開発
- 27. WPFエキスパンダーが展開されない
- 28. tomcat warファイルを展開しない
- 29. Sharepoint 2010 Webアプリケーションを展開しない
- 30. Sparkでのデータ展開