caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] Hashtable, possible?
@ 2003-05-24 19:52 Lukasz Lew
  2003-05-25  0:34 ` Remi Vanicat
  0 siblings, 1 reply; 6+ messages in thread
From: Lukasz Lew @ 2003-05-24 19:52 UTC (permalink / raw)
  To: caml-list

Hi.
Is it possible to implement with camlp4, syntax for using hashtables like 
arrays?
I think about something like this:

# let a = [{ }];;
val a : ('_a, '_b) Hashtbl.t = <abstr>

# a.{"foo"} <- 'f';;
- : unit = ()

I need only "yes" or "no" :)

Regards,
Lukasz Lew


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


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

* Re: [Caml-list] Hashtable, possible?
  2003-05-24 19:52 [Caml-list] Hashtable, possible? Lukasz Lew
@ 2003-05-25  0:34 ` Remi Vanicat
  2003-05-25  0:48   ` Remi Vanicat
  0 siblings, 1 reply; 6+ messages in thread
From: Remi Vanicat @ 2003-05-25  0:34 UTC (permalink / raw)
  To: caml-list

Lukasz Lew <ll189417@zodiac.mimuw.edu.pl> writes:

> Hi.
> Is it possible to implement with camlp4, syntax for using hashtables like 
> arrays?
> I think about something like this:
>
> # let a = [{ }];;
> val a : ('_a, '_b) Hashtbl.t = <abstr>
>
> # a.{"foo"} <- 'f';;
> - : unit = ()
>
> I need only "yes" or "no" :)

yes it is


-- 
Rémi Vanicat
vanicat@labri.u-bordeaux.fr
http://dept-info.labri.u-bordeaux.fr/~vanicat

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


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

* Re: [Caml-list] Hashtable, possible?
  2003-05-25  0:34 ` Remi Vanicat
@ 2003-05-25  0:48   ` Remi Vanicat
  2003-05-25 13:40     ` Lukasz Lew
  0 siblings, 1 reply; 6+ messages in thread
From: Remi Vanicat @ 2003-05-25  0:48 UTC (permalink / raw)
  To: caml-list

Remi Vanicat <vanicat@labri.u-bordeaux.fr> writes:

> Lukasz Lew <ll189417@zodiac.mimuw.edu.pl> writes:
>
>> Hi.
>> Is it possible to implement with camlp4, syntax for using hashtables like 
>> arrays?
>> I think about something like this:
>>
>> # let a = [{ }];;
>> val a : ('_a, '_b) Hashtbl.t = <abstr>
>>
>> # a.{"foo"} <- 'f';;
>> - : unit = ()
>>
>> I need only "yes" or "no" :)
>
> yes it is

well, you should use something else than [{ }] and a.{ ... } because
they already have a meaning, but if you find something then yes you
can.


-- 
Rémi Vanicat
vanicat@labri.u-bordeaux.fr
http://dept-info.labri.u-bordeaux.fr/~vanicat

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


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

* Re: [Caml-list] Hashtable, possible?
  2003-05-25  0:48   ` Remi Vanicat
@ 2003-05-25 13:40     ` Lukasz Lew
  2003-05-25 13:50       ` Eray Ozkural
  2003-05-26  1:15       ` Jacques Garrigue
  0 siblings, 2 replies; 6+ messages in thread
From: Lukasz Lew @ 2003-05-25 13:40 UTC (permalink / raw)
  To: Remi Vanicat; +Cc: caml-list




On Sun, 25 May 2003, Remi Vanicat wrote:

> Remi Vanicat <vanicat@labri.u-bordeaux.fr> writes:
> 
> > Lukasz Lew <ll189417@zodiac.mimuw.edu.pl> writes:
> >
> >> Hi.
> >> Is it possible to implement with camlp4, syntax for using hashtables like 
> >> arrays?
> >> I think about something like this:
> >>
> >> # let a = [{ }];;
> >> val a : ('_a, '_b) Hashtbl.t = <abstr>
> >>
> >> # a.{"foo"} <- 'f';;
> >> - : unit = ()
> >>
> >> I need only "yes" or "no" :)
> >
> > yes it is
> 
> well, you should use something else than [{ }] and a.{ ... } because
> they already have a meaning, but if you find something then yes you
> can.
thank you all.

So. If it is possibe, and there is such syntax for arrays, strings and 
bigarrays, so why there isn't any for hashtables?
I belive hashtables are more often used than bigarrays...

Lukasz Lew

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


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

* Re: [Caml-list] Hashtable, possible?
  2003-05-25 13:40     ` Lukasz Lew
@ 2003-05-25 13:50       ` Eray Ozkural
  2003-05-26  1:15       ` Jacques Garrigue
  1 sibling, 0 replies; 6+ messages in thread
From: Eray Ozkural @ 2003-05-25 13:50 UTC (permalink / raw)
  To: Lukasz Lew, Remi Vanicat; +Cc: caml-list

On Sunday 25 May 2003 16:40, Lukasz Lew wrote:
> thank you all.
>
> So. If it is possibe, and there is such syntax for arrays, strings and
> bigarrays, so why there isn't any for hashtables?
> I belive hashtables are more often used than bigarrays...

Why don't you write one for yourself? It would also be good p4 practice.

Be careful not to do something that looks like something else in mathematics 
though. That's how I would go about it.

Happy hacking,

-- 
Eray Ozkural (exa) <erayo@cs.bilkent.edu.tr>
Comp. Sci. Dept., Bilkent University, Ankara  KDE Project: http://www.kde.org
www: http://www.cs.bilkent.edu.tr/~erayo  Malfunction: http://mp3.com/ariza
GPG public key fingerprint: 360C 852F 88B0 A745 F31B  EA0F 7C07 AE16 874D 539C

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


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

* Re: [Caml-list] Hashtable, possible?
  2003-05-25 13:40     ` Lukasz Lew
  2003-05-25 13:50       ` Eray Ozkural
@ 2003-05-26  1:15       ` Jacques Garrigue
  1 sibling, 0 replies; 6+ messages in thread
From: Jacques Garrigue @ 2003-05-26  1:15 UTC (permalink / raw)
  To: ll189417; +Cc: caml-list

From: Lukasz Lew <ll189417@zodiac.mimuw.edu.pl>

>> Is it possible to implement with camlp4, syntax for using hashtables like 
>> arrays?
[...]
> So. If it is possibe, and there is such syntax for arrays, strings and 
> bigarrays, so why there isn't any for hashtables?
> I belive hashtables are more often used than bigarrays...

Maybe, but code using hash tables does not access/modify them several
times on the same line...
There is also a reasonnable concern about not having too many fancy
notations in the language.

Last, as ocaml does not use camlp4 by default, the answer to your
question would not imply that this is possible in ocaml alone.
However, if you are not using bigarrays, you can actually reuse their
notation in the vanilla compiler, by just defining the following
module:

# module Bigarray = struct
    module Array1 =
      struct let set = Hashtbl.add let get = Hashtbl.find end
  end;;
module Bigarray :
  sig
    module Array1 :
      sig
        val set : ('a, 'b) Hashtbl.t -> 'a -> 'b -> unit
        val get : ('a, 'b) Hashtbl.t -> 'a -> 'b
      end
  end
# let f x y z = x.{y} <- z;;
val f : ('a, 'b) Hashtbl.t -> 'a -> 'b -> unit = <fun>
# let g x y = x.{y};;
val g : ('a, 'b) Hashtbl.t -> 'a -> 'b = <fun>

However you probably also want sugar for hash table creation, and this
would indeed require camlp4:
  {|"a" => 1; "b" => 2|}

But you can still do a lot with simple functions:

# let (=>) x y = (x,y);;
val ( => ) : 'a -> 'b -> 'a * 'b = <fun>
# let hash l =
    let h = Hashtbl.create (max 7 (List.length l)) in
    List.iter (fun (k,d) -> h.{k} <- d) l;
    h;;
val hash : ('a * 'b) list -> ('a, 'b) Hashtbl.t = <fun>
# let h = hash["a"=>1;"b"=>2];;
val h : (string, int) Hashtbl.t = <abstr>
# h.{"a"};;
- : int = 1

---------------------------------------------------------------------------
Jacques Garrigue      Kyoto University     garrigue at kurims.kyoto-u.ac.jp
		<A HREF=http://wwwfun.kurims.kyoto-u.ac.jp/~garrigue/>JG</A>

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


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

end of thread, other threads:[~2003-05-26  1:15 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-05-24 19:52 [Caml-list] Hashtable, possible? Lukasz Lew
2003-05-25  0:34 ` Remi Vanicat
2003-05-25  0:48   ` Remi Vanicat
2003-05-25 13:40     ` Lukasz Lew
2003-05-25 13:50       ` Eray Ozkural
2003-05-26  1:15       ` Jacques Garrigue

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