Variants of spiking neural P systems and their operational semantics in Haskell