Topic: Name-based reflection proposal


Author: Ricardo Andrade <ricardofabianodeandrade@gmail.com>
Date: Tue, 19 Apr 2016 23:23:14 -0700 (PDT)
Raw View
------=_Part_0_256586594.1461133394952
Content-Type: multipart/alternative;
 boundary="----=_Part_1_2053861700.1461133394963"

------=_Part_1_2053861700.1461133394963
Content-Type: text/plain; charset=UTF-8

Hi all,

Here's a first draft of an alternative proposal for adding reflection to
C++:
https://github.com/ricardofandrade/cpp-name-reflection/blob/master/README.md

It has been motivated part by my lack of satisfaction with the proposals
presented so far part by an old discussion on names that happened here a
while ago:
https://groups.google.com/a/isocpp.org/forum/#!msg/std-proposals/hYh3hWB0mwg/mDgCErbUXbMJ

Special thanks to Roland Bock for his material on std::name.

Comments and questions are welcome.
Ricardo Andrade

--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/49f86213-d1dc-4e39-8ba7-f4ec27dce7b4%40isocpp.org.

------=_Part_1_2053861700.1461133394963
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi all,<div><br></div><div>Here&#39;s a first draft of an =
alternative proposal for adding reflection to C++:</div><div>https://github=
..com/ricardofandrade/cpp-name-reflection/blob/master/README.md<br></div><di=
v><br></div><div>It has been motivated part by my lack of satisfaction with=
 the proposals presented so far part by an old discussion on names that hap=
pened here a while ago:</div><div>https://groups.google.com/a/isocpp.org/fo=
rum/#!msg/std-proposals/hYh3hWB0mwg/mDgCErbUXbMJ<br></div><div><br></div><d=
iv>Special thanks to Roland Bock for his material on std::name.</div><div><=
br></div><div>Comments and questions are welcome.</div><div>Ricardo Andrade=
</div><div><br></div></div>

<p></p>

-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/49f86213-d1dc-4e39-8ba7-f4ec27dce7b4%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/49f86213-d1dc-4e39-8ba7-f4ec27dce7b4=
%40isocpp.org</a>.<br />

------=_Part_1_2053861700.1461133394963--
------=_Part_0_256586594.1461133394952--

.


Author: Giovanni Piero Deretta <gpderetta@gmail.com>
Date: Wed, 20 Apr 2016 00:26:17 -0700 (PDT)
Raw View
------=_Part_49_1317056398.1461137177163
Content-Type: multipart/alternative;
 boundary="----=_Part_50_707207870.1461137177163"

------=_Part_50_707207870.1461137177163
Content-Type: text/plain; charset=UTF-8



On Wednesday, April 20, 2016 at 7:23:15 AM UTC+1, Ricardo Andrade wrote:
>
> Hi all,
>
> Here's a first draft of an alternative proposal for adding reflection to
> C++:
>
> https://github.com/ricardofandrade/cpp-name-reflection/blob/master/README.md
>
>
well, that' interesting. I was also working at a name (symbol) based static
reflaction design, although I have been focusing more on the use cases than
the reflection interface itself. I have been exploring a pure library based
solution for now:

   https://github.com/gpderetta/libtask/blob/master/tests/q_test.cpp

which uses the $(<symbol>) syntax for quoting.  My preferred actual syntax
for a symbol literal would be:

   `<symbol>

i.e. a single back tick (c.f. lisp).

Being mine currently a pure library solution of course it can't actualy
provide functionality to list existing class members, but given a symbol
literal, you can access member, member functions and free functions with
that name and create members with that name. The functionality can also be
used for named tuples, named parameters, expression templates with nice
syntax (think LINQ) etc.

A proper language level solution could also provide a unified framework for
operator dot overloading and UFC.

Anyway, this is just a long way to say that I'm definitely interested in
the proposal.

-- gpd

--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/3b8bb8b7-e176-4cb8-a603-f69f8fc23385%40isocpp.org.

------=_Part_50_707207870.1461137177163
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><br>On Wednesday, April 20, 2016 at 7:23:15 AM UTC+1, =
Ricardo Andrade wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;=
margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=
=3D"ltr">Hi all,<div><br></div><div>Here&#39;s a first draft of an alternat=
ive proposal for adding reflection to C++:</div><div><a href=3D"https://git=
hub.com/ricardofandrade/cpp-name-reflection/blob/master/README.md" target=
=3D"_blank" rel=3D"nofollow" onmousedown=3D"this.href=3D&#39;https://www.go=
ogle.com/url?q\75https%3A%2F%2Fgithub.com%2Fricardofandrade%2Fcpp-name-refl=
ection%2Fblob%2Fmaster%2FREADME.md\46sa\75D\46sntz\0751\46usg\75AFQjCNHUkSD=
P4QSLkcfr0aeMdup050TFYQ&#39;;return true;" onclick=3D"this.href=3D&#39;http=
s://www.google.com/url?q\75https%3A%2F%2Fgithub.com%2Fricardofandrade%2Fcpp=
-name-reflection%2Fblob%2Fmaster%2FREADME.md\46sa\75D\46sntz\0751\46usg\75A=
FQjCNHUkSDP4QSLkcfr0aeMdup050TFYQ&#39;;return true;">https://github.com/<wb=
r>ricardofandrade/cpp-name-<wbr>reflection/blob/master/README.<wbr>md</a><b=
r></div><div><br></div></div></blockquote><div><br>well, that&#39; interest=
ing. I was also working at a name (symbol) based static reflaction design, =
although I have been focusing more on the use cases than the reflection int=
erface itself. I have been exploring a pure library based solution for now:=
<br><br>=C2=A0=C2=A0 https://github.com/gpderetta/libtask/blob/master/tests=
/q_test.cpp<br><br>which uses the $(&lt;symbol&gt;) syntax for quoting.=C2=
=A0 My preferred actual syntax for a symbol literal would be: <br>=C2=A0 <b=
r>=C2=A0=C2=A0 `&lt;symbol&gt; <br><br>i.e. a single back tick (c.f. lisp).=
<br><br>Being mine currently a pure library solution of course it can&#39;t=
 actualy provide functionality to list existing class members, but given a =
symbol literal, you can access member, member functions and free functions =
with that name and create members with that name. The functionality can als=
o be used for named tuples, named parameters, expression templates with nic=
e syntax (think LINQ) etc.=C2=A0 <br><br>A proper language level solution c=
ould also provide a unified framework for operator dot overloading and UFC.=
<br></div><br>Anyway, this is just a long way to say that I&#39;m definitel=
y interested in the proposal.<br><br>-- gpd<br></div>

<p></p>

-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/3b8bb8b7-e176-4cb8-a603-f69f8fc23385%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/3b8bb8b7-e176-4cb8-a603-f69f8fc23385=
%40isocpp.org</a>.<br />

------=_Part_50_707207870.1461137177163--
------=_Part_49_1317056398.1461137177163--

.


Author: Ricardo Andrade <ricardofabianodeandrade@gmail.com>
Date: Wed, 20 Apr 2016 19:55:59 -0700 (PDT)
Raw View
------=_Part_146_459971589.1461207359348
Content-Type: multipart/alternative;
 boundary="----=_Part_147_287866902.1461207359349"

------=_Part_147_287866902.1461207359349
Content-Type: text/plain; charset=UTF-8

gpd,
I think I understand where you going with your approach, but yes, without
language support there will be some limitations.
I really appreciate your interest.
Ricardo

On Wednesday, April 20, 2016 at 2:26:17 AM UTC-5, Giovanni Piero Deretta
wrote:
>
>
>
> On Wednesday, April 20, 2016 at 7:23:15 AM UTC+1, Ricardo Andrade wrote:
>>
>> Hi all,
>>
>> Here's a first draft of an alternative proposal for adding reflection to
>> C++:
>>
>> https://github.com/ricardofandrade/cpp-name-reflection/blob/master/README.md
>>
>>
> well, that' interesting. I was also working at a name (symbol) based
> static reflaction design, although I have been focusing more on the use
> cases than the reflection interface itself. I have been exploring a pure
> library based solution for now:
>
>    https://github.com/gpderetta/libtask/blob/master/tests/q_test.cpp
>
> which uses the $(<symbol>) syntax for quoting.  My preferred actual syntax
> for a symbol literal would be:
>
>    `<symbol>
>
> i.e. a single back tick (c.f. lisp).
>
> Being mine currently a pure library solution of course it can't actualy
> provide functionality to list existing class members, but given a symbol
> literal, you can access member, member functions and free functions with
> that name and create members with that name. The functionality can also be
> used for named tuples, named parameters, expression templates with nice
> syntax (think LINQ) etc.
>
> A proper language level solution could also provide a unified framework
> for operator dot overloading and UFC.
>
> Anyway, this is just a long way to say that I'm definitely interested in
> the proposal.
>
> -- gpd
>

--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/028fa3e8-3f5b-49ab-8c00-3ceea6c3f95b%40isocpp.org.

------=_Part_147_287866902.1461207359349
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>gpd,</div>I think I understand where you going with y=
our approach, but yes, without language support there will be some limitati=
ons.<div>I really appreciate your interest.</div><div>Ricardo<br><div><div>=
<br>On Wednesday, April 20, 2016 at 2:26:17 AM UTC-5, Giovanni Piero Derett=
a wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-left: 0=
..8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr"><br><=
br>On Wednesday, April 20, 2016 at 7:23:15 AM UTC+1, Ricardo Andrade wrote:=
<blockquote class=3D"gmail_quote" style=3D"margin:0;margin-left:0.8ex;borde=
r-left:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr">Hi all,<div><br></=
div><div>Here&#39;s a first draft of an alternative proposal for adding ref=
lection to C++:</div><div><a href=3D"https://github.com/ricardofandrade/cpp=
-name-reflection/blob/master/README.md" rel=3D"nofollow" target=3D"_blank" =
onmousedown=3D"this.href=3D&#39;https://www.google.com/url?q\x3dhttps%3A%2F=
%2Fgithub.com%2Fricardofandrade%2Fcpp-name-reflection%2Fblob%2Fmaster%2FREA=
DME.md\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHUkSDP4QSLkcfr0aeMdup050TFYQ=
&#39;;return true;" onclick=3D"this.href=3D&#39;https://www.google.com/url?=
q\x3dhttps%3A%2F%2Fgithub.com%2Fricardofandrade%2Fcpp-name-reflection%2Fblo=
b%2Fmaster%2FREADME.md\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHUkSDP4QSLkc=
fr0aeMdup050TFYQ&#39;;return true;">https://github.com/<wbr>ricardofandrade=
/cpp-name-<wbr>reflection/blob/master/README.<wbr>md</a><br></div><div><br>=
</div></div></blockquote><div><br>well, that&#39; interesting. I was also w=
orking at a name (symbol) based static reflaction design, although I have b=
een focusing more on the use cases than the reflection interface itself. I =
have been exploring a pure library based solution for now:<br><br>=C2=A0=C2=
=A0 <a href=3D"https://github.com/gpderetta/libtask/blob/master/tests/q_tes=
t.cpp" target=3D"_blank" rel=3D"nofollow" onmousedown=3D"this.href=3D&#39;h=
ttps://www.google.com/url?q\x3dhttps%3A%2F%2Fgithub.com%2Fgpderetta%2Flibta=
sk%2Fblob%2Fmaster%2Ftests%2Fq_test.cpp\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dA=
FQjCNFUo-ga9aWQUMlbpfLq0WQ1IdA1Mw&#39;;return true;" onclick=3D"this.href=
=3D&#39;https://www.google.com/url?q\x3dhttps%3A%2F%2Fgithub.com%2Fgpderett=
a%2Flibtask%2Fblob%2Fmaster%2Ftests%2Fq_test.cpp\x26sa\x3dD\x26sntz\x3d1\x2=
6usg\x3dAFQjCNFUo-ga9aWQUMlbpfLq0WQ1IdA1Mw&#39;;return true;">https://githu=
b.com/gpderetta/<wbr>libtask/blob/master/tests/q_<wbr>test.cpp</a><br><br>w=
hich uses the $(&lt;symbol&gt;) syntax for quoting.=C2=A0 My preferred actu=
al syntax for a symbol literal would be: <br>=C2=A0 <br>=C2=A0=C2=A0 `&lt;s=
ymbol&gt; <br><br>i.e. a single back tick (c.f. lisp).<br><br>Being mine cu=
rrently a pure library solution of course it can&#39;t actualy provide func=
tionality to list existing class members, but given a symbol literal, you c=
an access member, member functions and free functions with that name and cr=
eate members with that name. The functionality can also be used for named t=
uples, named parameters, expression templates with nice syntax (think LINQ)=
 etc.=C2=A0 <br><br>A proper language level solution could also provide a u=
nified framework for operator dot overloading and UFC.<br></div><br>Anyway,=
 this is just a long way to say that I&#39;m definitely interested in the p=
roposal.<br><br>-- gpd<br></div></blockquote></div></div></div></div>

<p></p>

-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/028fa3e8-3f5b-49ab-8c00-3ceea6c3f95b%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/028fa3e8-3f5b-49ab-8c00-3ceea6c3f95b=
%40isocpp.org</a>.<br />

------=_Part_147_287866902.1461207359349--
------=_Part_146_459971589.1461207359348--

.