/dafn

Define asynchronous functions, easy

Primary LanguageClojureEclipse Public License 2.0EPL-2.0

dafn

Define asynchronous functions, just like any common function

(dafn limited-resource [params]
    (process-and-get-status))

limited-resource will return a promise that will be realized when the body is processed for its call.

(let [p (limited-resource x)]
    (some-other-process)
    (when (realized? p)
        (more-processing @p)))

limited-resource can be called from several threads concurrently

Limitations

As a macro, this comes with certain limitations. In particular

  • No variable arguments allowed
  • You cannot deconstruct in the argument definition

License

Copyright © 2020 Javier Arriero

This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which is available at http://www.eclipse.org/legal/epl-2.0.

This Source Code may also be made available under the following Secondary Licenses when the conditions for such availability set forth in the Eclipse Public License, v. 2.0 are satisfied: GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version, with the GNU Classpath Exception which is available at https://www.gnu.org/software/classpath/license.html.