Name: hermit-syb Version: 0.1.0.0 Synopsis: HERMIT plugin for optimizing Scrap-Your-Boilerplate traversals. Description: A HERMIT plugin for GHC which optimizes SYB generic traversals to achieve equivalent performance to hand-written traversals. . Details can be found in the paper: . Note: This compiler plugin requires GHC 7.8 (or HEAD) and specially compiled copies of base, ghc-prim, and syb. Up-to-date instructions can be found at: . We are working to lift these requirements. . As an example, we apply the optimization to Foo.hs, which contains the following code: . @ module Main where . import Data.Generics import HERMIT.Optimization.SYB.Prelude . main :: IO () main = print (mapInt (+1) [1..10]) . mapInt :: (Int -> Int) -> [Int] -> [Int] mapInt f = everywhere (mkT f) @ . Note that importing @HERMIT.Optimization.SYB.Prelude@ is required in any module targeted for optimization. . To compile Foo.hs with the optimization: . @ $ hermit Foo.hs -opt=HERMIT.Optimization.SYB +Main mapInt @ . This invokes GHC with a specific set of flags. These flags may be used instead of the 'hermit' program itself, or placed in a cabal file. . The first argument to HERMIT is the target file. Next is the -opt flag, which specifies the plugin name. Then follows one or more target module names, each beginning with a plus sign. After each target module is a list of targeted functions. The distinguished 'interactive' target will run the optimization on any other targets and then enter the HERMIT interactive shell. The distinguished 'interactive-only' target will open the HERMIT shell before optimization. HERMIT commands specific to this optimization are available for interactive use. Category: Language, Optimization, Transformation License: BSD3 License-file: LICENSE Author: Michael D. Adams and Andrew Farmer Maintainer: Andrew Farmer Stability: alpha Build-type: Simple Cabal-version: >=1.14 Library Ghc-options: -Wall Exposed-modules: HERMIT.Optimization.SYB HERMIT.Optimization.SYB.Prelude Build-depends: base == 4.*, ghc >= 7.6, ghc-prim, hermit >= 0.3.2.0, syb, template-haskell, containers Default-language: Haskell2010 Source-repository head type: git location: git://github.com/xich/hermit-syb.git