       Cast ${1:FromType} ${2:ToType} where
         case from = ?holeTo
     """
+  'Alternative implementation':
+    'prefix': 'Alternative'
+    'body': """
+      Alternative ${1:Type} where
+        empty = ?holeAlternativeEmpty 
+
+        fa <|> fb = ?holeAlternative
+      """

    'prefix': 'Semigroup'
    'body': """
      Semigroup ${1:Type} where
        (<+>) a b = ?holeSemigroup
      """
  'Monoid implementation':
    'prefix': 'Monoid'

      Applicative ${1:Type} where
        pure a = ?holePureApplicative

        f <*> fa = ?holeApplyApplicative
      """
  'Monad implementation':
    'prefix': 'Monad'
    'body': """
      Monad ${1:Type} where
        fa >>= f = ?holeMonadBind
      """
  'Traversable implementation':
    'prefix': 'Traversable'
