Domains:
[x -> y] (Option (clojure.lang.Seqable x))
Arguments:
(IPersistentSet (Option Kw)) (ISeq (Option Kw))
;; external function
(defn find-availables-fn [] :- (Seq (Option Kw))...)
;; evil function
(defn seq-of-keywords [my-ref :- (Ref1 (Set (Option Kw)))] :- (Option (Seq Kw))
(let [my-set :- (Set Kw), #{:a :b :c}
my-map :- (Map Kw Kw) {:key :val}
kw-inputs :- (Set (Option Kw)), (s/intersection @my-ref my-set)
candidate-kw-outputs :- (Seq (Option Kw)), (for [kw :- (Option Kw), kw-inputs] :- (Option Kw)
(my-map kw))]
(for [kw :- (Option Kw), candidate-kw-outputs] :- (Seq (Option Kw))
(some #{kw} (find-availables-fn)))))