unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
From: Catonano <catonano@gmail.com>
To: Chris Vine <vine35792468@gmail.com>
Cc: guile-user@gnu.org
Subject: Re: dynamic-wind
Date: Wed, 5 Jul 2017 08:14:38 +0200	[thread overview]
Message-ID: <CAJ98PDxsMStZKFnTuG1VYxpdnTXZcEPh1gmoYOR9BZzj+82fbg@mail.gmail.com> (raw)
In-Reply-To: <20170702125831.192ddaec@bother.homenet>

Chris,

thank you for your remarks.

Yo're right that I was being caught up by continuations AND that I was
probably missing the generality of the concept of dynamic wind

And yet, I still want to clarify my point

My point is not that the manual is incomplete or inaccurate

My point is that the manual does not a good job of _introducing_ people to
the concept of dynamic wind

Especially people wo have not clear in mind a complete map of the use cases
with relative possible solutions.

The manual tends to be a very good reference for already educated people.
But it's not as good in educating people in the first place, in my view.



2017-07-02 13:58 GMT+02:00 Chris Vine <vine35792468@gmail.com>:

> On Sun, 2 Jul 2017 08:00:58 +0200
> > aahh I see now
> >
> dynamic-wind is much more general than just for dealing with database or
> network connections, which I think would be a poor focus for the manual.
>

I was not suggesting to _narrow_ the focus of the manual

I was suggesting to use a more mundane example as an _introduction_ to the
functionality of dynamic wind

The current example could still be given, maybe as the last one

A general principle for the Wikipedia pages is to use an informal
description first and then move on to more formal discssion later in the
page

To allow both audiences (interested in a quick overview and interested in a
deeper analisys) to be served

So I was thinking that the same principle could be used for the discussion
of dynamic wind

I failed to declare this bakthought of mine, though.

That didn't help clarity.

I asked Amirouche his opinion about this threas and e raised several more
points but he also used this sentence (quoing authorized by Amirouche):

"With that thread, I understand the use case of dynamic wind now."

So he wasn't understanding dynamic wind before Panicz's explaination

That seems to confirm my view that the manual is not a great introduction

That said, Amirouche observed that in his Wiredtiger access layer, a state
depending on the db is created and when leaving the dynamic wind context
that sould be unrolled

When reentering it should be properly reproduced

He also considered taht probably in his case, the oprtions of leaving the
context because of an exception and because of an intentional step should
be treated diferently, as you observed


> Having said all that, dynamic-wind is not the answer to all cases where
> control leaves a block of code non-locally.  It is best suited to cases
> where invocation of a continuation object or the raising of an
> exception fall to be dealt with in the same way, say by releasing a
> resource such as by unlocking a mutex or closing a port.  But that is by
> no means always the case - the invocation of a continuation object is
> usually a deliberate programmatic strategy, whereas the raising of an
> exception is usually not so and instead represents an unexpected
> failure event of some kind in the program.


Wrapping up: I concede that dynamic wind is more general than network or
dbs, and that doesn't even exhaust the whole range of possible cases
(thanks !)

But the manual could be improved nonetheless (unless it is meant to NOT be
a tutorial)

One last note: Amirouche lost this thread in his email client and asked me
to post something so he can recuperate this thread and intervene, perhaps


  reply	other threads:[~2017-07-05  6:14 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-30 20:33 dynamic-wind Catonano
2017-06-30 21:48 ` dynamic-wind Panicz Maciej Godek
2017-07-02  6:00   ` dynamic-wind Catonano
2017-07-02  6:01     ` dynamic-wind Catonano
2017-07-02 11:58     ` dynamic-wind Chris Vine
2017-07-05  6:14       ` Catonano [this message]
2017-07-05  8:23         ` dynamic-wind David Kastrup
2017-07-08 20:03         ` dynamic-wind Amirouche Boubekki
2017-07-08 21:34           ` dynamic-wind Marko Rauhamaa
2017-07-09  7:21             ` dynamic-wind David Kastrup
  -- strict thread matches above, loose matches on Subject: below --
2017-07-09 12:59 dynamic-wind Chris Vine
2017-07-09 14:09 ` dynamic-wind Vítor De Araújo
2017-07-09 14:49   ` dynamic-wind Chris Vine
2017-07-17 10:04     ` dynamic-wind Catonano

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

  List information: https://www.gnu.org/software/guile/

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

  git send-email \
    --in-reply-to=CAJ98PDxsMStZKFnTuG1VYxpdnTXZcEPh1gmoYOR9BZzj+82fbg@mail.gmail.com \
    --to=catonano@gmail.com \
    --cc=guile-user@gnu.org \
    --cc=vine35792468@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 read-only IMAP folder(s) and NNTP newsgroup(s).