+{-# LANGUAGE
+ Arrows
+ , OverloadedStrings
+ , TypeOperators
+ , UnicodeSyntax
+ #-}
module Rakka.Utils
( yesOrNo
, trueOrFalse
, mkQueryString
)
where
-
import qualified Codec.Binary.UTF8.String as UTF8
import Control.Arrow
import Control.Arrow.ArrowList
import qualified Data.ByteString.Lazy as Lazy (ByteString)
import qualified Data.ByteString.Lazy.Char8 as L8 hiding (ByteString)
+import Data.Monoid.Unicode
+import Data.String
import Magic
import Network.HTTP.Lucu
import Network.URI
+import Prelude.Unicode
import System.IO.Unsafe
-
-yesOrNo :: Bool -> String
+yesOrNo ∷ Bool → String
yesOrNo True = "yes"
yesOrNo False = "no"
-
-trueOrFalse :: Bool -> String
+trueOrFalse ∷ Bool → String
trueOrFalse True = "true"
trueOrFalse False = "false"
-
-parseYesOrNo :: ArrowChoice a => a String Bool
-parseYesOrNo
- = proc str -> do case str of
- "yes" -> returnA -< True
- "no" -> returnA -< False
- _ -> returnA -< error ("Expected yes or no: " ++ str)
-
+parseYesOrNo ∷ (Eq s, Show s, IsString s, ArrowChoice (⇝)) ⇒ s ⇝ Bool
+parseYesOrNo
+ = proc str →
+ case str of
+ _ | str ≡ "yes" → returnA ⤙ True
+ | str ≡ "no" → returnA ⤙ False
+ | otherwise → returnA ⤙ error ("Expected yes or no: " ⊕ show str)
maybeA :: (ArrowList a, ArrowChoice a) => a b c -> a b (Maybe c)
maybeA a = listA a