isUniformRNG
Nick Sabalausky via Digitalmars-d
digitalmars-d at puremagic.com
Fri May 23 12:38:48 PDT 2014
On 5/23/2014 3:04 PM, Joseph Rushton Wakeling via Digitalmars-d wrote:
> Hi Nick,
>
> Short reply because I think things are converging pretty well
> decision-wise :-)
>
>>> because crypto RNGs' .popFront() is of necessity going to be non-pure.)
>>>
>>
>> To make sure I understand (it seems my understanding of D's pure isn't
>> quite as
>> strong as I'd thought): It cannot be pure *because* of the static
>> internal
>> state, right?
>
> The main issue is because your popFront will be relying on external
> sources of entropy which I presume to be non-deterministic (otherwise,
> what entropy are they adding?). That's what makes purity impossible.
>
> As we've discussed, you could avoid having the static variables, but as
> the function is going to be impure anyway, they shouldn't be avoided
> over the purity issue.
>
Oh, right. For some reason I was thinking "front", not "popFront". My bad.
>> I think I may have missed that particular discussion (I've only been
>> catching
>> the livestreams of certain talks). Recap?
>
> Andrei's opening keynote seemed pretty clear that we need a space in the
> standard library where people can experiment freely. He called it
> std.experimental but I suspect the name will be something different :-)
>
Didn't we already have exp.* for that? (Or something like that.)
That's one talk I sadly missed. Anxiously awaiting the rerun on YouTube.
> Well, what I'm inclined to do is to submit my Phobos package as an
> experimental module (probably call it exp.random or something like
> that). I can and probably will do that in the very near future.
>
> I think that you should similarly feel unrestricted, but maybe give it a
> day or two post-Dconf to see what the actual plan is about the
> experimental repo.
>
Ok.
> By the way, what are your thoughts on having a std.random.crypto module
> versus a general std.crypto module that includes crypto RNGs and other
> crypto functionality? I'd been considering a std.random.crypto but I'm
> starting to incline towards the view that std.random and crypto should
> be kept deliberately separate.
Well, I don't think crypto RNGs should be put together with non-RNG
crypto stuff like SHA, etc. (Unless maybe it's all under a
"std.crypto.*" package...but then you still have weird questions like
"Does MD5 go in std.digest.md or std.crypto.digest.md? What about
SHA-1?" So still maybe kinda hairy.)
As for whether crypto RNGs should be together with non-crypto RNGs, I
dunno. I can't really say I'd have much objection either way. I suppose
there is general preference in D at this point to break up phobos
modules wherever reasonable, so I guess something like this might
generally be preferred:
std/random/package.d
std/random/deterministic.d
std/random/crypto.d
But I don't have any strong opinions on the matter. I'd say just pick
something, run with it, and see if any bikeshedding erupts ;)
More information about the Digitalmars-d
mailing list