私は、リストのタプルを与え、combine
機能を作成し、タプルのリストを返します:合理的ネスティング機能
let rec combine =
fun (l1, l2) ->
match (l1, l2) with
| ([], []) -> []
| (x::xs, y::ys) -> (x, y)::(combine xs ys)
は、その後、私は同じように動作し、同様の機能foo56
を構築しましたが、4つのリストではなく、二。
let rec foo76 = //Combine a 4-tuple of lists in a list of 4-tuples
fun (l1, l2, l3, l4) ->
match (l1, l2, l3, l4) with
([], [], [], []) -> []
| (x::xs, y::ys, z::zs, t::ts) ->
(x, y, z, t)::(foo76 (xs, ys, zs, ts))
問題:私はそれがcombine
て動作させるためにfoo56
を実装したいと思います。私は失敗したいくつかの試みをしました。ここでは、有望な(ため息)ほとんどは次のとおりです。
let foo76combine = //Combine a 4-tuple of lists in a list of 4-tuples
fun (l1, l2, l3, l4) ->
match (l1, l2, l3, l4) with
([], [], [], []) -> []
| (x::xs, y::ys, z::zs, t::ts) ->
(x, y, z, t)::(combine(combine(combine (xs, ys) zs) ts))
私は再帰的に自分自身でどのように巣combine
適切に可視化することに失敗します。それは私の経験不足のためかもしれない、と私は思います。私は、少なくとも、正しい方法でですか?ただfoo76
を働かせるだけではありません。私はこのアプローチの実用的な使い方をよりよく把握し、問題をより小さな部分で分解できるようにすることに興味があります。
これは非常に良い点です。私はいつか少しでも練習をします、ありがとう! – Worice