5

私は 2 日前に Ocaml でプログラミングを始めました。

この本では、Tell me to use the Unix モジュールを使用していますが、これまでのところ非常に優れています...しかし、時間を出力する単純なコードを実行しようとすると、このエラーが発生します。

open Unix ;;
let t = Unix.localtime (Unix.time ());;


Printf.printf "Today is day %d of the current year.\n" t.tm_yday ;;

そして、私はこのエラーを受け取ります:

Error: Unbound module Unix

これに対する答えを探したところ、「unix.cma」をリンクしてコードをコンパイルする必要があることがわかりました。その後、コンパイルできましたが、コードは何もしません。

非常に初歩的な質問かもしれませんが、これなしでは先に進めません。ライブラリがありませんか?

トップレベルで実行すると、#load is and unbound value also!

お時間をいただきありがとうございます!

編集:

「unix.cma」をリンクして再コンパイルすると、同じエラーが発生しました。 Error: Unbound module Unix

ライブラリの問題でしょうか?

私は ocamlc -where を実行しましたが、すべて問題ないようです。つまり、unix.cma を含む通常のライブラリはすべて PATH にあります。

解決済み

これはすべて Ocaml の不適切なインストールが原因でした。ありがとう、ジェフリー・スコフィールド

4

1 に答える 1

5

ここでうまくいきます。トップレベルのセッション (Mac OS X 10.8.2) は次のとおりです。

$ ocaml
        OCaml version 4.00.0

# #load "unix.cma";;
# open Unix;;
# let t = Unix.localtime (Unix.time ());;
val t : Unix.tm =
  {tm_sec = 39; tm_min = 27; tm_hour = 16; tm_mday = 3; tm_mon = 11;
   tm_year = 112; tm_wday = 1; tm_yday = 337; tm_isdst = false}
# Printf.printf "Today is day %d of the current year.\n" t.tm_yday;;
Today is day 337 of the current year.
- : unit = ()
# 

コンパイラとのセッションは次のとおりです。

$ cat doy.ml
open Unix

let t = Unix.localtime (Unix.time ());;

Printf.printf "Today is day %d of the current year.\n" t.tm_yday
$ ocamlc -o doy unix.cma doy.ml
$ doy
Today is day 337 of the current year.

これらが機能しない場合、私の唯一の理論は、OCaml のインストールが完了していないということです。どのタイプのシステムを使用していますか?

于 2012-12-04T00:28:32.283 に答える