caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] Problems with printing MetaOCaml generated code
@ 2015-04-30 18:36 Ömer Sinan Ağacan
  2015-04-30 19:52 ` Jacques Carette
  0 siblings, 1 reply; 23+ messages in thread
From: Ömer Sinan Ağacan @ 2015-04-30 18:36 UTC (permalink / raw)
  To: OCaml Mailing List

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

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2015-05-06 16:46 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-30 18:36 [Caml-list] Problems with printing MetaOCaml generated code Ömer Sinan Ağacan
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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).