Re: Replace core language HexStrings with library entity

2015-03-22 Thread weaselcat via Digitalmars-d

On Sunday, 22 March 2015 at 10:36:27 UTC, Dicebot wrote:

It was a response to question why vibe.d has reimplemented so 
many bits of Phobos without ever contributing it back.


I apologize if it came off this way, I meant it as vibe 
shouldn't have to be reimplementing these things, they're already 
in the stdlib so there's an obvious issue here


Re: Replace core language HexStrings with library entity

2015-03-22 Thread Dicebot via Digitalmars-d
On Saturday, 21 March 2015 at 00:30:42 UTC, Andrei Alexandrescu 
wrote:

On 3/20/15 9:02 AM, Dicebot wrote:

On Wednesday, 18 March 2015 at 00:55:45 UTC, weaselcat wrote:
as an addendum, vibe.d reimplements huge amounts of phobos, 
is there a

reason none of this is ever getting upstreamed?


Getting something into Phobos is a huge commitment.


Not documentation.


For something widely
used like json library the API discissions can destroy your 
spare time
in blink of an eye. Sonke actually attempted to do that at 
some point,

you can see
http://forum.dlang.org/thread/lt5s76$is$1...@digitalmars.com#post-lt5s76:24is:241:40digitalmars.com
for what happened.


What happened is that the design has been approved (I emailed 
Sönke personally) but he moved places so he didn't have time.


Yes, it is a time commitment. When it wasn't you get things 
like std.json.


It was a response to question why vibe.d has reimplemented so 
many bits of Phobos without ever contributing it back.


Re: Replace core language HexStrings with library entity

2015-03-20 Thread Andrei Alexandrescu via Digitalmars-d

On 3/20/15 9:09 AM, Adam D. Ruppe wrote:

On Friday, 20 March 2015 at 16:02:23 UTC, Dicebot wrote:

Getting something into Phobos is a huge commitment.


And it ties your hands and comes with all kinds of annoying trivial
nonsense baggage like spaces vs tabs.


I disagree with this characterization. When they do occur reviews are 
helpful. In this particular case a professional chooses spaces without 
so much as thinking about it.



I have a hard enough time bringing myself to write small functions for
phobos due to the sum total of these little pains. I certainly wouldn't
want to go through that for a whole module, it is so much easier to just
tell people to download the file from my own website.


The short version is you'd do immense good if you chose to contribute to 
Phobos.



Andrei


Re: Replace core language HexStrings with library entity

2015-03-20 Thread Andrei Alexandrescu via Digitalmars-d

On 3/20/15 9:02 AM, Dicebot wrote:

On Wednesday, 18 March 2015 at 00:55:45 UTC, weaselcat wrote:

as an addendum, vibe.d reimplements huge amounts of phobos, is there a
reason none of this is ever getting upstreamed?


Getting something into Phobos is a huge commitment.


Not documentation.


For something widely
used like json library the API discissions can destroy your spare time
in blink of an eye. Sonke actually attempted to do that at some point,
you can see
http://forum.dlang.org/thread/lt5s76$is$1...@digitalmars.com#post-lt5s76:24is:241:40digitalmars.com
for what happened.


What happened is that the design has been approved (I emailed Sönke 
personally) but he moved places so he didn't have time.


Yes, it is a time commitment. When it wasn't you get things like std.json.


Andrei



Re: Replace core language HexStrings with library entity

2015-03-20 Thread Dicebot via Digitalmars-d

On Wednesday, 18 March 2015 at 00:55:45 UTC, weaselcat wrote:
as an addendum, vibe.d reimplements huge amounts of phobos, is 
there a reason none of this is ever getting upstreamed?


Getting something into Phobos is a huge commitment. For something 
widely used like json library the API discissions can destroy 
your spare time in blink of an eye. Sonke actually attempted to 
do that at some point, you can see 
http://forum.dlang.org/thread/lt5s76$is$1...@digitalmars.com#post-lt5s76:24is:241:40digitalmars.com 
for what happened.


Re: Replace core language HexStrings with library entity

2015-03-20 Thread Adam D. Ruppe via Digitalmars-d

On Friday, 20 March 2015 at 16:02:23 UTC, Dicebot wrote:

Getting something into Phobos is a huge commitment.


And it ties your hands and comes with all kinds of annoying 
trivial nonsense baggage like spaces vs tabs.


I have a hard enough time bringing myself to write small 
functions for phobos due to the sum total of these little pains. 
I certainly wouldn't want to go through that for a whole module, 
it is so much easier to just tell people to download the file 
from my own website.


Re: Replace core language HexStrings with library entity

2015-03-19 Thread Nick Treleaven via Digitalmars-d

On 18/03/2015 14:45, H. S. Teoh via Digitalmars-d wrote:

On Wed, Mar 18, 2015 at 07:45:54PM +1100, Daniel Murphy via Digitalmars-d wrote:

Kagamin  wrote in message news:pltiewdojqrmgxrwh...@forum.dlang.org...


The compiler lexer can be of arbitrary complexity, because it's
already written. If you write a compiler, you just grab the ready
lexer and use it, you don't need to count lines. The problem is with
other, non-compiler tools.


I have no idea what your point is.  Lexer complexity matters for every
tool that needs to lex D code.


Not if we have libdmdlexer that they can reuse... ;-)


Some tools can't require D due to project limitations.



Re: Replace core language HexStrings with library entity

2015-03-18 Thread Kagamin via Digitalmars-d

On Wednesday, 18 March 2015 at 08:45:53 UTC, Daniel Murphy wrote:
I have no idea what your point is.  Lexer complexity matters 
for every tool that needs to lex D code.


Language complexity matters for tools. Lexer complexity is only 
download and build, it doesn't matter what is the lexer, 
complexity is roughly the same, only compilation of bigger lexer 
can take longer if it has more lines.


Re: Replace core language HexStrings with library entity

2015-03-18 Thread Kagamin via Digitalmars-d

On Tuesday, 17 March 2015 at 14:14:59 UTC, Daniel Murphy wrote:
Yes, but only a very little bit.  How much code could you 
delete from a D lexer if they were removed?


The compiler lexer can be of arbitrary complexity, because it's 
already written. If you write a compiler, you just grab the ready 
lexer and use it, you don't need to count lines. The problem is 
with other, non-compiler tools.


Re: Replace core language HexStrings with library entity

2015-03-18 Thread Daniel Murphy via Digitalmars-d

Kagamin  wrote in message news:pltiewdojqrmgxrwh...@forum.dlang.org...

The compiler lexer can be of arbitrary complexity, because it's already 
written. If you write a compiler, you just grab the ready lexer and use 
it, you don't need to count lines. The problem is with other, non-compiler 
tools.


I have no idea what your point is.  Lexer complexity matters for every tool 
that needs to lex D code. 



Re: Replace core language HexStrings with library entity

2015-03-18 Thread H. S. Teoh via Digitalmars-d
On Wed, Mar 18, 2015 at 07:45:54PM +1100, Daniel Murphy via Digitalmars-d wrote:
 Kagamin  wrote in message news:pltiewdojqrmgxrwh...@forum.dlang.org...
 
 The compiler lexer can be of arbitrary complexity, because it's
 already written. If you write a compiler, you just grab the ready
 lexer and use it, you don't need to count lines. The problem is with
 other, non-compiler tools.
 
 I have no idea what your point is.  Lexer complexity matters for every
 tool that needs to lex D code.

Not if we have libdmdlexer that they can reuse... ;-)


T

-- 
A computer doesn't mind if its programs are put to purposes that don't match 
their names. -- D. Knuth


Re: Replace core language HexStrings with library entity

2015-03-18 Thread Andrei Alexandrescu via Digitalmars-d

On 3/17/15 5:45 PM, weaselcat wrote:

On Wednesday, 18 March 2015 at 00:34:06 UTC, Daniel Murphy wrote:

Andrei Alexandrescu  wrote in message
news:me9s2m$308v$1...@digitalmars.com...


It pains me to no end to see energy going in all the wrong places.
Just now I was reviewing some code using std.json. Most everybody
admits that library could be improved or rewritten. There's been some
work on the latter, which has not been pursued to completion. Until
then, we've had for _years_ a mediocre - albeit let's say passable -
implementation with a shockingly bad documentation -
http://dlang.org/phobos/std_json.html has not ONE example, like
literally not ONE line of code on it. It's been like that for YEARS.
I'd find it difficult to imagine a simpler and more impactful way to
contribute to D, than improving on that documentation.


Just use vibe.d's json library.


what is the point of having a half-assed version in the _standard_
library???


The irony is what's now is std is usable albeit meh, but so poorly 
documented it looks damn straight useless. I need to figure why folks 
willing to write small novels in this forum will neglect literally for 
years to apply some of that energy to D's documentation. -- Andrei




Re: Replace core language HexStrings with library entity

2015-03-18 Thread Andrei Alexandrescu via Digitalmars-d

On 3/17/15 5:34 PM, Daniel Murphy wrote:

Andrei Alexandrescu  wrote in message
news:me9s2m$308v$1...@digitalmars.com...


It pains me to no end to see energy going in all the wrong places.
Just now I was reviewing some code using std.json. Most everybody
admits that library could be improved or rewritten. There's been some
work on the latter, which has not been pursued to completion. Until
then, we've had for _years_ a mediocre - albeit let's say passable -
implementation with a shockingly bad documentation -
http://dlang.org/phobos/std_json.html has not ONE example, like
literally not ONE line of code on it. It's been like that for YEARS.
I'd find it difficult to imagine a simpler and more impactful way to
contribute to D, than improving on that documentation.


Just use vibe.d's json library.


That was just an example. -- Andrei



Re: Replace core language HexStrings with library entity

2015-03-17 Thread Walter Bright via Digitalmars-d

On 3/17/2015 9:39 AM, Baz wrote:

On Sunday, 15 March 2015 at 21:40:02 UTC, Walter Bright wrote:

On 3/15/2015 2:34 PM, Walter Bright wrote:

P.S. Also need to include all the examples in the dlang reference as unittest
cases.


Also, HexStrings can handle w and d postfixes. Use the lexer.c code for
TOK::hexStringConstant() as a guide to be sure all the permutations are covered.


Hi, i propose this:

https://github.com/D-Programming-Language/phobos/pull/3058



Thanks!


Re: Replace core language HexStrings with library entity

2015-03-17 Thread Artur Skawina via Digitalmars-d
On 03/17/15 22:18, Baz via Digitalmars-d wrote:
 On Tuesday, 17 March 2015 at 21:06:04 UTC, Artur Skawina wrote:
 On 03/17/15 20:47, deadalnix via Digitalmars-d wrote:

 Not that much. But q{ string are a pain in the ass.

 Why? I'm not sure if you're referring to using or parsing them.
 The only problem with the former is the lack of a non-brace-nesting
 variant.
 Lexing is quite trivial, as long as the lexer supports recursion.
 For example, this is a complete implementation:

TokenString:  q{ TokenStringBody }
TokenStringBody:  ( ( ![{}] TokenClass )+ / BracedTokenSequence )*
BracedTokenSequence:  { ( ( ![{}] TokenClass )+ / BracedTokenSequence 
 )* }

 That's PEG, but the mapping to code should be fairly obvious.

 For syntax highlighting purposes it can actually be even simpler - it's
 enough to treat a `q{` token just like a `{`; everything that follows
 
 No. I don't agree. `q{` makes sense: it's a helper for a string you want to 
 mix. `q{` means: don't highlight me as a string even if i'm one. It's clearly 
 made for the people who writes text editors and IDEs.

There must be some misunderstanding, because you actually fully agree
with me. :)

The only problem with token-strings is that there isn't a version that
lets you write /incomplete/ code sequences. Eg

   q{ int blah(){ return } ~ text(42) ~ q{ ; } }

clearly isn't valid. What's missing is either a variant where {} don't
nest, or one that allows some kind of string interpolation.

artur


Re: Replace core language HexStrings with library entity

2015-03-17 Thread Baz via Digitalmars-d

On Tuesday, 17 March 2015 at 21:06:04 UTC, Artur Skawina wrote:

On 03/17/15 20:47, deadalnix via Digitalmars-d wrote:


Not that much. But q{ string are a pain in the ass.


Why? I'm not sure if you're referring to using or parsing them.
The only problem with the former is the lack of a 
non-brace-nesting

variant.
Lexing is quite trivial, as long as the lexer supports 
recursion.

For example, this is a complete implementation:

   TokenString:  q{ TokenStringBody }
   TokenStringBody:  ( ( ![{}] TokenClass )+ / 
BracedTokenSequence )*
   BracedTokenSequence:  { ( ( ![{}] TokenClass )+ / 
BracedTokenSequence )* }


That's PEG, but the mapping to code should be fairly obvious.

For syntax highlighting purposes it can actually be even 
simpler - it's
enough to treat a `q{` token just like a `{`; everything that 
follows


No. I don't agree. `q{` makes sense: it's a helper for a string 
you want to mix. `q{` means: don't highlight me as a string even 
if i'm one. It's clearly made for the people who writes text 
editors and IDEs.




Re: Replace core language HexStrings with library entity

2015-03-17 Thread Artur Skawina via Digitalmars-d
On 03/17/15 20:47, deadalnix via Digitalmars-d wrote:
 
 Not that much. But q{ string are a pain in the ass.

Why? I'm not sure if you're referring to using or parsing them.
The only problem with the former is the lack of a non-brace-nesting
variant.
Lexing is quite trivial, as long as the lexer supports recursion.
For example, this is a complete implementation:

   TokenString:  q{ TokenStringBody }
   TokenStringBody:  ( ( ![{}] TokenClass )+ / BracedTokenSequence )*
   BracedTokenSequence:  { ( ( ![{}] TokenClass )+ / BracedTokenSequence )* 
}

That's PEG, but the mapping to code should be fairly obvious.

For syntax highlighting purposes it can actually be even simpler - it's
enough to treat a `q{` token just like a `{`; everything that follows
will be valid D tokens.

artur


Re: Replace core language HexStrings with library entity

2015-03-17 Thread Baz via Digitalmars-d

On Tuesday, 17 March 2015 at 21:31:58 UTC, Artur Skawina wrote:

On 03/17/15 22:18, Baz via Digitalmars-d wrote:

On Tuesday, 17 March 2015 at 21:06:04 UTC, Artur Skawina wrote:

On 03/17/15 20:47, deadalnix via Digitalmars-d wrote:


Not that much. But q{ string are a pain in the ass.


Why? I'm not sure if you're referring to using or parsing 
them.
The only problem with the former is the lack of a 
non-brace-nesting

variant.
Lexing is quite trivial, as long as the lexer supports 
recursion.

For example, this is a complete implementation:

   TokenString:  q{ TokenStringBody }
   TokenStringBody:  ( ( ![{}] TokenClass )+ / 
BracedTokenSequence )*
   BracedTokenSequence:  { ( ( ![{}] TokenClass )+ / 
BracedTokenSequence )* }


That's PEG, but the mapping to code should be fairly obvious.

For syntax highlighting purposes it can actually be even 
simpler - it's
enough to treat a `q{` token just like a `{`; everything that 
follows


No. I don't agree. `q{` makes sense: it's a helper for a 
string you want to mix. `q{` means: don't highlight me as a 
string even if i'm one. It's clearly made for the people who 
writes text editors and IDEs.


There must be some misunderstanding, because you actually fully 
agree

with me. :)

The only problem with token-strings is that there isn't a 
version that

lets you write /incomplete/ code sequences. Eg

   q{ int blah(){ return } ~ text(42) ~ q{ ; } }

clearly isn't valid. What's missing is either a variant where 
{} don't

nest, or one that allows some kind of string interpolation.

artur


I'm completly drunk now and i dont understand what you mean...But 
if we agree that token strings are not to be removed, then we 
agree. We are on the same channel.




Re: Replace core language HexStrings with library entity

2015-03-17 Thread Daniel Murphy via Digitalmars-d
Andrei Alexandrescu  wrote in message 
news:me870h$1fnc$1...@digitalmars.com...


On a higher level: there's no subset of the language that's at the same 
time sufficiently complex and sufficiently obscure to make its removal a 
net positive.


Associative arrays come close, but only because of their insanely high 
complexity.  Complex numbers are another one, although they can be safely 
ignored most of the time. 



Re: Replace core language HexStrings with library entity

2015-03-17 Thread Andrei Alexandrescu via Digitalmars-d

On 3/17/15 10:33 AM, Artur Skawina via Digitalmars-d wrote:

On 03/17/15 15:15, Daniel Murphy via Digitalmars-d wrote:

Nick Treleaven  wrote in message news:me98hl$2erf$1...@digitalmars.com...


They add complexity to tools such as ctags (written in C, the fishman fork 
supports D but not D-specific strings).


Yes, but only a very little bit.  How much code could you delete from a D lexer 
if they were removed?


About 80 lines. Which can actually be a significant portion of a full lexer 
(~15%).
That still does not mean that they should go; they are useful, for example for
writing multiline embedded DSLs.
OTOH this would be just one more random weekly language change, so why not?


Well said.

It pains me to no end to see energy going in all the wrong places. Just 
now I was reviewing some code using std.json. Most everybody admits that 
library could be improved or rewritten. There's been some work on the 
latter, which has not been pursued to completion. Until then, we've had 
for _years_ a mediocre - albeit let's say passable - implementation with 
a shockingly bad documentation - http://dlang.org/phobos/std_json.html 
has not ONE example, like literally not ONE line of code on it. It's 
been like that for YEARS. I'd find it difficult to imagine a simpler and 
more impactful way to contribute to D, than improving on that documentation.


And that has nothing to do with the quality of generating e.g. template 
constraints etc. It's simply about a good soul writing some documentation.


I wouldn't even be too bothered about it if only a handful of folks were 
working on D. But there's all this churn in the group, all this spinning 
of the wheels, all to so little outcome. Until we mobilize ourselves to 
get good work done, D doesn't deserve more notoriety than it has.



Andrei



Re: Replace core language HexStrings with library entity

2015-03-17 Thread Artur Skawina via Digitalmars-d
On 03/17/15 15:15, Daniel Murphy via Digitalmars-d wrote:
 Nick Treleaven  wrote in message news:me98hl$2erf$1...@digitalmars.com...
 
 They add complexity to tools such as ctags (written in C, the fishman fork 
 supports D but not D-specific strings).
 
 Yes, but only a very little bit.  How much code could you delete from a D 
 lexer if they were removed?

About 80 lines. Which can actually be a significant portion of a full lexer 
(~15%).
That still does not mean that they should go; they are useful, for example for
writing multiline embedded DSLs.
OTOH this would be just one more random weekly language change, so why not?

artur


Re: Replace core language HexStrings with library entity

2015-03-17 Thread weaselcat via Digitalmars-d

On Wednesday, 18 March 2015 at 00:45:56 UTC, weaselcat wrote:
On Wednesday, 18 March 2015 at 00:34:06 UTC, Daniel Murphy 
wrote:
Andrei Alexandrescu  wrote in message 
news:me9s2m$308v$1...@digitalmars.com...


It pains me to no end to see energy going in all the wrong 
places. Just now I was reviewing some code using std.json. 
Most everybody admits that library could be improved or 
rewritten. There's been some work on the latter, which has 
not been pursued to completion. Until then, we've had for 
_years_ a mediocre - albeit let's say passable - 
implementation with a shockingly bad documentation - 
http://dlang.org/phobos/std_json.html has not ONE example, 
like literally not ONE line of code on it. It's been like 
that for YEARS. I'd find it difficult to imagine a simpler 
and more impactful way to contribute to D, than improving on 
that documentation.


Just use vibe.d's json library.


what is the point of having a half-assed version in the 
_standard_ library???


as an addendum, vibe.d reimplements huge amounts of phobos, is 
there a reason none of this is ever getting upstreamed?


Re: Replace core language HexStrings with library entity

2015-03-17 Thread Daniel Murphy via Digitalmars-d

weaselcat  wrote in message news:cfxrrvjnhlofsxpxx...@forum.dlang.org...

as an addendum, vibe.d reimplements huge amounts of phobos, is there a 
reason none of this is ever getting upstreamed?


Some of it is blocked waiting on other parts to be implemented, the rest is 
waiting for someone to champion it. 



Re: Replace core language HexStrings with library entity

2015-03-17 Thread Daniel Murphy via Digitalmars-d

weaselcat  wrote in message news:vlrwhuvaxxhsvvtdz...@forum.dlang.org...

what is the point of having a half-assed version in the _standard_ 
library???


It predates vibe.d's version by many many years, and nobody has fixed or 
replaced it.  As Andrei said, nobody has even bothered documenting it.  It 
will most likely stay where it is until there is a suitable replacement. 



Re: Replace core language HexStrings with library entity

2015-03-17 Thread Daniel Murphy via Digitalmars-d
Andrei Alexandrescu  wrote in message 
news:me9s2m$308v$1...@digitalmars.com...


It pains me to no end to see energy going in all the wrong places. Just 
now I was reviewing some code using std.json. Most everybody admits that 
library could be improved or rewritten. There's been some work on the 
latter, which has not been pursued to completion. Until then, we've had 
for _years_ a mediocre - albeit let's say passable - implementation with a 
shockingly bad documentation - http://dlang.org/phobos/std_json.html has 
not ONE example, like literally not ONE line of code on it. It's been like 
that for YEARS. I'd find it difficult to imagine a simpler and more 
impactful way to contribute to D, than improving on that documentation.


Just use vibe.d's json library. 



Re: Replace core language HexStrings with library entity

2015-03-17 Thread weaselcat via Digitalmars-d

On Wednesday, 18 March 2015 at 00:34:06 UTC, Daniel Murphy wrote:
Andrei Alexandrescu  wrote in message 
news:me9s2m$308v$1...@digitalmars.com...


It pains me to no end to see energy going in all the wrong 
places. Just now I was reviewing some code using std.json. 
Most everybody admits that library could be improved or 
rewritten. There's been some work on the latter, which has not 
been pursued to completion. Until then, we've had for _years_ 
a mediocre - albeit let's say passable - implementation with a 
shockingly bad documentation - 
http://dlang.org/phobos/std_json.html has not ONE example, 
like literally not ONE line of code on it. It's been like that 
for YEARS. I'd find it difficult to imagine a simpler and more 
impactful way to contribute to D, than improving on that 
documentation.


Just use vibe.d's json library.


what is the point of having a half-assed version in the 
_standard_ library???


Re: Replace core language HexStrings with library entity

2015-03-17 Thread deadalnix via Digitalmars-d

On Tuesday, 17 March 2015 at 14:14:59 UTC, Daniel Murphy wrote:
Nick Treleaven  wrote in message 
news:me98hl$2erf$1...@digitalmars.com...


They add complexity to tools such as ctags (written in C, the 
fishman fork supports D but not D-specific strings).


Yes, but only a very little bit.  How much code could you 
delete from a D lexer if they were removed?


Not that much. But q{ string are a pain in the ass.


Re: Replace core language HexStrings with library entity

2015-03-17 Thread H. S. Teoh via Digitalmars-d
On Tue, Mar 17, 2015 at 07:47:05PM +, deadalnix via Digitalmars-d wrote:
 On Tuesday, 17 March 2015 at 14:14:59 UTC, Daniel Murphy wrote:
 Nick Treleaven  wrote in message news:me98hl$2erf$1...@digitalmars.com...
 
 They add complexity to tools such as ctags (written in C, the
 fishman fork supports D but not D-specific strings).
 
 Yes, but only a very little bit.  How much code could you delete from
 a D lexer if they were removed?
 
 Not that much. But q{ string are a pain in the ass.

They are very useful for writing readable string mixins though. (Well,
string mixins themselves could also be construed to be a pain, so
*shrug*.)


T

-- 
Having a smoking section in a restaurant is like having a peeing section in a 
swimming pool. -- Edward Burr 


Re: Replace core language HexStrings with library entity

2015-03-17 Thread Biotronic via Digitalmars-d

On Monday, 16 March 2015 at 12:53:24 UTC, Nick Treleaven wrote:

0b1010 binary literals (even though C++11 supports them)
0xABCD hex literals (but useful for porting C)


And while we're at it, why not remove those pesky base-10
literals as well? Shouldn't be too hard to write dec!123456
instead of 123456. :p


Re: Replace core language HexStrings with library entity

2015-03-17 Thread Nick Treleaven via Digitalmars-d

On 17/03/2015 03:28, Andrei Alexandrescu wrote:

On a higher level: there's no subset of the language that's at the same
time sufficiently complex and sufficiently obscure to make its removal a
net positive.


q delimited strings. No one uses them (used once in all of Phobos). 
They are obscure and add some complexity to lexing D.


Re: Replace core language HexStrings with library entity

2015-03-17 Thread Nick Treleaven via Digitalmars-d

On 17/03/2015 01:45, Daniel Murphy wrote:

Nick Treleaven  wrote in message news:me6jo4$ca$1...@digitalmars.com...


0b1010 binary literals (even though C++11 supports them)
0xABCD hex literals (but useful for porting C)


You can take them when you pry them from my cold, dead hands.  These are
1000x times more useful than octal and deserve to be built in.


Agreed they are more useful, but that does not necessarily mean they 
should be built-in.


Re: Replace core language HexStrings with library entity

2015-03-17 Thread Nick Treleaven via Digitalmars-d

On 17/03/2015 11:34, Biotronic wrote:

On Monday, 16 March 2015 at 12:53:24 UTC, Nick Treleaven wrote:

0b1010 binary literals (even though C++11 supports them)
0xABCD hex literals (but useful for porting C)


And while we're at it, why not remove those pesky base-10
literals as well? Shouldn't be too hard to write dec!123456
instead of 123456. :p


Because all programming languages support integer literals.


Re: Replace core language HexStrings with library entity

2015-03-17 Thread Daniel Murphy via Digitalmars-d

Nick Treleaven  wrote in message news:me950a$2boc$1...@digitalmars.com...


On 17/03/2015 03:28, Andrei Alexandrescu wrote:
 On a higher level: there's no subset of the language that's at the same
 time sufficiently complex and sufficiently obscure to make its removal a
 net positive.

q delimited strings. No one uses them (used once in all of Phobos). They 
are obscure and add some complexity to lexing D.


They don't have a high complexity though, and that's the point.  The amount 
of code in the compiler to support them is trivial. 



Re: Replace core language HexStrings with library entity

2015-03-17 Thread ketmar via Digitalmars-d
On Tue, 17 Mar 2015 11:34:27 +, Biotronic wrote:

 On Monday, 16 March 2015 at 12:53:24 UTC, Nick Treleaven wrote:
 0b1010 binary literals (even though C++11 supports them)
 0xABCD hex literals (but useful for porting C)
 
 And while we're at it, why not remove those pesky base-10 literals as
 well? Shouldn't be too hard to write dec!123456 instead of 123456. :p

i second that!

signature.asc
Description: PGP signature


Re: Replace core language HexStrings with library entity

2015-03-17 Thread Nick Treleaven via Digitalmars-d

On 17/03/2015 12:42, Daniel Murphy wrote:

Nick Treleaven  wrote in message news:me950a$2boc$1...@digitalmars.com...


On 17/03/2015 03:28, Andrei Alexandrescu wrote:
 On a higher level: there's no subset of the language that's at the same
 time sufficiently complex and sufficiently obscure to make its
removal a
 net positive.

q delimited strings. No one uses them (used once in all of Phobos).
They are obscure and add some complexity to lexing D.


They don't have a high complexity though, and that's the point.  The
amount of code in the compiler to support them is trivial.


They add complexity to tools such as ctags (written in C, the fishman 
fork supports D but not D-specific strings).


Re: Replace core language HexStrings with library entity

2015-03-17 Thread ketmar via Digitalmars-d
On Tue, 17 Mar 2015 12:00:09 +, Nick Treleaven wrote:

 On 17/03/2015 03:28, Andrei Alexandrescu wrote:
 On a higher level: there's no subset of the language that's at the same
 time sufficiently complex and sufficiently obscure to make its removal
 a net positive.
 
 q delimited strings. No one uses them (used once in all of Phobos).
 They are obscure and add some complexity to lexing D.

hello. let me introduce myself: i'm mr. NoOne!

signature.asc
Description: PGP signature


Re: Replace core language HexStrings with library entity

2015-03-17 Thread ketmar via Digitalmars-d
On Tue, 17 Mar 2015 13:16:58 +, ketmar wrote:

 On Tue, 17 Mar 2015 12:00:09 +, Nick Treleaven wrote:
 
 On 17/03/2015 03:28, Andrei Alexandrescu wrote:
 On a higher level: there's no subset of the language that's at the
 same time sufficiently complex and sufficiently obscure to make its
 removal a net positive.
 
 q delimited strings. No one uses them (used once in all of Phobos).
 They are obscure and add some complexity to lexing D.
 
 hello. let me introduce myself: i'm mr. NoOne!

yet i must confess that it was once or twice, and mostly by accident. ;-)

signature.asc
Description: PGP signature


Re: Replace core language HexStrings with library entity

2015-03-17 Thread Daniel Murphy via Digitalmars-d

Nick Treleaven  wrote in message news:me98hl$2erf$1...@digitalmars.com...

They add complexity to tools such as ctags (written in C, the fishman fork 
supports D but not D-specific strings).


Yes, but only a very little bit.  How much code could you delete from a D 
lexer if they were removed? 



Re: Replace core language HexStrings with library entity

2015-03-17 Thread Baz via Digitalmars-d

On Monday, 16 March 2015 at 21:32:45 UTC, Baz wrote:
On Monday, 16 March 2015 at 16:45:25 UTC, Andrei Alexandrescu 
wrote:

On 3/16/15 9:29 AM, Baz wrote:

On Sunday, 15 March 2015 at 21:41:06 UTC, bearophile wrote:

Walter Bright:

Unfortunately, it needs to be a dropin replacement for 
x..., which

returns a string/wstring/dstring.


This is bad. 99% of the times you don't want a 
string/wstring/dstring

out of a hex string:

https://issues.dlang.org/show_bug.cgi?id=10454
https://issues.dlang.org/show_bug.cgi?id=5909

Bye,
bearophile


this is the API that's about to be proposed, it named as 
suggested by

A.A., and it handles the two issues you point out:

---
public string hexString(string hexData, bool putWhites = 
false)()
public string hexString(dstring hexData, bool putWhites = 
false)()
public string hexString(wstring hexData, bool putWhites = 
false)()


public ubyte[] hexBytes(string hexData)()
public ubyte[] hexBytes(dstring hexData)()
public ubyte[] hexBytes(wstring hexData)()
---


(Drop the public, this ain't Java.)

I don't see a necessity for the input string having different 
widths; string is enough. There may be a necessity to choose 
the width of the output with changes in function name, e.g. 
hexWString and hexDString.


That opens the question whether we want only ubyte[] for hex 
bytes or all integral types.


additionally to x string, a template parameter allows to put 
raw whites,

e.g

---
assert(hexString!(30 30, true) == 0 1);
assert(hexString!(30 31) == 01); // standard x string
---


I don't see a need for this.


Andrei


I'd like to propose this:

http://dpaste.dzfl.pl/044958878fd9

But after reading D.Nadlinger mind about the whole thing i 
realize that's the opposite the things should be done in the 
opposite way.


still about

http://dpaste.dzfl.pl/044958878fd9

Despite of the personnal opinion over the idea of removing x 
strings from the lang and integrate them as a phobos template is 
there any particulur no no no that would automatically prevent 
this to be an acceptable PR (style, guidline, foreach vs range 
iterator, etc)?


Sorry to insist but this is the first time i try to propose 
something and i'm usually less strict with my own things.

Thx to reply, otherwise i give it up.


Re: Replace core language HexStrings with library entity

2015-03-17 Thread Baz via Digitalmars-d

On Sunday, 15 March 2015 at 21:40:02 UTC, Walter Bright wrote:

On 3/15/2015 2:34 PM, Walter Bright wrote:
P.S. Also need to include all the examples in the dlang 
reference as unittest

cases.


Also, HexStrings can handle w and d postfixes. Use the lexer.c 
code for TOK::hexStringConstant() as a guide to be sure all the 
permutations are covered.


Hi, i propose this:

https://github.com/D-Programming-Language/phobos/pull/3058



Re: Replace core language HexStrings with library entity

2015-03-17 Thread bearophile via Digitalmars-d

Baz:


https://github.com/D-Programming-Language/phobos/pull/3058


I suggest to replace litteral with literal, as in computer 
science:

http://en.wikipedia.org/wiki/Literal_%28computer_programming%29

Bye,
bearophile


Re: Replace core language HexStrings with library entity

2015-03-17 Thread Baz via Digitalmars-d

On Tuesday, 17 March 2015 at 16:55:53 UTC, bearophile wrote:

Baz:


https://github.com/D-Programming-Language/phobos/pull/3058


I suggest to replace litteral with literal, as in computer 
science:

http://en.wikipedia.org/wiki/Literal_%28computer_programming%29

Bye,
bearophile


Thx, fixed.
This was literally the world wide shame...



Re: Replace core language HexStrings with library entity

2015-03-16 Thread Walter Bright via Digitalmars-d

On 3/16/2015 3:49 PM, Andrei Alexandrescu wrote:

hexString just being there accessible for inspection is a good argument for its
existence. People can use it as inspiration for their own abstractions. -- 
Andrei


That's right. Being able to read in custom-formatted data into compile time 
literals is a big deal.


It's a lot better than the way idgen.d (dmd compiler source) works.


Re: Replace core language HexStrings with library entity

2015-03-16 Thread Andrei Alexandrescu via Digitalmars-d

On 3/16/15 3:02 PM, Adam D. Ruppe wrote:

I really think users should learn the language more than the library
if you know the implementation of hexString, you can do so much more
with it than if you just know the function name. (this is also a benefit
to this kind of function over a built in, of course)


hexString just being there accessible for inspection is a good argument 
for its existence. People can use it as inspiration for their own 
abstractions. -- Andrei


Re: Replace core language HexStrings with library entity

2015-03-16 Thread Andrei Alexandrescu via Digitalmars-d

On 3/16/15 6:45 PM, Daniel Murphy wrote:

Nick Treleaven  wrote in message news:me6jo4$ca$1...@digitalmars.com...


0b1010 binary literals (even though C++11 supports them)
0xABCD hex literals (but useful for porting C)


You can take them when you pry them from my cold, dead hands.  These are
1000x times more useful than octal and deserve to be built in.


Agreed.

On a higher level: there's no subset of the language that's at the same 
time sufficiently complex and sufficiently obscure to make its removal a 
net positive.



Andrei


Re: Replace core language HexStrings with library entity

2015-03-16 Thread Daniel Murphy via Digitalmars-d

Nick Treleaven  wrote in message news:me6jo4$ca$1...@digitalmars.com...


0b1010 binary literals (even though C++11 supports them)
0xABCD hex literals (but useful for porting C)


You can take them when you pry them from my cold, dead hands.  These are 
1000x times more useful than octal and deserve to be built in. 



Re: Replace core language HexStrings with library entity

2015-03-16 Thread ketmar via Digitalmars-d
On Mon, 16 Mar 2015 14:22:38 +, Kagamin wrote:

 On Monday, 16 March 2015 at 12:53:24 UTC, Nick Treleaven wrote:
 /++/ - If we made /**/ nest, /++/ would be unnecessary
 
 I'd just drop nested comments: block comments and version(none)
 are good enough.

and i'll drop `*`. there is no reason to have multiply operator, we 
already have `+`!

signature.asc
Description: PGP signature


Re: Replace core language HexStrings with library entity

2015-03-16 Thread weaselcat via Digitalmars-d

On Monday, 16 March 2015 at 14:26:27 UTC, ketmar wrote:

On Mon, 16 Mar 2015 14:22:38 +, Kagamin wrote:


On Monday, 16 March 2015 at 12:53:24 UTC, Nick Treleaven wrote:

/++/ - If we made /**/ nest, /++/ would be unnecessary


I'd just drop nested comments: block comments and version(none)
are good enough.


and i'll drop `*`. there is no reason to have multiply 
operator, we

already have `+`!


Just submit an implementation of templated `+` to phobos

a +!5 b

;)


Re: Replace core language HexStrings with library entity

2015-03-16 Thread Kagamin via Digitalmars-d

On Monday, 16 March 2015 at 12:53:24 UTC, Nick Treleaven wrote:

/++/ - If we made /**/ nest, /++/ would be unnecessary


I'd just drop nested comments: block comments and version(none) 
are good enough.


Re: Replace core language HexStrings with library entity

2015-03-16 Thread Nick Treleaven via Digitalmars-d

On 15/03/2015 19:46, Walter Bright wrote:

Any other ideas on things that can removed from the core language and
replaced with library entities?


0b1010 binary literals (even though C++11 supports them)
0xABCD hex literals (but useful for porting C)

Also, there are some things which I think are unnecessary:

/++/ - If we made /**/ nest, /++/ would be unnecessary. It would 
potentially break code, but I think it would always cause a compiler 
error so breakage wouldn't be silent. I think good C code tends to avoid 
having /* /* */ comments (and instead uses #if 0 ... #endif).


q'' non-nested delimited strings. Delimited strings seem to be quite 
rarely used, but the non-matching form I've never seem in the wild. 
Probably any intended use of these could instead use the q[] matching 
form or raw `` or heredoc strings instead.


Re: Replace core language HexStrings with library entity

2015-03-16 Thread deadalnix via Digitalmars-d

On Sunday, 15 March 2015 at 21:44:38 UTC, Baz wrote:

Yes, i'll send a PR tomorrow of tuesday.


Thank you !


Re: Replace core language HexStrings with library entity

2015-03-16 Thread via Digitalmars-d

On Sunday, 15 March 2015 at 21:18:11 UTC, Baz wrote:

On Sunday, 15 March 2015 at 19:47:06 UTC, Walter Bright wrote:

HexStrings:

   http://dlang.org/lex.html#HexString

They're rarely used, but very useful when needed. But, as the 
octal literals have shown, they can be easily replaced with a 
library template:


   x00 FBCD 32FD 0A

becomes:

   hex!00 FBCD 32FD 0A

Thoughts? Anyone want to write the hex template?


I'd be interested. Here's a quick draft based on octal:

http://dpaste.dzfl.pl/656a94cdfdba


Nitpick: Literal is spelled with one t.


Re: Replace core language HexStrings with library entity

2015-03-16 Thread via Digitalmars-d

On Monday, 16 March 2015 at 07:45:16 UTC, Kagamin wrote:

On Sunday, 15 March 2015 at 20:36:18 UTC, Marc Schütz wrote:

On Sunday, 15 March 2015 at 19:55:39 UTC, Kagamin wrote:

http://dpaste.dzfl.pl/0f63623cc262a ?


Wrong link? Or wrong thread?


On Sunday, 15 March 2015 at 19:47:06 UTC, Walter Bright wrote:
Any other ideas on things that can removed from the core 
language and replaced with library entities?


Ok, I get it now. But this replaces only `scope(exit)`. What 
about `scope(success)` and `scope(failure)`?


Re: Replace core language HexStrings with library entity

2015-03-16 Thread Nick Treleaven via Digitalmars-d

On 16/03/2015 14:22, Kagamin wrote:

On Monday, 16 March 2015 at 12:53:24 UTC, Nick Treleaven wrote:

/++/ - If we made /**/ nest, /++/ would be unnecessary


I'd just drop nested comments: block comments and version(none) are good
enough.


They need to nest in order to allow block comments in documentation blocks.


Re: Replace core language HexStrings with library entity

2015-03-16 Thread Baz via Digitalmars-d

On Sunday, 15 March 2015 at 21:41:06 UTC, bearophile wrote:

Walter Bright:

Unfortunately, it needs to be a dropin replacement for x..., 
which returns a string/wstring/dstring.


This is bad. 99% of the times you don't want a 
string/wstring/dstring out of a hex string:


https://issues.dlang.org/show_bug.cgi?id=10454
https://issues.dlang.org/show_bug.cgi?id=5909

Bye,
bearophile


this is the API that's about to be proposed, it named as 
suggested by A.A., and it handles the two issues you point out:


---
public string hexString(string hexData, bool putWhites = false)()
public string hexString(dstring hexData, bool putWhites = false)()
public string hexString(wstring hexData, bool putWhites = false)()

public ubyte[] hexBytes(string hexData)()
public ubyte[] hexBytes(dstring hexData)()
public ubyte[] hexBytes(wstring hexData)()
---

additionally to x string, a template parameter allows to put raw 
whites, e.g


---
assert(hexString!(30 30, true) == 0 1);
assert(hexString!(30 31) == 01); // standard x string
---


Re: Replace core language HexStrings with library entity

2015-03-16 Thread Andrei Alexandrescu via Digitalmars-d

On 3/16/15 9:29 AM, Baz wrote:

On Sunday, 15 March 2015 at 21:41:06 UTC, bearophile wrote:

Walter Bright:


Unfortunately, it needs to be a dropin replacement for x..., which
returns a string/wstring/dstring.


This is bad. 99% of the times you don't want a string/wstring/dstring
out of a hex string:

https://issues.dlang.org/show_bug.cgi?id=10454
https://issues.dlang.org/show_bug.cgi?id=5909

Bye,
bearophile


this is the API that's about to be proposed, it named as suggested by
A.A., and it handles the two issues you point out:

---
public string hexString(string hexData, bool putWhites = false)()
public string hexString(dstring hexData, bool putWhites = false)()
public string hexString(wstring hexData, bool putWhites = false)()

public ubyte[] hexBytes(string hexData)()
public ubyte[] hexBytes(dstring hexData)()
public ubyte[] hexBytes(wstring hexData)()
---


(Drop the public, this ain't Java.)

I don't see a necessity for the input string having different widths; 
string is enough. There may be a necessity to choose the width of the 
output with changes in function name, e.g. hexWString and hexDString.


That opens the question whether we want only ubyte[] for hex bytes or 
all integral types.



additionally to x string, a template parameter allows to put raw whites,
e.g

---
assert(hexString!(30 30, true) == 0 1);
assert(hexString!(30 31) == 01); // standard x string
---


I don't see a need for this.


Andrei



Re: Replace core language HexStrings with library entity

2015-03-16 Thread Adam D. Ruppe via Digitalmars-d

On Monday, 16 March 2015 at 21:40:25 UTC, Walter Bright wrote:
BTW, the motivation for x strings is that dumpers often put out 
results like this:


The nice thing about CTFE is it could literally just use that 
string and snip out the pieces as needed.


I really think users should learn the language more than the 
library if you know the implementation of hexString, you can 
do so much more with it than if you just know the function name. 
(this is also a benefit to this kind of function over a built in, 
of course)


Re: Replace core language HexStrings with library entity

2015-03-16 Thread ketmar via Digitalmars-d
On Mon, 16 Mar 2015 22:02:38 +, Adam D. Ruppe wrote:

 I really think users should learn the language more than the library

hear, hear!

signature.asc
Description: PGP signature


Re: Replace core language HexStrings with library entity

2015-03-16 Thread Walter Bright via Digitalmars-d

BTW, the motivation for x strings is that dumpers often put out results like 
this:

: 80 14  0 12 43 3a 5c 63 62 78 5c 6d 61 72 73 5cC:\cbx\mars\
0010: 74 6f 69 72 2e 63  0 88  6  0  0 9d 37 6e 4f  0toir.c..7nO.
0020: 88  6  0  0 a1  1 43 56  0 96 4c  0  0  4 46 4c..CV..L...FL
0030: 41 54  5 5f 54 45 58 54  4 43 4f 44 45  5 5f 44AT._TEXT.CODE._D
0040: 41 54 41  4 44 41 54 41  5 43 4f 4e 53 54  4 5fATA.DATA.CONST._
0050: 42 53 53  3 42 53 53  7 24 24 54 59 50 45 53  6BSS.BSS.$$TYPES.
0060: 44 45 42 54 59 50  9 24 24 53 59 4d 42 4f 4c 53DEBTYP.$$SYMBOLS
0070:  6 44 45 42 53 59 4d  0 99  9  0 a9 d7 11  0  0.DEBSYM.
0080:  3  4  1  0 99  9  0 a9 78 10  0  0  5  6  1  0x...
0090: 99  9  0 a9  0  0  0  0  7  7  1  0 99  9  0 a9
00a0:  0  0  0  0  8  9  1  0 99  9  0 a1 15  e  0  0
00b0:  c  d  1  0 99  9  0 a1 e3 39  0  0  a  b  1  0.9..
00c0: 9a  2  0  2  0 91 73  0  0  1 2e 3f 69 6e 63 55..s?incU
00d0: 73 61 67 65 45 6c 65 6d 40 40 59 41 50 41 55 65sageElem@@YAPAUe
00e0: 6c 65 6d 40 40 50 41 55 49 52 53 74 61 74 65 40lem@@PAUIRState@
00f0: 40 55 4c 6f 63 40 40 40 5a 10  0  0  0  0 36 3f@ULoc@@@Z.6?
0100: 67 65 74 45 74 68 69 73 40 40 59 41 50 41 55 65getEthis@@YAPAUe
0110: 6c 65 6d 40 40 55 4c 6f 63 40 40 50 41 55 49 52lem@@ULoc@@PAUIR
0120: 53 74 61 74 65 40 40 50 41 56 44 73 79 6d 62 6fState@@PAVDsymbo
0130: 6c 40 40 40 5a  7  1  0  0  0  0 95  1  2  0  1l@@@Z...

and it's a giant pain to add all the \x notations, besides making it unreadably 
ugly.


Re: Replace core language HexStrings with library entity

2015-03-16 Thread Baz via Digitalmars-d
On Monday, 16 March 2015 at 16:45:25 UTC, Andrei Alexandrescu 
wrote:

On 3/16/15 9:29 AM, Baz wrote:

On Sunday, 15 March 2015 at 21:41:06 UTC, bearophile wrote:

Walter Bright:

Unfortunately, it needs to be a dropin replacement for 
x..., which

returns a string/wstring/dstring.


This is bad. 99% of the times you don't want a 
string/wstring/dstring

out of a hex string:

https://issues.dlang.org/show_bug.cgi?id=10454
https://issues.dlang.org/show_bug.cgi?id=5909

Bye,
bearophile


this is the API that's about to be proposed, it named as 
suggested by

A.A., and it handles the two issues you point out:

---
public string hexString(string hexData, bool putWhites = 
false)()
public string hexString(dstring hexData, bool putWhites = 
false)()
public string hexString(wstring hexData, bool putWhites = 
false)()


public ubyte[] hexBytes(string hexData)()
public ubyte[] hexBytes(dstring hexData)()
public ubyte[] hexBytes(wstring hexData)()
---


(Drop the public, this ain't Java.)

I don't see a necessity for the input string having different 
widths; string is enough. There may be a necessity to choose 
the width of the output with changes in function name, e.g. 
hexWString and hexDString.


That opens the question whether we want only ubyte[] for hex 
bytes or all integral types.


additionally to x string, a template parameter allows to put 
raw whites,

e.g

---
assert(hexString!(30 30, true) == 0 1);
assert(hexString!(30 31) == 01); // standard x string
---


I don't see a need for this.


Andrei


I'd like to propose this:

http://dpaste.dzfl.pl/044958878fd9

But after reading D.Nadlinger mind about the whole thing i 
realize that's the opposite the things should be done in the 
opposite way.


Re: Replace core language HexStrings with library entity

2015-03-16 Thread Kagamin via Digitalmars-d

On Sunday, 15 March 2015 at 20:36:18 UTC, Marc Schütz wrote:

On Sunday, 15 March 2015 at 19:55:39 UTC, Kagamin wrote:

http://dpaste.dzfl.pl/0f63623cc262a ?


Wrong link? Or wrong thread?


On Sunday, 15 March 2015 at 19:47:06 UTC, Walter Bright wrote:
Any other ideas on things that can removed from the core 
language and replaced with library entities?


Re: Replace core language HexStrings with library entity

2015-03-16 Thread Andrei Alexandrescu via Digitalmars-d

On 3/16/15 11:54 AM, bearophile wrote:

Andrei Alexandrescu:


That opens the question whether we want only ubyte[] for hex bytes or
all integral types.


I suggest to implement only ubyte[] first. And wait for enhancement
requests.


At a minimum we need the built-in replacement. -- Andrei



Re: Replace core language HexStrings with library entity

2015-03-16 Thread bearophile via Digitalmars-d

Andrei Alexandrescu:

That opens the question whether we want only ubyte[] for hex 
bytes or all integral types.


I suggest to implement only ubyte[] first. And wait for 
enhancement requests.


Bye,
bearophile


Re: Replace core language HexStrings with library entity

2015-03-16 Thread David Nadlinger via Digitalmars-d
On Monday, 16 March 2015 at 18:58:11 UTC, Andrei Alexandrescu 
wrote:
I suggest to implement only ubyte[] first. And wait for 
enhancement

requests.


At a minimum we need the built-in replacement. -- Andrei


cast(string)hex!… works just fine as a built-in replacement 
(where hex returns an ubyte array).


Why should we repeat the same design mistake if we are going to 
break people's code anyway?


 — David


Re: Replace core language HexStrings with library entity

2015-03-15 Thread deadalnix via Digitalmars-d

On Sunday, 15 March 2015 at 19:48:22 UTC, Walter Bright wrote:

The motivation for this came from a post by deadalnix.


And I'm obviously all for it :)


Re: Replace core language HexStrings with library entity

2015-03-15 Thread Kagamin via Digitalmars-d

http://dpaste.dzfl.pl/0f63623cc262a ?


Re: Replace core language HexStrings with library entity

2015-03-15 Thread via Digitalmars-d

On Sunday, 15 March 2015 at 19:47:06 UTC, Walter Bright wrote:

HexStrings:

http://dlang.org/lex.html#HexString

They're rarely used, but very useful when needed. But, as the 
octal literals have shown, they can be easily replaced with a 
library template:


x00 FBCD 32FD 0A

becomes:

hex!00 FBCD 32FD 0A

It'll simplify the core language slightly.

Thoughts? Anyone want to write the hex template? Any other 
ideas on things that can removed from the core language and 
replaced with library entities?


Can we make it so it returns a ubyte[]?


Re: Replace core language HexStrings with library entity

2015-03-15 Thread via Digitalmars-d

On Sunday, 15 March 2015 at 19:55:39 UTC, Kagamin wrote:

http://dpaste.dzfl.pl/0f63623cc262a ?


Wrong link? Or wrong thread?


Re: Replace core language HexStrings with library entity

2015-03-15 Thread Walter Bright via Digitalmars-d

The motivation for this came from a post by deadalnix.


Replace core language HexStrings with library entity

2015-03-15 Thread Walter Bright via Digitalmars-d

HexStrings:

http://dlang.org/lex.html#HexString

They're rarely used, but very useful when needed. But, as the octal literals 
have shown, they can be easily replaced with a library template:


x00 FBCD 32FD 0A

becomes:

hex!00 FBCD 32FD 0A

It'll simplify the core language slightly.

Thoughts? Anyone want to write the hex template? Any other ideas on things that 
can removed from the core language and replaced with library entities?


Re: Replace core language HexStrings with library entity

2015-03-15 Thread bearophile via Digitalmars-d

Marc Schütz:


Can we make it so it returns a ubyte[]?


There is an enhancement request on this (for the built in hex 
strings).


Bye,
bearophile


Re: Replace core language HexStrings with library entity

2015-03-15 Thread Walter Bright via Digitalmars-d

On 3/15/2015 2:34 PM, Walter Bright wrote:

P.S. Also need to include all the examples in the dlang reference as unittest
cases.


Also, HexStrings can handle w and d postfixes. Use the lexer.c code for 
TOK::hexStringConstant() as a guide to be sure all the permutations are covered.


Re: Replace core language HexStrings with library entity

2015-03-15 Thread Andrei Alexandrescu via Digitalmars-d

On 3/15/15 12:46 PM, Walter Bright wrote:

HexStrings:

 http://dlang.org/lex.html#HexString

They're rarely used, but very useful when needed. But, as the octal
literals have shown, they can be easily replaced with a library template:

 x00 FBCD 32FD 0A

becomes:

 hex!00 FBCD 32FD 0A

It'll simplify the core language slightly.

Thoughts? Anyone want to write the hex template? Any other ideas on
things that can removed from the core language and replaced with library
entities?


hexString and hexBytes. -- Andrei


Re: Replace core language HexStrings with library entity

2015-03-15 Thread Baz via Digitalmars-d

On Sunday, 15 March 2015 at 19:47:06 UTC, Walter Bright wrote:

HexStrings:

http://dlang.org/lex.html#HexString

They're rarely used, but very useful when needed. But, as the 
octal literals have shown, they can be easily replaced with a 
library template:


x00 FBCD 32FD 0A

becomes:

hex!00 FBCD 32FD 0A

Thoughts? Anyone want to write the hex template?


I'd be interested. Here's a quick draft based on octal:

http://dpaste.dzfl.pl/656a94cdfdba



Re: Replace core language HexStrings with library entity

2015-03-15 Thread Walter Bright via Digitalmars-d

On 3/15/2015 2:29 PM, bearophile wrote:

There is an enhancement request on this (for the built in hex strings).


A link would be helpful!



Re: Replace core language HexStrings with library entity

2015-03-15 Thread H. S. Teoh via Digitalmars-d
On Sun, Mar 15, 2015 at 11:32:04PM +0100, FG via Digitalmars-d wrote:
 On 2015-03-15 at 22:41, bearophile wrote:
 Walter Bright:
 
 Unfortunately, it needs to be a dropin replacement for x..., which
 returns a string/wstring/dstring.
 
 This is bad. 99% of the times you don't want a string/wstring/dstring
 out of a hex string:
 
 Then maybe hex!... should produce the desired ubyte[] and something
 with a different name (for example hexString!...) would be the
 drop-in replacement for x..., returning a string. The more complex
 name being a hint that what you really need is hex.

+1. I like this.

I was quite disappointed when I first learned that x... returns a
string rather than immutable(ubyte)[]. I have quite a number of use
cases in mind where I'd want to specify hex values to represent binary
data, but can't think of any where I'd want to do that to represent
string data. Needing to use casts with x... just looks wrong.

So using hex!... for immutable(ubyte)[] gets +1 from me.  Leave
hexString!... to emulate the current behaviour of x


T

-- 
War doesn't prove who's right, just who's left. -- BSD Games' Fortune


Re: Replace core language HexStrings with library entity

2015-03-15 Thread Walter Bright via Digitalmars-d

On 3/15/2015 2:18 PM, Baz wrote:

On Sunday, 15 March 2015 at 19:47:06 UTC, Walter Bright wrote:

HexStrings:

http://dlang.org/lex.html#HexString

They're rarely used, but very useful when needed. But, as the octal literals
have shown, they can be easily replaced with a library template:

x00 FBCD 32FD 0A

becomes:

hex!00 FBCD 32FD 0A

Thoughts? Anyone want to write the hex template?


I'd be interested. Here's a quick draft based on octal:

http://dpaste.dzfl.pl/656a94cdfdba



I think you've got the right idea. Time for a pull request?

P.S. Also need to include all the examples in the dlang reference as unittest 
cases.


Re: Replace core language HexStrings with library entity

2015-03-15 Thread FG via Digitalmars-d

On 2015-03-15 at 22:41, bearophile wrote:

Walter Bright:


Unfortunately, it needs to be a dropin replacement for x..., which returns a 
string/wstring/dstring.


This is bad. 99% of the times you don't want a string/wstring/dstring out of a 
hex string:


Then maybe hex!... should produce the desired ubyte[] and something with a different name (for 
example hexString!...) would be the drop-in replacement for x..., returning a string. 
The more complex name being a hint that what you really need is hex.


Re: Replace core language HexStrings with library entity

2015-03-15 Thread bearophile via Digitalmars-d

Andrei Alexandrescu:


hexString and hexBytes. -- Andrei


Can you show me one or two different use cases of hexString?

Bye,
bearophile


Re: Replace core language HexStrings with library entity

2015-03-15 Thread H. S. Teoh via Digitalmars-d
On Sun, Mar 15, 2015 at 04:21:09PM -0700, Andrei Alexandrescu via Digitalmars-d 
wrote:
 On 3/15/15 12:46 PM, Walter Bright wrote:
 HexStrings:
 
  http://dlang.org/lex.html#HexString
 
 They're rarely used, but very useful when needed. But, as the octal
 literals have shown, they can be easily replaced with a library
 template:
 
  x00 FBCD 32FD 0A
 
 becomes:
 
  hex!00 FBCD 32FD 0A
 
 It'll simplify the core language slightly.
 
 Thoughts? Anyone want to write the hex template? Any other ideas on
 things that can removed from the core language and replaced with
 library entities?
 
 hexString and hexBytes. -- Andrei

Even better!


T

-- 
Nothing in the world is more distasteful to a man than to take the path that 
leads to himself. -- Herman Hesse


Re: Replace core language HexStrings with library entity

2015-03-15 Thread Andrei Alexandrescu via Digitalmars-d

On 3/15/15 2:37 PM, Walter Bright wrote:

On 3/15/2015 1:38 PM, Marc =?UTF-8?B?U2Now7x0eiI=?= schue...@gmx.net
wrote:

Can we make it so it returns a ubyte[]?


Unfortunately, it needs to be a dropin replacement for x..., which
returns a string/wstring/dstring.


That's what nice about library artifacts vs. language artifacts: you can 
add more of the former! Define hexBytes and hexString. -- Andrei


Re: Replace core language HexStrings with library entity

2015-03-15 Thread Walter Bright via Digitalmars-d

On 3/15/2015 1:38 PM, Marc =?UTF-8?B?U2Now7x0eiI=?= schue...@gmx.net wrote:

Can we make it so it returns a ubyte[]?


Unfortunately, it needs to be a dropin replacement for x..., which returns a 
string/wstring/dstring.


Re: Replace core language HexStrings with library entity

2015-03-15 Thread Baz via Digitalmars-d

On Sunday, 15 March 2015 at 21:34:22 UTC, Walter Bright wrote:

On 3/15/2015 2:18 PM, Baz wrote:

On Sunday, 15 March 2015 at 19:47:06 UTC, Walter Bright wrote:

HexStrings:

   http://dlang.org/lex.html#HexString

They're rarely used, but very useful when needed. But, as the 
octal literals
have shown, they can be easily replaced with a library 
template:


   x00 FBCD 32FD 0A

becomes:

   hex!00 FBCD 32FD 0A

Thoughts? Anyone want to write the hex template?


I'd be interested. Here's a quick draft based on octal:

http://dpaste.dzfl.pl/656a94cdfdba



I think you've got the right idea. Time for a pull request?

P.S. Also need to include all the examples in the dlang 
reference as unittest cases.


Yes, i'll send a PR tomorrow of tuesday.



Re: Replace core language HexStrings with library entity

2015-03-15 Thread bearophile via Digitalmars-d

Walter Bright:

Unfortunately, it needs to be a dropin replacement for x..., 
which returns a string/wstring/dstring.


This is bad. 99% of the times you don't want a 
string/wstring/dstring out of a hex string:


https://issues.dlang.org/show_bug.cgi?id=10454
https://issues.dlang.org/show_bug.cgi?id=5909

Bye,
bearophile


Re: Replace core language HexStrings with library entity

2015-03-15 Thread Walter Bright via Digitalmars-d

On 3/15/2015 2:44 PM, Baz wrote:

Yes, i'll send a PR tomorrow of tuesday.


Good!


Re: Replace core language HexStrings with library entity

2015-03-15 Thread Walter Bright via Digitalmars-d

On 3/15/2015 4:28 PM, Andrei Alexandrescu wrote:

That's what nice about library artifacts vs. language artifacts: you can add
more of the former! Define hexBytes and hexString. -- Andrei


Yup. Should resist the urge to fix hexString, just make it a dropin 
replacement.