Extra validation and handler function arity change

watch-path already dispatches on the event type, no need to pass it again to the handler function. If you want to reuse one function, you can choose to send the keyword to your function (watch-path "~" :create (partial f :create)) for example.

This also checks that the keywords you pass are what we expect (I kept typing :remove instead of delete and getting cryptic null pointer errors when it didn't work) and makes sure that your function can be called with a single argument