From: Chris Hecker <checker@d6.com>
To: Lukasz Lew <ll189417@zodiac.mimuw.edu.pl>,
John Prevost <j.prevost@cs.cmu.edu>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] Does this function exist?
Date: Mon, 09 Sep 2002 15:05:22 -0700 [thread overview]
Message-ID: <4.3.2.7.2.20020909144531.04529c20@mail.d6.com> (raw)
In-Reply-To: <Pine.LNX.4.44.0209092212360.21417-100000@zodiac.mimuw.edu. pl>
>I can use printf, but it isn't very easy to write when you have i.e.
>list of pairs of lists. And i believe that there is unversal ``print''.
>Can you help?
This has gone around before, and I think it's impossible because there's no
type information available at runtime.
However, it seems like it would solve 90% of the problems if we could
generate the code for such a function for a specific type using a tool,
like camlp4 or something, and then compile that in when we want it. In
other words, say I have this:
type foo = A of int | B of int list
Then have camlp4 generate
let print_foo fmt f =
Format.fprintf fmt "@[foo = ";
begin match f with
A i -> Format.fprintf fmt "A %d" i
| B il -> Format.fprintf fmt "B [%s]"
(List.fold_left ~f:(fun s i -> s ^ Printf.sprintf "%s%d" (if s <>
"" then "; " else "") i) ~init:"" il)
end;
Format.fprintf fmt "@]"
or whatever (you'd probably want it to just return a string so you could
compose them, but then you'd want the formatting stuff in there, so it's
unclear exactly which would be better...maybe Format.sprintf works). The
idea is you don't want to have to write that code by hand, but generating
it would be fine.
Is this something camlp4 can do?
Chris
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
next prev parent reply other threads:[~2002-09-09 22:05 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-09-09 17:56 Lukasz Lew
2002-09-09 19:34 ` John Prevost
2002-09-09 20:18 ` Lukasz Lew
2002-09-09 20:55 ` John Prevost
2002-09-09 20:59 ` Lukasz Lew
2002-09-17 16:21 ` Kontra, Gergely
2002-09-17 17:17 ` Florian Hars
2002-09-09 21:40 ` Yutaka OIWA
2002-09-09 23:10 ` Nicolas Cannasse
[not found] ` <Pine.LNX.4.44.0209092212360.21417-100000@zodiac.mimuw.edu. pl>
2002-09-09 22:05 ` Chris Hecker [this message]
2002-09-09 22:48 ` Remi VANICAT
2002-09-10 1:10 ` Daniel de Rauglaudre
2002-09-16 16:56 ` Kontra, Gergely
2002-09-12 15:31 ` [Caml-list] " Michaël Grünewald
2002-09-18 23:01 [Caml-list] " Gurr, David (MED, self)
2002-09-18 23:01 Gurr, David (MED, self)
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=4.3.2.7.2.20020909144531.04529c20@mail.d6.com \
--to=checker@d6.com \
--cc=caml-list@inria.fr \
--cc=j.prevost@cs.cmu.edu \
--cc=ll189417@zodiac.mimuw.edu.pl \
/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