metosin/malli
Auf GitHub ansehenmx/defn and malli.destructure/parse unexpected handling of seqexps
Open
#1.005 geöffnet am 1. Feb. 2024
documentationhelp wanted
Repository-Metriken
- Stars
- (1.724 Stars)
- PR-Merge-Metriken
- (Keine gemergten PRs in 30 T)
Beschreibung
If I write
(require '[malli.experimental :as mx])
(require '[malli.core :as m])
(mx/defn ^:malli/always f [xs :- [:* :int]]
(malli.core/validate [:* :int] xs))
(f 1)
;; => false
(f [1])
;; => Execution error (ExceptionInfo) at malli.core/-exception (core.cljc:136).
;; :malli.core/invalid-input
(m/validate [:* :int] [1])
;; => true
I would expect (f 1) to throw an except and (f [1]) to return true.
I think this is because the schemas for the arguments are combined using [:cat ...] and [:cat [:* :int]] 'flattens' the expression, so [[1]] is not valid for [:cat [:* :int]]. In this simple case the args schema should be something like [:tuple [:* :int]] for which [[1]] is valid.
Of course this is not so simple for varargs.