Boost logo

Boost :

Subject: Re: [boost] [Concepts] Definition. Was [GSoC] [Boost.Hana] Formal review request
From: Mostafa (mostafa_working_away_at_[hidden])
Date: 2014-08-06 08:57:54


On Tue, 05 Aug 2014 09:38:02 -0700, Roland Bock <rbock_at_[hidden]> wrote:

> On 2014-08-05 15:17, Mostafa wrote:
>> On Tue, 05 Aug 2014 04:58:35 -0700, Roland Bock <rbock_at_[hidden]>
>> wrote:
>>
>>> On 2014-08-05 12:13, Mostafa wrote:
>>>> On Tue, 05 Aug 2014 00:07:42 -0700, Roland Bock <rbock_at_[hidden]>
>>>> wrote:
>>>>
>>>>> On 2014-08-05 02:08, Mostafa wrote:
>>>>>> On Mon, 04 Aug 2014 08:39:36 -0700, Roland Bock <rbock_at_[hidden]>
>>>>>> wrote:
>>>>
>>>> [snip]
>>>>
>>>>>> Additionally, if concepts were sets of type requirements than the
>>>>>> phrase "T is DefaultConstructible" reads awkwardly, it almost sounds
>>>>>> as if T were a type requirement itself, when we actually mean to say
>>>>>> that T satisfies the requirements of default constructibility. And
>>>>>> the
>>>>>> language "x satisfies abc" usually connotates set membership.
>>>>> Sure, that type is a member of T(DefaultConstructible).
>>>>>
>>>>> I don't get your argument at all. If you say "this car is green", you
>>>>> say both "this car is a member of the set of green things" and
>>>>> "this car
>>>>> meets the requirements of being green". It does neither imply that
>>>>> "green is the set of green things" (endless recursion) nor does it
>>>>> say
>>>>> that "green is a set of being-green-requirements" (also endless
>>>>> recursion). Still, everyone knows what is meant without feeling
>>>>> awkward
>>>>> about it.
>>>>
>>>> Unfortunately English can be ambiguous, so let's be more precise. When
>>>> one says "this car is green" one actually means "this car is a green
>>>> thing" (green is being used as a noun, not as an adjective like "green
>>>> balloon"). That means "this car is a member of GreenThings". If
>>>> GreenThings were a set of requirements then that means "this car" is
>>>> also a requirement, which obviously it's not.
>>>
>>> You're only ever seeing your view :-)
>>> Another option is: When one says "this car is green", one actually
>>> means
>>> "this car emits light with a wavelength around 510nm". So the concept
>>> "green" is not a set of green things, it is a set of requirements (in
>>> this case with one element, namely "emits light with a wavelength
>>> around
>>> 510nm").
>>
>> No, I see your pov, I just claim you're view is logically flawed. I
>> find this topic interesting, so if I may, I shall try to prove the flaw.
> I find it interesting, too, so OK, here goes again.
>>
>> 1) I claim that when one says "this car is green" one means "this car
>> is a green thing", that's because by the rules of English syntax
>> "green" in the original sentence has to be a noun
>
> I am not a native english speaker, but I am pretty sure that "green" is
> an adjective, which is not a noun. It is something that describes a noun.

Green is both an adjective and a noun. Context is used to disambiguate its
state. I claim that the sentence "x is y" implies y is a noun whenever x
is a noun.

>> , and because "green" is neither a person nor a place, it must be a
>> thing.
>> 2) So the question becomes what is a "green thing"? I claim that a
>> "green thing" is any thing that satisfies being "green".
>> 3) Let's assume for the sake of argument that "green" is a set of
>> requirements. What is a requirement? It's a logical predicate, which
>> is itself a boolean-valued function. So the "green" concept can be
>> defined as follows:
>> green := { p = { (x, p(x)) | p(x) = "does x emit light at ...} }
>>
>> 4) How does a thing satisfy being "green"? Since "green" is a set, the
>> thing in question satisfies being "green" by being a member of that set.
>
> Well, I say there's your flaw. You claim that "a is b" automatically
> means "a is a member of b" if b is a set. I am pretty sure that's not
> backed by anything, not even math.

I take as my justification the existing convention regarding types and
objects. Take the following classes:
   class Triangle {...};
   class Square {...};

I claim that Triangle, Square, or any class for that matter, defines some
set of objects. Now when we declare:
   Triangle x;

we say "x is a Triangle"; and by that we actually mean x is a member of
the set Triangle.


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