# Help getting started: problem opening Core in utop

**URL:** <https://discuss.ocaml.org/t/help-getting-started-problem-opening-core-in-utop/366>\
**Category:** Ecosystem\
**Tags:** core\
**Created:** [June 6, 2017, 4:26pm UTC](https://discuss.ocaml.org/t/help-getting-started-problem-opening-core-in-utop/366 "2017-06-06T16:26:37Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![uvtc](https://avatars.discourse-cdn.com/v4/letter/u/ccd318/32.png) [@uvtc](https://discuss.ocaml.org/u/uvtc)\
**Post date:** [June 6, 2017, 4:26pm UTC](https://discuss.ocaml.org/t/help-getting-started-problem-opening-core-in-utop/366/1 "2017-06-06T16:26:37Z")

</div>

I’ve just installed opam and ocaml on Debian Testing via apt, then did `opam install utop`, added ``eval `opam config env``` to my ~/.bashrc, and I can now start up and use utop as a calculator.

Utop tells me the versions I have are:

```
Welcome to utop version 2.0.1 (using OCaml version 4.02.3)

```

I wanted to install Core (to follow along with RWO), and did `opam install core` to get it. It downloaded and installed a bunch of packages, and seemed to have succeeded. If I try installing again, I get:

```
$ opam install core
[NOTE] Package core is already installed (current version is 113.33.03).

```

Now when I start utop and do “`open Core.Std;;`”, it tells me “`Error: Unbound module Core`”.

Did I install Core correctly?  
Is there some other config to be done to get Core properly installed?

Thanks.

---

<div class="post-metadata">

**Author:** ![ashish](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/ashish/32/34_2.png) [@ashish](https://discuss.ocaml.org/u/ashish)\
**Post date:** [June 6, 2017, 4:29pm UTC](https://discuss.ocaml.org/t/help-getting-started-problem-opening-core-in-utop/366/2 "2017-06-06T16:29:09Z")

</div>

You have to first load the libraries you want to use. First do `#require "core"`, and then `open Core` should work. (Note it is now simply `open Core` instead of `open Core.Std`.)

---

<div class="post-metadata">

**Author:** ![uvtc](https://avatars.discourse-cdn.com/v4/letter/u/ccd318/32.png) [@uvtc](https://discuss.ocaml.org/u/uvtc)\
**Post date:** [June 6, 2017, 4:33pm UTC](https://discuss.ocaml.org/t/help-getting-started-problem-opening-core-in-utop/366/3 "2017-06-06T16:33:47Z")

</div>

Thanks, ashish. This seems to work:

```
#require "core";;
open Core;;

```

Why does “require” have the pound sign but “open” does not?

---

<div class="post-metadata">

**Author:** ![ashish](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/ashish/32/34_2.png) [@ashish](https://discuss.ocaml.org/u/ashish)\
**Post date:** [June 6, 2017, 4:38pm UTC](https://discuss.ocaml.org/t/help-getting-started-problem-opening-core-in-utop/366/4 "2017-06-06T16:38:06Z")

</div>

`#require` is a toplevel _directive_. There are several other useful directives. Type `#help` to see them all:

```auto
utop # #help;;
                              General #help Prints a list of all available directives, with corresponding argument type                                                                                                       
  if appropriate.
#quit
  Exit the toplevel.

                              Loading code
#cd <str>
  Change the current working directory.
#directory <str>
  Add the given directory to search path for source and compiled files.
#load <str>
  Load in memory a bytecode object, produced by ocamlc.
#load_rec <str>
  As #load, but loads dependencies recursively.
#mod_use <str>
  Usage is identical to #use but #mod_use wraps the contents in a module.
#remove_directory <str>
  Remove the given directory from the search path.
#use <str>
  Read, compile and execute source phrases from the given file.

                              Environment queries
#show <ident>
  Print the signatures of components from any of the above categories.
#show_class <ident>
  Print the signature of the corresponding class.
#show_class_type <ident>
  Print the signature of the corresponding class type.
#show_exception <ident>
  Print the signature of the corresponding exception.
#show_module <ident>
  Print the signature of the corresponding module.
#show_module_type <ident>
  Print the signature of the corresponding module type.
#show_type <ident>
  Print the signature of the corresponding type constructor.
#show_val <ident>
  Print the signature of the corresponding value.

                              Pretty-printing
#install_printer <ident>
  Registers a printer for values of a certain type.
#print_depth <int>
  Limit the printing of values to a maximal depth of n.
#print_length <int>
  Limit the number of value nodes printed to at most n.
#remove_printer <ident>
  Remove the named function from the table of toplevel printers.

                              Tracing
#trace <ident>
  All calls to the function named function-name will be traced.
#untrace <ident>
  Stop tracing the given function.
#untrace_all
  Stop tracing all functions traced so far.

                              Compiler options
#labels <bool>
  Choose whether to ignore labels in function types.
#ppx <str>
  After parsing, pipe the abstract syntax tree through the preprocessor
  command.
#principal <bool>
  Make sure that all types are derived in a principal way.
#rectypes
  Allow arbitrary recursive types during type-checking.
#warn_error <str>
  Treat as errors the warnings enabled by the argument.
#warnings <str>
  Enable or disable warnings according to the argument.

                              Undocumented
#camlp4o
#camlp4o
#camlp4r
#camlp4r
#list
#predicates <str>
#pwd
#require <str>
#require <str>
#thread
#topfind_log
#topfind_verbose <bool>
#typeof <str>
#utop_bindings
#utop_help
#utop_macro
#utop_prompt_dummy
#utop_prompt_fancy_dark
#utop_prompt_fancy_light
#utop_prompt_simple

```

---

<div class="post-metadata">

**Author:** ![uvtc](https://avatars.discourse-cdn.com/v4/letter/u/ccd318/32.png) [@uvtc](https://discuss.ocaml.org/u/uvtc)\
**Post date:** [June 6, 2017, 4:47pm UTC](https://discuss.ocaml.org/t/help-getting-started-problem-opening-core-in-utop/366/5 "2017-06-06T16:47:34Z")

</div>

Thanks! Though, `#help;;` doesn’t get me that display:

```
utop # #help;;
Unknown directive `help'.

```

How can I get it to display those directives?

---

<div class="post-metadata">

**Author:** ![ashish](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/ashish/32/34_2.png) [@ashish](https://discuss.ocaml.org/u/ashish)\
**Post date:** [June 6, 2017, 4:54pm UTC](https://discuss.ocaml.org/t/help-getting-started-problem-opening-core-in-utop/366/6 "2017-06-06T16:54:01Z")

</div>

> [@uvtc](#):
>
> Though, #help;; doesn’t get me that display

Strange. I’m on the same version of utop as you. Not sure why it wouldn’t work.

---

<div class="post-metadata">

**Author:** ![yawaramin](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/yawaramin/32/3384_2.png) [@yawaramin](https://discuss.ocaml.org/u/yawaramin)\
**Post date:** [June 7, 2017, 12:54am UTC](https://discuss.ocaml.org/t/help-getting-started-problem-opening-core-in-utop/366/7 "2017-06-07T00:54:33Z")

</div>

Just to add another data point, I’m on utop 1.19.3 and `#help;;` gives me the same error message as it does @uvtc.
