Iは、F#にOCamlのに基づいていくつかのモジュールを変換し、[x; y; z]
は、機能のリストを返しmap func1 ["a"; "b"; "c"]
識別子と のリストである。このOCamlをF#に変換する:F#で値のリストを直接識別子のリストにマップできますか?
let [x; y; z] = map func1 ["a"; "b"; "c"]
のようなものに走っています。
は現在、私は別にすなわち識別子にリスト内の各値を結合していlet fList = map func1 ["a"; "b"; "c"]
let x = fList.[0]
let y = fList.[1]
let z = fList.[2]
識別子の使用は、第二の機能、私は私が関数func2を変更することができます知っている、すなわち
func2 x y z
のためでありますリストを受け入れることができますが、実際にはfunc2は各パラメータの各関数とともに値をとるため、さらに多くの作業が必要になります。すなわち
func2 (x g) (y h) (z i)
私はOCamlのよう効率的にこれを行う方法を見て、空思い付いています。 unmap、deconstructを検索し、メソッドを見てくださいList
F#は値のリストを直接識別子のリストにマップできますか?私は変換しています
EDIT
コードは、独自のライブラリ内のmap関数を定義しません。
EDIT
@OnorioCatenacciは、それは私が代わりに実際の作業例を作成する多くの分を過ごすしようとしているの例として書いただけのものでした。実際のコードには著作権があるため、完全な開示がなければここでは使用できません。私が作ろうとしていたことは、識別子に定数値を代入していなかったのですが、識別子に関数を割り当てることでした。私はmap func1 ["a"; "b"; "c"]
を入れて、関数がいくつかの入力に基づいて必要に応じて生成され、ハードコードされていないことを示しました。実際のコードは論理回路シミュレータを構築し、返される関数は異なる論理回路である。コンビネータを考える。それはすべて自動化された定理証明者の一部です。トマスとダニエルは質問を理解し、私が実際のコードで確認した正解を返しました。
つまり、func1 "a"
は、パラメータ"a"
を使用して関数を返します。 map func1 ['a", "b", "c"]
は関数のリストを返します。関数はF#のfirst-classなので、値として返すことができます。
こんにちはガイ - 何かについてちょうど好奇心: - 長さを固定している - とあなた自身の
map
関数を定義トマスは言及警告、あなたはタプルを使用することができ、「不完全なパターンが一致した」避けたいです。 'map func1 ["a"; "b"; "c"]は関数のリストを返します。その呼び出しはリストを返さないでしょうか?関数のリストではない明白なリスト?私のためにもう少し説明していただけますか?私はちょうどあなたに従っているわけではないと私はあなたが言っていることを理解したいと思います。 –@OnorioCatenacci編集を参照してください。 –
さらなる説明をありがとう。私は何かが欠けているに違いないことを知っていた。 –