JuliaRandom / JuliaRandom/RandomExtensions.jl

A lot of ambiguities due to too general `rand`signatures

Open
#13 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Julia
Stars
19
Forks
2
PR merge metrics
No merged PRs in 30d

Description

We are still using this quite heavily in Oscar land, but after playing around with https://github.com/JuliaTesting/Aqua.jl (which helps detecting method ambiguities), I noticed that RandomExtensions.jl leads to a lot of method ambiguities. For example, the methods
```
rand(X, ::Type{Tuple}, n::Integer)
@ RandomExtensions ~/.julia/packages/RandomExtensions/qAD6J/src/containers.jl:53
rand(X, t::Type{<:Array}, dims::Integer...)
@ RandomExtensions ~/.julia/packages/RandomExtensions/qAD6J/src/containers.jl:106
```
will make the pass-through methods
```
rand(T::MyAbstractType, v...) = rand(GLOBAL_RNG, T, v...)
```
ambiguous for certain input types (note that I cannot pin down the type of `v` directly, since `T` is abstract and there are many possible combinations).

They are usually fine in practice, but it just looks bad. There are so many, that ignoring them might hide real ambiguities.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reproducing the ambiguity reports with Aqua.jl and inspect the methods shown in src/containers.jl, especially the definitions around lines 53 and 106. Trace how they interact with the pass-through rand(T::MyAbstractType, v...) method; done means the relevant ambiguities are understood and the project has a defined way to address or validate them.

Written by the indexing model from the issue text.

Assessment

Tech stack
julia
Domain
backend-api-design
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.