brainheck 0.1.0.7 → 0.1.0.8
raw patch · 3 files changed
+13/−11 lines, 3 filesdep ~base
Dependency ranges changed: base
Files
- bench/Bench.hs +7/−6
- brainheck.cabal +4/−3
- src/Brainheck.hs +2/−2
bench/Bench.hs view
@@ -1,11 +1,12 @@ module Main where -import Criterion.Main-import Brainheck-import qualified Data.Text.IO as TIO+import Brainheck+import Criterion.Main+import qualified Data.Text.IO as TIO -- FIXME use nfIO for final result + use env correctly-main = TIO.readFile "bf/helloworld.bf" >>= \file -> defaultMain [ - bgroup "parseBrainheck" [ - bench "helloworld.bf" $ whnf (parseBrainheck "bf/helloworld.bf") file ] +main :: IO ()+main = TIO.readFile "bf/helloworld.bf" >>= \file -> defaultMain [+ bgroup "parseBrainheck" [+ bench "helloworld.bf" $ whnf (parseBrainheck "bf/helloworld.bf") file ] ]
brainheck.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.18 name: brainheck-version: 0.1.0.7+version: 0.1.0.8 license: BSD3 license-file: LICENSE copyright: Copyright: (c) 2016-2018 Vanessa McHale@@ -38,9 +38,10 @@ default-language: Haskell2010 default-extensions: DeriveFunctor DeriveFoldable DeriveTraversable TypeFamilies+ other-extensions: TemplateHaskell KindSignatures FlexibleContexts ghc-options: -Wall build-depends:- base >=4.11 && <5,+ base >=4.10 && <5, mtl -any, vector -any, recursion-schemes -any,@@ -63,7 +64,7 @@ default-language: Haskell2010 ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall build-depends:- base -any,+ base >=4.11, brainheck -any, optparse-applicative -any, text -any
src/Brainheck.hs view
@@ -30,7 +30,7 @@ -- | Syntax tree for brainfuck data Syntax a = Loop (Syntax a) | Seq [Syntax a]- | Token a deriving (Show)+ | Token a makeBaseFunctor ''Syntax @@ -56,7 +56,7 @@ algebra :: Base (Syntax Char) (St ()) -> St () algebra (TokenF x) = toAction x-algebra (SeqF x) = foldr (>>) (pure ()) x+algebra (SeqF x) = sequence_ x algebra l@(LoopF x) = check >>= (\bool -> if bool then pure () else x >> algebra l) where check = get >>= (\(arr,i) -> pure . (==0) . (V.! i) $ arr)