module Data.Geo.GPX.Accessor.Sym where

import Data.Geo.GPX.Accessor.Accessor

class Sym a where
  sym :: a -> Maybe String
  setSym :: Maybe String -> a -> a

  setSym' :: String -> a -> a
  setSym' = setSym . Just

  usingSym :: (Maybe String -> Maybe String) -> a -> a
  usingSym = sym `using` setSym

  usingSym' :: (String -> String) -> a -> a
  usingSym' = usingSym . fmap