From: Alain Frisch <alain.frisch@lexifi.com>
To: "Soegtrop, Michael" <michael.soegtrop@intel.com>,
"caml-list@inria.fr" <caml-list@inria.fr>
Subject: Re: [Caml-list] Specify the default hash function for a type
Date: Fri, 13 May 2016 11:06:07 +0200 [thread overview]
Message-ID: <850765ff-25f1-ecb9-9707-74d3dc47675c@lexifi.com> (raw)
In-Reply-To: <0F7D3B1B3C4B894D824F5B822E3E5A172CEF1630@IRSMSX102.ger.corp.intel.com>
Dear Michael,
Don't tell anybody (ahem), but the following might work depending on
your exact use case...
If you define a type such as:
type t = {
foo: ....;
id: int;
}
and if you set the tag of values for this type to Obj.record_tag (= 248)
with Obj.set_tag, then polymorphic hash *and* comparison functions will
use the "id" field and ignore the "foo" field (and any other extra
fields). It is important to keep "id" as the second field to mimic the
layout of real object values (and exception slots).
In particular, this lets you easily "forget" sub-parts of a value (by
setting "id" to a fixed constant), or implement "references compared
with physical equality" (use a counter to assign unique "id" to each
such reference).
Best regards,
Alain
On 13/05/2016 09:52, Soegtrop, Michael wrote:
> Dear Ocaml Users,
>
>
>
> I wonder if there is a way to specify a default hash function for a
> type, which is then used by the automated hash functions e.g. created
> for records containing this type. I have e.g. a record with about 10
> fields and I am happy with the default hash functions for most fields
> and for the record, but for just one field I would like to use a custom
> hash function, but I don’t want to write a hash function for the record.
>
>
>
> I am currently using the standard library, but if there is a solution
> with Batteries or Core, I would also be interested.
>
>
>
> Best regards,
>
>
>
> Michael
>
> Intel Deutschland GmbH
> Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
> Tel: +49 89 99 8853-0, www.intel.de
> Managing Directors: Christin Eisenschmid, Christian Lamprechter
> Chairperson of the Supervisory Board: Nicole Lau
> Registered Office: Munich
> Commercial Register: Amtsgericht Muenchen HRB 186928
>
next prev parent reply other threads:[~2016-05-13 9:06 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-13 7:52 Soegtrop, Michael
2016-05-13 8:13 ` Ben Millwood
2016-05-13 8:40 ` Soegtrop, Michael
2016-05-13 9:06 ` Alain Frisch [this message]
2016-05-13 9:26 ` Soegtrop, Michael
2016-05-13 12:01 ` Gabriel Scherer
2016-05-13 12:23 ` Alain Frisch
2016-05-13 12:32 ` Soegtrop, Michael
2016-05-13 13:50 ` Pierre Chambart
2016-05-13 13:56 ` Alain Frisch
2016-05-13 16:17 ` Soegtrop, Michael
2016-05-13 18:57 ` Thomas Braibant
2016-05-13 22:45 ` Soegtrop, Michael
2016-05-14 8:41 ` Thomas Braibant
2016-05-14 9:06 ` Soegtrop, Michael
2016-05-17 13:03 ` Soegtrop, Michael
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=850765ff-25f1-ecb9-9707-74d3dc47675c@lexifi.com \
--to=alain.frisch@lexifi.com \
--cc=caml-list@inria.fr \
--cc=michael.soegtrop@intel.com \
/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