tagged (empty) → 0.0
raw patch · 4 files changed
+99/−0 lines, 4 filesdep +basesetup-changed
Dependencies added: base
Files
- Data/Tagged.hs +42/−0
- LICENSE +30/−0
- Setup.lhs +7/−0
- tagged.cabal +20/−0
+ Data/Tagged.hs view
@@ -0,0 +1,42 @@+----------------------------------------------------------------------------+-- |+-- Module : Data.Tagged+-- Copyright : 2009 Edward Kmett+-- License : BSD3+--+-- Maintainer : Edward Kmett <ekmett@gmail.com>+-- Stability : experimental+-- Portability : portable+--+-------------------------------------------------------------------------------++module Data.Tagged+ ( Tagged(..)+ , retag+ ) where++import Control.Applicative ++newtype Tagged a b = Tagged { unTagged :: b } deriving (Eq,Ord,Show,Read)++instance Functor (Tagged a) where + fmap f (Tagged x) = Tagged (f x)+ {-# INLINE fmap #-}++instance Applicative (Tagged a) where+ pure = Tagged+ {-# INLINE pure #-}+ Tagged f <*> Tagged x = Tagged (f x)+ {-# INLINE (<*>) #-}++instance Monad (Tagged a) where+ return = Tagged+ {-# INLINE return #-}+ Tagged m >>= k = k m + {-# INLINE (>>=) #-}+ _ >> n = n+ {-# INLINE (>>) #-}++retag :: Tagged f b -> Tagged g b+retag = Tagged . unTagged +{-# INLINE retag #-}
+ LICENSE view
@@ -0,0 +1,30 @@+Copyright (c) 2009 Edward Kmett+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 Edward Kmett 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.lhs view
@@ -0,0 +1,7 @@+#!/usr/bin/runhaskell+> module Main (main) where++> import Distribution.Simple++> main :: IO ()+> main = defaultMain
+ tagged.cabal view
@@ -0,0 +1,20 @@+name: tagged+version: 0.0+license: BSD3+license-file: LICENSE+author: Edward A. Kmett+maintainer: Edward A. Kmett <ekmett@gmail.com>+stability: experimental+category: Data, Phantom Types+synopsis: Provides a newtype wrapper for phantom types to avoid passing dummy arguments+copyright: 2009 Edward A. Kmett+description: Provides a newtype wrapper for phantom types to avoid passing dummy arguments+build-type: Simple+cabal-version: >=1.2++library+ build-depends: + base >= 4 && < 5+ exposed-modules:+ Data.Tagged+ ghc-options: -Wall