Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] Managing a polymorphic environment
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: brogoff <brogoff@s...>
Subject: Re: [Caml-list] Managing a polymorphic environment
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