OCamlに入ってみようとしていて、コードをコンパイルする際に問題が発生しています。 ocamlc -o all all.ml
でそのコードをコンパイルしようとするとダブルセミコロンを使用しないとocamlcが失敗する
let area_of_ring inner_radius outer_radius =
let pi = acos (-1.) in
let area_of_circle r = pi *. r *. r in
area_of_circle outer_radius -. area_of_circle inner_radius
Printf.printf "Area of ring: %f\n" (area_of_ring 1. 3.)
は私に次のエラーを与える:私はトップレベルでそれを入力するか、二重のセミコロンを追加した場合
File "all.ml", line 4, characters 35-49:
Error: This function has type float -> float
It is applied to too many arguments; maybe you forgot a `;'.
しかし、コードがうまく動作します。.. 。
# let area_of_ring inner_radius outer_radius =
let pi = acos (-1.) in
let area_of_circle r = pi *. r *. r in
area_of_circle outer_radius -. area_of_circle inner_radius;;
val area_of_ring : float -> float -> float = <fun>
# Printf.printf "Area of ring: %f\n" (area_of_ring 1. 3.);;
Area of ring: 25.132741
- : unit =()
誰かが何が起こっているか説明できますか?それは重要ではありませんが、私はどこにでもセミコロンを二重に入れずにプログラムを書くことができるようにしたいと考えています。
ああ、明記しないことによってので、そのプリントラインコンパイラがarea_of_ring関数の次の行としてそれを読み込もうとしていましたか? – Nathan
はい、そうです。 –
素晴らしい!それは完璧な意味合いがあります。初めて関数型言語を手に入れたので、命令的でないスタイルの規則や構文に慣れるのは少し難しいです。 – Nathan