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 031C77F720 for ; Wed, 16 Apr 2014 13:02:03 +0200 (CEST) Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of arthur.breitman@gmail.com) identity=pra; client-ip=209.85.215.45; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="arthur.breitman@gmail.com"; x-sender="arthur.breitman@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of arthur.breitman@gmail.com designates 209.85.215.45 as permitted sender) identity=mailfrom; client-ip=209.85.215.45; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="arthur.breitman@gmail.com"; x-sender="arthur.breitman@gmail.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@mail-la0-f45.google.com) identity=helo; client-ip=209.85.215.45; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="arthur.breitman@gmail.com"; x-sender="postmaster@mail-la0-f45.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AhwDAJFHTlPRVdctYmdsb2JhbABZgwaBEoMSwB6BFwgWAxYLCwkVJ4IlAQEBBCMEGQEbHQEDDAYFBAEGDSoCAiIBEQEFARwGEwiHXwEDEZgdjA5Rgw6XZwoZJw1khXMRAQUMjlYHgm+BSQSJX48HkFkYKYR/Hg X-IPAS-Result: AhwDAJFHTlPRVdctYmdsb2JhbABZgwaBEoMSwB6BFwgWAxYLCwkVJ4IlAQEBBCMEGQEbHQEDDAYFBAEGDSoCAiIBEQEFARwGEwiHXwEDEZgdjA5Rgw6XZwoZJw1khXMRAQUMjlYHgm+BSQSJX48HkFkYKYR/Hg X-IronPort-AV: E=Sophos;i="4.97,870,1389740400"; d="scan'208";a="57371895" Received: from mail-la0-f45.google.com ([209.85.215.45]) by mail3-smtp-sop.national.inria.fr with ESMTP; 16 Apr 2014 13:02:03 +0200 Received: by mail-la0-f45.google.com with SMTP id hr17so7881038lab.4 for ; Wed, 16 Apr 2014 04:02:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=T7lFQbTRwVx33Qpi4iY+5pgtogX7eEJqgnNWwEHVrhc=; b=uocMiy61rRBrVc0vn24M6SjnrOMya69Ole7CxHJUYgdsNrCLPqQO/WdzgBpx1cGkQq dfH6ZPqlgk62m1/Uc6fYtX48wnT5zmxrAvQrATpaOziGP8IUbG1Y5E0OfvIzLsNBAXZO gdF6UiFlCTh1pVP+Li3YRtoxj0BPiq9uvRTARw4MZSTj9Hjo4cmixRi0ZP9KhFaxTMWr GQzGtpF7I8+SAuW79dMJxpiB06IaYdweucFfwH35fmzcrEH+flNAaKpN6/CqVwQH/IS6 3FeAbLOHie2oGjvNc8qFqQR3opc0+A5mUYauSBUxdH0UbbmKv4wXxXrm8j3ViGkylluN 6AxA== MIME-Version: 1.0 X-Received: by 10.112.92.80 with SMTP id ck16mr59744lbb.78.1397646122774; Wed, 16 Apr 2014 04:02:02 -0700 (PDT) Received: by 10.114.158.130 with HTTP; Wed, 16 Apr 2014 04:02:02 -0700 (PDT) Received: by 10.114.158.130 with HTTP; Wed, 16 Apr 2014 04:02:02 -0700 (PDT) In-Reply-To: <08C4CEED-FAFF-49CE-9890-7A45C802CF02@gazagnaire.org> References: <20140414081214.GD25532@frosties> <08C4CEED-FAFF-49CE-9890-7A45C802CF02@gazagnaire.org> Date: Wed, 16 Apr 2014 05:02:02 -0600 Message-ID: From: Arthur Breitman To: Thomas Gazagnaire Cc: caml-list , Goswin von Brederlow Content-Type: multipart/alternative; boundary=001a1133675cab78ae04f726d845 Subject: Re: [Caml-list] Keeping A big data optimization problem functional --001a1133675cab78ae04f726d845 Content-Type: text/plain; charset=UTF-8 On Apr 15, 2014 9:50 AM, "Thomas Gazagnaire" wrote: > > > type node = {value: string; children: node list option} > > module type Context = begin > > type t > > val apply: t -> node -> t > > val get: t -> string -> string option > > val set: t -> string -> string -> t > > val fitness -> int > > val empty -> t > > end > > What's the link between nodes and elements of your store ? The only link between the two is the existence of the parametric "apply" function. For all intent and purposes, you can think of the nodes as functions operating on elements of type "register".* -- Arthur * in reality it's a little more complicated as the apply function can return a register with a different apply function, but for our purpose it's irrelevant > > -- > Thomas --001a1133675cab78ae04f726d845 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


On Apr 15, 2014 9:50 AM, "Thomas Gazagnaire" <thomas@gazagnaire.org> wrote:
>
> > type node =3D {value: string; children: node list option}
> > module type Context =3D begin
> > =C2=A0 type t
> > =C2=A0 val apply: t -> node -> t
> > =C2=A0 val get: t -> string -> string option
> > =C2=A0 val set: t -> string -> string -> t
> > =C2=A0 val fitness -> int
> > =C2=A0 val empty -> t
> > end
>
> What's the link between nodes and elements of your store ?

The only link between the two is the existence of the parame= tric "apply" function.

For all intent and purposes, you can think of the nodes as f= unctions operating on elements of type "register".*

--
Arthur

* in reality it's a little more complicated as the apply= function can return a register with a different apply function, but for ou= r purpose it's irrelevant

>
> --
> Thomas

--001a1133675cab78ae04f726d845--