opam-version: "2.0"
maintainer: "David Kaloper Meršinjak <david@numm.org>"
authors: ["David Kaloper Meršinjak <david@numm.org>"]
homepage: "https://github.com/pqwy/psq"
doc: "https://pqwy.github.io/psq/doc"
license: "ISC"
dev-repo: "git+https://github.com/pqwy/psq.git"
bug-reports: "https://github.com/pqwy/psq/issues"
depends: [
  "ocaml" {>= "4.02.0"}
  "ocamlfind" {build}
  "ocamlbuild" {build}
  "topkg" {build}
  "alcotest" {with-test}
]
build: [ "ocaml" "pkg/pkg.ml" "build" "--pinned" "%{pinned}%" ]
synopsis: "Functional Priority Search Queues"
description: """
psq provides a functional priority search queue for OCaml. This structure
behaves both as a finite map, containing bindings `k -> p`, and a priority queue
over `p`. It provides efficient access along more than one axis: to any binding
by `k`, and to the binding(s) with the least `p`.

Typical applications are searches, schedulers and caches. If you ever scratched
your head because that A\\* didn't look quite right, a PSQ is what you needed.

The implementation is backed by [priority search pennants][hinze].

psq is distributed under the ISC license.

[hinze]: https://www.cs.ox.ac.uk/ralf.hinze/publications/ICFP01.pdf"""
url {
  src: "https://github.com/pqwy/psq/releases/download/v0.1.0/psq-0.1.0.tbz"
  checksum: "md5=21d6abc3db996888887ec61b7d38f885"
}
