caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: "Richard W.M. Jones" <rich@annexia.org>
To: Philippe Veber <philippe.veber@gmail.com>
Cc: "Petter A. Urkedal" <paurkedal@gmail.com>,
	ptoscano@redhat.com, caml users <caml-list@inria.fr>
Subject: Re: [Caml-list] What if exn was not an open type?
Date: Wed, 25 Oct 2017 15:52:47 +0100	[thread overview]
Message-ID: <20171025145247.5rxad7qixivzn4vj@annexia.org> (raw)
In-Reply-To: <CAOOOohSr1jKEDkS753g9ON+GLiSvYo1daPmcgrA-FgneMYaztw@mail.gmail.com>

On Wed, Oct 25, 2017 at 11:12:26AM +0200, Philippe Veber wrote:
> isn't that a context where error monads do a pretty decent job?
> 
> check_some_problem () >>= fun () ->
> check_some_other_problem () >>= fun () ->
> expect_something () >>= fun something ->
> finally_do something

Right, but the main problem with monads is they scare off ordinary
programmers :-/

When writing open source code in OCaml we have two -- conflicting --
goals.  Goal #1 is to write elegant, short, fast, safe code, and OCaml
really wins there.  Goal #2 is to attract outside programmers to work
on the project, and that's pretty hard with OCaml code, but we manage
it.  But it gets much much harder if we use any concept which strays
too far from imperative/C-like code.  You will see if you look through
our codebase that it's pretty imperative and -- quite deliberately --
avoids doing strange stuff with modules, functors or really anything
which is "excessively functional" (sorry for the loose term, but I
hope you know what I mean :-).

However when I have the time after my current conference I will try
to rewrite the code I linked to with monads to see if I can make
something which is both simple and readable.

Thanks,

Rich.

  reply	other threads:[~2017-10-25 14:52 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-20  9:56 Malcolm Matalka
2017-10-20 10:55 ` David Allsopp
2017-10-20 11:21   ` Ivan Gotovchits
2017-10-20 11:38     ` Simon Cruanes
2017-10-20 16:54       ` Malcolm Matalka
2017-10-20 19:47         ` Simon Cruanes
2017-10-21 21:15           ` Malcolm Matalka
2017-10-24 13:30       ` Richard W.M. Jones
2017-10-24 19:02         ` Petter A. Urkedal
2017-11-04 18:44           ` Richard W.M. Jones
2017-11-04 18:48             ` SP
2017-11-04 18:53               ` Richard W.M. Jones
2017-11-04 19:03                 ` SP
2017-11-04 19:01             ` Max Mouratov
2017-11-04 19:16             ` octachron
2017-11-05 17:41               ` Richard W.M. Jones
2017-11-05 18:39                 ` Yaron Minsky
2017-11-05 20:49                   ` Gabriel Scherer
2017-11-05 21:48                     ` Yaron Minsky
2017-11-05 21:53                     ` Petter A. Urkedal
2017-11-05 18:02             ` Petter A. Urkedal
2017-11-05 18:24               ` Richard W.M. Jones
2017-11-05 18:55                 ` Petter A. Urkedal
     [not found]         ` <CALa9pHQ-nhWf4T0U5gDiKTduPiEeXSZPQ=DY6N1YNbCXqRohPQ@mail.gmail.com>
2017-10-25  8:35           ` Richard W.M. Jones
2017-10-25  9:12             ` Philippe Veber
2017-10-25 14:52               ` Richard W.M. Jones [this message]
2017-10-25 16:37                 ` Ivan Gotovchits
2017-10-25 17:47                   ` SP
2017-10-26  8:06                 ` Malcolm Matalka
2017-10-26  8:11                   ` Xavier Leroy
2017-10-25 13:36             ` Ivan Gotovchits
2017-10-26  7:31             ` Petter A. Urkedal
2017-10-27 13:58             ` Oleg
2017-10-27 14:24               ` Philippe Veber
2017-10-27 14:49                 ` Leo White
2017-11-01  7:16                 ` Oleg
2017-11-04 17:52                   ` Philippe Veber
2017-10-20 17:07   ` Malcolm Matalka
2017-10-21 21:28 ` Nathan Moreau
2017-10-22 12:39   ` Malcolm Matalka
2017-10-22 13:08     ` Nathan Moreau
2017-10-24 11:11     ` SP
2017-10-24 11:16       ` Gabriel Scherer
2017-10-25 11:30         ` Malcolm Matalka

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171025145247.5rxad7qixivzn4vj@annexia.org \
    --to=rich@annexia.org \
    --cc=caml-list@inria.fr \
    --cc=paurkedal@gmail.com \
    --cc=philippe.veber@gmail.com \
    --cc=ptoscano@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).