-- | Values with a @home@ optional string accessor.
module Data.Geo.OSM.Accessor.Hm where

import Data.Geo.OSM.Accessor.Accessor
import Data.Geo.OSM.Home

class Hm a where
  hm :: a -> Maybe Home
  setHm :: Maybe Home -> a -> a

  setHm' :: Home -> a -> a
  setHm' = setHm . return

  usingHm :: (Maybe Home -> Maybe Home) -> a -> a
  usingHm = hm `using` setHm

  usingHm' :: (Home -> Home) -> a -> a
  usingHm' = usingHm . fmap