Re: Emacs d-mode indentation, 2 spaces to 4?

2017-10-04 Thread Ali Çehreli via Digitalmars-d-learn

On 10/04/2017 09:57 PM, John Gabriele wrote:
I'm using Emacs 25.2.2 with d-mode-20161022.717 on Debian Testing, and 
by default this mode indents by 2 spaces. Is there an easy way to 
configure it to use 4 spaces instead?




I can't imagine it has its own tab width. d-mode is based on cc-mode. 
Setting the tab width in that mode or in general should work for d-mode 
as well.


Just research tab width for Emacs. If nothing else works and you're 
happy with a global tab-width of 4, add this to your .emacs file:


(setq-default tab-width 4)

Ali


Emacs d-mode indentation, 2 spaces to 4?

2017-10-04 Thread John Gabriele via Digitalmars-d-learn
I'm using Emacs 25.2.2 with d-mode-20161022.717 on Debian 
Testing, and by default this mode indents by 2 spaces. Is there 
an easy way to configure it to use 4 spaces instead?




Re: Imports

2017-10-04 Thread Mike Parker via Digitalmars-d-learn

On Wednesday, 4 October 2017 at 16:31:35 UTC, Jiyan wrote:

Hey,

as i see it the -Ipath command for dmd just imports the files 
within a directory but it doesnt work for sub directories, so i 
can write something like:


import subdirectoryFromPath.file;

Also with dub this doesnt seem possible (sourcePaths seems to 
work as the -I command).


Is there a way to do what i want? Or am i doing something wrong?



If you have this directory tree:

- mylib
-- pack1
--- a.d
--- b.d
 pack2
- c.d

Then you would pass -Imylib to the compiler. In your code, you 
can write the following:


import pack1.a;
import pack1.pack2.c;

You don't import files or directories, just packages and modules. 
By default, package names correspond to directory names and 
module names correspond to file names, but they don't have to 
(it's best practice, though).


And by the way what is the difference from sourcePaths to 
importPaths?


sourcePaths where DUB can find additional files, outside of the 
default source directory, to pass to the compiler for 
compilation. importPaths will all be passed to the compile as -I. 
It seems you think that importing a module causes its source file 
to be automatically compiled. That doesn't happen.


imports are strictly for the compiler to know which symbols are 
available for the current module to use. It does not attempt to 
compile imported modules. Imported modules might be part of your 
program or they might be part of a precompiled library. In the 
latter case, they don't need to be compiled because they already 
are. So the compiler leaves it up to you to decide which modules 
need to be compiled.


Dub, by default, will make sure all modules in your source 
directory are compiled. It will also guarantee the compiler knows 
where to find them for imports. Sometimes, you might also want to 
import files from a library that isn't available from 
code.dlang.org. You can use importPaths to tell dub additional 
paths to give the compiler. If those files are part of a 
precompiled library you can link the library and you're done. If 
they aren't, you can use sourcePaths to tell DUB that all the 
source modules in the additional paths also need to be passed to 
the compiler for compiling and linking into the final executable.


Iterating over functions in module in order?

2017-10-04 Thread Jerry via Digitalmars-d-learn
Any ideas on how someone could iterate over functions in a module 
as they appear, rather than any random order, without having to 
manually label them?


Re: Andrei's "The D Programming Language" book. Up to date?

2017-10-04 Thread Ali Çehreli via Digitalmars-d-learn
Andrei's book contains some outdated and some not-yet-implemented things 
but it's still a great read. It explains core features and design 
decisions of D very well.


Ali



Re: What the hell is wrong with D?

2017-10-04 Thread Tristan B. Kildaire via Digitalmars-d-learn

On 2017/09/19 19:40, EntangledQuanta wrote:


 writeln(x + ((_win[0] == '@') ? w/2 : 0));
 writeln(x + (_win[0] == '@') ? w/2 : 0);

The first returns x + w/2 and the second returns w/2!

WTF!!! This stupid bug has caused me considerable waste of time. Thanks 
Walter! I know you care so much about my time!


I assume someone is going to tell me that the compiler treats it as

writeln((x + (_win[0] == '@')) ? w/2 : 0);

Yeah, that is really logical! No wonder D sucks and has so many bugs! 
Always wants me to be explicit about the stuff it won't figure out but 
it implicitly does stuff that makes no sense. The whole point of the 
parenthesis is to inform the compiler about the expression to use. Not 
use everything to the left of ?.


Thanks for wasting some of my life... Just curious about who will 
justify the behavior and what excuses they will give.
When you get too angry about the little things in life. "There are 
people dying in the world and this angers you, chill".


Andrei's "The D Programming Language" book. Up to date?

2017-10-04 Thread John Gabriele via Digitalmars-d-learn

Hi all,

This is my first message to this forum. And what a pleasure it is 
to be here. :)


I was just looking around at what D books are available. I see 
that Andrei's "The D Programming Language" was published in 2010. 
What's changed in the language, library, and community since then 
that I should be aware of if following along with and learning 
from that book?


Incidentally, is a new edition is on its way any time soon?

Thanks!



Re: For fun: Expressive C++ 17 Coding Challenge in D

2017-10-04 Thread lithium iodate via Digitalmars-d-learn

On Wednesday, 4 October 2017 at 15:30:08 UTC, Ali Çehreli wrote:

the hidden \r characters at the ends


Those got me too!


Here's my less than optimal solution:

int main(string[] args)
{   import std.stdio;
import std.algorithm.iteration : map, splitter, joiner, each;
import std.algorithm.searching : countUntil;
import std.range : enumerate;
import std.string : chomp;

if (args.length != 5 && args.length != 4)
{   stderr.writeln("Something went wrong and it's obviously 
your fault.");

return 1;
}

immutable columnID = args[2];
immutable substitute = args[3];

auto data = File(args[1], "r").byLine.map!chomp;
if (data.empty)
{   stderr.writeln("input file missing\n\n(actually it 
exists, it's just "

~ "empty)\n\n(your fault regardless)");
return 1;
}

File output;
if (args.length == 5)
output = File(args[4], "w");
else
output = stdout;

immutable matchedColumn = 
data.front.splitter(",").countUntil(columnID);

if (matchedColumn < 0)
{   stderr.writeln("column name doesn’t exist in the input 
file\n\n(and "

~ "it's your fault)");
return 1;
}

output.writeln(data.front);
data.popFront;

data.map!(line => line
.splitter(",")
.enumerate
.map!(a => a.index == matchedColumn ? substitute : 
a.value)

.joiner(",")).each!(a => output.writeln(a));

return 0;
}

I think the biggest problem is the lack of support for quoted 
content.


Re: Does writing from NNTP work?

2017-10-04 Thread Tristan B. Kildaire via Digitalmars-d-learn

On 2017/10/04 21:20, Jonathan M Davis wrote:

On Wednesday, October 04, 2017 17:26:36 ketmar via Digitalmars-d-learn
wrote:

Tristan B. Kildaire wrote:

Does this work?


btw. there is "D" newsgroup which you can use for testing your NNTP
client.

web interface: http://forum.dlang.org/group/D
NNTP name: "D"


You can also just post whatever actual content you wanted to post and see if
it shows up on forum.dlang.org or not.

- Jonathan M Davis


Oh yes but at the time I didn't have anything to write so I tested this.


Re: For fun: Expressive C++ 17 Coding Challenge in D

2017-10-04 Thread Jesse Phillips via Digitalmars-d-learn

On Wednesday, 4 October 2017 at 15:26:02 UTC, Ali Çehreli wrote:

On 10/04/2017 02:04 AM, Biotronic wrote:

...

Hey where is the list of features used e.g: ranges, ufcs...




Re: Does writing from NNTP work?

2017-10-04 Thread Jonathan M Davis via Digitalmars-d-learn
On Wednesday, October 04, 2017 17:26:36 ketmar via Digitalmars-d-learn 
wrote:
> Tristan B. Kildaire wrote:
> > Does this work?
>
> btw. there is "D" newsgroup which you can use for testing your NNTP
> client.
>
> web interface: http://forum.dlang.org/group/D
> NNTP name: "D"

You can also just post whatever actual content you wanted to post and see if
it shows up on forum.dlang.org or not.

- Jonathan M Davis



Re: For fun: Expressive C++ 17 Coding Challenge in D

2017-10-04 Thread jmh530 via Digitalmars-d-learn

On Wednesday, 4 October 2017 at 15:30:08 UTC, Ali Çehreli wrote:

On 10/04/2017 02:26 AM, Atila Neves wrote:

> in D so trivial it'd probably make me sleep out of boredom.

I spent more time on this obviously trivial program than 
necessary. :( In addition to facing known template resolution 
issues, the hidden \r characters at the ends of some of the 
fields in the example textcolumns threw me off for a while. 
(Compounded by silly mistakes that I was making.)


But it's not wasted time. You could also use it somewhere else. 
Blog post, updated version of your book, new book, etc.


Re: Looking for a mentor in D

2017-10-04 Thread Ali Çehreli via Digitalmars-d-learn

On 10/02/2017 11:54 PM, eastanon wrote:

> I would like to dive deeper into D, however sometimes it can get
> intimidating when I read some of the discussions on the forums and I
> realise I know nothing.

I think it happens to everyone at different level. (Certainly happens to 
me all the time.)


I find such discussion areas excellent places to improve myself. I 
started learning C++ on comp.lang.c++.moderated and D here without any 
CS background myself. Current discussions make it obvious what is in 
fashion these days and then you go ahead and read a little bit about the 
ones that are interesting to you.


> Please let  me know if you would like to be a D mentor.

I think it's beneficial to others as well as to you if we keep the 
conversation on this forum. Many more opportunities to learn from 
others' questions and many less opportunities of BS by mentors... You 
can still email me, a person without CS background, at 
acehr...@yahoo.com. :)


Ali



Re: Looking for a mentor in D

2017-10-04 Thread Jesse Phillips via Digitalmars-d-learn

On Tuesday, 3 October 2017 at 06:54:01 UTC, eastanon wrote:
I would like to choose D as my go to language and to do that I 
realise I need a mentor, someone who will walk and guide me and 
not get irritated by basic questions. I am pretty much a DIY 
person, so don't worry about mundane issues.  I want to have 
someone with whom I can discuss some practical choices and 
algorithms. I am a self-taught programmer and never took CS 
classes. I am good in R, Python and Ruby.


Please let  me know if you would like to be a D mentor.


I haven't seen anyone blasted for asking programming questions on 
these forms as long as they were using D to solve them. Though 
maybe that wouldn't be true if the forum was consumed by such 
questions.


Feel free to shoot me an email though jesse.k.phill...@gmail.com 
and we can see how it goes.


Imports

2017-10-04 Thread Jiyan via Digitalmars-d-learn

Hey,

as i see it the -Ipath command for dmd just imports the files 
within a directory but it doesnt work for sub directories, so i 
can write something like:


import subdirectoryFromPath.file;

Also with dub this doesnt seem possible (sourcePaths seems to 
work as the -I command).


Is there a way to do what i want? Or am i doing something wrong?
And by the way what is the difference from sourcePaths to 
importPaths?




Re: Vibe.d using Windows Certificate binding, possible?

2017-10-04 Thread Jesse Phillips via Digitalmars-d-learn
On Wednesday, 4 October 2017 at 03:39:22 UTC, rikki cattermole 
wrote:

On 04/10/2017 3:54 AM, Jesse Phillips wrote:

https://msdn.microsoft.com/en-us/library/windows/desktop/cc307220(v=vs.85).aspx



"Application program source files include the Http.h header 
file to access function prototypes and structure definitions 
for the HTTP Server API. Developers can use the Httpapi.lib 
library file to build applications that use the HTTP Server 
API. At runtime, applications link to the Httpapi.dll."


So no, vibe.d can't work with it. This a special snow flake 
feature from 2k3 server days.


Thank you, and it looks like core.sys.windows doesn't have this 
header file defined either.


And now I've learned something new about MSDN docs.


Re: For fun: Expressive C++ 17 Coding Challenge in D

2017-10-04 Thread Ali Çehreli via Digitalmars-d-learn

On 10/04/2017 02:26 AM, Atila Neves wrote:

> in D so trivial it'd probably make me sleep out of boredom.

I spent more time on this obviously trivial program than necessary. :( 
In addition to facing known template resolution issues, the hidden \r 
characters at the ends of some of the fields in the example textcolumns 
threw me off for a while. (Compounded by silly mistakes that I was making.)


> Maybe that should be our new catchphrase:
>
> "D: Making programming boring"

While still keeping it interesting enough to scratch your head once in a 
while. :)


Ali



Re: For fun: Expressive C++ 17 Coding Challenge in D

2017-10-04 Thread Ali Çehreli via Digitalmars-d-learn

On 10/04/2017 02:04 AM, Biotronic wrote:

> I opted for writing to stdout instead, because 1) it's easier, x) it's
> less code, and b) it's more flexible.

Exactly! :)

> a simple replacement of readText with an mmapped equivalent should
> enable humongous file support with no other code change required.

Here is one from me:

import std.stdio;
import std.algorithm;
import std.string;
import std.range;

const delim = ",";

auto byColumn(R)(R range) {
return range
   .splitter(delim)
   .map!strip;
}

int main(string[] args) {
if (args.length != 3) {
stderr.writefln("USAGE: %s  ", args[0]);
return 1;
}

const columnName = args[1];
auto lines = stdin.byLine;

const columnNumber = lines
 .front
 .byColumn
 .countUntil(columnName);
if (columnNumber == -1) {
stderr.writefln(`ERROR: Failed to find "%s".`, columnName);
return 1;
}

writeln(lines.front);
lines.popFront();

const replacement = args[2];
auto replaced = lines
.map!(line => line
  .byColumn
  .enumerate
  .map!(t => (t[0] == columnNumber) ? 
replacement : t[1])

  .joiner(delim));

writefln("%(%s\n%)", replaced);

return 0;
}

Ali



Re: Does writing from NNTP work?

2017-10-04 Thread Tristan B. Kildaire via Digitalmars-d-learn

On Wednesday, 4 October 2017 at 14:26:36 UTC, ketmar wrote:

Tristan B. Kildaire wrote:


Does this work?


btw. there is "D" newsgroup which you can use for testing your 
NNTP client.


web interface: http://forum.dlang.org/group/D
NNTP name: "D"


Ah okay. Thanks.


Re: Does writing from NNTP work?

2017-10-04 Thread ketmar via Digitalmars-d-learn

Tristan B. Kildaire wrote:


Does this work?


btw. there is "D" newsgroup which you can use for testing your NNTP client.

web interface: http://forum.dlang.org/group/D
NNTP name: "D"


Re: Looking for a mentor in D

2017-10-04 Thread Tristan B. Kildaire via Digitalmars-d-learn

On 2017/10/03 08:54, eastanon wrote:
I have been reading the D forums for a while and following on its 
amazing progress for a long time. Over time I have even written some 
basic D programs for myself, nothing major or earth shuttering.  I have 
downloaded and read Ali's excellent book.


I would like to dive deeper into D, however sometimes it can get 
intimidating when I read some of the discussions on the forums and I 
realise I know nothing.  People argue on and on about a feature or lack 
of and the future of the language and it starts to cast doubts on my 
desire to learn and be proficient in D.


I would like to choose D as my go to language and to do that I realise I 
need a mentor, someone who will walk and guide me and not get irritated 
by basic questions. I am pretty much a DIY person, so don't worry about 
mundane issues.  I want to have someone with whom I can discuss some 
practical choices and algorithms. I am a self-taught programmer and 
never took CS classes. I am good in R, Python and Ruby.


Please let  me know if you would like to be a D mentor.
I don't have a mentor or anything. I am doing CS next year but I went to 
school and did IT there (I am almost done with school). I recommend 
watching some computer science videos (like one on the fundamentals, 
binary, etc.) and then things start to make more sense (atleast for me).


Also, this is a good place to ask for help and along with the IRC 
channel (#d on irc.freenode.net).


Re: Looking for a mentor in D

2017-10-04 Thread Tristan B. Kildaire via Digitalmars-d-learn

On 2017/10/03 08:54, eastanon wrote:
I have been reading the D forums for a while and following on its 
amazing progress for a long time. Over time I have even written some 
basic D programs for myself, nothing major or earth shuttering.  I have 
downloaded and read Ali's excellent book.


I would like to dive deeper into D, however sometimes it can get 
intimidating when I read some of the discussions on the forums and I 
realise I know nothing.  People argue on and on about a feature or lack 
of and the future of the language and it starts to cast doubts on my 
desire to learn and be proficient in D.


I would like to choose D as my go to language and to do that I realise I 
need a mentor, someone who will walk and guide me and not get irritated 
by basic questions. I am pretty much a DIY person, so don't worry about 
mundane issues.  I want to have someone with whom I can discuss some 
practical choices and algorithms. I am a self-taught programmer and 
never took CS classes. I am good in R, Python and Ruby.


Please let  me know if you would like to be a D mentor.
Oh sorry I see you have read the book on D by Ali. Well we can always 
help you with your questions then.


Re: Does writing from NNTP work?

2017-10-04 Thread Tristan B. Kildaire via Digitalmars-d-learn

On 2017/10/04 16:20, Andrea Fontana wrote:

On Wednesday, 4 October 2017 at 14:18:52 UTC, Tristan B. Kildaire wrote:

Does this work?


No, I don't read you. Try again :)

Haha, thanks. :)


Re: Does writing from NNTP work?

2017-10-04 Thread Andrea Fontana via Digitalmars-d-learn
On Wednesday, 4 October 2017 at 14:18:52 UTC, Tristan B. Kildaire 
wrote:

Does this work?


No, I don't read you. Try again :)


Re: Does writing from NNTP work?

2017-10-04 Thread ketmar via Digitalmars-d-learn

Tristan B. Kildaire wrote:


Does this work?


if you can see this reply, it works.


Re: Does writing from NNTP work?

2017-10-04 Thread Tristan B. Kildaire via Digitalmars-d-learn
On Wednesday, 4 October 2017 at 14:18:52 UTC, Tristan B. Kildaire 
wrote:

Does this work?


Sorry about this guys, just wanted to check out if NNTP access 
worked on my side.


Won't happen again.


Does writing from NNTP work?

2017-10-04 Thread Tristan B. Kildaire via Digitalmars-d-learn

Does this work?


Re: For fun: Expressive C++ 17 Coding Challenge in D

2017-10-04 Thread Biotronic via Digitalmars-d-learn

On Wednesday, 4 October 2017 at 09:04:58 UTC, Biotronic wrote:
Since the code uses ranges though, a simple replacement of 
readText with an mmapped equivalent should enable humongous 
file support with no other code change required.


Drop-in replacement for readText:

struct MmText {
import std.mmfile;

ulong  _fileOffset;
MmFile _file;

this(string filename) {
_file = new MmFile(filename);
}

dchar front() {
auto end = min(_file.length, _fileOffset+4);
auto data = cast(string)_file[_fileOffset..end];
return decodeFront(data);
}

void popFront() {
auto end = min(_file.length, _fileOffset+4);
auto data = cast(string)_file[_fileOffset..end];
size_t bytes;
decodeFront(data, bytes);
_fileOffset += bytes;
}

bool empty() {
return _fileOffset >= _file.length;
}
}

--
  Biotronic


Re: How to implement `isTemplate` traits?

2017-10-04 Thread drug via Digitalmars-d-learn

04.10.2017 12:54, Biotronic пишет:


template isTemplate(T...) if (T.length == 1) {
     enum isTemplate = __traits(isTemplate, T[0]);
}

--
   Biotronic


Thank you!


Re: How to implement `isTemplate` traits?

2017-10-04 Thread Biotronic via Digitalmars-d-learn

On Wednesday, 4 October 2017 at 09:32:31 UTC, drug wrote:

I need to separate templates:
```
foreach(member; __traits(allMembers, V))
{
	static if (__traits(compiles, { auto _val = 
&__traits(getMember, value, member); })

{
		// a template needs to be instantiated to be addressable, so 
it works, but I think it's dirty hack instead of dry and clean 
way...

}
}
```
May be phobos has such traits somewhere?


template isTemplate(T...) if (T.length == 1) {
enum isTemplate = __traits(isTemplate, T[0]);
}

--
  Biotronic


How to implement `isTemplate` traits?

2017-10-04 Thread drug via Digitalmars-d-learn

I need to separate templates:
```
foreach(member; __traits(allMembers, V))
{
	static if (__traits(compiles, { auto _val = &__traits(getMember, value, 
member); })

{
		// a template needs to be instantiated to be addressable, so it works, 
but I think it's dirty hack instead of dry and clean way...

}
}
```
May be phobos has such traits somewhere?


Re: For fun: Expressive C++ 17 Coding Challenge in D

2017-10-04 Thread Atila Neves via Digitalmars-d-learn

On Tuesday, 3 October 2017 at 19:25:56 UTC, Ali Çehreli wrote:

Found on Reddit:


https://www.reddit.com/r/programming/comments/740617/the_expressive_c17_coding_challenge/

How would you do it in D?

Ali

P.S. You can ignore the following note from the challenge text; 
I don't think it applies to D. Honestly, I don't think it 
matters for C++17 either. :)


  "You can assume input files won't be super large and can fit 
fully into memory."


I can't bring myself to code a solution in C++17 or D. In C++17 
it'd be too painful, and in D so trivial it'd probably make me 
sleep out of boredom.


Maybe that should be our new catchphrase:

"D: Making programming boring"

:P

Atila


Re: conversion error related to array index

2017-10-04 Thread Jonathan M Davis via Digitalmars-d-learn
On Wednesday, October 04, 2017 09:04:10 thorstein via Digitalmars-d-learn 
wrote:
> Hi,
>
> I get the following compile error with this function below:
> source\mod_data\matrices.d(66,12): Error: cannot implicitly
> convert expression (j) of type ulong to uint
>
> (66,12) is [j] in row[j]
>
> Using uint as type for rows, cols (i.e. the indices) works. Is
> ulong not allowed for array indices? I could not find the
> respective information.

Array indices - and array length - are size_t. If you're on a 32-bit system,
that's an alias to uint, whereas on a 64-bit system, it's an alias to ulong.
In general, code should be using size_t when dealing with arrays not uint or
ulong (unless you're talking about having elements of uint or ulong). If you
don't use size_t, then you're likely to run into problems when compiling for
a different architecture.

But if you have a ulong that you need to convert to a uint, then you can
always cast or use std.conv.to!uint so long as the number will actually fit
in a uint.

- Jonathan M Davis



Re: For fun: Expressive C++ 17 Coding Challenge in D

2017-10-04 Thread Biotronic via Digitalmars-d-learn

On Tuesday, 3 October 2017 at 19:25:56 UTC, Ali Çehreli wrote:

Found on Reddit:


https://www.reddit.com/r/programming/comments/740617/the_expressive_c17_coding_challenge/

How would you do it in D?

Ali

P.S. You can ignore the following note from the challenge text; 
I don't think it applies to D. Honestly, I don't think it 
matters for C++17 either. :)


  "You can assume input files won't be super large and can fit 
fully into memory."


https://gist.github.com/Biotronic/0bc6048b880d67bfdca970453cc47cf9

I opted for writing to stdout instead, because 1) it's easier, x) 
it's less code, and b) it's more flexible.


The memory limitations certainly do apply - readText would fail 
upon reading humongous files, and for 32-bit programs the 
resulting string wouldn't be able to hold enough data. Since the 
code uses ranges though, a simple replacement of readText with an 
mmapped equivalent should enable humongous file support with no 
other code change required.


--
  Biotronic


conversion error related to array index

2017-10-04 Thread thorstein via Digitalmars-d-learn

Hi,

I get the following compile error with this function below:
source\mod_data\matrices.d(66,12): Error: cannot implicitly 
convert expression (j) of type ulong to uint


(66,12) is [j] in row[j]

Using uint as type for rows, cols (i.e. the indices) works. Is 
ulong not allowed for array indices? I could not find the 
respective information.


Thanks!


49	private double[][] matrix_uniform(ulong rows, ulong cols, 
double lbound, double ubound, ulong precision)

50  {
51double[][] array;
52double[] rowT;
53auto gen = Random(unpredictableSeed);
54auto rndUniform = uniform(lbound, ubound, gen);
55  
56foreach(ulong i; 0..cols)
57{
58  rowT ~= 0;
59}
60  
61foreach(ulong i; 0..rows)
62{
63  foreach(ulong j; 0..cols)
64  {
65rndUniform = uniform(lbound, ubound, gen);
66rowT[j] = to!double(rndUniform) / 10^^precision;
67  }
68  array ~= rowT.dup;
69}
70  return array;
71  }