2014-02-12 3 views
2

나는 http://caml.inria.fr/pub/docs/oreilly-book/html/index.html 튜토리얼을 따라 OCaml을 배우고있다. 나는 '핵심'라이브러리의 목록 기능을 사용하여 몇 가지 예제를 시도하고 싶다. 나는 OCaml의 탑 (http://www.typerex.org/ocaml-top.html)를 시작 오픈은 'Core.Std'때 다음과 같은 오류가 발생합니다 :ocaml-top 외부 라이브러리를로드 할 수 있습니까?

(* Added by OPAM. *) 
let() = 
    try Topdirs.dir_directory (Sys.getenv "OCAML_TOPLEVEL_PATH") 
    with Not_found ->() 
;; 
#use "topfind" 
#camlp4o 
#thread 
#require "core" 
#require "core.top" 
#require "core.syntax" 
:

# open Core.Std 

Characters 0-13: 
    open Core.Std;; 
    ^^^^^^^^^^^^^ 
Error: Unbound module Core 

파일 ~/.ocamlinit이 (Ocaml and Opam: unbound module Core에서 추가) 다음 줄을 포함

명령 행에서 ocaml을 실행하면 (init에서 .cma 파일이 많이로드 됨) 'Core.Std'를 여는 데 문제가 없습니다. 내가 가진 모듈을 컴파일 할 수

$ ocamlfind ocamlmktop -o coretop -thread -package core 

을하지만 OCaml의 탑이 '핵심을 열 수 없습니다 : 난 내 자신의 최상위이'핵심 '과 연결하고, 좋은 작품도 만들었습니다

$ ocamlfind ocamlc -thread -package core calc.ml 

. 회사 '. 내 최상위와 OCaml의 정상을 실행하면 열리지 않고 'Core.Std'OCaml의 탑의 프롬프트

(* Added by OPAM. *) 
let() = 
try Topdirs.dir_directory (Sys.getenv "OCAML_TOPLEVEL_PATH") 
with Not_found ->() 
;; 
#use "topfind";; 
#camlp4o;; 
#thread;; 
#require "core";; 
#require "core.top";; 
#require "core.syntax";; 

가 평가에 다음과 같은 출력을 생성에 ~/.ocamlinit의 내용을 삽입

$ ocaml-top -ocaml /home/thelinuxkitten/coretop 

패널 :

 OCaml version 4.01.0 


# let() = 
    try Topdirs.dir_directory (Sys.getenv "OCAML_TOPLEVEL_PATH") 
    with Not_found ->() 


# #use "topfind" 

- : unit =() 
Findlib has been successfully loaded. Additional directives: 
    #require "package";;  to load a package 
    #list;;     to list the available packages 
    #camlp4o;;    to load camlp4 (standard syntax) 
    #camlp4r;;    to load camlp4 (revised syntax) 
    #predicates "p,q,...";; to set these predicates 
    Topfind.reset();;   to force that packages will be reloaded 
    #thread;;     to enable threads 

- : unit =() 

# #camlp4o 

    Camlp4 Parsing version 4.01.0 


# #thread 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/lib/ocaml/dynlink.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/lib/ocaml/camlp4: added to search path 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/lib/ocaml/camlp4/camlp4o.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/lib/ocaml/threads: added to search path 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/lib/ocaml/unix.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/lib/ocaml/threads/threads.cma: loaded 


# #require "core" 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/lib/ocaml/bigarray.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/bin_prot: added to search path 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/bin_prot/bin_prot.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/variantslib: added to search path 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/variantslib/variantslib.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/sexplib: added to search path 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/sexplib/sexplib.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/fieldslib: added to search path 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/fieldslib/fieldslib.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/pa_bench: added to search path 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/pa_bench/pa_bench_lib.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/oUnit: added to search path 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/oUnit/oUnitAdvanced.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/oUnit/oUnit.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/pa_ounit: added to search path 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/pa_ounit/pa_ounit_lib.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/typerep_kernel: added to search path 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/typerep_kernel/typerep_kernel.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/core_kernel: added to search path 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/core_kernel/raise_without_backtrace.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/core_kernel/core_kernel.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/pa_test: added to search path 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/pa_test/pa_test.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/core: added to search path 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/core/core.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/core/core_top.cma: loaded 


# #require "core.top" 


# #require "core.syntax" 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/core/core_top.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/type_conv: added to search path 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/type_conv/pa_type_conv.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/sexplib/pa_sexp_conv.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/fieldslib/pa_fields_conv.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/variantslib/pa_variants_conv.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/comparelib: added to search path 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/comparelib/comparelib.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/comparelib/pa_compare.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/bin_prot/pa_bin_prot.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/custom_printf: added to search path 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/custom_printf/pa_custom_printf.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/pa_pipebang: added to search path 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/pa_pipebang/pa_pipebang.cma: loaded 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/herelib: added to search path 
/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/herelib/pa_herelib.cma: loaded 


# 

내가 설치 한 OCaml로, 코어 및 OPAM와 OCaml의 탑

$ opam config env 
CAML_LD_LIBRARY_PATH="/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/stublibs:/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/lib/ocaml/stublibs"; export CAML_LD_LIBRARY_PATH; 
OPAMROOT="/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam"; export OPAMROOT; 
PERL5LIB="/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/perl5:"; export PERL5LIB; 
OCAML_TOPLEVEL_PATH="/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/lib/toplevel"; export OCAML_TOPLEVEL_PATH; 
MANPATH="/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/man:/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/man:/usr/local/man:/usr/brlcad/share/man"; export MANPATH; 
PATH="/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/.opam/system/bin:/home/thelinuxkitten/ocamlbrew/ocaml-4.01.0/bin:/home/thelinuxkitten/debian/script:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/brlcad/bin"; export PATH; 

ocaml-top의 웹은 가장 간단한 문서입니다. 그럼 내 질문은 : ocaml-top이 'core'와 같은 외부 라이브러리를로드하고 열 수 있다면 누구든지 알 수 있습니까?

감사

+0

ocaml-top을 모르지만 프롬프트에서'#require "core"'를 입력 해보십시오. 어쩌면 ocaml-top이 ~/.ocamlinit 파일을 읽지 않을 수도 있습니다. –

+0

감사합니다. 지침을 처리하지 않습니다. 나는 초보자이고, 매개 변수를 해석기에 보내기 위해'-ocaml' 옵션을 사용하려고 노력할 것이다. –

+0

ocaml-top이 특별히 필요합니까? 'utop'도 시도해 볼 수 있습니다. –

답변

1

사항은 다른 지시를 발행하기 전에 .ocamlinit#use "topfind"을 얼마나. topfind은 해당 #require 지시어에 대한 지원을 추가하는 ocaml 스크립트이기 때문입니다.

1

ygrek의 권장 사항에 따라 ocaml-top의 프롬프트에서 .ocamlinit의 내용을 입력 한 다음 'open Core.Std ;;' 공장. Ashish Agarwal이 말했듯이, ocaml-top은 .ocamlinit을 읽지 않습니다.

ocaml-top은 외부 라이브러리를로드하거나 열 수 있지만 통합 ocaml의 인터프리터 초기화는 수동으로 수행해야합니다.

감사

+0

종종 최상위에 입력하지 않고 붙여 넣기 만합니다. –

1

먼저 .profile 또는 .bashrc는 다음이 포함되어 있는지 확인하십시오

eval `opam config env` 

그런 다음 파일 ~/.opam/system/share/ocaml-top/toplevel_init.ml을 엽니 다. 이 파일은 시작할 때 ocaml-top이 읽습니다. 다음 행을 삽입하십시오 :

let() = 
    try Topdirs.dir_directory (Sys.getenv "OCAML_TOPLEVEL_PATH") 
    with Not_found ->() 
;; 

#use "topfind" 
#thread 
#require "core" 
#require "core.top" 
#require "core.syntax"