Comments (7)
This is the only example of this "dodginess" that I'm aware of. Set union is a different operation than adding an element to the set. add(s, e)
should always add e
as an element. union(a,b)
makes a new set that is the union, and union!(a, b)
could add the elements of b
to a
. Actually we don't allow identifiers with !
but I could change that.
At least, we should write down what the collections interface is, I believe it consists of methods
start, done, next, ref, assign, add, get, has, del, isempty, length
from julia.
Awesome — writing down the interface is an excellent start. If that's the only dodgy API issue, then that's really good and this issue will be much easier to close than I anticipated.
from julia.
Here's a question: should we use has(a,i)
to test whether an array element has been assigned? I suppose has
for arrays would work on any integer, and if the index is out of bounds it just returns false. isassigned
might require an in-bounds index. Is that useful or should we just use has
?
from julia.
That's a tough question. I guess the difference between an unassigned index and an out of bounds index is that you couldn't assign something to an out-of-bounds index even if you tried. What would the corresponding distinction for hashes be? Does using a key of the wrong type cause an "out-of-type" exception? Is that analogous to an out-of-bounds exception?
from julia.
Possible additions to this interface:
adjoin, find
There are some other questions about how arrays fit the collections interface. I'm using del(a, i)
to remove an element from an array, but it's not really the same as deleting from a hash table since the elements get shifted down so there might still be something at that index. Maybe it should be remove(a,i)
?
We should take a vote or something on whether to use "x!" identifiers for mutating.
Also note contains
in tensor.j and in
and index_of
in graph.j. These functions are ripe for standardization.
from julia.
Another one: I'm not sure the method has(String,Char)
is right. In all other cases has
checks for the presence of a key, not a value.
from julia.
Yeah, I was considering making a spreadsheet of what various languages use for different operators and use that to try to pick the 1) best, 2) least surprising to the largest number of people.
from julia.
Related Issues (20)
- 1.11.0-alpha2: problems with precompilation HOT 3
- Destructed arguments cannot be properly used to define optional arguments HOT 1
- Missing documentation: sortperm! is not truly non-allocating unless scratchspace is provided HOT 6
- `x < min(x, y)` HOT 11
- Illegal instruction on 1.10.2 but not 1.11+ HOT 3
- Unreachable reached at 0x7b92c0862a74 / Illegal instruction
- Illegal instruction crash
- Defining `==` for `ComposedFunction` by comparing `inner` and `outer` HOT 1
- the GenericMemory doc string isn't included in the docs HOT 3
- Add `mul_hi` HOT 10
- Building from fresh clone with `USECCACHE=1` fails
- `Base.FastMath.pow_fast(a::Float64, i::Int)` fails for huge `i` HOT 6
- Parallel precompile shows stacktrace into precompilation code when a package fails to precompile
- Parallel precompile now seems to fail precompiling the package itself HOT 9
- Broadcasts over `StepRange` of `Date/DateTime` materialize to vectors
- Container Closure Integrity Testing Market Size, Growth Strategies, Competitive Landscape, Factor Analysis, 2035 HOT 1
- BUG: `^(::Float64, ::Union{Int, Float64})` incorrect for very large negative exponents HOT 10
- REPL: path completion hints shouldn't expand `~` to user dir
- Loading test "relocatable upgrades" fails locally HOT 3
- generic method for `top_set_bit` gives wrong result HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from julia.