-
Notifications
You must be signed in to change notification settings - Fork 252
Open
Description
This was suggested to me by @DeLaGuardo.
It seems like there's an elegant extension of s/defn's syntax to support different return schemas per arity:
(s/defn foo
(:- Return1 [])
(:- Return2 [a]))Transducer functions are a good motivation:
(s/defn map
(:- Transducer [f] ...etc)
(:- [A] [f & xs] ...etc))There would need to be a restriction that disallows combining this syntax the original return syntax.
The question is, how to support this in FnSchema? FnSchema is hardcoded with a single return schema.
Idea: we could introduce a new container for a list of FnSchemas:
(->MultipleFnSchemas [(->FnSchema Return1 Inputs1), (->FnSchema Return2 Inputs2)])Not sure how to extend the syntax of s/=>* to support this. Perhaps repeat the same idea at the syntax level?
(s/multiple-fn-schemas (s/=> Return1 Inputs1) (s/=> Return2 Inputs2))Metadata
Metadata
Assignees
Labels
No labels