[Caml-list] Infix function composition operator

2010-11-09 Thread Arlen Christian Mart Cuss
Hi all,

I know this was asked at least 12 years ago[1], but is there any
consensus or reason for there not being a compose function in standard
OCaml, nor an infix operator?

At the moment I tend to let compose or let (-) f g x = f (g x),
but I wish I didn't have to!

Thanks,
Arlen

[1]
http://webcache.googleusercontent.com/search?q=cache:TcqI7o37il8J:pauillac.inria.fr/caml/caml-list/0720.html+ocaml+function+composecd=2hl=enct=clnkclient=ubuntu

___
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs


Re: [Caml-list] Infix function composition operator

2010-11-09 Thread Arlen Christian Mart Cuss
Hi Yaron,

On Tue, 2010-11-09 at 22:45 -0500, Yaron Minsky wrote:
 This is probably a minority opinion, but I have written and read quite
 a lot of OCaml code over the years, and I've seen surprisingly few
 effective uses of the composition operator.  Somehow, I usually find
 that code that avoids it is simpler and easier to read.

I know what you mean - it can make some code more obtuse than just doing
the same thing with a lambda. But I can't help but get the feeling it
has a place here: (note: example is semi-contrived and there are plenty
of better ways to do this, but just as an example)

module CGI =
struct
(* ... *)
  let escape =
let replace = Str.global_replace - Str.regexp_string in
(replace \ quot;) - (replace ' #039;) - (replace 
amp;)

Particularly the second line of `escape', where the escaping mechanism
is indeed a composition of the three replaces as specified.

Comparing that to this:

let escape s = 
  let replace = (* ... *) in
  replace \ quot; (replace ' #039; (replace  amp; s))

.. I prefer the former, as the latter forces me to specify an argument,
and nest the calls to replace. I'm not sure if there are any performance
benefits/losses as a result of computing the function `escape' in the
first example, either, but it's a consideration.

 I'm not averse to infix operators.  At Jane Street we've found the
 following sequencing operator to be highly useful:
 
 let ( |! ) x f = f x
 
 and it is indeed part of the default include in Jane Street's Core
 library.

That looks neat, and I imagine it to be useful, but I can't think of a
concrete use-case off the cuff. Could you give an example?

 y

Cheers,
Arlen

 On Tue, Nov 9, 2010 at 10:19 PM, Arlen Christian Mart Cuss
 ar...@noblesamurai.com wrote:
 Hi all,
 
 I know this was asked at least 12 years ago[1], but is there
 any
 consensus or reason for there not being a compose function
 in standard
 OCaml, nor an infix operator?
 
 At the moment I tend to let compose or let (-) f g x = f
 (g x),
 but I wish I didn't have to!
 
 Thanks,
 Arlen
 
 [1]
 
 http://webcache.googleusercontent.com/search?q=cache:TcqI7o37il8J:pauillac.inria.fr/caml/caml-list/0720.html+ocaml+function+composecd=2hl=enct=clnkclient=ubuntu
 
 ___
 Caml-list mailing list. Subscription management:
 http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
 Archives: http://caml.inria.fr
 Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
 Bug reports: http://caml.inria.fr/bin/caml-bugs
 
 
 ___
 Caml-list mailing list. Subscription management:
 http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
 Archives: http://caml.inria.fr
 Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
 Bug reports: http://caml.inria.fr/bin/caml-bugs


___
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs