[concept] why is `requires` plural?

Hello all, This might be a very silly curiosity: Does anyone know why `requires` (plural) is used to specify concept requirements? Most keywords (all?) are not plural so I would have expexted `require` to be used instead of `requires`. Howerver, the C++0x proposals and ConceptC++ use `requires`. Consequently, Boost.ConceptCheck uses BOOST_CONCEPT_REQUIRES(). Do you know why the plural form was selected? Thank you. -- Sent from my mobile device Lorenzo

On 05/25/2010 04:27 PM, Lorenzo Caminiti wrote:
Hello all,
This might be a very silly curiosity: Does anyone know why `requires` (plural) is used to specify concept requirements?
'requires' is not plural, but third person, as in "this type requires...". Stefan -- ...ich hab' noch einen Koffer in Berlin...

I see but then the argument would be that C++ uses `return` (infinite form of the verb) and not `returns` for "this function returns this value". Why is `requires` conjugated while `return` is not? Thanks. On 5/25/10, Stefan Seefeld <seefeld@sympatico.ca> wrote:
On 05/25/2010 04:27 PM, Lorenzo Caminiti wrote:
Hello all,
This might be a very silly curiosity: Does anyone know why `requires` (plural) is used to specify concept requirements?
'requires' is not plural, but third person, as in "this type requires...".
Stefan
--
...ich hab' noch einen Koffer in Berlin...
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
-- Sent from my mobile device Lorenzo

On 05/25/2010 05:13 PM, Lorenzo Caminiti wrote:
I see but then the argument would be that C++ uses `return` (infinite form of the verb) and not `returns` for "this function returns this value".
No, "returns" would be declarative, while "return" is imperative. This is a "return-statement", not a "return-declaration", after all. :-) Stefan -- ...ich hab' noch einen Koffer in Berlin...

Got it! Thanks a lot for the clarification. On 5/25/10, Stefan Seefeld <seefeld@sympatico.ca> wrote:
On 05/25/2010 05:13 PM, Lorenzo Caminiti wrote:
I see but then the argument would be that C++ uses `return` (infinite form of the verb) and not `returns` for "this function returns this value".
No, "returns" would be declarative, while "return" is imperative. This is a "return-statement", not a "return-declaration", after all. :-)
Stefan
--
...ich hab' noch einen Koffer in Berlin...
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
-- Sent from my mobile device Lorenzo

On Tue, May 25, 2010 at 5:20 PM, Stefan Seefeld <seefeld@sympatico.ca> wrote:
On 05/25/2010 05:13 PM, Lorenzo Caminiti wrote:
I see but then the argument would be that C++ uses `return` (infinite form of the verb) and not `returns` for "this function returns this value".
No, "returns" would be declarative, while "return" is imperative. This is a "return-statement", not a "return-declaration", after all. :-)
I was thinking: What about `throw` for exception specifications? Shouldn't that also be `throws` (3rd person) because it is declaring the exceptions that the function can throw? // Declarative in exception-specification-declaration "f throws int and double" -- shouldn't be `throws` (3rd person)? void f() throw(int, double) { // Imperative in throw-statement "throw int -1" -- so `throw` (infinite form) is OK. throw int(-1); } Also I looked at all C++/C++0x keywords and I couldn't find any other 3rd person keyword... would `requires` eventually be the only one? -- Lorenzo P.S. I think part of the reason I have these type of questions is because English is not my first language. Thanks a lot for taking the time to explain.

On Thu, 27 May 2010 09:52:41 -0400, Lorenzo Caminiti <lorcaminiti@gmail.com> wrote:
I was thinking: What about `throw` for exception specifications? Shouldn't that also be `throws` (3rd person) because it is declaring the exceptions that the function can throw?
In theory, yes. In fact, they did it that way in Java, just as they use the 3rd person keywords "extends" and "implements". In practice, you would meet a lot of resistance if you tried to introduce two keywords as similar as "throw" and "throws" into C++, when they can never even appear in the same place.
Also I looked at all C++/C++0x keywords and I couldn't find any other 3rd person keyword... would `requires` eventually be the only one?
There are no other keywords with a purpose comparable to "requires". Sebastian

AMDG Lorenzo Caminiti wrote:
I see but then the argument would be that C++ uses `return` (infinite form of the verb) and not `returns` for "this function returns this value".
Why is `requires` conjugated while `return` is not?
return is imperative. In Christ, Steven Watanabe
participants (4)
-
Lorenzo Caminiti
-
Sebastian Redl
-
Stefan Seefeld
-
Steven Watanabe