Ocamlの標準ライブラリについて

このQ&Aのポイント
  • Ocamlの環境を整え、標準ライブラリを使おうとしたが、Graphicsモジュールが見つからないエラーが発生。
  • OPAMでOcamlをインストールするとGraphicsモジュールが使えないため、typerexをインストールする必要があるらしい。
  • Mac OS 10.9での環境構築に関して初心者なので、解決方法を知りたい。
回答を見る
  • ベストアンサー

Ocamlの標準ライブラリ

Ocamlの環境を整えようと思い、OPAMを使ってOcamlをインストールしました。emacs上でプログラミングした、何の標準ライブラリも使っていない.mlファイルは問題なく動きました。 しかし、標準ライブラリにあるGraphicsモジュールを使おうとしたところ、それがないといわれます。 $ ocamlc graphics.cma test1.ml -o test1 File "test1.ml", line 1, characters 0-13: Error: Unbound module Graphics 標準ライブラリを使うためには、何か特別なことが必要なのでしょうか。OPAMでOcamlをインストールするとGraphicsなどが使えないからtyperexをいれろということをちらっとネットで見たのですが、これで解決しますか? 環境構築等に関して初心者です。 Mac OS 10.9です。

質問者が選んだベストアンサー

  • ベストアンサー
  • ki073
  • ベストアンサー率77% (491/634)
回答No.3

だめでしたか。 OPAMはどこにモジュールをインストールするのか分かりませんが、多分/usrか/usr/localだと思いますので、次にコマンドで確認してみてください。 $ ls /usr/local/lib/ocaml $ ls /usr/lib/ocaml $ ls /usr/local/lib/ocaml/graphics* $ ls /usr/lib/ocaml/graphics* graphicsがインストールされていれば下の2つのどれかでファイルが表示されるはずですが。 うまくいかないようでしたらMacPortsでインストールされてはどうでしょうか。 同じくOSX 10.9で問題なく動きますよ。

bcbcbc
質問者

お礼

MecPortsで試してみます。 ご親切にありがとうございました。

その他の回答 (2)

  • ki073
  • ベストアンサー率77% (491/634)
回答No.2

No.1です。ちっかいを出しただけでは申し訳なので試してみました。 使ったのは、MacPortsでインストールしたocamlです。 特に他のモジュールはインストールしていません。 http://ocaml.org/learn/tutorials/structure_of_ocaml_programs.ja.html#open にある (* To compile this example: ocamlc graphics.cma grtest1.ml -o grtest1 *) open Graphics;; open_graph " 640x480";; for i = 12 downto 1 do let radius = i * 20 in set_color (if i mod 2 = 0 then red else yellow); fill_circle 320 240 radius done;; read_line ();; をgrtest1.mlの名前でファイルを作り、 $ ocamlc graphics.cma grtest1.ml -o grtest1 でコンパイルし $ ./grtest1 で同心円が表示されました。 環境が違うので同じになるか分かりませんが、試してみてください。

bcbcbc
質問者

補足

ありがとうございます。 そのホームページの通りにやったのですが、 File "test1.ml", line 1, characters 0-13: Error: Unbound module Graphics となってしまいます。

  • ki073
  • ベストアンサー率77% (491/634)
回答No.1

回答がつかないので Ocamlを使っているわけでないので、細かいことが分かりませんが、一般的なこととして プログラム言語やサーバー機能などの専用インストーラ(OPAMなど)が公開されていますが、実際に使い始めると後からソフトウエア追加しないといけないことがよく有ります。その場合は専用インストーラでは無く、汎用のパッケージ管理ソフトを使うのが良いと思います。 有名どころでは 1) MacPorts https://www.macports.org 2) Homebrew http://brew.sh 3) Fink http://www.finkproject.org があります。以前はFinkを使っていたのですがwebサイトが停止してしまったりしていましたので、今はMacPortsを使っています。 併用はトラブルの原因になりますので、1つだけにしてください。 基本的は、App StoreからXcode(無料)をダウンロードし、該当するパッケージ管理ソフトをインストールすると、後は簡単なコマンドでいろいろなソフトウェアをインストールできます。 いずれもocamlも簡単にインストールできますし、多くの他のソフトウエアにも対応しています。 ご参考に

関連するQ&A

  • Linuxで、標準Cライブラリが読み込まれず、C言語プログラミングができません・・・

    僕の問題はタイトルの通りで、標準Cライブラリが読み込まれていないようで、C言語プログラミングができません。 ubuntuのオフィシャルから日本語ローカライズドDesktopCDをダウンロードして、空のHDDにインストールしました。 ですが、gnome-terminalからccコマンドでプログラムをコンパイルしても、標準Cライブラリにあるはずの<stdio.h>が認識されず、続くprinft関数も読んでくれません。 これはどうしてでしょうか?LinuxはデフォルトでCやらJAVAやらのプログラミングの環境が整っているものだと思っていたので、戸惑っています。何か、セットアップが必要なのでしょうか。 ちなみに、gccでも、標準ライブラリは読み込まれませんでした。

  • 設定ファイルを扱うライブラリについて

    Linux環境で開発をしているのですが、アプリケーションの設定ファイル(.ini)のようなものを 扱うためのライブラリとして何か標準的なものってありますでしょうか? 一番簡単な自作手順はnameとvalueを並べておいて読み込むのだと思いますが、 コメントの記載や、代入先変数型への対応や、場合によってはメンバ変数への代入の指定、 .iniファイルの暗号化・復号化などやりたいことが増えた際に、自作では手間が大きいです。 さらに、私の開発ではアプリケーション内の各モジュール毎に設定ファイルを持ち、 ハードウェアに依存して値が変わりうるといった設定ファイルの多いシステムになりそうです。 こういった場合に、皆さんはどのように対応なさっていますか? 御紹介いただければ大変ありがたいです。 ※Linux内の各アプリケーションでも、各々パラメータファイルの作りが違うように見える辺り、  標準的なライブラリや手順といったものは無いのかも、、、と薄々思っています。

  • ACCESS2003 標準モジュールCALLについて

    お世話になります。 ACCESS2003で、標準モジュールの呼び出しについて次のような流れを 作りたいと思っていますす。 標準モジュール名:TEST public sub AA() dim txtB as string (*1 txtB = "TEST.subBB" (*2 call txtB end sub 実現させるには、*1の命令がobjectまたはmodule型で宣言し、 2)はset命令を利用すると思います。 どのように命令作成してよいか困っています。 実際に作成する場合、どのような設定、命令が必要でしょうか。 既出、文献でも教えていただけないでしょうか。 よろしくお願いします。

  • Linuxの標準モジュールの格納場所について

    Windowsでは最初から入っているMicrosoft OfficeなどのプログラムはCドライブのProgram Filesに格納されていますが、Linuxは標準で入っているモジュール(gcc、make、opensshなど)はどこに格納されているのでしょうか。 コマンドはwhichで場所が分かるのですが、その他の関連ファイルの場所が知りたいです。 (ライブラリファイルはlibにありそうですが、例えばバージョンについてのファイルとかその他もろもろは ソースでインストールをするときはオプションでインストール先を指定できますが、標準はどうなっているのかが分かりません・・・findでいちいち探さないといけないのでしょうか。) 以上、よろしくお願いいたします。

  • vb2008でのクラスライブラリ実行に関して

    vb2008でのクラスライブラリ実行に関しての質問なのですが、 クラスライブラリで以下の内容のプロジェクトを作成しました。 プロジェクト名:TEST ファイル名:TEST1.vb '~プログラム内容~ Module D01001B Public Function Main(ByVal CmdArgs() As String) As Integer     'バッチの処理内容 End Function End Module このバッチをデバックしたいのですが、どうやらクラスライブラリは 単体ではデバックできないらしくどうすればできるのか困っています。 調べてみると新しいプロジェクトでWindowsフォームアプリケーション を選択し、フォームからボタンを押して実行する方法があるとの ことなのですがどのように記述したらよいかわかりません。 できればどのように記述すれば実行(呼び出し)できるのか教えていただけないでしょうか? 以上

  • 標準モジュール(Archive::Zip)について

    あるLinux環境にてperlの標準モジュールであるArchive::Zip を使用しようとしたらできなくて「you may need to install・・・」 のようなメッセージが出てきました。 下記コマンドでインストールされているモジュールを表示させてみたのですがZipは無いようでした。Zipってperlをインストールする標準モジュールではないのでしょうか? find `perl -e 'print "@INC"'` -name '*.pm' -print

    • ベストアンサー
    • Perl
  • VB2008: クラスライブラリとはなんなのか?

    クラスライブラリとはなんなのか? 私は、クラスライブラリとはプロパティやメソッドを備えたもの。 そういう理解をしていました。 しかし、今、その認識が揺らいでいます。 それは、System.Text との出会いがきっかけ。 Imports System.IO Module mdlFileSystem   Function FileSeek(ByVal aFile As String, _ ・・・・・     If File.Exists(aFile) Then       Dim Buf(1) As Byte       Dim ec As System.Text.Encoding = System.Text.Encoding.Default       Dim fs As FileStream = New FileStream(・・・・・) これは、次のようにも書けます。 Imports System.IO Imports System.Text Module mdlFileSystem Function FileSeek(・・・・・) As String ・・・・・ If File.Exists(aFileName) Then Dim Buf(1) As Byte       Dim ec As Encoding = Encoding.Default       Dim fs As FileStream = New FileStream(・・・・・) この New 宣言を必要としない関数群とも言えるクラスライブラリ。 ここで、何が問題かと言うと実は自作の LenB関数の扱い。 Public Class Text   #Region "LenB メソッド" ・・・・・   #End Region   #Region "LenB メソッド" ・・・・・   #End Region End Class このように書くこともできます。 別にクラスライブラリなどと上段に構えなくても標準ライブラリでも用は足ります。 言わば、複数のプロパティやメソッドを装備しないのだ単なる標準ライブラリのクラスライブラリ版。 本格的なクラスライブラリ、標準ライブラリのクラスライブラリ版、標準ライブラリ。 一体、この3つをどう切り分けすべきなのであろうか? VB2008を学び始めて3週間。 しかも、プログラマでもなんでもない素人。 この辺りをどのように考えたらいいのでしょうか? どうにもスッキリしません。 「このように考えたらいいですよ」という回答をお願いします。

  • Windowsでも使える行列演算ライブラリについて

    プログラミングで行列演算ライブラリを使いたいのですが、開発環境が特殊でMATLABのs-functionというのを使っているため、Windows環境の行列演算ライブラリを探しております。 開発環境が特殊なためCygwinとかも使えません。今のところCLAPACK、CPPLAPACK、BOOSTを使っていますが他に使えそうなライブラリはないでしょうか?使えそうなライブラリはいつもlinuxなんです。 TwT またlinuxなどのUNIX系OSでコンパイルされた拡張子.aのライブラリファイルはWindowsではやはり使えないんでしょうか? よろしくお願いします.

  • 共有ライブラリへのパス指定の方法

    共有ライブラリへのパス指定の方法について教えて下さい。 環境は TurboLinux / C言語です lib_k.sl という共有ライブラリがあります。 【開発環境】  /hhn --- lib -(ここにlib_k.slがある)     |     -- src - ・・・(ここにプログラムのソースファイルがある) 【実行環境】  /ppc --- lib -(ここにlib_k.slを置く)     |     -- ld -(ここにプログラムのロードモジュールを置く) 開発プログラムのメイクファイルに、  /hhn/lib/lib_k.sl と書いてリンクさせています。すると、実行環境でも  /hhn/lib/lib_k.sl にリンクしようとしに行っているようです。 実行環境で /ppc/lib/lib_k.sl にリンクするには、どのようにすればよいのでしょうか? Cプログラミングはずっとやっていますが、共有ライブラリは使用したことが有りません。 ご教授お願いします。

  • C++ライブラリの使い方について

    C++初心者です。ゲームプログラミングを学びたいと思い、 「ゲームプログラマになる前に覚えておきたい技術」という本で勉強を始めました。 この本には専用のライブラリが付属しており、それを使用することを前提としているのですが、 ライブラリの使い方がよく分かりません。 こちらの環境は、 OS : Mac OS X コンパイラ : GNU GCC です。 本に付属しているのは、拡張子が.libと.pdbのファイル群です。 調べてみたところ、.libのファイルはWindows環境で使用するもので、 UNIX系のOSでは拡張子は.aになるそうですが、 .libのファイルをMac OS Xで使えるでしょうか? もしできるなら、どのようにリンクしたらいいのかも教えて頂きたいです。