caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Alexey Rodriguez <mrchebas@gmail.com>
To: yminsky@gmail.com
Cc: Rich Neswold <rich.neswold@gmail.com>,
	Inria Ocaml Mailing List <caml-list@inria.fr>
Subject: Re: [Caml-list] Preventing values from escaping a context
Date: Thu, 11 Feb 2010 11:39:07 +0100	[thread overview]
Message-ID: <4b39c80a1002110239i2fc1f555if642ed6a589d5b66@mail.gmail.com> (raw)
In-Reply-To: <891bd3391002081959i4f9b70d4re1914ad7e439b5e3@mail.gmail.com>

On Tue, Feb 9, 2010 at 4:59 AM, Yaron Minsky <yminsky@gmail.com> wrote:
>
> I don't know that monads solve your problem here, but monads are a perfectly
> reasonable idiom in OCaml.  You won't find them in the standard library
> because the standard library is very conservative.  But you will find them
> in Jane Street's Core library, and we use them reasonably often.  I think
> there's no reason to avoid monads in OCaml (although obviously there's not
> much to be gained by using them for vanilla effects, as is done in Haskell.)

This is interesting. We have been considering using monads where I
work but we worry about possible performance problems. Have you
experienced reduced performance? Also, do you have a guideline on when
to use them? We are thinking of using monads in a DSL, but only to
build values (think of some kind of compilation) that can later be
efficiently inspected.

On whether monads can solve the problem in this thread, yes they can.
But for this you need support from the type system (rank-2 universal
quantification). This is what Haskell does with the ST monad. The
compiler detects the value leak and aborts compilation with a type
error. If you are interested in a reference I can dig it up later.

Cheers,

Alexey


  parent reply	other threads:[~2010-02-11 10:39 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-09  3:07 Rich Neswold
2010-02-09  3:38 ` [Caml-list] " Jacques Garrigue
2010-02-09  8:24   ` Miles Sabin
2010-02-09  8:43     ` Jacques Garrigue
2010-02-09 17:18     ` Rich Neswold
2010-02-09  8:31   ` Tiphaine Turpin
2010-02-09 18:09     ` Rich Neswold
2010-02-09 18:45       ` Tiphaine Turpin
2010-02-10  0:39         ` Rich Neswold
2010-02-10  8:55           ` Goswin von Brederlow
2010-02-10 18:00             ` Rich Neswold
2010-02-10 21:37               ` Goswin von Brederlow
2010-02-09 17:13   ` Rich Neswold
2010-02-09  3:59 ` Yaron Minsky
2010-02-09 17:16   ` Rich Neswold
2010-02-11 10:39   ` Alexey Rodriguez [this message]
2010-02-11 11:05     ` rossberg
2010-02-11 13:52       ` Alexey Rodriguez
2010-02-11 15:17         ` rossberg

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=4b39c80a1002110239i2fc1f555if642ed6a589d5b66@mail.gmail.com \
    --to=mrchebas@gmail.com \
    --cc=caml-list@inria.fr \
    --cc=rich.neswold@gmail.com \
    --cc=yminsky@gmail.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).