title: What's meaning of Pexp_ident use in parsetree.mli?
body: <p>I have this prog parsetreetest.ml:</p>
  
  <pre><code>let ()=
  let filename = "test.ml" in
  Location.input_name := filename ;
  let readhandle = open_in filename in
  let buf = Lexing.from_channel readhandle in
  Location.init buf filename ;
  let ast = Parse.implementation buf in
  let pstr_desc=(List.nth ast 0).pstr_desc in
  match pstr_desc with
  |Pstr_eval (expression,attributes)-&gt;
   match expression.pexp_desc with
   |Pexp_constant constant-&gt;
    match constant with 
    |Pconst_integer (const_int,char_option)-&gt;
     Printf.printf "%s" const_int;
   close_in readhandle
  </code></pre>
  
  <p>If test.ml have only a integer,for example:1,this prog can read it and return Parsetree.</p>
  
  <p>In the parsetree.mli:</p>
  
  <pre><code>and expression_desc =
  
  | Pexp_ident of Longident.t loc
  
      (* x
  
         M.x
  
       *)
  
  | Pexp_constant of constant
  
      (* 1, 'a', "true", 1.0, 1l, 1L, 1n *)
  </code></pre>
  
  <p>the Pexp_ident is paralleling to Pexp_constant,if I write parsetreetest2.ml:</p>
  
  <pre><code>let ()=
  let filename = "test2.ml" in
  Location.input_name := filename ;
  let readhandle = open_in filename in
  let buf = Lexing.from_channel readhandle in
  Location.init buf filename ;
  let ast = Parse.implementation buf in
  let pstr_desc=(List.nth ast 0).pstr_desc in
  match pstr_desc with
  |Pstr_eval (expression,attributes)-&gt;
   match expression.pexp_desc with
   |Pexp_ident loc-&gt;
    match loc with 
    |Lident l-&gt;
     Printf.printf "%s" l;
   close_in readhandle
  </code></pre>
  
  <p>in test2.ml I write x,as the parsetree.mli example show me,then compiler with ocamlbuild,which used to compile parsetreetest.ml success,got error:</p>
  
  <p>File "parsetreetest2.ml", line 14, characters 7-13:
  Error: Unbound constructor Lident</p>
  
  <p>I don't know why I can't do this,thanks!</p>