Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: brogoff <brogoff@speakeasy.net>
To: Diego Olivier Fernandez Pons <Diego.FERNANDEZ_PONS@etu.upmc.fr>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] Managing a polymorphic environment
Date: Thu, 12 Aug 2004 10:05:11 -0700 (PDT)	[thread overview]
Message-ID: <Pine.LNX.4.58.0408120942030.22505@shell2.speakeasy.net> (raw)
In-Reply-To: <Pine.A41.4.44.0408121629060.557174-100000@ibm1>

Howdy,
    I'm sure I'm completely misunderstanding your problem, but how about
referring to the environment variables by by strings and attaching properties to
them, using the property list trick that Xavier described here a few years
ago

	http://caml.inria.fr/archives/200105/msg00175.html

    Then we get something like this

# let x = intern "x";;
val x : atom = {name = "x"; properties = []}
# let c = intern "c";;
val c : atom = {name = "c"; properties = []}
# let int_property = (new_property() : int property);;
val int_property : int property = {contents = None}
# let string_property = (new_property() : string property);;
val string_property : string property = {contents = None}
# let float_property = (new_property() : float property);;
val float_property : float property = {contents = None}
# put_property x int_property 10;;
- : unit = ()
# put_property x string_property "the number of elements in the knapsack";;
- : unit = ()
# put_property c float_property 100.0;;
- : unit = ()
# put_property c string_property "the total cost of the knapsack";;
- : unit = ()
# let print_int a = Printf.printf "%s is %d\n" (get_property a string_property)
(get_property a int_property);;
val print_int : atom -> unit = <fun>
# print_int x;;
the number of elements in the knapsack is 10
- : unit = ()
# print_int c;;
Exception: Not_found.
# let print_float a = Printf.printf "%s is %g\n" (get_property a
string_property) (get_property a float_property);;
val print_float : atom -> unit = <fun>
# print_float c;;
the total cost of the knapsack is 100
- : unit = ()
# print_float x;;
Exception: Not_found.

I think you can modify the basic approach to be slightly more suitable to your
task, but that comes pretty close.

-- Brian


On Thu, 12 Aug 2004, Diego Olivier Fernandez Pons wrote:
>     Bonjour,
>
> Here is an other type related problem :
>
> I would like to have an environment that associates strings to values
>
> let x = ...
> Env.add x "the number of elements in the knapsack"
> let c = ...
> Env.add c "the total cost of the knapsack"
>
>
> The idea is of course to be able to pretty-print the result
>
> # Env.print_int x;;
> the number of elements in the knapsack is 10 - : unit = ()
> # Env.print_float c
> the total cost of the knapsack is 100.0 - : unit = ()
>
>
> Env data structure can be based on equallity only since the user is
> supposed to add comments only for the most important variables. The
> simplest idea is once more hashing all variables. But one would like
> to avoid collisions.
>
>
> Any suggestion ?

>
>         Diego Olivier
>
> -------------------
> 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
>

-------------------
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


  parent reply	other threads:[~2004-08-12 17:05 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-08-12 14:46 Diego Olivier Fernandez Pons
2004-08-12 15:06 ` Jean-Baptiste Rouquier
2004-08-12 15:19   ` Diego Olivier Fernandez Pons
2004-08-12 17:05 ` brogoff [this message]
2004-08-13  8:06   ` Diego Olivier Fernandez Pons
2004-08-13 10:12     ` Diego Olivier Fernandez Pons
2004-08-13 14:20 Jean-Baptiste Rouquier

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=Pine.LNX.4.58.0408120942030.22505@shell2.speakeasy.net \
    --to=brogoff@speakeasy.net \
    --cc=Diego.FERNANDEZ_PONS@etu.upmc.fr \
    --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