Boost logo

Boost :

Subject: Re: [boost] [contract] toward N3351 concepts
From: Andrzej Krzemienski (akrzemi1_at_[hidden])
Date: 2012-09-27 12:20:34


2012/9/27 Andrew Sutton <asutton.list_at_[hidden]>

> I'm glad to see this discussion.
>
> >> > I believe that N3351 is not a good place to learn axioms from.
>
> It's a reasonable place to start as long as you don't expect too much
> from them. The axioms presented in that paper were primarily intended
> to document the semantics of a type; we had not planned (at that time)
> any particular ideas about how they should or could be used by the
> compiler.
>

The point I tried to stress is that equivalences and implications in axioms
were not intended (at least in N2887) to be operations on boolean values,
but on expression trees. This difference is negligible when describing
immutable functions that return values (common in STL) like:

  *op(a, op(b, c)) <=> op(op(a, b), c)*;

But becomes important when dealing with functions with side effects and
functions returning nothing:

* ++i <=> i += 1
  c.resize(0) <=> c.clear();*

N3351 describes axioms as operations on boolean values, but it was my
impression that the authors still intended the behavior similar to that of
N2887, but chose not to describe it at that time. Or am I wrong?

Regards,
&rzej


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk