From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id DA4F57FFA4 for ; Tue, 8 Mar 2016 13:45:02 +0100 (CET) IronPort-PHdr: 9a23:x6AadhdwdRdA3vhFizGcca3wlGMj4u6mDksu8pMizoh2WeGdxc+6YR7h7PlgxGXEQZ/co6odzbGG7OawBSdasd6oizMrTt9lb1c9k8IYnggtUoauKHbQC7rUVRE8B9lIT1R//nu2YgB/Ecf6YEDO8DXptWZBUiv2OQc9HOnpAIma153xjLDtvc2PKF8YzBOGIppMbzyO5T3LsccXhYYwYo0Q8TDu5kVyRuJN2GlzLkiSlRuvru25/Zpk7jgC86l5r50IeezAcq85Vb1VCig9eyBwvZWz9Er1dhaU/nYXTkkRlxNJBUCFsEC7Dd/NtX7Wv+x81S2tF1nwX7Q1EWCu5qFqRRuugjoKMSw98UnakNZ5kKNCvR/nrBwpkKDOZ4TABfNkeaWVWNIcXmlQFpJAUi1HGYCtR4kGCecaIfxVopW7rFwL+0jtTTKwDf/in2cbzkT92rc3hqF8SAw= Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=yminsky@janestreet.com; spf=Pass smtp.mailfrom=yminsky@janestreet.com; spf=None smtp.helo=postmaster@mxout1.mail.janestreet.com Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of yminsky@janestreet.com) identity=pra; client-ip=38.105.200.112; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="yminsky@janestreet.com"; x-sender="yminsky@janestreet.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of yminsky@janestreet.com designates 38.105.200.112 as permitted sender) identity=mailfrom; client-ip=38.105.200.112; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="yminsky@janestreet.com"; x-sender="yminsky@janestreet.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of postmaster@mxout1.mail.janestreet.com) identity=helo; client-ip=38.105.200.112; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="yminsky@janestreet.com"; x-sender="postmaster@mxout1.mail.janestreet.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0D1AQCXyN5WknDIaSZchAxtBqoVKpAUgWkXAQmCPIMyAoEzBzkTAQEBAQEBAQEQAQEBAQcWCVBBEgGBWYIVAQEDARIRHQEBLAsBBAsLBAcaHQICIhIBBQEKEgYTEhCHbQMKCAMLoRaBMT4xik9nhEEBBIYVA4ROAQEBAQEBBAEBAQEBAQEBAREGCoYNhD6CWoINghsLLROBJ4YhDId8hFaEMIVjiAuCL4xMjRgRHoEPDxMDgjMNEQiBZkyFEoRtAQEB X-IPAS-Result: A0D1AQCXyN5WknDIaSZchAxtBqoVKpAUgWkXAQmCPIMyAoEzBzkTAQEBAQEBAQEQAQEBAQcWCVBBEgGBWYIVAQEDARIRHQEBLAsBBAsLBAcaHQICIhIBBQEKEgYTEhCHbQMKCAMLoRaBMT4xik9nhEEBBIYVA4ROAQEBAQEBBAEBAQEBAQEBAREGCoYNhD6CWoINghsLLROBJ4YhDId8hFaEMIVjiAuCL4xMjRgRHoEPDxMDgjMNEQiBZkyFEoRtAQEB X-IronPort-AV: E=Sophos;i="5.22,556,1449529200"; d="scan'208,217";a="167620859" Received: from mxout1.mail.janestreet.com ([38.105.200.112]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 08 Mar 2016 13:45:02 +0100 Received: from tot-qpr-mailcore1.delacy.com ([172.27.56.68] helo=tot-qpr-mailcore1) by mxout1.mail.janestreet.com with esmtps (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.82) (envelope-from ) id 1adH0W-0003bk-Nn for caml-list@inria.fr; Tue, 08 Mar 2016 07:45:00 -0500 X-JS-Flow: external Received: by tot-qpr-mailcore1 with JS-mailcore (0.1) (envelope-from ) id BW3slM-AAAAl6-Vn; 2016-03-08 07:45:00.692673-05:00 Received: from mail-yk0-f181.google.com ([209.85.160.181]) by mxgoog1.mail.janestreet.com with esmtps (UNKNOWN:AES128-GCM-SHA256:128) (Exim 4.72) (envelope-from ) id 1adH0W-0000AX-JN for caml-list@inria.fr; Tue, 08 Mar 2016 07:45:00 -0500 Received: by mail-yk0-f181.google.com with SMTP id r203so105016ykd.3 for ; Tue, 08 Mar 2016 04:45:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=janestreet.com; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=GP0DB57FG8bOD2zKEqksRuwdFdUevCk1Lvj/O/W4OJs=; b=mzNdJCHb1z5YNRmNGTC7M7ohDbiGjXaU7UQDgOHkKagAe/Vd56IJb/KmNq/SD3A9Vu WYrcHNVpC0px3EgUcMFNe3ij1imv77AgbvXpVWDfjIacKdJ/b8ZwSZ0yBCt3lmvjDzGJ rbBFJJvFqnLbGJGrlkUdKyvHaJwRlfCVa4H80= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=GP0DB57FG8bOD2zKEqksRuwdFdUevCk1Lvj/O/W4OJs=; b=XXqZoa3sZW3CxdbMsSMrgOspzdLtSN0mHNXxqN8ZqTdyrF6+eAKoP0PwZO3vmoVnHH OWWas7I8dmUmKgjZpYRcw9wEY/v/U2PCAKN6sgz4pwpDiosB9kyutmjGVlvdjBBXQ9rn wpRFiYp/Xftj7jRrQoYtweFPhHou0965VFQg+2JgOnHy++DGGjNC5G7T/+LhRmj6Qcre CBKF+4YmYaioU7Qijc0JRjVYmghEdai7LJDsHZlqS3pLKzEGYNXsYdXml96cEAJJcP1o 93V/ukZpQDYMa8gAIkClwpgHsSwuaV7ljM0w+cjrQTVIZat3PiAA826pI2Rw1oXjfkPZ ctoA== X-Gm-Message-State: AD7BkJLRpeyjUKQQo0wBoiI2od8bPzGhPIP/APYOyMcDJtwYL2tlodVz1UTsp1/So1a4SSDF9DB+Gt4aN5IWGpQE8FdXBnQ0j7KwRfjBAwvLAtxMQ8SRFcyDk/KMMsM+EHYdIFckzOE+X0vyyW99 X-Received: by 10.37.70.134 with SMTP id t128mr14925732yba.97.1457441100223; Tue, 08 Mar 2016 04:45:00 -0800 (PST) X-Received: by 10.37.70.134 with SMTP id t128mr14925721yba.97.1457441100071; Tue, 08 Mar 2016 04:45:00 -0800 (PST) MIME-Version: 1.0 Received: by 10.13.226.65 with HTTP; Tue, 8 Mar 2016 04:44:40 -0800 (PST) In-Reply-To: References: From:Yaron Minsky Date: Tue, 8 Mar 2016 07:44:40 -0500 Message-ID: To:=?UTF-8?Q?Daniel_B=C3=BCnzli?= Cc:OCaml List Content-Type: multipart/alternative; boundary=001a1138f95a0d4b55052d88f35f X-JS-Processed-by: mailcore Subject: Re: [Caml-list] [ANN] Hmap 0.8.0 --001a1138f95a0d4b55052d88f35f Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Neat! I'm curious if you've looked at Core_kernel's Univ_map? I believe it's very similar in spirit, and I'm curious if there are any interesting differences there: https://github.com/janestreet/core_kernel/blob/master/src/univ_map.mli Our type witnesses are a little interesting in that you can derive new witnesses from old ones (e.g., if a equals a', and b equals b', then a * b equals a' * b'). That said, I'm not sure that this is relevant for the heterogenous map use case. y On Tue, Mar 8, 2016 at 4:42 AM, Daniel B=C3=BCnzli wrote: > Hello, > > I'd like to announce the first release of Hmap: > > ``` > Hmap provides heterogeneous value maps for OCaml. These maps bind keys > to values with arbitrary types. Keys witness the type of the value > they are bound to which allows to add and lookup bindings in a type > safe manner. > ``` > > Hmap has no dependency and is distributed under the ISC license. > > Home page: http://erratique.ch/software/hmap/ > API docs: http://erratique.ch/software/hmap/doc/Hmap > > Best, > > Daniel > > -- > Caml-list mailing list. Subscription management and archives: > https://sympa.inria.fr/sympa/arc/caml-list > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs > --001a1138f95a0d4b55052d88f35f Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Neat!

I'm curious if you've loo= ked at Core_kernel's Univ_map?=C2=A0 I believe it's very similar in= spirit, and I'm curious if there are any interesting differences there= :


Our type wi= tnesses are a little interesting in that you can derive new witnesses from = old ones (e.g., if a equals a', and b equals b', then a * b equals = a' * b').=C2=A0 That said, I'm not sure that this is relevant f= or the heterogenous map use case.

y

On Tue, Mar 8, 2016 = at 4:42 AM, Daniel B=C3=BCnzli <daniel.buenzli@erratique.ch&= gt; wrote:
Hello,

I'd like to announce the first release of Hmap:

```
Hmap provides heterogeneous value maps for OCaml. These maps bind keys
to values with arbitrary types. Keys witness the type of the value
they are bound to which allows to add and lookup bindings in a type
safe manner.
```

Hmap has no dependency and is distributed under the ISC license.

Home page: http://erratique.ch/software/hmap/
API docs: http://erratique.ch/software/hmap/doc/Hmap
Best,

Daniel

--
Caml-list mailing list.=C2=A0 Subscription management and archives:
https://sympa.inria.fr/sympa/arc/caml-list
Beginner's list: http://groups.yahoo.com/group/ocam= l_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs

--001a1138f95a0d4b55052d88f35f--