packages feed

util (empty) → 0.1.0.0

raw patch · 4 files changed

+118/−0 lines, 4 filesdep +basesetup-changed

Dependencies added: base

Files

+ LICENSE view
@@ -0,0 +1,30 @@+Copyright (c) 2017, M Farkas-Dyck++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are met:++    * Redistributions of source code must retain the above copyright+      notice, this list of conditions and the following disclaimer.++    * Redistributions in binary form must reproduce the above+      copyright notice, this list of conditions and the following+      disclaimer in the documentation and/or other materials provided+      with the distribution.++    * Neither the name of M Farkas-Dyck nor the names of other+      contributors may be used to endorse or promote products derived+      from this software without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ Util.hs view
@@ -0,0 +1,64 @@+module Util where++import Control.Applicative+import Control.Category+import Control.Monad+import Data.Bool+import Data.Function (flip)+import Data.Maybe++infixr 3 &=&+(&=&) :: Applicative p => (a -> p b) -> (a -> p c) -> a -> p (b, c)+f &=& g = (liftA2 ∘ liftA2) (,) f g++infixr 3 *=*+(*=*) :: Applicative p => (a1 -> p b1) -> (a2 -> p b2) -> (a1, a2) -> p (b1, b2)+(f *=* g) (x, y) = liftA2 (,) (f x) (g y)++tripleK :: Applicative p => (a1 -> p b1) -> (a2 -> p b2) -> (a3 -> p b3) -> (a1, a2, a3) -> p (b1, b2, b3)+tripleK f g h (x, y, z) = liftA3 (,,) (f x) (g y) (h z)++infixr 2 <||>+(<||>) :: Applicative p => p Bool -> p Bool -> p Bool+(<||>) = liftA2 (||)++infixr 3 <&&>+(<&&>) :: Applicative p => p Bool -> p Bool -> p Bool+(<&&>) = liftA2 (&&)++liftA4 :: (Applicative p) => (a -> b -> c -> d -> e) -> p a -> p b -> p c -> p d -> p e+liftA4 f x y z = (<*>) (liftA3 f x y z)++apMA :: Monad m => m (a -> m b) -> a -> m b+apMA f = join ∘ ap f ∘ pure++whileJust :: (Alternative f, Monad m) => m (Maybe a) -> (a -> m b) -> m (f b)+whileJust mmx f = mmx >>= maybe (pure empty) (f >=> (<$> whileJust mmx f) ∘ (<|>) ∘ pure)++list :: b -> (a -> [a] -> b) -> [a] -> b+list y _ []     = y+list _ f (x:xs) = f x xs++infixr 9 &, ∘, ∘∘++(∘) :: (Category p) => p b c -> p a b -> p a c+(∘) = (.)++(&) :: (Category p) => p a b -> p b c -> p a c+(&) = flip (∘)++(∘∘) :: (c -> d) -> (a -> b -> c) -> (a -> b -> d)+(f ∘∘ g) x y = f (g x y)++infixl 0 `onn`+onn :: (a -> a -> a -> b) -> (c -> a) -> c -> c -> c -> b+onn f g x y z = f (g x) (g y) (g z)++fst3 :: (a, b, c) -> a+fst3 (x,_,_) = x++snd3 :: (a, b, c) -> b+snd3 (_,y,_) = y++þrd3 :: (a, b, c) -> c+þrd3 (_,_,z) = z
+ util.cabal view
@@ -0,0 +1,22 @@+name:                util+version:             0.1.0.0+synopsis:            Utilities+-- description:         +license:             BSD3+license-file:        LICENSE+author:              M Farkas-Dyck+maintainer:          strake888@gmail.com+-- copyright:           +category:            Util+build-type:          Simple+cabal-version:       >=1.10++library+  exposed-modules:     Util+  -- other-modules:       +  -- other-extensions:    +  build-depends:       base >=4.9 && <4.12+  -- hs-source-dirs:      +  default-language:    Haskell2010+  default-extensions:  NoImplicitPrelude+  ghc-options:         -Wall