[m-users.] The new random module(s)
    Julian Fondren 
    jfondren at minimaltype.com
       
    Thu Sep  5 14:30:48 AEST 2019
    
    
  
Hello list,
With a recent rotd you may notice some new warnings:
   Warning: call to obsolete predicate `random.init'/2.
This module now offers a typeclass and several random number generators.
That's very cool!  Using typeclasses and multiple generators is the very
first thing I wanted to fix with Mercury's stdlib, some years ago before
I got pulled into other things instead.
One benefit to the new code is that you don't need to use the FFI (or
read from a random device) just to get a random seed.
But my code is still a little weird:
   main(!IO) :-
       random.generate_uint64(Seed, random.sfc16.init, _), % new stuff
       random.init(uint64.cast_to_int(Seed), RS),          % old stuff
       fifteen.shuffled(Board, RS, _),
       ...
Why the mix?  array.random_permutation and random.permutation have been
left behind, and only work with a random.supply.
The change also means that I'll have to add a "works with" version
warning to this code when I submit it to RosettaCode, since it'll fail
with 14.01.
    
    
More information about the users
mailing list