On Wednesday, 2 August 2017 at 17:37:09 UTC, Steven Schveighoffer
wrote:
What is expected? What I see on the screen when I run my code
is:
[Ü]
Upper case?
What I see when I run your "working" code is:
[?]
Your terminal is incapable of rendering the Latin-1 encoding. The
program
On Wednesday, 2 August 2017 at 11:44:30 UTC, Martin Drašar wrote:
Thank you for any hint.
1 import std.stdio;
2 import std.string;
3 import std.algorithm;
4 import std.conv;
5
6 void main ()
7 {
8auto input = File("input.csv");
9
What's going on here?
On Saturday, 8 July 2017 at 23:12:15 UTC, Jonathan M Davis wrote:
On Saturday, July 8, 2017 5:16:51 PM MDT kdevel via
Digitalmars-d-learn wrote:
[...]
IMHO, if you want to check for empty, then you should use the
empty property or check length directly, since those are clear
about your
On Sunday, 9 July 2017 at 15:10:56 UTC, ag0aep6g wrote:
On 07/09/2017 03:51 PM, kdevel wrote:
On Sunday, 9 July 2017 at 10:32:23 UTC, ag0aep6g wrote:
[...]
A null char* is not a proper C string.
A C string is a sequence of storage units containing legitimate
character values of which the
On Sunday, 9 July 2017 at 10:32:23 UTC, ag0aep6g wrote:
On 07/09/2017 01:12 AM, kdevel wrote:
On Saturday, 8 July 2017 at 18:39:47 UTC, ag0aep6g wrote:
On 07/08/2017 07:16 PM, kdevel wrote:
[...]
Moreover everything I've written about strings is also valid
for e.g. dynamic arrays of
On Sunday, 9 July 2017 at 13:51:44 UTC, kdevel wrote:
But that second proposition what not the one chosen in the
documentation.
Shall read: "But that second predicate was not the one chosen in
the documentation."
Yesterday I noticed that std.uri.decodeComponent does not
'preserve' the
nullity of its argument:
1 void main ()
2 {
3import std.uri;
4string s = null;
5assert (s is null);
6assert (s.decodeComponent);
7 }
The assertion in line 6 fails. This failure gave
Just saw that my first example was wrong, it should read
1 void main ()
2 {
3import std.uri;
4string a = "";
5assert (a);
6auto s = a.decodeComponent;
7assert (s);
8 }
The non-nullity was not preserved. Only the second assert
On Wednesday, 2 August 2017 at 13:45:01 UTC, Steven Schveighoffer
wrote:
As Daniel said, using byCodeUnit will help.
stripLeft seems to autodecode even when fed with CodeUnits. How
do I prevent this?
1 void main ()
2 {
3import std.stdio;
4import std.string;
On Wednesday, 2 August 2017 at 15:52:13 UTC, Steven Schveighoffer
wrote:
[...]
First, as a tip, please post either a link to a paste site, or
don't put the line numbers. It's much easier to copy-paste your
code into an editor if you don't have the line numbers.
With pleasure.
[...]
If
On Saturday, 19 August 2017 at 14:07:49 UTC, kdevel wrote:
src/rt/sections_elf_shared.d:(.text._D2rt19sections_elf_shared11getTLSRangeFNbNimmZAv[_D2rt19sections_elf_shared11getTLSRangeFNbNimmZAv]+0x38):
undefined reference to `__tls_get_addr'
https://issues.dlang.org/show_bug.cgi?id=12268
test.d
---
void main ()
{
}
---
$ dmd -c test.d
$ cc -o test test.o -L/[...]/dmd2/linux/lib64 -lphobos2 -static
-lpthread -lrt
/[...]/dmd2/linux/lib64/libphobos2.a(sections_elf_shared_774_420.o): In
function `_D2rt19sections_elf_shared11getTLSRangeFNbNimmZAv':
On Saturday, 1 October 2016 at 15:00:29 UTC, pineapple wrote:
Though I don't currently have any need for this feature I'd
imagine that if I did I'd want the time in UTC, not locally
You may invoke the compiler with TZ= prepended. (Linux)
On Tuesday, 19 September 2017 at 13:28:22 UTC, Ky-Anh Huynh wrote:
Hi,
I want to read two fields from STDIN
string key;
double value;
line_st.formattedRead!"%s %f"(key, value);
Well it's so different from C. I would use this:
---
auto t = line_st.split.join (' ');
On Sunday, 17 September 2017 at 13:53:26 UTC, Ky-Anh Huynh wrote:
Is it possible to read just the second word from an input
string and skip all others?
"one two three".formattedRead!("%s %s", _, saveme)
---
import std.range;
auto saveme = "one two three".split.array [2];
---
On Saturday, 14 October 2017 at 09:32:32 UTC, Timon Gehr wrote:
Also, UB can and does sometimes mean that the program can
execute arbitrary code. It's called "arbitrary code execution":
https://en.wikipedia.org/wiki/Arbitrary_code_execution
This confuses different levels of reasoning. In
On Friday, 13 October 2017 at 07:47:55 UTC, Daniel Kozak wrote:
but it works ok with immutable, so until you really need to
change bar you can use
immutable bar = 9;
foo!byte(bar + 1);
As Adam wrote two days ago: 'D doesn't do implicit narrowing
conversion... so x + 1 becomes int, but then
On Friday, 13 October 2017 at 02:22:24 UTC, Jonathan M Davis
wrote:
You've told it that i should never be 3 at that point and that
it's a bug if it is, and as such, it is free to assume that i
is never 3 after the assertion even if the assertion is
compiled out with -release - that is the only
On Tuesday, 3 October 2017 at 11:36:28 UTC, Oleg B wrote:
EAGAIN Non-blocking I/O has been selected using
O_NONBLOCK and no data
was immediately available for reading.
And I can't check this without using exception handling?
Your programm shall not read before data is
On Tuesday, 3 October 2017 at 00:22:28 UTC, Oleg B wrote:
but get error "Resource temporarily unavailable".
You get EAGAIN because there is no data available at the time of
reading.
From the manpage of read:
ERRORS
EAGAIN Non-blocking I/O has been selected using
O_NONBLOCK and no
On Tuesday, 3 October 2017 at 12:20:09 UTC, Oleg B wrote:
while (!tryWait(pp.pid).terminated)
{
auto cnt = read(fd, buf.ptr, buf.length); //
C-style reading
if (cnt == -1 && errno == EAGAIN) // C-style error
checking
yield();
On Thursday, 12 October 2017 at 15:37:23 UTC, John Burton wrote:
C++ compilers can and do perform such optimizations so I was
wondering if assert in D could cause such behavior according to
the spec.
In the context of ISO-C++ it is meaningless to reason about the
"actual behavior" of a
On Wednesday, 11 October 2017 at 07:09:26 UTC, Daniel Kozak wrote:
You can avoid cast:
void foo(T)(T bar){...}
byte bar = 9;
foo!byte(bar + byte(1));
Sure?
---
void foo(T)(T bar)
{
}
byte bar = 9;
void main ()
{
foo!byte(bar + byte(1));
}
---
byte2.d(7): Error: function
On Thursday, 12 October 2017 at 20:27:03 UTC, Jonathan M Davis
wrote:
On Thursday, October 12, 2017 20:15:41 kdevel via
---
void main ()
{
assert (false);
}
---
qualifies as "invalid, and therefore has undefined behaviour."
A statement, which makes no sense to me. Either it is a
On Wednesday, 15 November 2017 at 14:22:51 UTC, Daniel Kozak
wrote:
And this one
https://paste.ofcode.org/KNqxcrmACLZLseB45MvwC
I thrash your code with two shell processes
```
while true; do curl 127.0.0.1: -o /dev/null; done
```
running parallel. Using strace -fFeclose on the binary
On Wednesday, 15 November 2017 at 13:31:46 UTC, Daniel Kozak
wrote:
This one works ok for me, but I am on linux:
https://dpaste.dzfl.pl/f54decee45bc
It works, but it does not handle two connects in parallel. STR:
1. start the binary in console 1
2. telnet localhost in console 2
3. telnet
On Tuesday, 14 November 2017 at 19:57:54 UTC, ade90036 wrote:
socket.send("HTTP/1.1 200 OK
Server:
dland:v2.076.1
Date: Tue, 11
Nov 2017 15:56:02 GMT
On Tuesday, 14 November 2017 at 19:57:54 UTC, ade90036 wrote:
while(true) {
listeningSet.add(listener);
if (Socket.select(listeningSet, null, null,
dur!"nsecs"(150)) > 0) {
Why do you ever timeout? This loop consumes 100 % (a single core)
when idle on my
This program
```
void aa_stat(T, U) (T[U] aa)
{
import std.stdio;
writefln ("aa: %s", aa);
writefln ("aa.length : %d", aa.length);
writefln ("aa.keys : %s", aa.keys);
writefln ("aa.values : %s", aa.values);
foreach (k, v; aa)
writeln (k, ": ", v);
}
void main
On Sunday, 3 December 2017 at 23:29:01 UTC, Basile B. wrote:
On Sunday, 3 December 2017 at 22:33:40 UTC, kdevel wrote:
On Sunday, 3 December 2017 at 14:58:03 UTC, Basile B. wrote:
In this case i'd go for a typed pointer, e.g
---
immutable struct Configuration
{
this(string){/*load some
On Monday, 4 December 2017 at 11:05:22 UTC, Vino wrote:
On Monday, 4 December 2017 at 10:46:03 UTC, rikki cattermole
wrote:
FunTest.d(52): Error: template FunTest.ptProcessFiles cannot
deduce function from argument types !()(string,
Array!(Tuple!(string, string)) function(string FFs,
string
On Sunday, 3 December 2017 at 14:58:03 UTC, Basile B. wrote:
In this case i'd go for a typed pointer, e.g
---
immutable struct Configuration
{
this(string){/*load some file...*/}
int value;
}
Configuration* config;
void main()
{
try config = new Configuration("config.sdl");
On Thursday, 16 November 2017 at 19:37:31 UTC, ade90036 wrote:
Can we enable some sort of profiling to see what is going on?
You may compile the code with dmd -g -O -profile -profile=gc
I currently struggle getting meaningful output. I want to
terminate the program after a number (say 400)
On Friday, 17 November 2017 at 14:28:38 UTC, kdevel wrote:
On Thursday, 16 November 2017 at 19:37:31 UTC, ade90036 wrote:
Can we enable some sort of profiling to see what is going on?
You may compile the code with dmd -g -O -profile -profile=gc
I currently struggle getting meaningful output.
On Tuesday, 19 September 2017 at 06:32:52 UTC, Nordlöw wrote:
I want something straight forward without allot of plumbing on
my end.
https://github.com/msgpack/msgpack-d
I can't unittest my 32-bit code:
$ MODEL=32 make -f posix.mak unittest
[...]
src/msgpack/packer.d(1139): Error: function
On Tuesday, 5 December 2017 at 17:25:57 UTC, Steven Schveighoffer
wrote:
[...]
struct LowerCaseFirst(R) // if(isSomeString!R)
{
R src;
bool notFirst; // terrible name, but I want default false
dchar front() {
import std.uni: toLower;
return notFirst ? src.front :
On Friday, 1 December 2017 at 00:42:00 UTC, H. S. Teoh wrote:
Here's the fix:
https://github.com/dlang/druntime/pull/1980
And wouldn't it be reasonable to add
assert(aa.values == [ "b" ]);
to the unittest?
On Friday, 1 December 2017 at 00:42:00 UTC, H. S. Teoh wrote:
Here's the fix:
https://github.com/dlang/druntime/pull/1980
Great. By the way: It it true, that there cannot be more than
2^32 keys in an associative array (due to the use of uint)?
Given the functions void foo() and void bar() in their source
files mymod/foo.d and mymod/bar.d. Also I have a
mymod/package.d
```
module mymod;
public import foo : foo;
public import bar : bar;
```
and a client to the library:
main.d
```
import mymod;
void main ()
{
foo;
bar;
}
```
On Thursday, 7 December 2017 at 17:36:22 UTC, Neia Neutuladh
wrote:
If you have a source tree like:
pierce/
db/
core.d
controllers/
feed.d
then feed.d can have `import pierce.db.core;` instead of people
being confused about how to refer to the parent directory in a
relative
On Thursday, 7 December 2017 at 17:58:38 UTC, ag0aep6g wrote:
On 12/07/2017 06:53 PM, kdevel wrote:
Does that mean, that though the code is bundled in one library
(libmymod.a) for the prototypes one has as many .di files as
there
were source files?
yes
Gosh! So in my example I need the
On Friday, 1 December 2017 at 16:23:33 UTC, H. S. Teoh wrote:
On Fri, Dec 01, 2017 at 04:06:50PM +, kdevel via
Digitalmars-d-learn wrote:
On Friday, 1 December 2017 at 00:42:00 UTC, H. S. Teoh wrote:
> Here's the fix:
>
> https://github.com/dlang/druntime/pull/1980
And
On Friday, 1 December 2017 at 17:02:48 UTC, H. S. Teoh wrote:
[...]
There is at least 1 use case in the bugzilla issue that
justifies AA literals with (possibly) duplicated keys:
https://issues.dlang.org/show_bug.cgi?id=15290#c1
Code snippet:
---
foreach (i; 0..10)
foreach
On Saturday, 2 December 2017 at 00:41:19 UTC, Wanderer wrote:
I wonder why `scope(exit)` code is not executed when the
program is terminated with Ctrl-C.
Which OS?
For example:
```
import std.stdio;
import core.thread;
void main()
{
scope (exit)
{
writeln("Cleanup");
}
On Sunday, 3 December 2017 at 05:49:54 UTC, Fra Mecca wrote:
I have this code:
Configuration conf = void ;
try {
conf = parse_config("config.sdl");
} catch (Exception e) {
std.stdio.stderr.writeln("Error reading configuration
file: ", e.msg);
exit(1);
}
On Sunday, 3 December 2017 at 14:16:42 UTC, kdevel wrote:
int main ()
{
try {
real_main ();
}
catch (Exception e) {
std.stdio.stderr.writeln(e.msg);
return 1;
}
return 0;
}
```
This is better:
int main ()
{
try {
return real_main ();
}
catch
On Thursday, 17 May 2018 at 12:34:25 UTC, Andre Pany wrote:
this applications throws an error in std.numeric (Line 2826).
=> assert(isPowerOf2(range.length));
Isn't it possible to give an arbitrary length
of data to fft like in numpy?
There is a mathematical background which is well
On Monday, 21 May 2018 at 14:17:23 UTC, Steven Schveighoffer
wrote:
Data f;
allrows[0].toStruct (f);
I haven't checked this.
This only works if your struct has exactly the same layout as
the fields.
So if, for instance, your rows are selected "title", "name",
"surname", but your
On Sunday, 20 May 2018 at 16:08:03 UTC, ipkwena wrote:
How does one access the columns fields in a Mysql query results
by the column name.
[...]
Data f;
f.name = to!string(allrows[0][0]);
f.surname = to!string(allrows[0][1]);
f.title = to!string(allrows[0][2]);
I am using the mysql-native
On Monday, 25 June 2018 at 22:58:41 UTC, Jonathan M Davis wrote:
On Monday, June 25, 2018 19:40:30 kdevel via
Digitalmars-d-learn wrote:
R r;
if (r.s is null)
throw new Exception ("some error message");
[...]
Why can't this programming error be detected at co
On Tuesday, 26 June 2018 at 14:32:59 UTC, Nathan S. wrote:
On Monday, 25 June 2018 at 19:40:30 UTC, kdevel wrote:
Is it possible
to "lower" the Nullable operations if T is a class type such
that there
is only one level of nullification?
Yes: https://run.dlang.io/is/hPxbyf
template
Just stumbled over the following design:
class S {...}
class R {
:
Nullable!S s;
:
}
s was checked in code like
R r;
:
if (r.s is null)
throw new Exception ("some error message");
At runtime the following was caught:
fatal error: caught
On Sunday, 14 January 2018 at 02:24:52 UTC, Adam D. Ruppe wrote:
On Sunday, 14 January 2018 at 02:14:50 UTC, Jonathan M Davis
wrote:
If you're using template constraints rather than template
specializations, then you can't have any unconstrained
templates.
Not true: see the tip of the week
vartmpl.d
```
import std.stdio : writeln;
import decimal : decimal32;
template F(T) {
immutable T c = 3;
}
void foo (T) ()
{
immutable T t = 1;
}
void main ()
{
// immutable decimal32 i = 1; // Error: none of the overloads
of '__ctor' are
callable using a immutable object
//
occasion:
http://forum.dlang.org/thread/mutegviphsjwqzqfo...@forum.dlang.org?page=3#post-mailman.2136.1515709204.9493.digitalmars-d-announce:40puremagic.com
dmd checks the types but does not count the arguments.
ctcfs.d
```
import std.stdio;
import std.math;
void unit (T) ()
{
auto pi = 4
On Saturday, 13 January 2018 at 19:40:09 UTC, Adam D. Ruppe wrote:
For ints, it catches all that, but for float, it just bails out
of the check as soon as it actually *succeeds* - because that
kills CTFE.
Confirmed. Thanks!
args.d
```
import std.stdio;
void main ()
{
// writefln!"%2.2d
Thanks for the quick answer!
On Friday, 12 January 2018 at 02:16:39 UTC, Adam D. Ruppe wrote:
On Friday, 12 January 2018 at 00:54:03 UTC, kdevel wrote:
$ dmd crash.d
$ ./crash
Nicholas Wilson is right that you can use = "" to work around
it, but with strings, null is supposed to behave the
crash.d
```
import std.stdio;
union U {
float f;
int i;
string toString ()
{
string s;
return s;
}
}
void main ()
{
U u;
writeln (u);
}
```
$ dmd crash.d
$ ./crash
std.exception.ErrnoException@/.../dmd2/linux/bin64/../../src/phobos/std/stdio.d(2776):
(Bad
On Sunday, 28 January 2018 at 19:17:49 UTC, Steven Schveighoffer
wrote:
This is insane. i > 0 is used in so many places. The only
saving grace appears to be that int.min is just so uncommonly
seen in the wild.
And another one that it does not happen when compiled with
optimization (-O) and
https://dlang.org/phobos/std_exception.html#enforce and also
https://dlang.org/library/std/exception/enforce.html present this
example:
---
auto f = enforce(fopen("data.txt"));
auto line = readln(f);
enforce(line.length, "Expected a non-empty line.");
---
fopen, readln and enforce need
I would expect this code
enforce3.d
---
import std.exception;
void main ()
{
int i = int.min;
enforce (i > 0);
}
---
to throw an "Enforcement failed" exception, but it doesn't:
$ dmd enforce3.d
$ ./enforce3
[nothing]
On Saturday, 27 January 2018 at 14:31:13 UTC, Ali Çehreli wrote:
> But assert is also ignored in release mode:
The documentation is not clear. "they will be compiled out"
means "contracts are compiled out". So, an enforce() would
disappear if it's inside such a block, which should not be what
On Saturday, 27 January 2018 at 14:51:23 UTC, Ali Çehreli wrote:
On 01/27/2018 06:36 AM, kdevel wrote:
On Saturday, 27 January 2018 at 14:31:13 UTC, Ali Çehreli
wrote:
> But assert is also ignored in release mode:
The documentation is not clear. "they will be compiled out"
means "contracts
https://dlang.org/phobos/std_exception.html#enforce states:
| Also, do not use enforce inside of contracts (i.e. inside of in
and out blocks
| and invariants), because they will be compiled out when
compiling with -release.
| Use assert in contracts.
But assert is also ignored in release
On Saturday, 27 January 2018 at 14:49:52 UTC, Ali Çehreli wrote:
But enforce is a red herring there. This prints true with 2.078
as well:
import std.stdio;
void main ()
{
int i = int.min;
writeln(i > 0);// prints 'true' with 2.078
}
test.d
---
import std.stdio;
void main ()
{
On Saturday, 27 January 2018 at 16:19:30 UTC, Jonathan M Davis
wrote:
On Saturday, January 27, 2018 14:59:50 kdevel via
Digitalmars-d-learn wrote:
>>> https://github.com/dlang/phobos/blob/master/std/exception.d
>>
>> "Use $(D assert) in contracts." is s
On Saturday, 27 January 2018 at 16:10:29 UTC, Jonathan M Davis
wrote:
On Saturday, January 27, 2018 13:29:00 kdevel via
Digitalmars-d-learn wrote:
What's wrong here? And why is the "selective import" of
enforce necessary?
Because you named your module enforce. As such, by default,
On Saturday, 27 January 2018 at 18:34:35 UTC, Jonathan M Davis
wrote:
The example still does not compile.
That has nothing to do with enforce. std.stdio.readln does not
take a FILE*. In general, you shouldn't mix core.stdc.stdio and
std.stdio.
The code is from the official documentation:
On Saturday, 27 January 2018 at 19:43:50 UTC, Stefan Koch wrote:
On Saturday, 27 January 2018 at 19:42:01 UTC, Matt wrote:
Godbolt link: https://godbolt.org/g/t5S976
The actual code is :
imul edi, edi
mov eax, edi
ret
Could you please paste the source code? I mean in say 5 years
when
On Saturday, 27 January 2018 at 18:00:32 UTC, rjframe wrote:
I think I see what you mean; you interpret "use asserts,
because enforce will be compiled out" to imply that asserts
wouldn't be compiled out, correct?
Is there any other meaningful interpretation?
Since, in reality, both would be
On Saturday, 27 January 2018 at 20:33:46 UTC, Jonathan M Davis
wrote:
Shall I file a bug report?
Yes.
https://issues.dlang.org/show_bug.cgi?id=18319
Is there a D equivalent of the C++ at method? I would like to
reformulate
repro2.d
---
void main ()
{
import std.stdio;
import std.container;
import std.range;
auto z = Array!char();
z.reserve(0xC000_);
z.capacity.writeln;
z.length.writeln;
for (uint u = 0; u <
I don't get the point of the deprecation message:
--- intprom.d
import std.stdio;
void main ()
{
short s, t;
t = -s;
}
---
$ dmd intprom.d
intprom.d(6): Deprecation: integral promotion not done for -s,
use '-transition=intpromote' switch or -cast(int)(s)
What shall I do in order to
On Saturday, 24 February 2018 at 20:17:12 UTC, Steven
Schveighoffer wrote:
On 2/24/18 3:07 PM, kdevel wrote:
I don't get the point of the deprecation message:
--- intprom.d
import std.stdio;
void main ()
{
short s, t;
t = -s;
}
---
https://dlang.org/changelog/2.078.0.html#fix16997
On Saturday, 24 February 2018 at 22:30:09 UTC, Steven
Schveighoffer wrote:
The prime example is this:
byte b = -128;
int x = -b;
What would you expect x to be?
a) 128
b) -128
Neither nor. I would prefer the codomain of "-" be the range of
byte
and hence an exception thrown in that
A code fragment using static foreach
https://forum.dlang.org/thread/jiefcxwqbjzqnmtaz...@forum.dlang.org#post-beruryblsptnunsowjph:40forum.dlang.org
does not compile with the current GDC (GCC 4.9.4 and 5.5.0). I
tried to encapsulate this code into a version block but GDC still
checks the
On Friday, 3 August 2018 at 17:06:16 UTC, Adam D. Ruppe wrote:
On Friday, 3 August 2018 at 16:58:26 UTC, kdevel wrote:
What does
auto std.stdio.File.ByChunkImpl byChunk (
ulong chunkSize
);
on https://dlang.org/library/std/stdio/file.by_chunk.html mean?
It looks like ddox trying
What does
auto std.stdio.File.ByChunkImpl byChunk (
ulong chunkSize
);
on https://dlang.org/library/std/stdio/file.by_chunk.html mean?
Is that
a (forward) declaration of a function named byChunk taking a
single
ulong argument name chunkSize. But what does that function return?
On Friday, 3 August 2018 at 17:27:07 UTC, Adam D. Ruppe wrote:
But remember, this is documentation that just happens to look
like code, so it is intended to be legible by people rather
than the compiler.
I could not find any elucidation of the meaning of
auto
when used as a return type
On Saturday, 7 July 2018 at 13:03:32 UTC, rikki cattermole wrote:
void func() {
return;
func2();
}
Which is clearly an error. Hence why you need to add else block.
There is no error in this generated code because func2 is
unreachable. That there is a state/stage during
On Tuesday, 10 July 2018 at 00:11:27 UTC, Steven Schveighoffer
wrote:
On 7/7/18 7:28 AM, kdevel wrote:
It appears not to be possible to use static if in "guard
clause style" as in
void bar (T ...) (T args)
{
static if (args.length == 0)
return;
writeln (args
On Saturday, 7 July 2018 at 13:12:59 UTC, Alex wrote:
The site you cited for the guard clause above (c2.com)
works at runtime.
?
The intention is to shorten the paths inside a function, I
think. Therefore, a static "guard clause" is a contradiction,
if I understand it correctly.
The term
On Saturday, 7 July 2018 at 11:56:40 UTC, rikki cattermole wrote:
void bar (T ...) (T args) if (T.length == 0)
{
return;
[...]
}
void bar (T ...) (T args) if (T.length > 0)
{
writeln (args [0]);
return bar (args [1 .. $]);
}
This is a version without a
On Tuesday, 10 July 2018 at 21:09:23 UTC, Steven Schveighoffer
wrote:
[...]
As far as the OS is concerned, a[2 .. $] is within the process
memory limit.
Of course, that's an out of bounds access, so the compiler or
the bounds check *should* complain.
It complains at runtime
> ./dumpme2
On Tuesday, 10 July 2018 at 20:10:54 UTC, Adam D. Ruppe wrote:
On Tuesday, 10 July 2018 at 19:01:22 UTC, Per Nordlöw wrote:
[...]
Run the program in a debugger, or run `ulimit -c unlimited` to
enable core dumps [...]
Works for null ptr deref but how do I enforce core dumps in this
code:
On Tuesday, 10 July 2018 at 22:31:54 UTC, Adam D. Ruppe wrote:
Turn off rtTrapExceptions
though the command line switch PR is STILL NOT MERGED
https://github.com/dlang/druntime/pull/2035
extern (C) __gshared bool rt_trapExceptions;
static this ()
{
rt_trapExceptions =
On Saturday, 7 July 2018 at 11:29:35 UTC, rikki cattermole wrote:
static if (args.length == 0)
return;
else {
writeln (args [0]);
return bar (args [1 .. $]);
}
That's not guard clause style [1][2].
[1]
On Saturday, 7 July 2018 at 11:56:40 UTC, rikki cattermole wrote:
On 07/07/2018 11:44 PM, kdevel wrote:
On Saturday, 7 July 2018 at 11:29:35 UTC, rikki cattermole
wrote:
static if (args.length == 0)
return;
else {
writeln (args [0]);
return bar (args [1 ..
On Saturday, 7 July 2018 at 12:46:08 UTC, rikki cattermole wrote:
On 08/07/2018 12:40 AM, kdevel wrote:
Interesting alternative
That was not an alternative.
That is what your code was doing.
What my original code was supposed to do. But it did not compile.
Error: array index [0] is
It appears not to be possible to use static if in "guard clause
style" as in
void bar (T ...) (T args)
{
static if (args.length == 0)
return;
writeln (args [0]);
return bar (args [1 .. $]);
}
Is this intended?
suffix.d
```
void main ()
{
real r = 1.L;
float f = 1.f;
}
```
$ dmd suffix.d
suffix.d(3): Error: no property 'L' for type 'int'
suffix.d(4): Error: no property 'f' for type 'int'
According to the grammar in dmd2/html/d/spec/lex.html both are
valid FloatLiterals. Any comments?
On Friday, 12 January 2018 at 12:45:59 UTC, kdevel wrote:
suffix.d
```
void main ()
{
real r = 1.L;
float f = 1.f;
}
```
$ dmd suffix.d
suffix.d(3): Error: no property 'L' for type 'int'
suffix.d(4): Error: no property 'f' for type 'int'
According to the grammar in
fusp.d
```
import std.stdio;
import std.typecons;
void foo (T) ()
{
writeln ("(1) foo T = ", T.stringof);
}
void foo (T : float) ()
{
writeln ("(2) foo T = ", T.stringof);
}
// void foo (T : double) ()
// {
//writeln ("(2) foo T = ", T.stringof);
// }
void main ()
{
foo!float;
On Sunday, 14 January 2018 at 00:30:37 UTC, Nicholas Wilson wrote:
The usual way to do what you are trying to do is with template
constraints.
void foo(T)() if (is(T== float)) { ...}
Thanks. That works but looks a bit ugly. Am I right that I have
to leave out the primary (unconstrained)
Why are people writing
import std.stdio;
void main ()
{
S s;
s.foo;
}
struct S {
void foo ()
{
writeln ("a");
}
}
but not
void main ()
{
S s;
s.foo;
}
struct S {
void foo ()
{
writeln
On Wednesday, 4 April 2018 at 19:19:30 UTC, Ali wrote:
On Wednesday, 4 April 2018 at 18:57:27 UTC, kdevel wrote:
[...]
I think the rules should have been the same everywhere
and if there was an exception to be made, it could be made for
the main function
since the main function is special
On Thursday, 29 March 2018 at 15:16:07 UTC, Ivan Kazmenko wrote:
import std.stdio;
void main () {
int delegate () [] funs;
funs ~= () => 0;
funs ~= () => 1;
foreach (i; 0..2) writeln (funs[i] ()); // 0 and 1 as expected
int delegate () [] guns;
On Thursday, 29 March 2018 at 20:05:35 UTC, ag0aep6g wrote:
On Thursday, 29 March 2018 at 19:02:51 UTC, kdevel wrote:
On Thursday, 29 March 2018 at 15:16:07 UTC, Ivan Kazmenko
wrote:
[...]
int delegate () [] guns;
foreach (i; 0..2) guns ~= () => i;
foreach (i; 0..2)
In https://dlang.org/phobos/std_exception.html#errnoEnforce this
example is shown:
---
auto f = errnoEnforce(fopen("data.txt"));
auto line = readln(f);
enforce(line.length); // expect a non-empty line
---
I added
import std.stdio;
import std.exception;
and get an error message which
1 - 100 of 351 matches
Mail list logo