Comments (7)
fixed in #1000.
from malli.
thanks to chatgpt, here's the fdef equivalent for comparison
(s/def ::height int?)
(s/def ::min-height int?)
(s/def ::person (s/keys :req-un [::height]))
(s/def ::tall-people-args (s/keys :req-un [::min-height]))
(s/def ::tall-people-result (s/coll-of ::person :kind vector?))
(defn tall-people [args]
(let [{:keys [min-height]} args]
[{:height 200}
{:height 150}]))
(s/fdef tall-people
:args (s/cat :args ::tall-people-args)
:ret (s/coll-of ::person :kind vector?)
:fn (fn [{:keys [args ret]}]
(let [{:keys [min-height]} (:args args)]
(every? #(>= (:height %) min-height) ret))))
(stest/instrument)
(tall-people {:min-height 180})
although return values are not checked even when instrumented I believe
I hope Malli can be more terse. what other improvements can we make on this?
from malli.
this can be made to work:
(def Input [:map [:min-height :int]])
(defn guard [{:keys [input output]}]
(every? #(>= (:height %) (:min-height input)) output))
(mx/defn kikka :- [:vector Input]
{:guard guard}
[_ :- Input]
;; body
[{:height 200}
{:height 150}])
from malli.
from malli.
I think this is related to / dup of #764
from malli.
It would be nice if something like this could work.
For this, named params are awesome.
(defn area-of-a-square
[len]
{:malli/schema [:=> [:catn [:len nat-int?]]
[:catn [:area
[:and
nat-int?
[:fn (fn [{:keys [area len]}]
(>= area len))]]]]]}
(* len len))
With clojure.spec, I would write it in this way:
;; len --> area
(defn area-of-square
[len]
(* len len))
(s/fdef area-of-square
:args (s/cat :len nat-int?)
:ret nat-int?
:fn (fn [{:keys [ret len]}]
(>= ret len))]]]]]}
from malli.
quick poke on this.
from malli.
Related Issues (20)
- Feature: Using Java classes as schemas HOT 2
- Not supported 3.1.0 openapi schema HOT 1
- Is it possible to represent an increasing sequence? HOT 1
- Parser losing metadata? HOT 1
- function guard should be instrumented by default HOT 1
- Nested map destructuring in `mx/defn` wraps extra collection
- qualified keywords in :keys in mx/defn fails macro schema validator. HOT 2
- `:double` generates Long if `:min` is Long
- `[:> Double/MAX_VALUE]` generates `Double/MAX_VALUE`
- Cannot generate values for regular expression schema HOT 2
- Function generators return constant function if seed provided
- Malli doesn't work with latest Cherry HOT 1
- A composite registry cannot be used a local registry HOT 1
- allow :error/fn or :error/message in {:optional t/f} to help define missing key error message
- How to: specify SCI `:classes`
- Datafy representation for reified schemas
- Add :min/:max limits to :map validator
- plantuml and dot transform fail with custom registry HOT 1
- OutOfMemoryError Java heap space exhausted with wrong schema
- `:?` doesn't work properly in function schemas in cljs
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 malli.