0
私はval remaining : char list -> int * char list = <fun>
という署名を必要とするプロトタイプremaining thelist
の関数を使って作業しています。私はOcamlを初めて学んだので、Ocaml関数をリストに入れてintとlistの両方を出力する方法を理解できません。これは私が現在取り組んでいるコードです。OCamlとintのcharリストのペア
let rec remaining thelist= match thelist with
| [] -> []
| [x] -> [x]
| x::y::t1 ->
if x='a' then remaining (y::t1)
else thelist;;
match thelist with
| [] -> 0
| x::t1 ->
if x='a' then 1+remaining t1
else 0;;
2番目のブロックをコメントアウトすると、最初のコードブロックが正しいcharリストを出力します。 2番目のブロックは、最初のブロックをコメントアウトすると正しいintを出力します。私はどのように互換性のエラーの種類なしで、目的の署名を達成するためにコードを組み合わせるには手がかりがありません。
これは別の質問の重複のようです:https://stackoverflow.com/質問/ 45228064/ocaml-count-連続要素のリスト –
@JeffreyScofield Hm ...しかし、2つの引数を取る関数を変更しないと、署名がint * char list - > int * char listに変更されます? – Userc9l
入力パラメータの変更を提案する人は誰もいません。本質的には、キーは再帰呼び出しの結果を破棄することです。 –