Hi Dmitry,

Thanks for your thoughts and for pointing me at some aspects of D I'd not come across before.

I think that if you like function pointer thing, you'd love D's delegates and
lambdas. If templates are too pervasive it might be better just use little bit
of dynamic stuff.

I was not talking about function pointers. In GSL there is a struct type, gsl_rng, which contains the RNG data; it's this that you pass around.

So e.g. in a C implementation I might have a function like

  size_t sampler_select(sampler *s, gsl_rng *r) {
      x = gsl_rng_uniform(r);
      // do something with x ...
  }

What I would like is for the sampler classes to be able to take an arbitrary generator as input, or to use rndGen if one is not provided, analogous to what the uniform() function in D's std.random does.

The current implementation of my classes seems imperfect to me (it ties the class to using only one type of RNG, it means the whole class has to become templated to the RNG type, ...).

Use structs? They are cheap throwway value types allocated on stack (by 
default).

It's not a matter of cheap/expensive, just a matter of good design style (I seem to recall seeing somewhere that init() functions were frowned upon). But if there's no objection, I'll add an init function.

It's OK. there are no implicit conversions of FP--> integer in the language I
think.

Fine, then. :-)

(5) ... any general stylistic comments? :-)


Looks fine ;)

:-)

Reply via email to