-
Notifications
You must be signed in to change notification settings - Fork 21
Roadmap to 0.1 #148
Comments
Also, maybe NullableArrays 0.1 could serve as a deprecation period for Julia 0.4 support? |
One of the "philosophical" issues I'd like to add to the list is whether |
@nalimilan IMO, |
Yes, but then were does this list end? It's not great to tell users that they have to learn a (possibly evolving) list of functions which don't behave normally. |
I just wrote the same thing in a different PR, but given how non-related that PR is it might be worth repeating this here: I'm really not a fan of a design where the semantics of a function change depending on the call context. I think the principle that it is enough to look at the function name and the types of the arguments to figure out which method will be called is a good one, I really wouldn't want a system where you also need to figure out in what context the function is called to determine its behavior. |
Suppose somebody wants to do Are those things that I wish to avoid -- i.e., lifting via method extension, uselessness of default I'd be fine restricting automatic lifting to a small list of higher-order functions and requiring We can also nix automatic lifting and require users to pass |
In the case of |
I'm very nervous about any automatic lifting stuff. I would much prefer that we start with the white list approach, i.e. simply add as many methods to functions that work for |
@davidanthoff Can you help me to understand your concern? I'm proposing "automatic lifting" in the context of higher-order functions such as In fact, I think what the above shows is that the notion of "automatic lifting" is, to an extent, a red herring. We're both trying to achieve the same semantics in Now, I think you're right that non-standard lifting semantics such as 3VL are a big concern. It's not really clear how best to implement such semantics using |
Well, one issue is that I haven't seen a solution to the 3VL issue. How would we handle something like I worry that there are more cases like 3VL where the correct lifting semantics is not to return a I agree that we want the same semantics for probably 90% of functions. But until we are really certain that we want the same semantics for a 100% I'm hesitant to have things like |
I don't know. My current solution would be to I don't think we'll ever conclude that we want to have the same semantics for 100% of functions. I'm pretty sure that holding out for 100% certainty for anything in any context is paralyzing. We can have these two solutions progress simultaneously, and the costs to doing so seem to be minimal -- if one wants to implement non-standard lifting semantics by method extension, one can always just do |
Maybe the even more relevant example would be
What are those? Other than a lot of work? |
Not unless one set
There's everything that was mentioned in JuliaLang/METADATA.jl#6468. Those are real concerns. Here's another problem. An objective, as I understand it, of lifting by method extension is to find a minimal set of methods to lift (i.e. for which to define lifted methods) that would support a majority of user-defined methods. Thus, if we had a definition for Is this enough of a problem to preclude the viability of lifting by method extension? I don't know. Is having to do |
So in the end the semantics of
The only thing that came up there is that lifted methods for base functions should not live in packages. Isn't that easily solved by eventually moving these into base?
I never thought that was the goal. I think the white listing approach means that if you have a user-defined function and you want it to work with @lifted function foo(a::AbstractString)
# do something
end that would automatically add a lifted method to One thing that would make sense imo is to have the |
Comprehensions are supposed to always return
Sure, this might work.
Sure. The more I think about this, the more I'm on board with it. Explicitly requiring |
I think that would be a reasonable starting point at least. That way, But |
Agreed. For complete consistency I almost feel |
Maybe add #167 to the list, since it could give surprising results when concatenating data frames mixing |
This package has become sufficiently well-adopted that a 0.1 release effort seems appropriate. Here's the TO-DO I'm thinking of (suggestions welcome):
Nullable
functionality) into a NullableOps.jl packagemap
,subarray
,broadcast
)==
for NullableArray doesn't seem to work #82 andNullableArray
comparison semantics more generallyI don't know whether to close #1 in favor of this or keep the former around as a general roadmap discussion for the package. All of those items in #1 turned out to be 0.0.1 items, and we've been using the 0.0.x series to feel out how NullableArrays.jl plays with the rest of the Julia stats/data ecosystems and find out what in particular
NullableArray
s are/will be used for. I'm still working out how best to articulate what I think the findings of the 0.0.x series have been. I only have three strong feelings:NullableArray
s is that they provide type-inferable iteration over arrays that may contain missing valuesmap
,broadcast
,reduce
) should be built-in and possibly on by defaultNullable
arguments is probably not the way to go. I'd prefer if attempts to do this were made elsewhere.The text was updated successfully, but these errors were encountered: