Skip to content

Don't use unsafePerformIO, and migrate to random-1.2. #10

@igrep

Description

@igrep

I think the ULID type shouldn't be an instance of Random (or Uniform since random-1.2) by taking the trouble to use unsafePerfomIO.

The random function should be pure: if the argument g is the same value, the result of random g should be same. Breaking this rule can cause some troubles. For example, we can't reproduce the same value with the same generator (perhaps deserialized from a database). I haven't actually got troubled with such a case, but I think it'll cause some hard-to-find bug some day.

My suggestion is to drop the support for Random instance of ULID, and define the instance Random ULIDRandom instead. That makes the package safely available.

Speaking of the random package, due to the changes in random-1.2, now this package can't be built with the latest random. So how about fixing the problem and supporting random-1.2 at the same time?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions