Skip to content

Create speced/promise speced/promise-of #72

@vemv

Description

@vemv

Context

'Promise' return values are non-trivial to spec: derefing them on :post would make that defn blocking, defeating the purpose of promises

Task

Implement speced/promise (a promise replacement), plus speced/promise-of(a spec predicate)

Example:

(defn promise [spec]
  (let [p (clojure.core/promise)]
    (fn [deliverable]
      (assert (check! spec deliverable))
      (deliver p deliverable))))

(spec/valid? (speced/promise-of ::foo) (speced/promise ::foo)) ;; true

Acceptance criteria

  • Works analogously to clojure.core/promise
  • The resulting spec checking is meaningful / strong

Additional resources

https://github.com/nedap/postman-clj/pull/38

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions