私はSMLを初めて使用しており、構文についても理解していません。リストを逆転させない標準的なMLのパリンドローム
私はリストを逆にすることなく回文をチェックすることを練習しています。ここに私のコードです
fun symmetric(i,n,inlist) =
if List.nth(inlist,i-1) = List.nth(inlist,n-i)
then true
else
false;
fun palindrome(n, inlist) =
let
val i = ref 1
in
while !i < n do (
if symmetric(!i,!n,!inlist) = false
then false
else()
i := !i + 1
)
true
end;
私は楽しいパリンドロームでのみエラーが発生しましたが、自分で修正することはできません。
"エラーが発生しました"有用なエラーの説明ですが、式は 'bool'(' false')型と 'unit'(') '型の両方を持つことはできません。あなたは命令的な考え方に悩まされているようです。参照を避け、ループの代わりに再帰を使用することを検討してください。 – molbdnilo
ありがとうございます。そして今、私は回帰だけで回文を完成させました。私はちょうど数日間機能プログラミングを始めました。以前は、Java、Rubyなどの言語で作業していました。 MLでのプログラミングは私にとって非常に特別な経験です。 – WilsonHoHK