preprocessor-tools 1.0.1 → 2.0.0
raw patch · 3 files changed
+24/−20 lines, 3 filesdep ~base
Dependency ranges changed: base
Files
- Language/Haskell/Preprocessor.hs +11/−9
- Language/Haskell/Preprocessor/SynSpec.hs +8/−6
- preprocessor-tools.cabal +5/−5
Language/Haskell/Preprocessor.hs view
@@ -36,6 +36,17 @@ syntaxerror :: Maybe (E.Error -> IO ()) } +instance Semigroup Extension where+ e1 <> e2 = Extension {+ keywords = keywords e1 ++ keywords e2,+ transformer = transformer e1 <=< transformer e2,+ synspec = synspec e1 `mappend` synspec e2,+ usage = usage e1 <+ usage e2,+ syntaxerror = syntaxerror e1 <+ syntaxerror e2+ }+ where Just a <+ _ = Just a+ Nothing <+ b = b+ instance Monoid Extension where mempty = Extension { keywords = [],@@ -44,15 +55,6 @@ usage = Nothing, syntaxerror = Nothing }- e1 `mappend` e2 = Extension {- keywords = keywords e1 ++ keywords e2,- transformer = transformer e1 <=< transformer e2,- synspec = synspec e1 `mappend` synspec e2,- usage = usage e1 <+ usage e2,- syntaxerror = syntaxerror e1 <+ syntaxerror e2- }- where Just a <+ _ = Just a- Nothing <+ b = b base :: Extension base = Extension {
Language/Haskell/Preprocessor/SynSpec.hs view
@@ -13,18 +13,20 @@ } deriving (Eq, Show) +instance Semigroup SynSpec where+ s1 <> s2 = SynSpec {+ unboxed = unboxed s1 || unboxed s2,+ pragmas = pragmas s1 || pragmas s2,+ levelnest = levelnest s1 || levelnest s2,+ blocks = blocks s1 ++ blocks s2+ }+ instance Monoid SynSpec where mempty = SynSpec { unboxed = False, pragmas = False, levelnest = False, blocks = []- }- s1 `mappend` s2 = SynSpec {- unboxed = unboxed s1 || unboxed s2,- pragmas = pragmas s1 || pragmas s2,- levelnest = levelnest s1 || levelnest s2,- blocks = blocks s1 ++ blocks s2 } data Keyword = I { getKey :: String }
preprocessor-tools.cabal view
@@ -1,16 +1,16 @@ Name: preprocessor-tools-Version: 1.0.1+Version: 2.0.0 Cabal-Version: >= 1.2.3 License: BSD3 License-File: LICENSE Stability: experimental-Author: Jesse A. Tov <tov@eecs.harvard.edu>-Maintainer: tov@eecs.harvard.edu-Homepage: http://www.eecs.harvard.edu/~tov/pubs/haskell-session-types/+Author: Jesse A. Tov <jesse@eecs.northwestern.edu>+Maintainer: jesse@eecs.northwestern.edu+Homepage: https://github.com/tov/preprocessor-tools-hs Category: Source-tools, Language, Code Generation Synopsis: A framework for extending Haskell's syntax via quick-and-dirty preprocessors Build-type: Simple-Tested-with: GHC == 7.4.1+Tested-with: GHC == 8.4.2 Description: This library provides a quick-and-dirty (but often effective) method for extending Haskell's syntax using a custom