Also, Core_kernel's Sequence type fills a similar purpose. And Flambda does a good job of optimizing the iteration in Sequence, from what I've overheard about our experiments. On Thu, Apr 21, 2016 at 5:32 AM, Jonas Jensen wrote: > 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 > > -- > 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 >