I did this same thing in Clojure a while back as a way to introduce myself to the language. As you can see in the card definitions from that [1], I arrived at something close to your proposed idiom. All spells and battlecries are functions of the game state that usually end up being described as the composition of basic actions in hearthstone, e.g. (target [:type]) (damage-target n).
1. https://github.com/Mischanix/soot/blob/master/src/soot/cards...