]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - Rakka/Utils.hs
Resurrection from bitrot
[Rakka.git] / Rakka / Utils.hs
index 15bc6f4043f5a87f149cd09a5147c4cb4cb5be7c..3148c6bf108906112b39ebb81f63132ae8baa158 100644 (file)
@@ -1,3 +1,9 @@
+{-# LANGUAGE
+    Arrows
+  , OverloadedStrings
+  , TypeOperators
+  , UnicodeSyntax
+  #-}
 module Rakka.Utils
     ( yesOrNo
     , trueOrFalse
 module Rakka.Utils
     ( yesOrNo
     , trueOrFalse
@@ -10,35 +16,34 @@ module Rakka.Utils
     , mkQueryString
     )
     where
     , 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 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           Magic
 import           Network.HTTP.Lucu
 import           Network.URI
+import Prelude.Unicode
 import           System.IO.Unsafe
 
 import           System.IO.Unsafe
 
-
-yesOrNo :: Bool -> String
+yesOrNo ∷ Bool → String
 yesOrNo True  = "yes"
 yesOrNo False = "no"
 
 yesOrNo True  = "yes"
 yesOrNo False = "no"
 
-
-trueOrFalse :: Bool -> String
+trueOrFalse ∷ Bool → String
 trueOrFalse True  = "true"
 trueOrFalse False = "false"
 
 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
 
 maybeA :: (ArrowList a, ArrowChoice a) => a b c -> a b (Maybe c)
 maybeA a = listA a