witch/source/library/Witch/TryFrom.hs
2022-01-11 12:30:31 +00:00

27 lines
1002 B
Haskell

{-# LANGUAGE MultiParamTypeClasses #-}
module Witch.TryFrom where
import qualified Witch.TryFromException as TryFromException
-- | This type class is for converting values from some @source@ type into
-- some other @target@ type. The constraint @'TryFrom' source target@ means
-- that you may be able to convert from a value of type @source@ into a value
-- of type @target@, but that conversion may fail at runtime.
--
-- This type class is for conversions that can sometimes fail. If your
-- conversion always succeeds, consider implementing @From@ instead.
class TryFrom source target where
-- | This method implements the conversion of a value between types. At call
-- sites you may want to use @tryInto@ instead.
--
-- > -- Avoid this:
-- > tryFrom (x :: s)
-- >
-- > -- Prefer this:
-- > tryFrom @s
--
-- Consider using @maybeTryFrom@ or @eitherTryFrom@ to implement this
-- method.
tryFrom :: source -> Either (TryFromException.TryFromException source target) target