Skip to content

defphrase not matching set parameter #29

@andywokr

Description

@andywokr

This library was exactly what I needed. I am having trouble with the defphrase for the following predicate however.

(defn contains-only?
  [m ks]
  (-> m keys set (set/difference ks) empty?))

Put together the following code to show the problem.

(ns phraser-test
  (:require [phrase.alpha :refer [defphraser] :as phraser]
            [clojure.set :as set]
            [clojure.spec.alpha :as s]))

(defn contains-only?
  [m ks]
  (-> m keys set (set/difference ks) empty?))

(defphraser #(contains-only? % ks)
  [_ _ ks]
  (str ks " are the only allowed keys."))

(s/def ::person #(contains-only? % #{:name :age :gender}))

(defn test []
  (phraser/phrase-first {} ::person {:name "dave" :age 42 :gender :male :hair :brown}))

Despite several attempts I cannot get the phraser dispatching to match. Any help would be appreciated.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions