The function filter-out-data
generates a subquery but you are trying to use it as a predicate and that is not going to work.
I recommend you to move all the logic in the expression (#(vector (s/split % #",")) ?line)
to a regular function that you can still call fill-out-data
.
(defn filter-out-data [data]
(let [[_ _ _ item1 _ _ _ item2] (s/split % #"," data))]
[item1 item2]))
(?<- (hfs-textline data-out :sinkmode :replace)
[?item1 ?item2]
((hfs-textline data-in) ?line)
(data-line? ?line)
(filter-out-data ?line :> ?item1 ?item2))
However, you can simplify even more the code by using a CSV library like data.csv.