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 07452800FD for ; Mon, 27 Mar 2017 16:53:21 +0200 (CEST) Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=francois.c.berenger@vanderbilt.edu; spf=Pass smtp.mailfrom=francois.c.berenger@vanderbilt.edu; spf=Pass smtp.helo=postmaster@NAM01-SN1-obe.outbound.protection.outlook.com Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of francois.c.berenger@vanderbilt.edu) identity=pra; client-ip=104.47.32.78; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="francois.c.berenger@vanderbilt.edu"; x-sender="francois.c.berenger@vanderbilt.edu"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of francois.c.berenger@vanderbilt.edu designates 104.47.32.78 as permitted sender) identity=mailfrom; client-ip=104.47.32.78; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="francois.c.berenger@vanderbilt.edu"; x-sender="francois.c.berenger@vanderbilt.edu"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of postmaster@NAM01-SN1-obe.outbound.protection.outlook.com designates 104.47.32.78 as permitted sender) identity=helo; client-ip=104.47.32.78; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="francois.c.berenger@vanderbilt.edu"; x-sender="postmaster@NAM01-SN1-obe.outbound.protection.outlook.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" IronPort-PHdr: =?us-ascii?q?9a23=3AzzrzlxXFp9RFyC6CeIb6HSuJhL/V8LGtZVwlr6E/?= =?us-ascii?q?grcLSJyIuqrYbRyFt8tkgFKBZ4jH8fUM07OQ6PG8HzRYqb+681k6OKRWUBEEjc?= =?us-ascii?q?hE1ycBO+WiTXPBEfjxciYhF95DXlI2t1uyMExSBdqsLwaK+i764jEdAAjwOhRo?= =?us-ascii?q?LerpBIHSk9631+ev8JHPfglEnjSwbLd9IRmssQndqtQdjJd/JKo21hbHuGZDdf?= =?us-ascii?q?5MxWNvK1KTnhL86dm18ZV+7SleuO8v+tBZX6nicKs2UbJXDDI9M2Ao/8LrrgXM?= =?us-ascii?q?TRGO5nQHTGoblAdDDhXf4xH7WpfxtTb6tvZ41SKHM8D6Uaw4VDK/5KpwVhTmlD?= =?us-ascii?q?kIOCI48GHPi8x/kqRboA66pxdix4LYeZyZOOZicq/Ye94VQnZMU8hTWiFPG4+w?= =?us-ascii?q?c4QCBPcFMetYs4Xxol0Dpga8CwaxHuPi0iFGiH/r06M53eouHw7J0xAvEdIPq3?= =?us-ascii?q?nUsNf4Ob0OXeypwqTFzzPOZO5W1zfn74jIdwgsr/GWXb1qd8re1U4vFwLejl6N?= =?us-ascii?q?tIHrMC+b2OsVvWaa4ORuSf+khmkpqwFruDevwNsjio7IhoIO0FzL6T91z50rKt?= =?us-ascii?q?2iVkF7Z9GkH4VKtyyBKYt5WMUiTHx2tyYg0bIGuJq7fDQQxJs52hHfduWKfo6V?= =?us-ascii?q?6RztU+aRJC13hHNjeL+niBay8FSgyu3hVsavylpFsi1FktzKu3sQ1BLT8tCKRu?= =?us-ascii?q?Zh8kquwzqC2ALe5vtKLEwqj6bWKZ0szqYtmpcSrUjPBDL6lFvygaOMa0kp9Oul?= =?us-ascii?q?5/75brn4ppKRMZJ/hBvkPaQ0gMO/BPw1MggQUGif/uSxzKXt8FH+TrlWk/E6i7?= =?us-ascii?q?TXvojHKcgCoa62GBFa3pwk6xaiEzepy9MYnWQBLF1YYh6Hl5LpO1bSIP/mEfi/?= =?us-ascii?q?n1WskDBtx/zcOb3hH4nNLnzEkLfmfrZx8VJTyA02zdxH5pJUDK8OIO7rV0PsqN?= =?us-ascii?q?DVAQU1PgO2zur9BthxyJkSVGCMD6OBNaPdq16I5uYhI+mWY48VvS7wK/Y/5/H0?= =?us-ascii?q?i382hVgdfaiy3ZcNdH+0BO9pLFuDYXXyhNcBHnkFvhAlQez0klKCVyNcaGioX6?= =?us-ascii?q?0n5zE7DJ6mAZ3dSY+wnbyNxD27EYFOZmBaFlCMFm/leJmeVPcJbCKeO8thkj0f?= =?us-ascii?q?Vbi9UIIhzhGvtAriy7V9NObU+ysYtYji1Ndv/eHTmwsypnRICJG6+GiISylRl2?= =?us-ascii?q?IMRjk5lIR+ulA1nlyK1Kw9h/1DCfRS4elIW0E0L8iP4fZ9DoXcQAvHddCIUx6M?= =?us-ascii?q?b++LJx4cdJplzcUHZU16Gs7khVbJ0jCnBbAYjZSVDZo4/7jW3nztYctx1iCVh+?= =?us-ascii?q?Eak1A6T54XZiWdjall+l2WWtbE?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0C6AQDtJtlYh04gL2hcHQEFAQsBGAEFA?= =?us-ascii?q?QsBgmRCZFYHNYNbiwKoMwEliVYUAQEBAQEBAQEBAQESAQEBCA0JCCgvgjMigmo?= =?us-ascii?q?EEXYCJgIhKBYNCAEBigMBBAmbU4QZAgKLaYFsOod/AQeCNwsBAQEfBQkBgQGHS?= =?us-ascii?q?IpEgl8BBJBgi3schl+dAAKSKAGBPDaBJVtUhGklgWiIfwGBDAEBAQ?= X-IPAS-Result: =?us-ascii?q?A0C6AQDtJtlYh04gL2hcHQEFAQsBGAEFAQsBgmRCZFYHNYN?= =?us-ascii?q?biwKoMwEliVYUAQEBAQEBAQEBAQESAQEBCA0JCCgvgjMigmoEEXYCJgIhKBYNC?= =?us-ascii?q?AEBigMBBAmbU4QZAgKLaYFsOod/AQeCNwsBAQEfBQkBgQGHSIpEgl8BBJBgi3s?= =?us-ascii?q?chl+dAAKSKAGBPDaBJVtUhGklgWiIfwGBDAEBAQ?= X-IronPort-AV: E=Sophos;i="5.36,231,1486422000"; d="scan'208";a="218213948" Received: from mail-sn1nam01on0078.outbound.protection.outlook.com (HELO NAM01-SN1-obe.outbound.protection.outlook.com) ([104.47.32.78]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/AES256-SHA256; 27 Mar 2017 16:53:19 +0200 Received: from BLUPR08CA0070.namprd08.prod.outlook.com (10.141.200.50) by BLUPR0801MB1635.namprd08.prod.outlook.com (10.163.123.157) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.991.14; Mon, 27 Mar 2017 14:53:17 +0000 Received: from BL2FFO11FD018.protection.gbl (2a01:111:f400:7c09::135) by BLUPR08CA0070.outlook.office365.com (2a01:111:e400:88d::50) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.991.14 via Frontend Transport; Mon, 27 Mar 2017 14:53:17 +0000 Received: from mailgate.vanderbilt.edu (129.59.15.81) by BL2FFO11FD018.mail.protection.outlook.com (10.173.161.36) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.977.7 via Frontend Transport; Mon, 27 Mar 2017 14:53:16 +0000 Received: from ITS-HCWNEM120.ds.vanderbilt.edu (10.1.154.70) by mailgate.vanderbilt.edu (10.1.140.92) with Microsoft SMTP Server (TLS) id 14.3.301.0; Mon, 27 Mar 2017 09:53:14 -0500 Received: from krypton.csb.vanderbilt.edu (160.129.138.225) by smtpauth.vanderbilt.edu (10.1.154.70) with Microsoft SMTP Server (TLS) id 14.3.301.0; Mon, 27 Mar 2017 09:53:14 -0500 To: OCaml Mailing List From: Francois BERENGER Message-ID: <703b6bb1-7a0d-27d6-4d10-cd52fdf03500@vanderbilt.edu> Date: Mon, 27 Mar 2017 09:53:14 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [160.129.138.225] X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:129.59.15.81;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(39840400002)(39850400002)(39410400002)(39860400002)(39450400003)(2980300002)(438002)(189002)(199003)(47776003)(6306002)(64126003)(3846002)(66066001)(6116002)(189998001)(65806001)(65956001)(36756003)(230700001)(38730400002)(110136004)(86362001)(7636002)(7736002)(54356999)(33646002)(7596002)(8936002)(305945005)(8676002)(2906002)(31696002)(50986999)(5660300001)(106466001)(356003)(88552002)(23676002)(31686004)(6916009)(65826007);DIR:OUT;SFP:1101;SCL:1;SRVR:BLUPR0801MB1635;H:mailgate.vanderbilt.edu;FPR:;SPF:Pass;MLV:sfv;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BL2FFO11FD018;1:9MjjSZv7+grrTMWrlfy/xFAXBDwpbC3be203nybbt8OHyiVxGYFl5LYCyvGw912GxHb+p4hFjZIDxAoex3IIpYCMy6/K0SQLI7zb83CzbgJES/YNUA+pAzwCcQhyr9sq3i5kvNLaH2Nv76QP4D+PdkpyCtwXXyGxVOCiX31/eLOTfTblt2Cw8zqDMujD1dX65ymWjtTxuHI9H87w+Hyf32SEsxjD1jg2hDlTSb5Ly4JEQ/P+eMfNER6aWfy6yaf+ewoayvV04Lt8mCU5//KYwkDjXidvhfDKPWKtn1Y03RPFyqVqxcD+AE9/loupVw9wlzOdzBSxAkwH6A/fZQBlyfVrRH+fy6h9yYe5sKv8E9Bj3D75uXd3978pGD3tBTwNMBB1vdCxa9IjXos6Ky6KbjkiFMfxU0DMW3wSd6cD+IcgOb1+oH2PMiNXKbpkKOrUT/CoCXo/eoBog1qGSrAbyYiEvTq1WoAnhlSytBCbvgCljYNoW/rcZmcSWVxM5KTOhfiCr9Q/TAqPC7Wz9QZk3yb5qZFBVFs2yIG7/iAoaFQ= X-MS-Office365-Filtering-Correlation-Id: 62c1b944-61fe-4c59-98e1-08d47521003e X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(8251501002)(2017030254075);SRVR:BLUPR0801MB1635; X-Microsoft-Exchange-Diagnostics: 1;BLUPR0801MB1635;3:n59E477otq5NgHOdoX9d+QQkiukXj1meHxRguRotHnCjQ3ZwATO4FuFp6oBkIMdQITfUKvKbSdOmuylcPNR+KSarzAfKJ0wRUPUWzmraIUou328iQSlwfyzRODcnOjr1pxUJ9LBoKwR+EYOURagGq1qRdrvUHia3y1+oFu6E4l9k2iJgQY98Ct8XXm+BJF46s6m01xFrzNOIU8WXegOTbsqvatGuQamLS3J6473oIfBwvfzwPtw5t/0OujDjCbaYTLZQHFNt5331/Rwng8sHsAzcSWWZQ6Irz3ACkCOv+YA1q6qedBjs4w7f7YfkL6HTOYCPmkT/KsP5kbVF8OoCRMGPG2EC0IEH71+9YDIxeDqzZRV4v9qtwRw1I8yKxEHHCyhFaMp6SRmxw/AvR8gJkJkc2lalzjv5LbU9YCIybx8=;25:bn1IeJwAtRnWPuKylZgF3Wr01K2R7p+gwzl+UaFYVdStwKhUz67dzXyYYZE7IbsfcjbDLTdkqrUm5dMCbDzJn3JRvPc2MJAAGdFnlzsiLacHhvGIqPOS+REQsmMeaAk5EpfC9l7sYwUijYlT0eFLhsYzGD84qc3S5NfXGqRY6XFsXLdCF1uDmwrkI6FiNMfIdBKZpomD++iMAvEnL+DwdzP1Atx0XajeGbuCT5TL4SDj4jdlaPyJeRkaCDJCjC4oM7o0zeDGTmFf/mOJ3c+yI9j00Z5u6tvUdWKEZpkY+S3rUCQttQPJ+TRP9DUWSHOyq5CNg2FLg3w2FIzj+J60L+GPInw6d1P9huQmljxaRqdAPS6xeNhjpXOz4arxa1m4o3YOjHirCRVk5a30Fq6aSnuxqFC9U90pHbGblYnAY6XUSGdZ2QWDwYt5AWwicaO1+COQYcBx+1XV1WUPCTQKpg== X-Microsoft-Exchange-Diagnostics: 1;BLUPR0801MB1635;31:EuX+PFiYoK9arFA83tg4A8d+pQg5+P6Pn5HeM6WQ5ThD+IfK8MJCUE0MKC9S/mcMcgIrfSfBVthj/nbY9MjuopNU2mp1dBszJsLuZzw5GycN5uBWZi4eu3s8s0zxTD34siqpJraLS4kO6ByLMWo9/oKRTx/uBALWu7Y6U/i3LbLqWx/10E0IyjTv8oyC00yKRDdAvl7IO/3mH43Ybcf6+Cb1mLuG33TST2iH1A4g9DzgPp7P71J7NWo8TtdBXW1ZWLK+MFTog5d7UUSnFFqAHcqxMJdfPuVhHVL/cwCAto8=;20:mTP7J6SN4wTVgz2/540Zn97mFvKEMDANgLwPyO+V/vX2EkFu3PXU4Pidpy7+HhN1GJKCnF22W5XEpVJl9ZCZ6zPRIxR3S4CuAbBJZMc2YH8SorQ7toFSUS5EzhxH1NkSzuqP5yaL937Jghq1+00uZ2+JPbQOMfojlaJXW7lGhsSLitcC/OtmetwCYgWmc+M6WlEwFp5dOxagDdPwcB3wBKJ5f2AZB7O1LhWAqtHShv3KCMFmX+UAiSTPTRAnaJdSd94qMGchv3xrywie1j0IAQdB8jmdLQR8OzdDUnB8suNSND10X+snrVLtzbD+ogyoxIl4Hqi23ye/QQoEC0MFR58DAQbF+6VVTsr+sPoY5k6JtXx3pYhoSuOUgn2Mjz/AutwTPhlnkBi8Ff7PSzpGm0DxAEKG8EldLq/6WIcm2MNSggaM5lpBr2tSlmvfFVefp2xSCYmDTdZYA/+t9HyhIDVct2y9MasAYfosku3biThFRJj6W2NNldgF3IMhPigB X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(166708455590820); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(8121501046)(13016025)(5005006)(13024025)(13023025)(13018025)(3002001)(10201501046)(6041248)(20161123560025)(20161123558025)(20161123555025)(20161123562025)(20161123564025)(6072148);SRVR:BLUPR0801MB1635;BCL:0;PCL:0;RULEID:;SRVR:BLUPR0801MB1635; X-Microsoft-Exchange-Diagnostics: 1;BLUPR0801MB1635;4:CgesePaJ8o0G3QQK15WgodpxYK4LUtjuhYnVlxiaj2p6DTIy9//0+ZYmz1gfgvqHf7t0MBwz0HAp1EKtx0npv0TR+Ln64cYb4hFVWSE9baUNgZPhoYVmifqjQPNWNY8NIMRwmYzIxD9z7LrPcBB8fqcWbRcRsfdfSpJPnjFlrruBFVJfzzFG3p98qvqMj8UaA/9VTzq7I34vRvqe/0nUDe7qzZs0iuMKrAbT60csVP5d0owSyHY18Mj7qYR1I+nfsDJq2Wut31iPvNrXsbIm5KGZTrgRDxksXFmfIVyJTYSnisr/13lpOcwki11lGdbDBGm8MOgPH12+UZCpSko63nWG1UfX+aIccdLRydZF5OuB30nOEekVwcjgtiLUTfE+1A48E6xgFtGuPhYMaZtQQxJraEeU4MHGTIMzA9GEj9EkF2H8gnbYt6GNDs0uywCZKeky3+dLtjNuPjDcpAGlG4D1/7XQ7pzzbsazfcCTU8lZCxnHPR2YmZHyvRVMY9KkOznw+qw0o/Q6oh+N8YKHrqfyi1iY/dxDNqMUGTMopPtU1oMkiadGJi3dSO4SLlO8AXpndWYNjgv7ubcKS9hyMFGA4vwWimJf8UhLfBPNxYrsLs/4tEhahUENQSmZ2lxVP8B2I+ph+ZfnZZnAqIGKWCOyTZbaqr3uOahz02RAjpPSpoV0wuRRg7Uyxy2WbNj1xdSiv2YownZrpQR2Zx41bJHK69S7K9LZ9Y4UfJGB+KA= X-Forefront-PRVS: 02596AB7DA X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTFVQUjA4MDFNQjE2MzU7MjM6bFhzaXFRRmZWSmlubHl4ZlpHWmowZjZr?= =?utf-8?B?OVAxeTUzVVVqUVVXTThIZEpPNWxWT2NtZ2RuWlE1WWhuWlpXLzRIZi9ZRGZF?= =?utf-8?B?Q1BQVmwybS80SHZqdTN1ekR2ZXFYRFVGTTlPWWUwNXpJZjJwMEJpQnpSUDVm?= =?utf-8?B?MnlSRWdKeDhTbDNjemJkYnVrYTk4SlJKb1FncEdreGlEWUMxK0UyYitYMXpD?= =?utf-8?B?YTdzb0JGNGhUMEFqQVhmUGJFWlcxSk9WL3JwcHVRTXJ4Wnh2RWN4amZMM0xU?= =?utf-8?B?WEFJVjJzREhZamQyc3N1cWpJdEV1eENuQ0FNd254QmVXWHZzdHB0dERxSGpT?= =?utf-8?B?UlZzZnBSNWR4eTNsQ29DQ2tzUDlTRmc2eXN0T05PekRqSGhDaDFqRTFwUURE?= =?utf-8?B?NVpET1l6ZWhtNlpmQThjZXhraE5tdTJKdWZaOXQ0NzFWLzlZenU3QUVXdVlx?= =?utf-8?B?TkNYamhvdkdWbDNzK0N3L3R2ckEvUVFpbWw2RmxjZjJxSkZQa3RFQlZ3RTRj?= =?utf-8?B?WkVwaWhjVnArT0czcVdJSndva0l4VXZKR2ltdXV3ajU5WlBmWXloTU1zbCsx?= =?utf-8?B?ZW0xTFFvMHlkM2tVcStHdEVnMGJteGhScHgvOURvVEtMdEZBRzlseHB3akpj?= =?utf-8?B?VFBMUVFMc2w1eGw1VzNUTjdtNlNpTUdubFBhNDU4a2lzZ2g4d2xCdExuU1Y4?= =?utf-8?B?WTBUZUhJSEpIOWJ1MXVnMEdEZFZ6VVRLNHhDT01XZHBEVzhaZk1WNStnK0xF?= =?utf-8?B?SmFGd0VPUzdnMzhGS2VLSCtNTzg0MWdodVpVWU9EVitpblExRkdQQjFiL0Nv?= =?utf-8?B?dzBzdzFHemxwWndxaWE4ZUYzOExtcE8rNUxqNTJBblNSUDAyU1RNeVZHRTRo?= =?utf-8?B?QlBsdUdld0l0a0NLRDVOTWJWNldKQlhsdW93VXBYZWN5Z21GZXEvYWZwL29o?= =?utf-8?B?N1l5UHpoS1FWMnR1aEp4dUpLdzBtVXgvOG1LcDdhVnhHdDk0TU94eHUySDda?= =?utf-8?B?RHRFaGgwK2JRRm5mTzZYYS9VbUw0WFoxNjBiWGxTSG5HS0NlV05SS09tb0pL?= =?utf-8?B?TmRIRzNmQjJsdnorVWk4d3UwODZpNHNzSW0wNnFjcHR2ZzdkNEhCS0J0WVJl?= =?utf-8?B?ek0vTlJFbHVjdXdCeFA0OG1FV2drdG1VTHh1YU5GbnM4VnV4dFROd1RrNW1Z?= =?utf-8?B?T2tQS0JjT1ZyR2J6UlA5V0YzRmxTVlJqVk1yYU5TUTFxcWtwUGdpRzJONDdC?= =?utf-8?B?UTY0bExwTE5rZlRWd1IwTi9JcVVLL2NZMjYzTDlMTDN1TjJ0a08zUFd1RWU3?= =?utf-8?B?TDVRNEUrMUx5b04zNTZVSFdkWmxEOVNXV0NoejJzMG9FWlZNWUdlWW9iM1g5?= =?utf-8?B?K1E0Y3U2OEIzdVg5eHdCNjFheDZaUFRocGRwZmhjN09GUytMMk9yaC9EWXZC?= =?utf-8?Q?uiroT6ac=3D?= X-Microsoft-Exchange-Diagnostics: 1;BLUPR0801MB1635;6:oYAc7jMeExf+eFxGX4yCAbbg/vxTY6LexoqY8dK9J/UphV1GZe6dSQH71kDYVEWZtrJ5TqIwNqOTICR7zKIQPYA9Qkf585zUK9Szk2hqtZlHK/a0vGVFJItS+h9aLU+tv0TjIY0JBBgqHjx+kT35fTHZyBLs3RsoKLaFnGPN5u+xLAPqcJiEJuaaEpvmIOlM5PXcChqIvHDt7RDxYe6r6Q8qC8MmAwySQjO2ITl1WLbfaOwHIDbRPmGYJvr2XWwMzIWtg//wVquwEfmS5g7mbz7IhEm5yMfe+mSPMcRZy9QGVigulitK/AhCoDXJPdyrls7DThDHrK+jggrIENinAyWF0p8zOsk+5tFWIwIJ1ZzWHstSBFrwkW2mTQaP9ooIHuiH/u6zkvJxmC1K9WEpgA==;5:xYK11aTpcn10JCowj9XqC/aXd+T9H4MveYXUCVzTwymgf9t4kOLydo2gTv9zlLgGqQcjHcLHGfLeAnVN7gZrlIsJa3tsTIYeRV1sWJufs9wY6G6wCBZmEB7B0NtPinhF+8sHaYwXwISBAHlPD1IpoA==;24:/uRTjwf/LfKIEpv2FtGfIrUi5bky4OwuMhxt1W19mIPFU/yY5UzqnRtEbxmGnJxeGGQmwXUOMCT20Je6uxaIueqq8jh2elqBScvWwtWP+pE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BLUPR0801MB1635;7:vu2fbEBRlCnxJKbfjDFCgMHoRjzwZLQ1bco0uWT3NUifHdGsTwJgzYVzYNk6C2b49hflS4x/lVPQcfzJ7CPgJ0q4miqSYoushm1hyjzorbEMInMs1ncD2V3t/O/5pB2THr/xkreaEhNXLhk8dqn9TnPdG1G0DSAbCiEuofpCgtm/NyOn3gOEY1/8fOgi87a300P6ZcFx8aMOtk+Moiztlz629uc6RSNUpGEIZRlk6Tz+6ey0iFyJ9Cb58NyFO5gZUDmNagOcCbXqgcEI5XobCV0XkTZmiLOOxJl3O0ZVy3ghCjO5WL95nAJ8U2Oh+oPMl1CM4cUUnzTq0Wh3ufrWQg== X-OriginatorOrg: vanderbilt.edu X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2017 14:53:16.1903 (UTC) X-MS-Exchange-CrossTenant-Id: ba5a7f39-e3be-4ab3-b450-67fa80faecad X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=ba5a7f39-e3be-4ab3-b450-67fa80faecad;Ip=[129.59.15.81];Helo=[mailgate.vanderbilt.edu] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0801MB1635 Subject: [Caml-list] [ANN] first release of minivpt: a minimalist vantage-point tree implementation in OCaml Dear list, A vantage point tree allows to do fast (but exact) nearest neighbor searches in a space of any dimension provided that you have a distance function (to measure the distance between any two points in that space). The code is here: https://github.com/UnixJunkie/vp-tree The interface looks like this: --- type 'a t val create: ('a -> 'a -> float) -> 'a list -> 'a t val nearest_neighbor: ('a -> 'a -> float) -> 'a -> 'a t -> float * 'a val to_list: 'a t -> 'a list val is_empty: 'a t -> bool --- The creation of a vp-tree can take some time. Queries are supposed to be fast. In my tests, queries can run several times faster than a brute force search once you have enough points indexed by your vpt. The implementation creates an optimal vp-tree; don't use it on large points set (> 10,000 points). You can install it via: $ opam install minivpt Contributions are very welcome to support large point sets, queries with a tolerance parameter (as in "only points within distance to query less than the tolerance"), and returning all points (instead of just one) if there are several points within the same distance to your query point. A usage example might be: --- let vpt = Vp_tree.create distance_fun points in let dist_to_query, nearest_point = \ Vp_tree.nearest_neighbor distance_fun query_point vpt in [...] --- My implementation follows the paper: "Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces" by Peter N. Yianilos. Regards, Francois.