caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: rixed@happyleptic.org
To: caml-list@inria.fr
Subject: [Caml-list] Calling the toplevel from the toplevel
Date: Sat, 26 Feb 2011 22:44:04 +0100	[thread overview]
Message-ID: <20110226214403.GA20532@yeeloong.happyleptic.org> (raw)

I'm trying to build an application that's run from the toplevel, using
the toplevel to customize the application from itself (for instance,
setting some global parameters using the toplevel to configure the
application behavior while it's running).

But I cannot allow the toplevel to read directly from stdin nor to
write anything into stdout (since my application uses ncurses).

I've looked for various ways to do this, and the simpler I found to
prevent the toplevel to use stdout is to call myself
Toploop.execute_phrase with a custom formatter (so that I can display
the output where and how I want).

Up to now all seams to work except for minor annoyances :

- I cannot start the application directly by linking the custom toplevel
  with something like "let _ = start_application ()" but I have to call
  "start_application();;" from the toplevel manually (or from the
  .ocamlinit file), otherwise the application bindings are not
  available.

- I cannot let the user uses the toplevel directives "use" and "load"
  because both writes into stdout whatever the formatter passed to
  Toploop.execute_phrase (for "use" this is easily solvable by shadowing
  the toplevel implementation by another one that call Toploop.use_file
  with my own formatter, but for "load" I would have to copy a lot of
  code from topdirs.ml

I'd like to know if it is safe to call the Toploop evaluation functions
from code evaluated from the toplevel itself ? Or if someone can suggest
a better way to prevent the toplevel from using stdout ?


             reply	other threads:[~2011-02-26 21:44 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-02-26 21:44 rixed [this message]
2011-02-27  2:45 ` Guillaume Yziquel
2011-02-27 10:52   ` rixed
2011-02-27 12:00 ` Jérémie Dimino
2011-02-28 18:28   ` rixed
2011-02-28 20:30     ` Jérémie Dimino
2011-02-28 21:14       ` Yoann Padioleau
2011-03-03 18:34   ` rixed

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=20110226214403.GA20532@yeeloong.happyleptic.org \
    --to=rixed@happyleptic.org \
    --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;
as well as URLs for NNTP newsgroup(s).