From 0b2f6fb420d213b4ee718b9ac79cc3f9fa7678d5 Mon Sep 17 00:00:00 2001 From: pacien Date: Wed, 25 Dec 2019 21:04:31 +0100 Subject: compiler: refactor transform stages --- compiler/src/Utils.hs | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 compiler/src/Utils.hs (limited to 'compiler/src/Utils.hs') diff --git a/compiler/src/Utils.hs b/compiler/src/Utils.hs new file mode 100644 index 0000000..794382c --- /dev/null +++ b/compiler/src/Utils.hs @@ -0,0 +1,49 @@ +-- ldgallery - A static generator which turns a collection of tagged +-- pictures into a searchable web gallery. +-- +-- Copyright (C) 2019 Pacien TRAN-GIRARD +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU Affero General Public License as +-- published by the Free Software Foundation, either version 3 of the +-- License, or (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU Affero General Public License for more details. +-- +-- You should have received a copy of the GNU Affero General Public License +-- along with this program. If not, see . + + +module Utils + ( conj, neg + , unique + , passthrough + ) where + + +import qualified Data.List +import qualified Data.Set + + +-- predicates + +conj :: (a -> Bool) -> (a -> Bool) -> a -> Bool +conj p q x = (p x) && (q x) + +neg :: (a -> Bool) -> a -> Bool +neg p x = not (p x) + + +-- lists + +unique :: Ord a => [a] -> [a] +unique = Data.Set.toList . Data.Set.fromList + + +-- monads + +passthrough :: Monad m => (a -> m b) -> a -> m a +passthrough f a = return a >>= f >>= \_ -> return a -- cgit v1.2.3