0
私はユーザーに入力を促し続ける再帰関数を書く必要があります。 OCamlでwhile(1)と同等の機能を実装する正しい方法は何ですか?OCamlのwhile(1)に相当しますか?
私はユーザーに入力を促し続ける再帰関数を書く必要があります。 OCamlでwhile(1)と同等の機能を実装する正しい方法は何ですか?OCamlのwhile(1)に相当しますか?
OCamlにはbreak
およびreturn
はありません。だから私は丁重にwhile true do ... done
と書いてほしくないとお勧めします。
ループを終了すべき条件がある(私が疑われるような)場合は、あなたが書くことができます。
while not <condition> do
. . .
done
次のラインに沿って再帰関数を記述する場合、それは多くの場合、あなたに多くの慣用的なコードを提供します:
let rec loop a b c =
if condition a b c then
()
else
let (a', b', c') = do_something a b c in
loop a' b' c'
私は出口0でループを中断します。私はブレークまたはリターンする必要はありません。これは、シンプルな入力を受け取り、テキストベースの出力で応答するコマンドプロンプトスタイルのインターフェイスを意味します。 –
これで、 'true do ... done'と書くことができます。 –
@JeffreyScofield 3番目のオプションは、無限ループと出口0の間にあり、例外を発生させることです。 – coredump