Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: "Ömer Sinan Ağacan" <omeragacan@gmail.com>
To: OCaml Mailing List <caml-list@inria.fr>
Subject: [Caml-list] Problems with printing MetaOCaml generated code
Date: Thu, 30 Apr 2015 14:36:17 -0400	[thread overview]
Message-ID: <CAMQQO3ntvqsp1NS8jnv9XQHQZS94JOqkVcS8Wnf0vROe1rxqdQ@mail.gmail.com> (raw)

Hi all,

I'm working on a MetaOCaml program and I want to save generated programs to
files instead of directly running them within the same program using
`Runcode.(.!)` or `Runcode.run`. The problem is MetaOCaml never prints
generated code, it's always failing with `Warning 22: The CSP value is a
closure or too deep to serialize`.

I can't see anything related in it's web page:
http://okmij.org/ftp/ML/MetaOCaml.html. What I understand from that page is
once I have a closed code, I should be able to print it no matter what.
However in my experience even the simplest realistic MetaOCaml program fails to
generate the code because of this error I mentioned above.

(One thing to note here is that my program generates the code on a couple of
inputs, but fails in most of them with this error message.)

In "Many ways to run the code" section it's said that "Since closed code is
essentially OCaml AST, after closing the generated code, the user may examine
and `run' it in many ways. One way of running the code is printing it." and
then it lists some API functions for printing. In my experience none of them
really work, I have closed code which I successfully closed using
`Runcode.close_code`, but `print_closed_code` is still failing with the error,
and `print_code_as_ast` is printing something that definitely doesn't look like
an AST for any imaginable programming language.(okay... I might have
exaggerated a bit, but it's definitely not OCaml AST and it contains some
references to generator program source, like "Generator.ml[248]" for example)

One relevant thing I could find in the documentation is this: "If the code
includes CSP only as literals or external references (and any code can be
arranged that way), the code can be stored into a file and then passed to
ocamlopt." If we remove this sentence from the documentation, I don't think it
mentions about any possible failures in code printing.

So now that I've expressed my frustration about this, I guess my main question
is: In what cases does MetaOCaml prints generated code? In what cases it
doesn't? Note that it fails to generate code even after calling
`print_closed_code (close_code ...)`, so being closed or not doesn't seem very
relevent here. Is this a bug in MetaOCaml? Are there any workarounds? Any ideas
what am I doing wrong?

Thanks in advance for any answers,

Ömer

             reply	other threads:[~2015-04-30 18:36 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-30 18:36 Ömer Sinan Ağacan [this message]
2015-04-30 19:52 ` Jacques Carette
2015-04-30 20:25   ` Ömer Sinan Ağacan
2015-04-30 20:57     ` Ömer Sinan Ağacan
2015-04-30 21:35       ` Jeremy Yallop
2015-05-01 11:21       ` oleg
2015-05-01 14:34         ` Ömer Sinan Ağacan
2015-05-01 16:16           ` Leo White
2015-05-01 16:41             ` Ömer Sinan Ağacan
2015-05-01 16:45               ` Leo White
2015-05-01 16:53                 ` Ömer Sinan Ağacan
2015-05-02 18:45                   ` Ömer Sinan Ağacan
2015-05-02 20:49                     ` Jacques Carette
2015-05-03  1:56                       ` Ömer Sinan Ağacan
2015-05-03  2:28                         ` Jacques Carette
2015-05-03  3:19                           ` Ömer Sinan Ağacan
2015-05-03  8:40                             ` Gabriel Scherer
2015-05-03 14:28                               ` Ömer Sinan Ağacan
2015-05-03 15:24                                 ` Leo White
2015-05-03 15:50                                   ` Ömer Sinan Ağacan
2015-05-06  9:50           ` oleg
2015-05-06 15:58             ` Jeremy Yallop
2015-05-06 16:45               ` Yotam Barnoy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAMQQO3ntvqsp1NS8jnv9XQHQZS94JOqkVcS8Wnf0vROe1rxqdQ@mail.gmail.com \
    --to=omeragacan@gmail.com \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox