util (empty) → 0.1.0.0
raw patch · 4 files changed
+118/−0 lines, 4 filesdep +basesetup-changed
Dependencies added: base
Files
- LICENSE +30/−0
- Setup.hs +2/−0
- Util.hs +64/−0
- util.cabal +22/−0
+ 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