{-# LANGUAGE TemplateHaskell, MultiParamTypeClasses, FlexibleInstances, ConstraintKinds, UndecidableInstances #-} -- | This module defines 'GTraversable' instances for standard types -- exported by "Prelude" module Data.Generics.Traversable.Instances () where import Data.Generics.Traversable.Core import Data.Generics.Traversable.TH import Control.Applicative import Data.Ratio instance GTraversable c () instance GTraversable c Bool instance GTraversable c Int instance GTraversable c Integer instance GTraversable c Float instance GTraversable c Double instance GTraversable c (Ratio n) instance GTraversable c Char instance GTraversable c Ordering --deriveGTraversable ''Maybe instance c_0 a_1 => Data.Generics.Traversable.Core.GTraversable c_0 (Maybe a_1) where gtraverse = \f_2 x_3 -> case x_3 of Nothing -> Control.Applicative.pure Nothing Just arg_4 -> (Control.Applicative.<*>) (Control.Applicative.pure Just) (f_2 arg_4) -- Uniform instance for lists instance c a => GTraversable c [a] where gtraverse f = go where go [] = pure [] go (x:xs) = (:) <$> f x <*> go xs