-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Labels
decisionA decision that needs to be madeA decision that needs to be madehelp wantedExtra attention is neededExtra attention is needed
Description
In #1, several people talked about a way for algorithm writers to specify requirements. This seems like a good idea, but designing it will be challenging. Here are a few important questions we need to answer:
- Are requirements just functions (e.g.
clone) or method signatures (i.e. with the argument types, e.g.clone(::YourCommonEnv)?
There are several sub-issues with this:- if we have any cases of the same function with different possible signatures, then the requirements will need to be signatures
- If we use signatures, it is a huge pain to infer the right types to ask for (e.g. suppose we had
interact!(env, a), to check the requirement we would have to infer (or ask the user to supply) the type ofa. It might be possible to doBase.return_types(env->eltype(actions(env)), Tuple{typeof(env)}))or something.
- Do we evaluate requirements all at once so we can show a checklist or allow algorithm-writers to write their own code and go through each requirement one by one?
- Should algorithms automatically check requirements when they start, or should we provide a mechanism for an environment-writer to test what methods are needed before running the algorithm?
- How should we handle cases where there are "or" requirements, e. g. MCTS could use
cloneorsetstate! - in the interface checking, should we use
Base.show_method_candidatesto make a report like aMethodError, or just wait until it is erroneously called?
Please weigh in!
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
decisionA decision that needs to be madeA decision that needs to be madehelp wantedExtra attention is neededExtra attention is needed