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 mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 6B8B27EE79 for ; Thu, 21 Apr 2016 11:32:03 +0200 (CEST) IronPort-PHdr: 9a23:qjWi8BV+IyILdbf3xubp7Grq2tbV8LGtZVwlr6E/grcLSJyIuqrYZhKOt8tkgFKBZ4jH8fUM07OQ6PCwHzJQqs/a+Fk5M7VyFDY9wf0MmAIhBMPXQWbaF9XNKxIAIcJZSVV+9Gu6O0UGUOz3ZlnVv2HgpWVKQka3CwN5K6zPF5LIiIzvjqbpq82VPVUD3WH1SIgxBSv1hD2ZjtMRj4pmJ/R54TryiVwMRd5rw3h1L0mYhRf265T41pdi9yNNp6BprJYYAu3SNp41Rr1ADTkgL3t9pIiy7UGCHkOz4S4zSGgZlQBZSy3M6BzxXp655iT/v+5w0ymTFcLzRLEwHz+l6vE4ZgXvjXIlMDgw6yn1h8prgaQT9BCjjx1k2JPJJoqSMawtLevmYdoGSD8ZDY5qXCtbD9b5NtNXAg== Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=jj@issuu.com; spf=Pass smtp.mailfrom=jj@issuu.com; spf=None smtp.helo=postmaster@mail-lb0-f182.google.com Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of jj@issuu.com) identity=pra; client-ip=209.85.217.182; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="jj@issuu.com"; x-sender="jj@issuu.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of jj@issuu.com designates 209.85.217.182 as permitted sender) identity=mailfrom; client-ip=209.85.217.182; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="jj@issuu.com"; x-sender="jj@issuu.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-lb0-f182.google.com) identity=helo; client-ip=209.85.217.182; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="jj@issuu.com"; x-sender="postmaster@mail-lb0-f182.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0AVAQBvnRhXkLbZVdFeFoN1fQauDYpmgnYkgjqDMAKBIwc7EQEBAQEBAQEBEQEBAQEHDQkJIS+CLYIVAQEEEhEEGQEBNwEPCwsDCgICJgICIQESAQUBHAYTIodzAxIOoCyBMT4xik9nhEEBBIdVDYRwAQEBAQYBAQEBFgYKcoUlhEuCQYFIgzaCVpdjMYV7gnWDLoF2gjSMXIdPhiERHoEONoIjHoFVOjABiEYBAQE X-IPAS-Result: A0AVAQBvnRhXkLbZVdFeFoN1fQauDYpmgnYkgjqDMAKBIwc7EQEBAQEBAQEBEQEBAQEHDQkJIS+CLYIVAQEEEhEEGQEBNwEPCwsDCgICJgICIQESAQUBHAYTIodzAxIOoCyBMT4xik9nhEEBBIdVDYRwAQEBAQYBAQEBFgYKcoUlhEuCQYFIgzaCVpdjMYV7gnWDLoF2gjSMXIdPhiERHoEONoIjHoFVOjABiEYBAQE X-IronPort-AV: E=Sophos;i="5.24,512,1454972400"; d="scan'208";a="215248493" Received: from mail-lb0-f182.google.com ([209.85.217.182]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 21 Apr 2016 11:32:02 +0200 Received: by mail-lb0-f182.google.com with SMTP id ys16so23779130lbb.3 for ; Thu, 21 Apr 2016 02:32:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=issuu.com; s=google; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc; bh=PQO1Xm1zlQRaMCCYxSN7kqA+PmoJkq5t11INhl6wFvg=; b=WxekuYAiRncRGhVDI5mzr2nf4/K7Jq+yYamEpi9j/gOAtFQKrkc5TErewF82uSpt8J HWd1n4hz4wWnKpHkUl3gWbifBxMz/gI97z019hQWniykQvAHo/OE8jhu9comAnoZuYeX oGW3vJz99pk/J0cBA6AHSnzAEzy7v8WaXUokI= 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:date :message-id:subject:from:to:cc; bh=PQO1Xm1zlQRaMCCYxSN7kqA+PmoJkq5t11INhl6wFvg=; b=eldAmgXJUIrBBNr0EpliUiQ27mgrSNpQbeNkdRJJ5Y9MZngewPHLt+yWt4a+NALUwp uhejhkvnn1oTDen1CfyG+3QpGW2MSWKxGDfERt+swYrV1/Oq18+RE5flHNH6Q/lN4deA VzhlMpl1PsDNHgTx5mDNHKP8ftg28IHnviZW7BnoxVUWDlw/hD1iUBCrzb2fxwIeORM6 Gy3msqTx4X34KhZAaRSe1DClHSi5XEK/yg7JkJQGdkEo4lz2RDNDIWPzFSQeyuMAlWRh y3QyYfpMq8goxpSK6tS5DyATcMd/tiOTMTNGlmBtp4/1p8b9lsnScWcLoDCUFRq1upO9 Sn4A== X-Gm-Message-State: AOPr4FWnRmQyQYMVuoeusLQO/8n3qJKJ7sgiJOpY70LfrsflciIjsnbyQ1mpgvL+FPRoK4CiYKPYCqlHvKy89V4v MIME-Version: 1.0 X-Received: by 10.112.51.48 with SMTP id h16mr5834889lbo.7.1461231121375; Thu, 21 Apr 2016 02:32:01 -0700 (PDT) Received: by 10.25.152.3 with HTTP; Thu, 21 Apr 2016 02:32:01 -0700 (PDT) In-Reply-To: References: Date: Thu, 21 Apr 2016 11:32:01 +0200 Message-ID: From: Jonas Jensen To: Gregory Malecha Cc: caml users Content-Type: text/plain; charset=UTF-8 Subject: Re: [Caml-list] Question about Optimization On 21 April 2016 at 09:13, Gregory Malecha wrote: > > I'm wondering if there is any work (and interest) on supporting user-defined optimizations similar to GHC's rewrite rules in the Ocaml compiler. For example, a standard example would be specifying map fusion: > > map f (map g ls) = map (fun x -> f (g x)) ls A "boring" and practical answer is that you get this optimization by writing your long chain of map, filter, bind, etc. using Batteries' Enum (http://ocaml-batteries-team.github.io/batteries-included/hdoc2/BatEnum.html) or the stand-alone Gen package (http://cedeela.fr/~simon/software/gen/Gen.S.html). It looks superficially like list map, but the order of execution will be like after a fusion, which should improve cache locality and avoid allocations of intermediate lists. Cheers, Jonas