RYJS56WZEVE7ZX5TXMQUZLB5ET6523U5VHTHLJLYKNBEHSTVSVEQC
IUCV36F4Z4KOGTSSSQDSHIELU3BCI42RXBWLDMYOVW2A5SGZGKAQC
RXCY7LD6ZRIOIKZEYKLMCYPMQPXF4DOEEFBDLVR2B22BXLZJFFBQC
A3TVGLVHSVLMEHLHB3TPBSD3QGNVGX3DIK6BEBDTTHWBNW4ALMRAC
KYYBNL5W2EML2V75WSE27ARFIWB5H76LXMH4XUBUDISO5UJKV43AC
ZYEHQDDB635RZOU4YDJYS5SPJ6BBZEWGSYLNABXRTW5OA4AXU7LQC
T6AJ2U27VBZRYWEGYSPKY4A7NU3FFXROISTS3KTT5O7QDWZ2K7TAC
(fwoar/def-ns-fun matches-regex (regex &optional start)
(lexical-let ((regex regex))
(lambda (data)
(if start
(string-match-p regex data start)
(string-match-p regex data)))))
(cl-defmacro fwoar/and (&rest fns)
(let ((dat (gensym "dat")))
`(lambda (,dat)
(and ,@(mapcar (lambda (fn)
`(funcall ,fn ,dat))
fns)))))
;; TODO: think about whether the plist behavior here makes sense
;; should we require plists to have symbol keys?