 
 ;auxiliary - direct translation from book
 (defn fold-right [z f s]
-  (if-let [[h & t] s]
-    (f h (fold-right z f t))
-    z))
+  (let [[h & t] s]
+    (if t
+      (f h (fold-right z f t))
+      (if h (f h z) z))))
+;it would be more concise should I have used core.match
 
 ;example - exists via f-r - also direct translation from book
 (defn exists

  [p s]
  (fold-right true #(and (p %) %2) s))
;-----------------------------------------------------------------------

    (go s [])))
;fpins
(defn my-take-while-fpins
  "fpins variant of take-while"                             ;obviously - less verbose than mine and no (obvious) accumulation :)
  [f s]
  (let [value (first s)]
    (when (f value)
