えーと、
私は ocaml と CYK テーブルを通じて関数型プログラミングを学ぼうとしているので、 List.mem や命令型関数はありません。私の目的は、2 つのセルの製品を形成することです。
これが私が現在持っているものです:
let stringlister = function(mystring, newlist) ->
List.append newlist mystring;;
let rec append_func = function([listleft;listright], anslist, i, j) ->
if (j == (List.length listright)) then anslist
else begin
append_func([listleft;listright], anslist, i, j + 1);
List.append(anslist (stringlister((List.nth listright j), (stringlister( (List.nth listleft i), [])))))
end;;
let rec prod_func = function([listleft;listright], anslist, i, j) ->
if (i == (List.length listleft)) then anslist
else begin
prod_func([listleft;listright], anslist, i + 1, j);
append_func([listleft;listright], anslist, i, j)
end;;
let product = function[listleft;listright] ->
if (listleft == [] || listright == []) then []
else prod_func([listleft;listright], [], 0, 0);;
予想される出力は次のようになります。
#product[["A";"B"];["D","E","F","G"]];;
-: string list = ["AD"; "AE"; "AF"; "AG"; "BD"; "BE"; "BF"; "BG"]
#product[["A","B"];[]];;
-: string list = []
私の考えたプロセスは、基本的にリストをループして各文字列を別のリストの各文字列に配置する一連の再帰関数を作成することでした。
私のエラーは、特にappend_funcでの追加方法だと思います。より適切な質問は、文字列のリストを作成する方法かもしれないと思います。