packages feed

jacinda 3.2.0.1 → 3.3.0.0

raw patch · 62 files changed

+3526/−383 lines, 62 filesdep +tasty-goldendep +temporarydep −silently

Dependencies added: tasty-golden, temporary

Dependencies removed: silently

Files

CHANGELOG.md view
@@ -1,3 +1,8 @@+# 3.3.0.0++  * Allow decimal specifiers in format strings+  * Add `--header` (and `:set header;`) which includes match in record.+ # 3.2.0.1    * Include file in errors
bench/Bench.hs view
@@ -3,12 +3,16 @@ module Main (main) where  import           A-import           Control.DeepSeq    (NFData (..))+import           Control.DeepSeq (NFData (..)) import           Criterion.Main-import qualified Data.Text.IO       as TIO+import qualified Data.Text.IO    as TIO import           File-import           System.IO.Silently (silence)+import           System.IO       (IOMode (WriteMode), withFile) +hrun ifp e m fp = withFile "/dev/null" WriteMode $ \h -> runOnFile [] "(bench)" e [] m fp h+runs e m fp = nfIO $ hrun "(bench)" e m fp+fruns ifp m fp = nfIO $ do { contents <- TIO.readFile ifp; hrun ifp contents m fp }+ main :: IO () main =     defaultMain [ bgroup "eval"@@ -16,20 +20,23 @@                       , bench "exprEval" $ nf exprEval "reintercalate ' ' (split '01-23-1987' /-/)"                       ]                 , bgroup "csv"-                      [ bench "dedup" $ nfIO (silence $ runOnFile [] "" "~.{ix>1}{`8}" [] CSV "bench/data/food-prices.csv")-                      , bench "succdiff" $ nfIO (silence $ runOnFile [] "" "(%)\\. {%/Apple/}{`3:}" [] CSV "bench/data/food-prices.csv")+                      [ bench "dedup" $ runs "~.{ix>1}{`8}" CSV "bench/data/food-prices.csv"+                      , bench "succdiff" $ runs "(%)\\. {%/Apple/}{`3:}" CSV "bench/data/food-prices.csv"                       ]+                , bgroup "report"+                      [ bench "ghc-filt" $ fruns "test/examples/ghc-filt.jac" awk "test/data/ghc" ]                 , bgroup "stream"-                      [ bench "path" $ nfIO (silence $ runOnFile [] "" "{|[x+'\\n'+y]|>`$}" [] (AWK (Just ":") Nothing) "bench/data/PATH")-                      , bench "RS" $ nfIO (silence $ runOnFile [] "" "$0" [] (AWK Nothing (Just ":")) "bench/data/PATH")-                      , bench "runOnFile" $ nfIO (silence $ runOnFile [] "" "(+)|0 {%/Bloom/}{1}" [] (AWK Nothing Nothing) "bench/data/ulysses.txt")-                      , bench "runOnFile/wc.jac" $ nfIO (silence $ do { contents <- TIO.readFile "examples/wc.jac" ; runOnFile [] "examples/wc.jac" contents [] (AWK Nothing Nothing) "bench/data/ulysses.txt" })-                      , bench "runOnFile/span2.jac" $ nfIO (silence $ do { contents <- TIO.readFile "examples/span2.jac" ; runOnFile [] "examples/span2.jac" contents [] (AWK Nothing Nothing) "bench/data/span.txt" })-                      , bench "sedstream.jac" $ nfIO (silence $ do { contents <- TIO.readFile "examples/sedstream.jac" ; runOnFile [] "examples/sedstream.jac" contents [] (AWK Nothing Nothing) "bench/data/lines.txt" })-                      , bench "gnused.jac" $ nfIO (silence $ do { contents <- TIO.readFile "examples/gnused.jac" ; runOnFile [] "exampes/gnused.jac" contents [] (AWK Nothing Nothing) "bench/data/lines.txt" })-                      -- , bench "fungnused.jac" $ nfIO (silence $ do { contents <- TIO.readFile "examples/fungnused.jac" ; runOnFile [] contents (AWK Nothing Nothing) "bench/data/lines.txt" })-                      , bench "hsLibversionMac.jac" $ nfIO (silence $ do { contents <- TIO.readFile "examples/hsLibversionMac.jac"; runOnFile [] "examples/hsLibVersionMac.jac" contents [] (AWK Nothing Nothing) "bench/data/pandoc-mac" })-                      , bench "sedsmtp.jac" $ nfIO (silence $ do { contents <- TIO.readFile "examples/sedsmtp.jac" ; runOnFile [] "examples/sedsmtp.jac" contents [] (AWK Nothing Nothing) "test/examples/data/2.txt" })+                      [ bench "sprintf" $ runs "{%/infix(r|l)?\\s+\\d+/}{sprintf '- fixity: %s' `0}" awk "src/A.hs"+                      , bench "path" $ runs "{|[x+'\\n'+y]|>`$}" (AWK (Just ":") Nothing False) "bench/data/PATH"+                      , bench "RS" $ runs "$0" (AWK Nothing (Just ":") False) "bench/data/PATH"+                      , bench "runOnFile" $ runs "(+)|0 {%/Bloom/}{1}" awk "bench/data/ulysses.txt"+                      , bench "runOnFile/wc.jac" $ fruns "examples/wc.jac" awk "bench/data/ulysses.txt"+                      , bench "runOnFile/span2.jac" $ fruns "examples/span2.jac" awk "bench/data/span.txt"+                      , bench "sedstream.jac" $ fruns "examples/sedstream.jac" awk "bench/data/lines.txt"+                      , bench "gnused.jac" $ fruns "examples/gnused.jac" awk "bench/data/lines.txt"+                      -- , bench "fungnused.jac" $ fruns "examples/fungnused.jac" awk "bench/data/lines.txt" }+                      , bench "hsLibversionMac.jac" $ fruns "examples/hsLibversionMac.jac" awk "bench/data/pandoc-mac"+                      , bench "sedsmtp.jac" $ fruns "examples/sedsmtp.jac" awk "test/examples/data/2.txt"                       ]                 ] 
doc/guide.pdf view

binary file changed (94324 → 94768 bytes)

+ examples/evenOdd.jac view
@@ -0,0 +1,14 @@+fn count(x) ≔+  fold (+) 0 (([:1)"x);++fn isEven() :=+  (~ /(0|2|4|6|8)$/);++fn isOdd() :=+  (~ /(1|3|5|7|9)$/);++let+  val even := count (isEven #. $0)+  val odd := count (isOdd #. $0)+  val total := odd + even+in (total . even . odd) end
+ examples/latestCabal.jac view
@@ -0,0 +1,5 @@+:set header;+:set rs:=/\n[^:\n]*:/;+:set fs:=/\s*,\s*/;++[x ~* 1 /(\d+(\.\d+)*)/]:?{%/Versions available:/}{[y]|>`$}
+ examples/otool/dllibs.jac view
@@ -0,0 +1,5 @@+{. otool -l $(locate libapple.dylib) | ja run dllibs.jac+:set rs:=/Load command/;+:set fs:=/ *\n */;++.?{`2 ~ /^cmd LC_LOAD_DYLIB$/}{`0 ~* 1 /\n *name ([^\s]+)/}
+ examples/otool/rpath.jac view
@@ -0,0 +1,5 @@+{. otool -l $(locate libapple.dylib) | ja run rpath.jac+:set rs:=/Load command/;+:set fs:=/ *\n */;++.?{`2 ~ /^cmd LC_RPATH$/}{`0 ~* 1 /\n *path ([^\s]+)/}
+ examples/tagsex.jac view
@@ -0,0 +1,12 @@+fn mkEx(s) :=+  '/^' + s + '$/;';++{. TODO: insert \zs at precise identifier! https://stackoverflow.com/a/31089753/11296354++fn processStr(s) :=+  let+    val line := split s /[ \(:]+/+    val outLine := sprintf '%s\t%s\t%s' (line.3 . fp . mkEx s)+  in outLine end;++processStr¨{%/fn +[[:lower:]][[:latin:]]*.*:=/}{`0}
jacinda.cabal view
@@ -1,6 +1,6 @@ cabal-version:      2.2 name:               jacinda-version:            3.2.0.1+version:            3.3.0.0 license:            AGPL-3.0-only license-file:       COPYING maintainer:         vamchale@gmail.com@@ -27,6 +27,27 @@     doc/guide.pdf     test/examples/*.jac     examples/*.jac+    examples/otool/*.jac+    test/golden/*.out+    test/data/a.csv+    test/data/cabal-info+    test/data/cabal-plan+    test/data/cdeps+    test/data/download.html+    test/data/env+    test/data/food-prices.csv+    test/data/fut-ctags+    test/data/ghc+    test/data/ghc-pkg+    test/data/git-tags+    test/data/ls+    test/data/otool+    test/data/py-ver+    test/data/python-site+    test/data/r-version+    test/data/readelf+    test/data/trailingWhitespace+    test/data/url  source-repository head     type:     git@@ -50,10 +71,8 @@     exposed-modules:         File         A-        Parser-        Parser.Rw         Ty-        Ty.Const+        Parser         Jacinda.Regex      hs-source-dirs:   src@@ -64,6 +83,8 @@         Nm         U         R+        Parser.Rw+        Ty.Const         Jacinda.Check.Field         Jacinda.Backend.Const         Jacinda.Backend.T@@ -97,9 +118,11 @@         deepseq,         lazy-csv -    other-extensions:+    default-extensions:         DeriveFunctor         OverloadedStrings++    other-extensions:         DeriveAnyClass         DeriveGeneric         DeriveFoldable@@ -135,10 +158,12 @@     build-depends:         base,         jacinda-lib,-        tasty,         bytestring,-        text,-        tasty-hunit+        tasty,+        tasty-golden,+        tasty-hunit,+        temporary,+        text  benchmark jacinda-bench     import:           warnings@@ -152,5 +177,4 @@         criterion,         jacinda-lib,         deepseq,-        text,-        silently+        text
lib/prefixSizes.jac view
@@ -1,11 +1,11 @@ fn prettyMem(x) :=   ?x>=1073741824.0-  ;sprintf'%f GB' (x%1073741824.0)+  ;sprintf'%f.2 GB' (x%1073741824.0)   ;?x>=1048576.0-   ;sprintf'%f MB' (x%1048576.0)+   ;sprintf'%f.2 MB' (x%1048576.0)    ;?x>=1024.0-    ;sprintf'%f kB' (x%1024.0)-    ;sprintf'%f b' x;+    ;sprintf'%f.2 kB' (x%1024.0)+    ;sprintf'%f.0 b' x;  {. du reports memory in bytes by default fn duMem(x) := prettyMem(x*1024.0);
man/ja.1 view
@@ -39,6 +39,9 @@ \f[B]\-\-csv\f[R] Process as CSV .TP+\f[B]\-b\f[R] \f[B]\-\-header\f[R]+Include match when splitting records+.TP \f[B]\-Dfile=main.c\f[R] Define variable .SH LANGUAGE@@ -174,6 +177,10 @@ \f[B]drop#, take#\f[R] Int \-> List a \-> List a .SS SYNTAX+\f[B]\[aq]str\[aq]\f[R] string literal+.PP+\f[B]/pat/\f[R] regex literal+.PP \f[B]\[ga]n\f[R] nth field .PP \f[B]\[ga]0\f[R] current line@@ -233,6 +240,8 @@ .PP \f[B]:set rs=/REGEX/;\f[R] Set record separator .PP+\f[B]:set header;\f[R] Include match when splitting records+.PP \f[B]:set csv;\f[R] Process as CSV .PP \f[B]:flush;\f[R] Flush stdout for every line@@ -251,7 +260,7 @@ Select only the third line .TP :set csv; {ix=1}{[x+\[aq]\[rs]n\[aq]+y]|>\[ga]$}-Present column names of a .csv file, one per line+Present column names of a .csv file .TP (+)|0 $1:i Sum first column@@ -277,11 +286,11 @@ [y]|> {|\[ga]0\[ti]/\[ha]$/} Is the last line blank? .TP-{|option ⍬ [x] (\[ga]0 \[ti]* 1 /\[ha]((\[rs]s+\[rs]S|\[rs]S)*)$/)}+{|option ⍬ [x] (\[ga]0 \[ti]* 1 /\[ha]((\[rs]s+\[rs]S|\[rs]S)*)\[rs]s*$/)} Trim trailing whitespace .TP ja \-R\[aq]\[rs]n\[rs]s*\[aq] \[dq][x+\[aq] \[aq]+y]|>\[rs]$0\[dq]-Concatenate into one line, discarding extra leading whitespace between+Concatenate into one line, discarding leading whitespace between .SH BUGS Please report any bugs you may come across to https://github.com/vmchale/jacinda/issues
src/A.hs view
@@ -1,13 +1,11 @@-{-# LANGUAGE DeriveAnyClass    #-}-{-# LANGUAGE DeriveFunctor     #-}-{-# LANGUAGE DeriveGeneric     #-}-{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE DeriveAnyClass #-}+{-# LANGUAGE DeriveGeneric  #-}  module A ( E (..), T (..), (~>), TB (..), C (..)          , L (..), N (..), BBin (..), BTer (..)          , BUn (..), DfnVar (..)          , D (..), Program (..)-         , Mode (..)+         , Mode (..), awk          , mapExpr          , getS, flushD          ) where@@ -373,7 +371,7 @@ -- decl data D a = SetFS T.Text | SetRS T.Text          | FunDecl (Nm a) [Nm a] (E a)-         | FlushDecl+         | FlushDecl | SetH          | SetAsv | SetUsv | SetCsv          | SetOFS T.Text | SetORS T.Text          deriving (Functor)@@ -383,6 +381,7 @@     pretty (SetRS rs)       = ":set rs :=" <+> "/" <> pretty rs <> "/;"     pretty (FunDecl n ns e) = "fn" <+> pretty n <> tupled (pretty <$> ns) <+> ":=" <#> indent 2 (pretty e <> ";")     pretty FlushDecl        = ":flush;"+    pretty SetH             = ":set header;"     pretty SetAsv           = ":set asv;"     pretty SetUsv           = ":set usv;"     pretty SetCsv           = ":set csv;"@@ -399,16 +398,19 @@ flushD :: Program a -> Bool flushD (Program ds _) = any p ds where p FlushDecl = True; p _ = False -data Mode = CSV | AWK (Maybe T.Text) (Maybe T.Text) -- field, record+awk = AWK Nothing Nothing False +data Mode = CSV | AWK (Maybe T.Text) (Maybe T.Text) Bool -- field, record, include header in record split+ getS :: Program a -> Mode-getS (Program ds _) = foldl' go (AWK Nothing Nothing) ds where-    go (AWK _ rs) (SetFS bs) = AWK (Just bs) rs-    go _ SetAsv              = AWK (Just "\\x1f") (Just "\\x1e")-    go _ SetUsv              = AWK (Just "␞") (Just "␟")-    go _ SetCsv              = CSV-    go (AWK fs _) (SetRS bs) = AWK fs (Just bs)-    go next _                = next+getS (Program ds _) = foldl' go awk ds where+    go (AWK _ rs b) (SetFS bs) = AWK (Just bs) rs b+    go _ SetAsv                = AWK (Just "\\x1f") (Just "\\x1e") False+    go _ SetUsv                = AWK (Just "␞") (Just "␟") False+    go _ SetCsv                = CSV+    go (AWK fs _ b) (SetRS bs) = AWK fs (Just bs) b+    go (AWK fs rs _) SetH      = AWK fs rs True+    go next _                  = next  mapExpr :: (E a -> E a) -> Program a -> Program a mapExpr f (Program ds e) = Program ds (f e)
src/A/E.hs view
@@ -1,5 +1,3 @@-{-# LANGUAGE OverloadedStrings #-}- module A.E ( M, nN, eta ) where  import           A
src/A/I.hs view
@@ -35,7 +35,7 @@ iD :: D T -> RM T () iD (FunDecl n [] e) = do {eI <- iE e; bind n eI} iD SetFS{} = pure (); iD SetRS{} = pure (); iD SetAsv = pure (); iD SetUsv = pure (); iD SetCsv = pure ()-iD SetORS{} = pure (); iD SetOFS{} = pure (); iD FlushDecl{} = pure ()+iD SetORS{} = pure (); iD SetOFS{} = pure (); iD FlushDecl{} = pure (); iD SetH{} = pure () iD FunDecl{} = desugar  desugar = error "Internal error. Should have been de-sugared in an earlier stage!"
src/File.hs view
@@ -1,6 +1,4 @@-{-# LANGUAGE OverloadedStrings #-}--module File ( tcIO, tySrc+module File ( tcIO             , runStdin, runOnFile             , exprEval             ) where@@ -34,7 +32,7 @@ import           Prettyprinter                    (Pretty (pretty)) import           R import           Regex.Rure                       (RurePtr)-import           System.IO                        (stdin)+import           System.IO                        (Handle, stdin, stdout) import           Text.CSV.Lazy.ByteString         (CSVField (..), parseCSV) import           Ty @@ -148,21 +146,23 @@            -> [(T.Text, Value)]            -> Mode            -> BSL.ByteString+           -> Handle -- ^ Out handle            -> IO ()-runOnBytes incls fp fn src vars mode contents = do+runOnBytes incls fp fn src vars mode contents h = do     incls' <- defaultIncludes <*> pure incls     (ast, m) <- parsePWithMax incls' fn src vars     (typed, i) <- yIO fn $ runTyM m (tyP ast)     let (eI, j) = ib i typed     m'Throw $ cF eI     let (e', k) = runState (eta eI) j-        cont=run (flushD typed) k (compileR (encodeUtf8 $ T.pack fp) e')+        cont=run h (flushD typed) k (compileR (encodeUtf8 $ T.pack fp) e')     case (mode, getS ast) of-        (AWK cliFS cliRS, AWK afs ars) ->+        (AWK cliFS cliRS cliH, AWK afs ars ah) ->             let r=compileFS (cliFS <|> afs)-                bs=case cliRS <|> ars of-                    Nothing -> fmap BSL.toStrict (ASCIIL.lines contents)-                    Just rs -> lazySplit (tcompile rs) contents+                bs=case (cliRS <|> ars, cliH||ah) of+                    (Nothing, _)     -> fmap BSL.toStrict (ASCIIL.lines contents)+                    (Just rs, False) -> lazySplit (tcompile rs) contents+                    (Just rs, True)  -> lazySplitH (tcompile rs) contents                 ctxs=zipWith (\ ~(x,y) z -> (x,y,z)) [(b, splitBy r b) | b <- bs] [1..]             in cont ctxs         (CSV, _) -> let ctxs = csvCtx contents in cont ctxs@@ -174,7 +174,7 @@          -> [(T.Text, Value)]          -> Mode          -> IO ()-runStdin is src fn vars m = runOnBytes is "(stdin)" src fn vars m =<< BSL.hGetContents stdin+runStdin is src fn vars m = do {b <- BSL.hGetContents stdin; runOnBytes is "(stdin)" src fn vars m b stdout}  runOnFile :: [FilePath]           -> FilePath@@ -182,8 +182,9 @@           -> [(T.Text, Value)]           -> Mode           -> FilePath+          -> Handle -- ^ May need to be closed (lazy bytestring I/O)           -> IO ()-runOnFile is fn e vs m fp = runOnBytes is fp fn e vs m =<< BSL.readFile fp+runOnFile is fn e vs m fp h = do {b <- BSL.readFile fp; runOnBytes is fp fn e vs m b h}  tcIO :: [FilePath] -> FilePath -> T.Text -> IO () tcIO incls fn src = do@@ -192,12 +193,6 @@     (pT, i) <- yIO fn $ runTyM m (tyP ast)     let (eI, _) = ib i pT     m'Throw $ cF eI--tySrc :: T.Text -> T-tySrc src =-    case parseWithMax' src of-        Right (ast, m) -> yeet $ fst <$> runTyM m (tyOf (expr ast))-        Left err       -> throw err  m'Throw :: Exception e => Maybe e -> IO () m'Throw = traverse_ throwIO
src/Include.hs view
@@ -7,7 +7,7 @@ import           Data.List.Split    (splitWhen) import           Data.Maybe         (listToMaybe) import           Paths_jacinda      (getDataDir)-import           System.Directory   (doesFileExist, getCurrentDirectory,doesDirectoryExist)+import           System.Directory   (doesDirectoryExist, doesFileExist, getCurrentDirectory) import           System.Environment (lookupEnv) import           System.FilePath    ((</>)) 
src/Jacinda/Backend/Printf.hs view
@@ -1,13 +1,11 @@-{-# LANGUAGE OverloadedStrings #-}--module Jacinda.Backend.Printf ( sprintf-                              ) where+module Jacinda.Backend.Printf ( sprintf ) where  import           A import qualified Data.ByteString                   as BS import           Data.ByteString.Builder           (toLazyByteString) import           Data.ByteString.Builder.RealFloat (doubleDec) import qualified Data.ByteString.Lazy              as BSL+import           Data.Char                         (isDigit) import qualified Data.Text                         as T import           Data.Text.Encoding                (decodeUtf8, encodeUtf8) @@ -19,25 +17,44 @@ pf :: Double -> T.Text pf = decodeUtf8 . BSL.toStrict . toLazyByteString . doubleDec --- TODO: interpret precision, like %0.6f %.6+pd n x = let (l,r) = T.break (=='.') (pf x) in l <> T.take (n+1) r --- FIXME: if next is, say %i and encounter an int in the tuple, that should be an error+data PF = D !(Maybe Int) | I | B | S++{-# SCC next #-}+next :: T.Text -> (T.Text, Maybe (PF, T.Text))+next inp = case T.break (=='%') inp of+    (p, mfmt) | "%i" `T.isPrefixOf` mfmt -> (p, Just (I, T.drop 2 mfmt))+              | "%s" `T.isPrefixOf` mfmt -> (p, Just (S, T.drop 2 mfmt))+              | "%b" `T.isPrefixOf` mfmt -> (p, Just (B, T.drop 2 mfmt))+              | "%f." `T.isPrefixOf` mfmt -> let s=T.drop 3 mfmt in+                    case precision s of+                        Nothing    -> error "Missing digit in format specifier."+                        Just (n,f) -> (p, Just (D (Just n), f))+              | "%f" `T.isPrefixOf` mfmt -> (p, Just (D Nothing, T.drop 2 mfmt))+              | otherwise -> (p, Nothing)++precision :: T.Text -> Maybe (Int, T.Text)+precision t =+    let (n,f) = T.span isDigit t  in+    if T.null n then Nothing else Just (read (T.unpack n), f)++{-# SCC sp #-}+sp :: T.Text -> [E a] -> T.Text+sp t [] = t+sp t (e:es) =+    case (next t, e) of+        ((_, Nothing), _)                             -> error "Argument to sprintf has more values than expected by format string."+        ((p, Just (D Nothing, fmt)), Lit _ (FLit f))  -> p <> pf f <> sp fmt es+        ((p, Just (D (Just n), fmt)), Lit _ (FLit f)) -> p <> pd n f <> sp fmt es+        ((p, Just (B, fmt)), Lit _ (BLit b))          -> p <> showBool b <> sp fmt es+        ((p, Just (I, fmt)), Lit _ (ILit i))          -> p <> T.pack (show i) <> sp fmt es+        ((p, Just (S, fmt)), Lit _ (StrLit bs))       -> p <> decodeUtf8 bs <> sp fmt es+        ((_, Just{}), _)                              -> error "Argument type does not match sprintf format string."++  where+    showBool True = "#t"; showBool False = "#f"+ sprintf' :: T.Text -> E a -> T.Text-sprintf' fmt (Lit _ (FLit f)) =-    let (prefix, fmt') = T.breakOn "%f" fmt-        in prefix <> pf f <> T.drop 2 fmt'-sprintf' fmt (Lit _ (ILit i)) =-    let (prefix, fmt') = T.breakOn "%i" fmt-        in prefix <> T.pack (show i) <> T.drop 2 fmt'-sprintf' fmt (Lit _ (StrLit bs)) =-    let (prefix, fmt') = T.breakOn "%s" fmt-        in prefix <> decodeUtf8 bs <> T.drop 2 fmt'-sprintf' fmt (Tup _ [e]) = sprintf' fmt e-sprintf' fmt (Tup l (e:es)) =-    let nextFmt = sprintf' fmt e-        in sprintf' nextFmt (Tup l es)-sprintf' fmt (Lit _ (BLit b)) =-    let (prefix, fmt') = T.breakOn "%b" fmt-        in prefix <> showBool b <> T.drop 2 fmt'-    where showBool True  = "true"-          showBool False = "false"+sprintf' fmt e@Lit{}    = sp fmt [e]+sprintf' fmt (Tup _ es) = sp fmt es
src/Jacinda/Backend/T.hs view
@@ -1,5 +1,3 @@-{-# LANGUAGE OverloadedStrings #-}- module Jacinda.Backend.T ( LineCtx, run, eB ) where  import           A@@ -7,7 +5,7 @@ import           C import           Control.Exception                 (Exception, throw) import           Control.Monad                     (zipWithM, (<=<))-import           Control.Monad.Trans.State.Strict  (State, evalState, runState, state)+import           Control.Monad.Trans.State.Strict  (evalState, runState, state) import           Data.Bifunctor                    (first, second) import qualified Data.ByteString                   as BS import           Data.ByteString.Builder           (hPutBuilder)@@ -30,9 +28,9 @@ import           Nm import           NumParse import           Prettyprinter                     (hardline, pretty)-import           Prettyprinter.Render.Text         (putDoc)+import           Prettyprinter.Render.Text         (hPutDoc) import           Regex.Rure                        (RureMatch (RureMatch), RurePtr)-import           System.IO                         (hFlush, stdout)+import           System.IO                         (Handle, hFlush) import           Ty.Const import           U @@ -47,6 +45,7 @@              | InternalNm (Nm T)              | InternalArityOrEta Int (E T)              | InternalUnexpectedStream (E T)+             | StreamFunc (E T)              deriving (Show)  instance Exception EvalErr where@@ -81,63 +80,62 @@  foldSeq x = foldr seq () x `seq` x -type MM = State Int--nI :: MM Int+nI :: UM Int nI = state (\i -> (i, i+1)) -nN :: T -> MM (Nm T)+nN :: T -> UM (Nm T) nN t = do {u <- nI; pure (Nm "fold_hole" (U u) t)} -pSF :: Bool -> (Maybe Tmp, [Tmp]) -> [Env] -> IO ()-pSF flush (Just t, tt) [e] = do-    traverse_ (traverse_ (pS flush).(e !)) tt-    traverse_ (pS flush) (e!t)-pSF flush c@(_, tt) (e:es) = do-    traverse_ (traverse_ (pS flush)) [e!t|t <- tt]-    pSF flush c es-pSF _ _ [] = pure ()+pSF :: Handle -> Bool -> (Maybe Tmp, [Tmp]) -> [Env] -> IO ()+pSF h flush (Just t, tt) [e] = do+    traverse_ (traverse_ (pS h flush).(e !)) tt+    traverse_ (pS h flush) (e!t)+pSF h flush c@(_, tt) (e:es) = do+    traverse_ (traverse_ (pS h flush)) [e!t|t <- tt]+    pSF h flush c es+pSF _ _ _ [] = pure () -run :: Bool -> Int -> E T -> [LineCtx] -> IO ()-run _ _ e _ | ty@TyArr{} <- eLoc e = error ("Found function type: " ++ show ty)-run flush j e ctxs | TyB TyUnit <- eLoc e =  (\(s, f, env) -> pSF flush (s,f) env) $ flip evalState j $ do+uStream = flip evalState++run :: Handle -> Bool -> Int -> E T -> [LineCtx] -> IO ()+run _ _ _ e _ | ty@TyArr{} <- eLoc e = error ("Found function type: " ++ show ty)+run h flush j e ctxs | TyB TyUnit <- eLoc e =  (\(s, f, env) -> pSF h flush (s,f) env) $ uStream j $ do     (res, tt, iEnv, μ) <- unit e     u <- nI     let outs=μ<$>ctxs; es'=scanl' (&) (Σ u iEnv IM.empty IM.empty IM.empty IS.empty) outs     pure (res, tt, gE<$>es')-run flush j e ctxs | TyB TyStream:$_ <- eLoc e = traverse_ (traverse_ (pS flush)).flip evalState j $ do+run h flush j e ctxs | TyB TyStream:$_ <- eLoc e = traverse_ (traverse_ (pS h flush)).uStream j $ do     t <- nI     (iEnv, μ) <- ctx e t     u <- nI     let outs=μ<$>ctxs; es={-# SCC "scanMain" #-} scanl' (&) (Σ u iEnv IM.empty IM.empty IM.empty IS.empty) outs     pure ((! t).gE<$>es)-run _ j e ctxs = pDocLn $ flip evalState j $ do+run h _ j e ctxs = pDocLn h $ uStream j $ do     (iEnv, g, e0) <- collect e     u <- nI     let updates=g<$>ctxs         finEnv=foldl' (&) (Σ u iEnv IM.empty IM.empty IM.empty IS.empty) updates     e0@>(fromMaybe (throw EmptyFold)<$>gE finEnv) -unit :: E T -> MM (Maybe Tmp, [Tmp], Env, LineCtx -> Σ -> Σ)+unit :: E T -> UM (Maybe Tmp, [Tmp], Env, LineCtx -> Σ -> Σ) unit (Anchor _ es) = do     tt <- traverse (\_ -> nI) es     (iEnvs, μs) <- unzip <$> zipWithM ctx es tt     pure (Nothing, tt, fold iEnvs, ts μs) unit (EApp _ (EApp _ (BB _ Report) es) e) = do-    r <- nI-    t <- nI+    t <- nI; r <- nI     (iEnv, μ) <- ctx es t     (rEnv, g) <- φ e r     pure (Just r, [t], iEnv<>rEnv, μ@.g) unit e = error ("Internal error. '" ++ show e ++ "' assigned unit type?") -pS p = if p then (*>fflush).pDocLn else pDocLn where fflush = hFlush stdout+pS h p e = if p then pDocLn h e *> hFlush h else pDocLn h e -pDocLn :: E T -> IO ()-pDocLn (Lit _ (FLit f)) = hPutBuilder stdout (doubleDec f <> "\n")-pDocLn e                = putDoc (pretty e <> hardline)+pDocLn :: Handle -> E T -> IO ()+pDocLn h (Lit _ (FLit f)) = hPutBuilder h (doubleDec f <> "\n")+pDocLn h e                = hPutDoc h (pretty e <> hardline) -collect :: E T -> MM (Env, LineCtx -> Σ -> Σ, E T)+collect :: E T -> UM (Env, LineCtx -> Σ -> Σ, E T) collect e@(EApp ty (EApp _ (EApp _ (TB _ Fold) _) _) _) = do     v <- nN ty     (iEnv, g) <- φ e (unU$unique v)@@ -199,7 +197,7 @@ ts :: [LineCtx -> Σ -> Σ] -> LineCtx -> Σ -> Σ ts = foldl' (@.) (\_ -> id) -φ :: E T -> Tmp -> MM (Env, LineCtx -> Σ -> Σ)+φ :: E T -> Tmp -> UM (Env, LineCtx -> Σ -> Σ) φ (EApp _ (EApp _ (EApp _ (TB _ Fold) op) seed) xs) tgt = do     t <- nI     seed' <- seed @> mempty@@ -222,7 +220,7 @@ κ FieldList{} ~(_, bs, _) = vS bs κ (EApp ty e0 e1) line    = EApp ty (e0 `κ` line) (e1 `κ` line) κ (NB _ Ix) ~(_, _, fp)   = mkI fp-κ (NB _ Nf) ~(_, bs, _)   = mkI$fromIntegral (length bs)+κ (NB _ Nf) ~(_, bs, _)   = mkI$!fromIntegral (length bs) κ e@BB{} _                = e κ e@UB{} _                = e κ e@TB{} _                = e@@ -257,26 +255,26 @@ ni t=IM.singleton t Nothing na=IM.alter go where go Nothing = Just Nothing; go x@Just{} = x -ctx :: E T -> Tmp -> MM (Env, LineCtx -> Σ -> Σ)-ctx AllColumn{} res                                      = pure (ni res, \ ~(b, _, _) -> mE$IM.insert res (Just$!mkStr b))-ctx (ParseAllCol (_:$TyB TyI)) res                       = pure (ni res, \ ~(b, _, _) -> mE$IM.insert res (Just$!parseAsEInt b))-ctx (ParseAllCol (_:$TyB TyFloat)) res                   = pure (ni res, \ ~(b, _, _) -> mE$IM.insert res (Just$!parseAsF b))-ctx FParseAllCol{} res                                   = pure (ni res, \ ~(b, _, _) -> mE$IM.insert res (Just$!parseAsF b))-ctx IParseAllCol{} res                                   = pure (ni res, \ ~(b, _, _) -> mE$IM.insert res (Just$!parseAsEInt b))-ctx (Column _ i) res                                     = pure (ni res, \ ~(b, bs, _) -> mE$IM.insert res (Just$mkStr (fieldOf bs b i)))-ctx (FParseCol _ i) res                                  = pure (ni res, \ ~(b, bs, _) -> mE$IM.insert res (Just$!parseAsF (fieldOf bs b i)))-ctx (IParseCol _ i) res                                  = pure (ni res, \ ~(b, bs, _) -> mE$IM.insert res (Just$!parseAsEInt (fieldOf bs b i)))-ctx (ParseCol (_:$TyB TyFloat) i) res                    = pure (ni res, \ ~(b, bs, _) -> mE$IM.insert res (Just$!parseAsF (fieldOf bs b i)))-ctx (ParseCol (_:$TyB TyI) i) res                        = pure (ni res, \ ~(b, bs, _) -> mE$IM.insert res (Just$!parseAsEInt (fieldOf bs b i)))+ctx :: E T -> Tmp -> UM (Env, LineCtx -> Σ -> Σ)+ctx AllColumn{} res                                      = pure (ni res, \ ~(b, _, _) -> mE$res~!mkStr b)+ctx (ParseAllCol (_:$TyB TyI)) res                       = pure (ni res, \ ~(b, _, _) -> mE$res~!parseAsEInt b)+ctx (ParseAllCol (_:$TyB TyFloat)) res                   = pure (ni res, \ ~(b, _, _) -> mE$res~!parseAsF b)+ctx FParseAllCol{} res                                   = pure (ni res, \ ~(b, _, _) -> mE$res~!parseAsF b)+ctx IParseAllCol{} res                                   = pure (ni res, \ ~(b, _, _) -> mE$res~!parseAsEInt b)+ctx (Column _ i) res                                     = pure (ni res, \ ~(b, bs, _) -> mE$res~!mkStr (fieldOf bs b i))+ctx (FParseCol _ i) res                                  = pure (ni res, \ ~(b, bs, _) -> mE$res~!parseAsF (fieldOf bs b i))+ctx (IParseCol _ i) res                                  = pure (ni res, \ ~(b, bs, _) -> mE$res~!parseAsEInt (fieldOf bs b i))+ctx (ParseCol (_:$TyB TyFloat) i) res                    = pure (ni res, \ ~(b, bs, _) -> mE$res~!parseAsF (fieldOf bs b i))+ctx (ParseCol (_:$TyB TyI) i) res                        = pure (ni res, \ ~(b, bs, _) -> mE$res~!parseAsEInt (fieldOf bs b i)) ctx (EApp _ (EApp _ (BB _ Map) f) xs) o                  = do {t <- nI; (env, sb) <- ctx xs t; pure (na o env, \l->wM f t o.sb l)} ctx (EApp _ (EApp _ (BB _ MapMaybe) f) xs) o             = do {t <- nI; (env, sb) <- ctx xs t; pure (na o env, \l->wMM f t o.sb l)} ctx (EApp _ (UB _ CatMaybes) xs) o                       = do {t <- nI; (env, sb) <- ctx xs t; pure (na o env, \l->wCM t o.sb l)} ctx (EApp _ (EApp _ (BB _ Filter) p) xs) o               = do {t <- nI; (env, sb) <- ctx xs t; pure (na o env, \l->wP p t o.sb l)} ctx (Guarded _ p e) o                                    = pure (ni o, wG (p, e) o) ctx (Implicit _ e) o                                     = pure (ni o, wI e o)-ctx (EApp _ (EApp _ (EApp _ (TB _ Scan) op) seed) xs) o  = do {t <- nI; (env, sb) <- ctx xs t; seed' <- seed@>mempty; pure (IM.insert o (Just$!seed') env, \l->wF op t o.sb l)}+ctx (EApp _ (EApp _ (EApp _ (TB _ Scan) op) seed) xs) o  = do {t <- nI; (env, sb) <- ctx xs t; seed' <- seed@>mempty; pure (env&o~!seed', \l->wF op t o.sb l)} ctx (EApp _ (EApp _ (EApp _ (TB _ ZipW) op) xs) ys) o    = do {t0 <- nI; t1 <- nI; (env0, sb0) <- ctx xs t0; (env1, sb1) <- ctx ys t1; pure (na o (env0<>env1), \l->wZ op t0 t1 o.sb0 l.sb1 l)}-ctx (EApp _ (EApp _ (BB _ Prior) op) xs) o               = do {t <- nI; (env, sb) <- ctx xs t; pt <- nI; pure (na o (IM.insert pt Nothing env), \l -> wΠ op pt t o.sb l)}+ctx (EApp _ (EApp _ (BB _ Prior) op) xs) o               = do {t <- nI; (env, sb) <- ctx xs t; pt <- nI; pure (na o (pt\~env), \l -> wΠ op pt t o.sb l)} ctx (EApp (_:$TyB ty) (UB _ Dedup) xs) o                 = do {k <- nI; t <- nI; (env, sb) <- ctx xs t; pure (na o env, \l->wD ty k t o.sb l)} ctx (EApp _ (EApp _ (BB _ DedupOn) f) xs) o              = do {k <- nI; t <- nI; (env, sb) <- ctx xs t; pure (na o env, \l->wDOp f k t o.sb l)} ctx (EApp _ (EApp _ (EApp _ (TB _ Bookend) e0) e1) xs) o = do {k <- nI; t <- nI; (env, sb) <- ctx xs t; r0 <- e0@>mempty; r1<- e1@>mempty; pure (na o env, \l->wB (r0,r1) k t o.sb l)}@@ -536,6 +534,7 @@ e@TB{} @> _ = pure e e@UB{} @> _ = pure e (Lam t n e) @> b = Lam t n <$> (e@>b)+e @> _ | TyArr{} <- eLoc e = throw $ StreamFunc e -- basically an option can evaluate to a function... so ((option ...) x) -- needs to be reduced! but nothing will detect that... -- (when can a builtin etc. return a FUNCTION? if...then...else could!)@@ -554,78 +553,69 @@  wCM :: Tmp -> Tmp -> Σ -> Σ wCM src tgt (Σ u env d di df b) =-    let xϵ=env!src-    in Σ u (case xϵ of-        Just y  -> case asM y of {Nothing -> IM.insert tgt Nothing env; Just yϵ -> IM.insert tgt (Just$!yϵ) env}-        Nothing -> IM.insert tgt Nothing env) d di df b+    Σ u (case env!src of+        Just y  -> case asM y of {Nothing -> tgt\~env; Just yϵ -> env&tgt~!yϵ}+        Nothing -> tgt\~env) d di df b  {-# SCC wMM #-} wMM :: E T -> Tmp -> Tmp -> Σ -> Σ wMM (Lam _ n e) src tgt (Σ j env d di df b) =-    let xϵ=env!src-    in case xϵ of+    case env!src of         Just x ->             let be=ms n x; (y,k)=e@!(j,be)             in Σ k (case asM y of-                Just yϵ -> IM.insert tgt (Just$!yϵ) env-                Nothing -> IM.insert tgt Nothing env) d di df b-        Nothing -> Σ j (IM.insert tgt Nothing env) d di df b+                Just yϵ -> env&tgt~!yϵ+                Nothing -> tgt\~env) d di df b+        Nothing -> Σ j (tgt\~env) d di df b wMM e _ _ _ = throw$InternalArityOrEta 1 e  wZ :: E T -> Tmp -> Tmp -> Tmp -> Σ -> Σ wZ (Lam _ n0 (Lam _ n1 e)) src0 src1 tgt (Σ j env d di df b) =-    let x0ϵ=env!src0; x1ϵ=env!src1-    in (case (x0ϵ, x1ϵ) of+    (case (env!src0, env!src1) of         (Just x, Just y) ->             let be=me [(n0, x), (n1, y)]; (z,k)=e@!(j,be)-            in Σ k (IM.insert tgt (Just$!z) env)-        (Nothing, Nothing) -> Σ j (IM.insert tgt Nothing env)) d di df b+            in Σ k (env&tgt~!z)+        (Nothing, Nothing) -> Σ j (tgt\~env)) d di df b wZ e _ _ _ _ = throw$InternalArityOrEta 2 e  wM :: E T -> Tmp -> Tmp -> Σ -> Σ wM (Lam _ n e) src tgt (Σ j env d di df b) =-    let xϵ=env!src-    in case xϵ of+    case env!src of         Just x ->             let be=ms n x; (y,k)=e@!(j,be)-            in Σ k (IM.insert tgt (Just$!y) env) d di df b-        Nothing -> Σ j (IM.insert tgt Nothing env) d di df b+            in Σ k (env&tgt~!y) d di df b+        Nothing -> Σ j (tgt\~env) d di df b wM e _ _ _ = throw$InternalArityOrEta 1 e  wI :: E T -> Tmp -> LineCtx -> Σ -> Σ wI e tgt line (Σ j env d di df b) =-    let e'=e `κ` line; (e'',k)=e'$@j in Σ k (IM.insert tgt (Just$!e'') env) d di df b+    let e'=e `κ` line; (e'',k)=e'$@j in Σ k (env&tgt~!e'') d di df b  wG :: (E T, E T) -> Tmp -> LineCtx -> Σ -> Σ wG (p, e) tgt line (Σ j env d di df b) =     let p'=p `κ` line; (p'',k)=p'$@j     in (if asB p''-        then let e'=e `κ` line; (e'',u) =e'$@k in Σ u (IM.insert tgt (Just$!e'') env)-        else Σ k (IM.insert tgt Nothing env)) d di df b+        then let e'=e `κ` line; (e'',u) =e'$@k in Σ u (env&tgt~!e'')+        else Σ k (tgt\~env)) d di df b  wDOp :: E T -> Int -> Tmp -> Tmp -> Σ -> Σ wDOp (Lam (TyArr _ (TyB TyStr)) n e) key src tgt (Σ i env d di df b) =-    let x=env!src-    in case x of-        Nothing -> Σ i (IM.insert tgt Nothing env) d di df b+    case env!src of+        Nothing -> Σ i (tgt\~env) d di df b         Just xϵ ->             case IM.lookup key d of-                Nothing -> Σ k (IM.insert tgt (Just$!y) env) (IM.insert key (S.singleton e') d) di df b-                Just ss -> (if e' `S.member` ss then Σ k (IM.insert tgt Nothing env) d else Σ k (IM.insert tgt (Just$!y) env) (IM.alter go key d)) di df b+                Nothing -> Σ k (env&tgt~!y) (IM.insert key (S.singleton e') d) di df b+                Just ss -> (if e' `S.member` ss then Σ k (tgt\~env) d else Σ k (env&tgt~!y) (key!:e'$d)) di df b               where                 (y,k)=e@!(i,be); be=ms n xϵ                 e'=asS y--                go Nothing  = Just$!S.singleton e'-                go (Just s) = Just$!S.insert e' s wDOp (Lam (TyArr _ (TyB TyI)) n e) key src tgt (Σ i env d di df b) =-    let x=env!src-    in case x of-        Nothing -> Σ i (IM.insert tgt Nothing env) d di df b+    case env!src of+        Nothing -> Σ i (tgt\~env) d di df b         Just xϵ ->             case IM.lookup key di of-                Nothing -> Σ k (IM.insert tgt (Just$!y) env) d (IM.insert key (IS.singleton e') di) df b-                Just ds -> (if e' `IS.member` ds then Σ k (IM.insert tgt Nothing env) d di else Σ k (IM.insert tgt (Just$!y) env) d (IM.alter go key di)) df b+                Nothing -> Σ k (env&tgt~!y) d (IM.insert key (IS.singleton e') di) df b+                Just ds -> (if e' `IS.member` ds then Σ k (tgt\~env) d di else Σ k (env&tgt~!y) d (IM.alter go key di)) df b                where                 (y,k)=e@!(i,be); be=ms n xϵ@@ -634,110 +624,98 @@                 go Nothing  = Just$!IS.singleton e'                 go (Just s) = Just$!IS.insert e' s wDOp (Lam (TyArr _ (TyB TyFloat)) n e) key src tgt (Σ i env d di df b) =-    let x=env!src-    in case x of-        Nothing -> Σ i (IM.insert tgt Nothing env) d di df b+    case env!src of+        Nothing -> Σ i (tgt\~env) d di df b         Just xϵ ->             case IM.lookup key df of-                Nothing -> Σ k (IM.insert tgt (Just$!y) env) d di (IM.insert key (S.singleton e') df) b-                Just ds -> if e' `S.member` ds then Σ k (IM.insert tgt Nothing env) d di df b else Σ k (IM.insert tgt (Just$!y) env) d di (IM.alter go key df) b+                Nothing -> Σ k (env&tgt~!y) d di (IM.insert key (S.singleton e') df) b+                Just ds -> if e' `S.member` ds then Σ k (tgt\~env) d di df b else Σ k (env&tgt~!y) d di (key!:e'$df) b               where                 (y,k)=e@!(i,be); be=ms n xϵ                 e'=asF y--                go Nothing  = Just$!S.singleton e'-                go (Just s) = Just$!S.insert e' s wDOp e _ _ _ _ = throw $ InternalArityOrEta 1 e +(\~) k = IM.insert k Nothing+(~!) k x = IM.insert k (Just$!x)++(!:) k e = IM.alter (\x -> Just$!case x of Nothing -> S.singleton e; Just s -> S.insert e s) k+ wB :: (E T, E T) -> Int -> Tmp -> Tmp -> Σ -> Σ wB (e0, e1) key src tgt (Σ i env d di df b) =-    let x=env!src-    in case x of-        Nothing -> Σ i (IM.insert tgt Nothing env) d di df b+    case env!src of+        Nothing -> Σ i (tgt\~env) d di df b         Just xϵ -> let xS=asS xϵ in if key `IS.member` b-            then if isMatch' r1 xS then Σ i (IM.insert tgt (Just$!xϵ) env) d di df (IS.delete key b) else Σ i (IM.insert tgt (Just$!xϵ) env) d di df b-            else if isMatch' r0 xS then Σ i (IM.insert tgt (Just$!xϵ) env) d di df (IS.insert key b) else Σ i (IM.insert tgt Nothing env) d di df b+            then if isMatch' r1 xS then Σ i (env&tgt~!xϵ) d di df (IS.delete key b) else Σ i (env&tgt~!xϵ) d di df b+            else if isMatch' r0 xS then Σ i (env&tgt~!xϵ) d di df (IS.insert key b) else Σ i (tgt\~env) d di df b   where     r0=asR e0; r1=asR e1  {-# SCC wD #-} wD :: TB -> Int -> Tmp -> Tmp -> Σ -> Σ wD TyStr key src tgt (Σ i env d di df b) =-    let x=env!src-    in case x of-        Nothing -> Σ i (IM.insert tgt Nothing env) d di df b+    case env!src of+        Nothing -> Σ i (tgt\~env) d di df b         Just e ->             case IM.lookup key d of-                Nothing -> Σ i (IM.insert tgt (Just$!e) env) (IM.insert key (S.singleton e') d) di df b-                Just ds -> (if e' `S.member` ds then Σ i (IM.insert tgt Nothing env) d else Σ i (IM.insert tgt (Just$!e) env) (IM.alter go key d)) di df b+                Nothing -> Σ i (env&tgt~!e) (IM.insert key (S.singleton e') d) di df b+                Just ds -> (if e' `S.member` ds then Σ i (tgt\~env) d else Σ i (env&tgt~!e) (key!:e'$d)) di df b               where-                go Nothing  = Just$!S.singleton e'-                go (Just s) = Just$!S.insert e' s-                 e'=asS e wD TyI key src tgt (Σ i env d di df b) =-    let x=env!src-    in case x of-        Nothing -> Σ i (IM.insert tgt Nothing env) d di df b+    case env!src of+        Nothing -> Σ i (tgt\~env) d di df b         Just e ->             case IM.lookup key di of-                Nothing -> Σ i (IM.insert tgt (Just$!e) env) d (IM.insert key (IS.singleton e') di) df b-                Just ds -> (if e' `IS.member` ds then Σ i (IM.insert tgt Nothing env) d di else Σ i (IM.insert tgt (Just$!e) env) d (IM.alter go key di)) df b+                Nothing -> Σ i (env&tgt~!e) d (IM.insert key (IS.singleton e') di) df b+                Just ds -> (if e' `IS.member` ds then Σ i (tgt\~env) d di else Σ i (env&tgt~!e) d (IM.alter go key di)) df b               where                 e'=fromIntegral$asI e                  go Nothing  = Just$!IS.singleton e'                 go (Just s) = Just$!IS.insert e' s wD TyFloat key src tgt (Σ i env d di df b) =-    let x=env!src-    in case x of-        Nothing -> Σ i (IM.insert tgt Nothing env) d di df b+    case env!src of+        Nothing -> Σ i (tgt\~env) d di df b         Just e ->             case IM.lookup key df of-                Nothing -> Σ i (IM.insert tgt (Just$!e) env) d di (IM.insert key (S.singleton e') df) b-                Just ds -> (if e' `S.member` ds then Σ i (IM.insert tgt Nothing env) d di df else Σ i (IM.insert tgt (Just$!e) env) d di (IM.alter go key df)) b+                Nothing -> Σ i (env&tgt~!e) d di (IM.insert key (S.singleton e') df) b+                Just ds -> (if e' `S.member` ds then Σ i (tgt\~env) d di df else Σ i (env&tgt~!e) d di (key!:e'$df)) b               where                 e'=asF e -                go Nothing  = Just$!S.singleton e'-                go (Just s) = Just$!S.insert e' s - wP :: E T -> Tmp -> Tmp -> Σ -> Σ wP (Lam _ n e) src tgt (Σ j env d di df b) =-    let xϵ=env!src-    in case xϵ of+    case env!src of         Just x ->             let be=ms n x; (p,k)=e@!(j,be)             in Σ k (IM.insert tgt (if asB p then Just$!x else Nothing) env) d di df b-        Nothing -> Σ j (IM.insert tgt Nothing env) d di df b+        Nothing -> Σ j (tgt\~env) d di df b wP e _ _ _ = throw $ InternalArityOrEta 1 e  wΠ :: E T -> Tmp -> Tmp -> Tmp -> Σ -> Σ wΠ (Lam _ nn (Lam _ nprev e)) pt src tgt (Σ j env d di df b) =-    let prevϵ=env!pt; xϵ=env!src-    in (case (prevϵ, xϵ) of+    (case (env!pt, env!src) of         (Just prev, Just x) ->             let be=me [(nprev, prev), (nn, x)]                 (res,u)=e@!(j,be)             in Σ u (IM.insert pt (Just$!x) (IM.insert tgt (Just$!res) env))-        (Nothing, Nothing) -> Σ j (IM.insert tgt Nothing env)-        (Nothing, Just x) -> Σ j (IM.insert pt (Just$!x) (IM.insert tgt Nothing env))-        (Just{}, Nothing) -> Σ j (IM.insert tgt Nothing env)) d di df b+        (Nothing, Nothing) -> Σ j (tgt\~env)+        (Nothing, Just x) -> Σ j (pt~!x$tgt\~env)+        (Just{}, Nothing) -> Σ j (tgt\~env)) d di df b wΠ e _ _ _ _ = throw $ InternalArityOrEta 2 e  {-# SCC wF #-} wF :: E T -> Tmp -> Tmp -> Σ -> Σ wF (Lam _ nacc (Lam _ nn e)) src tgt (Σ j env d di df b) =-    let accϵ = env!tgt; xϵ = env!src-    in (case (accϵ, xϵ) of+    (case (env!tgt, env!src) of         (Just acc, Just x) ->             let be=me [(nacc, acc), (nn, x)]                 (res, u)=e@!(j, be)-            in Σ u (IM.insert tgt (Just$!res) env)-        (Just acc, Nothing) -> Σ j (IM.insert tgt (Just$!acc) env)-        (Nothing, Nothing) -> Σ j (IM.insert tgt Nothing env)-        (Nothing, Just x) -> Σ j (IM.insert tgt (Just$!x) env)) d di df b+            in Σ u (env&tgt~!res)+        (Just acc, Nothing) -> Σ j (env&tgt~!acc)+        (Nothing, Nothing) -> Σ j (tgt\~env)+        (Nothing, Just x) -> Σ j (env&tgt~!x)) d di df b wF e _ _ _ = throw $ InternalArityOrEta 2 e  badctx e = error ("Internal error: κ called on" ++ show e)
src/Jacinda/Check/Field.hs view
@@ -1,5 +1,3 @@-{-# LANGUAGE OverloadedStrings #-}- module Jacinda.Check.Field ( cF, LErr (..) ) where  import           A
src/Jacinda/Regex.hs view
@@ -1,8 +1,9 @@-{-# LANGUAGE OverloadedLists   #-}-{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE OverloadedLists #-}  module Jacinda.Regex ( lazySplit+                     , lazySplitH                      , splitBy+                     , splitH                      , defaultRurePtr                      , isMatch'                      , find'@@ -76,18 +77,31 @@ find' :: RurePtr -> BS.ByteString -> Maybe RureMatch find' re str = unsafeDupablePerformIO $ find re str 0 +lazySplitH :: RurePtr -> BSL.ByteString -> [BS.ByteString]+lazySplitH rp = go Nothing . BSL.toChunks where+    go Nothing [] = []+    go Nothing (c:cs) =+        case unsnoc (splitH rp c) of+            Just (iss,lss) -> iss++go (Just lss) cs+            Nothing        -> go Nothing cs+    go (Just c) [] = splitByA rp c+    go (Just e) (c:cs) =+        case unsnoc (splitByA rp (e<>c)) of+            Just (iss,lss) -> iss++go (Just lss) cs+            Nothing        -> go Nothing cs+ lazySplit :: RurePtr -> BSL.ByteString -> [BS.ByteString]-lazySplit rp bs = let c=BSL.toChunks bs in go Nothing c-        where go Nothing []      = []-              go Nothing (c:cs)  = let ss=splitByA rp c-                    in case unsnoc ss of-                        Just (iss,lss) -> iss++go (Just lss) cs-                        Nothing        -> go Nothing cs-              go (Just c) []     = let ss=splitByA rp c in ss-              go (Just e) (c:cs) = let ss=splitByA rp (e<>c)-                    in case unsnoc ss of-                        Just (iss,lss) -> iss++go (Just lss) cs-                        Nothing        -> go Nothing cs+lazySplit rp = go Nothing . BSL.toChunks where+    go Nothing []      = []+    go Nothing (c:cs)  =+        case unsnoc (splitByA rp c) of+            Just (iss,lss) -> iss++go (Just lss) cs+            Nothing        -> go Nothing cs+    go (Just c) []     = splitByA rp c+    go (Just e) (c:cs) =+        case unsnoc (splitByA rp (e<>c)) of+            Just (iss,lss) -> iss++go (Just lss) cs+            Nothing        -> go Nothing cs  unsnoc :: [a] -> Maybe ([a], a) unsnoc = foldr (\x acc -> Just $ case acc of {Nothing -> ([], x); Just ~(a, b) -> (x:a, b)}) Nothing@@ -95,19 +109,28 @@ splitBy :: RurePtr -> BS.ByteString -> V.Vector BS.ByteString splitBy = (V.fromList .) . splitByA -{-# NOINLINE splitBy #-}+{-# NOINLINE splitByA #-} splitByA :: RurePtr          -> BS.ByteString          -> [BS.ByteString]-splitByA _ "" = mempty+splitByA _ "" = [] splitByA re haystack@(BS.BS fp l) =-    [BS.BS (fp `plusForeignPtr` s) (e-s) | (s, e) <- slicePairs]+    [BS.BS (fp `plusForeignPtr` s) (e-s) | (s,e) <- slicePairs]     where ixes = unsafeDupablePerformIO $ matches' re haystack           slicePairs = case ixes of                 (RureMatch 0 i:rms) -> mkMiddle (fromIntegral i) rms                 rms                 -> mkMiddle 0 rms           mkMiddle begin' []        = [(begin', l)]           mkMiddle begin' (rm0:rms) = (begin', fromIntegral (start rm0)) : mkMiddle (fromIntegral $ end rm0) rms++{-# NOINLINE splitH #-}+splitH :: RurePtr -> BS.ByteString -> [BS.ByteString]+splitH _ "" = []+splitH re haystack@(BS.BS fp l) =+    [BS.BS (fp `plusForeignPtr` s) (e-s) | (s,e) <- chopAt 0 ixes]+    where ixes = unsafeDupablePerformIO $ matches' re haystack+          chopAt begin []                  = [(begin, l)]+          chopAt begin (RureMatch b _:rms) = (begin, fromIntegral b) : chopAt (fromIntegral b) rms  isMatch' :: RurePtr          -> BS.ByteString
src/L.x view
@@ -1,6 +1,4 @@ {-    {-# LANGUAGE DeriveFunctor     #-}-    {-# LANGUAGE OverloadedStrings #-}     module L ( alexMonadScan              , alexInitUserState              , runAlexSt@@ -153,6 +151,7 @@         asv                      { mkKw KwAsv }         usv                      { mkKw KwUsv }         csv                      { mkKw KwCsv }+        header                   { mkKw KwHeader }          fs                       { res VarFs }         rs                       { res VarRs }@@ -377,7 +376,7 @@              | KwVal              | KwEnd              | KwSet-             | KwFlush+             | KwFlush | KwHeader              | KwFn              | KwInclude              | KwIf | KwThen | KwElse@@ -412,6 +411,7 @@     pretty KwUsv     = "usv"     pretty KwAsv     = "asv"     pretty KwCsv     = "csv"+    pretty KwHeader = "header"  data Builtin = BIParse | BFParse              | BSubstr
src/Nm.hs view
@@ -1,5 +1,3 @@-{-# LANGUAGE DeriveFunctor #-}- module Nm ( Nm (..), TyName           , eqName           ) where
src/Nm/Map.hs view
@@ -1,5 +1,4 @@ {-# LANGUAGE DeriveFoldable    #-}-{-# LANGUAGE DeriveFunctor     #-} {-# LANGUAGE DeriveTraversable #-}  module Nm.Map ( NmMap (..)
src/Parser.y view
@@ -1,8 +1,5 @@ {-    {-# LANGUAGE DeriveFunctor     #-}-    {-# LANGUAGE OverloadedStrings #-}-    module Parser ( parse-                  , parseWithMax+    module Parser ( parseWithMax                   , parseWithCtx                   , parseLibWithCtx                   , ParseError (..)@@ -129,6 +126,7 @@     if { TokKeyword $$ KwIf }     then { TokKeyword $$ KwThen }     else { TokKeyword $$ KwElse }+    header { TokKeyword $$ KwHeader }     usv { TokKeyword $$ KwUsv }     asv { TokKeyword $$ KwAsv }     csv { TokKeyword $$ KwCsv }@@ -252,6 +250,7 @@   | set usv semicolon { SetUsv }   | set csv semicolon { SetCsv }   | flush semicolon { FlushDecl }+  | set header semicolon { SetH }   | fn name Args defEq E semicolon { FunDecl $2 $3 $5 }   | fn name defEq E semicolon { FunDecl $2 [] $4 } @@ -415,9 +414,6 @@  df :: T.Text -> Value -> Alex (E AlexPosn -> E AlexPosn) df t x = do {nm <- newVarAlex t; let l=Nm.loc nm in pure (Let l (nm, guess l x))}--parse :: T.Text -> Either (ParseError AlexPosn) File-parse = fmap snd . runParse parseF  parseWithMax :: T.Text -> Either (ParseError AlexPosn) (Int, File) parseWithMax = fmap (first fst3) . runParse parseF
src/R.hs view
@@ -1,5 +1,3 @@-{-# LANGUAGE OverloadedStrings #-}- module R ( rE, rP          , Renames (..)          , HasRenames (..)
src/Ty.hs view
@@ -1,10 +1,6 @@-{-# LANGUAGE DeriveFunctor     #-}-{-# LANGUAGE OverloadedStrings #-}- module Ty ( Subst           , runTyM, tyP           , match, aT-          , tyOf           ) where  import           A@@ -281,9 +277,6 @@         Just ty -> pure ty -- liftCloneTy ty         Nothing -> throwError $ IllScoped l n -tyOf :: Ord a => E a -> TyM a T-tyOf = fmap eLoc.tyE- tyDS :: Ord a => Subst -> D a -> TyM a (D T, Subst) tyDS s (SetFS bs)  = pure (SetFS bs, s) tyDS s (SetRS bs)  = pure (SetRS bs, s)@@ -292,6 +285,7 @@ tyDS s SetCsv      = pure (SetCsv, s) tyDS s SetAsv      = pure (SetAsv, s) tyDS s SetUsv      = pure (SetUsv, s)+tyDS s SetH        = pure (SetH, s) tyDS s FlushDecl   = pure (FlushDecl, s) tyDS s (FunDecl n@(Nm _ (U i) _) [] e) = do     (e', s') <- tyES s e@@ -376,13 +370,6 @@  desugar :: a desugar = error "Internal error: should have been de-sugared in an earlier stage!"--tyE :: Ord a => E a -> TyM a (E T)-tyE e = do-    (e', s) <- tyES mempty e-    cvs <- gets (IM.toList . classVars)-    traverse_ (uncurry (checkClass s)) cvs-    pure (fmap (aT s) e')  tyES :: Ord a => Subst -> E a -> TyM a (E T, Subst) tyES _ F{}                = error "impossible."
test/Spec.hs view
@@ -3,124 +3,103 @@ module Main (main) where  import           A-import qualified Data.ByteString  as BS-import           Data.Foldable    (toList)-import           Data.Functor     (void)-import qualified Data.Text        as T-import qualified Data.Text.IO     as TIO+import qualified Data.ByteString      as BS+import qualified Data.ByteString.Lazy as BSL+import           Data.Foldable        (toList)+import qualified Data.Text            as T+import qualified Data.Text.IO         as TIO import           File import           Jacinda.Regex-import           Parser-import           Parser.Rw+import           System.IO            (hClose)+import           System.IO.Temp       (withSystemTempFile) import           Test.Tasty+import           Test.Tasty.Golden    (goldenVsString) import           Test.Tasty.HUnit-import           Ty.Const +eio :: FilePath -- ^ Source filename+    -> T.Text+    -> Mode+    -> FilePath -- ^ Input+    -> IO BSL.ByteString+eio src e m fp =+    withSystemTempFile "JAC_TEST" $ \oϵ h -> do+        runOnFile [] src e [] m fp h *> hClose h+        BSL.readFile oϵ++ep :: T.Text+   -> Mode+   -> FilePath -- ^ Input+   -> BSL.ByteString -- ^ Expected output+   -> TestTree+ep e m fp expected = testCase (T.unpack e) $ do+    actual <- eio undefined e m fp+    actual @?= expected <> "\n"++harnessF e m fp o = goldenVsString (T.unpack e) o $ eio undefined e m fp++harness :: FilePath -- ^ Source file+        -> Mode+        -> FilePath -- ^ Input file+        -> FilePath -- ^ Expected output+        -> TestTree+harness src m fp o =+    goldenVsString src o $ do {t <- TIO.readFile src; eio src t m fp}+ main :: IO () main = defaultMain $-    testGroup "Jacinda interpreter"-        [ testCase "parse as" (parseTo sumBytes sumBytesAST)-        , testCase "parse as" (parseTo "#`0>72" pAst)-        , parseFile "test/examples/ab.jac"-        , splitWhitespaceT "1 1.3\tj" ["1", "1.3", "j"]-        , splitWhitespaceT-            "drwxr-xr-x  12 vanessa  staff   384 Dec 26 19:43 _darcs"-            ["drwxr-xr-x","12","vanessa","staff","384","Dec","26","19:43","_darcs"]-        , splitWhitespaceT "      55 ./src/Jacinda/File.hs" ["55", "./src/Jacinda/File.hs"]-        , testCase "subs" $-            let actual = subs (compileDefault "zi") "vectorzm0zi13zi1zi0zmc80ea02f780be2984f831df2de071f6e6040c0f670b3dd2428e80f5d111d7f72_DataziVectorziGeneric_partition_closure" "."-            in actual @?= "vectorzm0.13.1.0zmc80ea02f780be2984f831df2de071f6e6040c0f670b3dd2428e80f5d111d7f72_Data.Vector.Generic_partition_closure"-        , splitWhitespaceT "" []-        , splitWhitespaceT "5" ["5"]-        , testCase "type of" (tyOfT sumBytes (TyB TyI))-        , testCase "type of" (tyOfT krakRegex (TyB TyStream :$ TyB TyStr)) -- stream of str-        , testCase "type of" (tyOfT krakCol (TyB TyStream :$ TyB TyStr)) -- stream of str-        , testCase "type of (zip)" (tyOfT ",(-) $3:i $6:i" (tyStream tyI))-        , testCase "type of (filter)" (tyOfT "(>110) #. #\"$0" (tyStream tyI))-        , testCase "typechecks dfn" (tyOfT "[(+)|0 x] $1:i" tyI)-        , testCase "count bytes" (tyOfT "(+)|0 #¨$0" tyI)-        , testCase "running count (lines)" (tyOfT "(+)^0 [:1¨$0" (tyStream tyI))-        , testCase "type of (tally)" (tyOfT "#'hello world'" tyI)-        , testCase "typechecks dfn" (tyFile "test/examples/ab.jac")-        , testCase "parses parens" (tyFile "examples/lib.jac")-        , testCase "typechecks/parses correctly" (tyFile "test/examples/line.jac")-        , testCase "split eval" (evalTo "[x+' '+y]|> split '01-23-1987' /-/" "01 23 1987")-        , testCase "length eval" (evalTo "#*split '01-23-1987' /-/" "3")-        , testCase "captureE" (evalTo "'01-23-1987' ~* 3 /(\\d{2})-(\\d{2})-(\\d{4})/" "Some 1987")-        , testCase "if...then...else" (evalTo "if #t then 0 else 1" "0")-        , testGroup "Examples should be well-typed"-            [ testCase (T.unpack s) (tyRight s) |-                s <- [ "(||)|#f {#`0>110}{#t}"-                     , "(&)|#t (>)\\. {|`1:f}"-                     , "[y]|> {|`0~/^$/}"-                     , "(max|_1 #¨$0) > 110"-                     , "(||)|#f {#`0>110}{#t}"-                     , "(+)|0 {`5 ~ /^\\d+$/}{`5:}"-                     ]-            ]-        ]+    testGroup "ja" [+        testGroup "stream"+          [ harness "examples/otool/rpath.jac" awk "test/data/otool" "test/golden/rpath.out"+          , harness "examples/otool/dllibs.jac" awk "test/data/otool" "test/golden/ldlib.out"+          , harness "test/examples/ghc-filt.jac" awk "test/data/ghc" "test/golden/ghc.out"+          , ep "[x ~* 1 /(\\d+(\\.\\d+)*)/]:?{%/Versions available:/}{[y]|>`$}"+                (AWK (Just "\\s*,\\s*") (Just "\\n[^:\\n]*:") True)+                "test/data/cabal-info"+                "0.1.0.5"+          , ep ".?{|`1 ~* 1 /([^\\?]*)/}" awk "test/data/url" "https://soundcloud.com/shitzulover07/ayesha-erotica-vacation-bible-school"+          , ep "[x+' '+y]|>(sprintf'-L%s')¨.?{|`1 ~* 1 /([^']*site-packages)/}"+                awk+                "test/data/python-site"+                "-L/Users/vanessa/Library/Python/3.13/lib/python/site-packages -L/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages"+          , harnessF "{%/hs-source-dirs/}{`2}" (AWK (Just "\\s*:\\s*") Nothing False) "jacinda.cabal" "test/golden/src-dirs.out"+          , harnessF ".?{|`0 ~* 1 /^\\s*hs-source-dirs:\\s*(.*)/}" awk "jacinda.cabal" "test/golden/src-dirs.out"+          -- , harnessF "[x+' '+y]|>$0" (AWK Nothing (Just "\\n\\s*") False) "vscode/syntaxes/jacinda.tmLanguage.json" "test/golden/minify.out"+          , ep "@include'lib/prefixSizes.jac' prettyMem((+)|0.0 {ix>1}{`5:})" awk "test/data/ls" "73.82 kB"+          , ep "[y]|>{%/tags/}{`*}" (AWK (Just "/") Nothing False) "test/data/git-tags" "v1.7.4"+          , harnessF ".?{%/clang|mold|gold|GCC|GHC|rustc/}{`0 ~* 1 /^\\s*\\[[\\sa-f0-9]*\\]\\s*(.*$)/}" awk "test/data/readelf" "test/golden/compiler-version.out"+          , ep "~.{%/LANGUAGE\\s*.*\\s*#-/}{`3}" awk "src/Jacinda/Regex.hs" "OverloadedLists"+          , ep ".?{|`2 ~* 1 /(\\d+\\.\\d+)\\.\\d+/}" awk "test/data/py-ver" "3.13"+          , ep "{ix=1}{`2}" awk "test/data/ghc-pkg" "/Users/vanessa/.ghcup/ghc/9.10.1/lib/ghc-9.10.1/lib/../lib/aarch64-osx-ghc-9.10.1"+          , ep ".?{ix=1}{`0 ~* 1 /(\\d+\\.\\d+)/}" awk "test/data/r-version" "4.4"+          , harnessF "{ix=1}{[x+'\\n'+y]|>`$}" CSV "test/data/a.csv" "test/golden/csv-col.out"+          , harnessF "[x+' '+y]|> ~.{|subs /[^\\/]+\\/\\.\\.\\// '' `0}" awk "test/data/cdeps" "test/golden/mk-depends.out"+          , harnessF "(sub1 /\\s+$/ ⍬)¨$0" awk "test/data/trailingWhitespace" "test/golden/trailing-whitespace.out"+          , harnessF "{|option ⍬ [x] (`0 ~* 1 /^((\\s+\\S|\\S)*)\\s*$/)}" awk "test/data/trailingWhitespace" "test/golden/trailing-whitespace.out"+          , ep "[:|>.?{|`0 ~* 1 /less-(\\d+)\\.tar\\.gz/}" awk "test/data/download.html" "668"+          , ep "[:|>[x ~* 1 /less-(\\d+)\\.tar\\.gz/]:?$0" awk "test/data/download.html" "668"+          , ep "{%/libapple.dylib/}{`2}" awk "test/data/cabal-plan" "/Users/vanessa/dev/haskell/apple/dist-newstyle/build/aarch64-osx/ghc-9.10.1/apple-0.3.0.0/f/apple/build/apple/libapple.dylib"+          , harnessF "{|sprintf '%s\\t%s\\tcall cursor(%s,%s)' (`2.`3.`4.(splitc `5 '-').1)}" (AWK (Just "[\\s+:]") Nothing False) "test/data/fut-ctags" "test/golden/ctags.out"+          , harnessF "{ix=1}{sprintf'CREATE TABLE c (%s);'([x+', '+y]|>[sprintf '%s TEXT' x]¨`$)}" CSV "test/data/food-prices.csv" "test/golden/sql.out"+          , harnessF "{%/infix(r|l)? \\d+/}{sprintf '- fixity: %s' `0}" awk "src/A.hs" "test/golden/hlint-fix.out"+          , harnessF "{%/^PATH/}{`2}" (AWK (Just "=") Nothing False) "test/data/env" "test/golden/env.out"+          ]+      , testGroup "eval"+          [ splitWhitespaceT "" []+          , splitWhitespaceT "5" ["5"]+          , testCase "split eval" (evalTo "[x+' '+y]|> split '01-23-1987' /-/" "01 23 1987")+          , testCase "length eval" (evalTo "#*split '01-23-1987' /-/" "3")+          , testCase "captureE" (evalTo "'01-23-1987' ~* 3 /(\\d{2})-(\\d{2})-(\\d{4})/" "Some 1987")+          , testCase "subs" (evalTo "subs /zi/ '.' 'vectorzm0zi13zi1zi0zmc80ea02f780be2984f831df2de071f6e6040c0f670b3dd2428e80f5d111d7f72_DataziVectorziGeneric_partition_closure'" "vectorzm0.13.1.0zmc80ea02f780be2984f831df2de071f6e6040c0f670b3dd2428e80f5d111d7f72_Data.Vector.Generic_partition_closure")+          , testCase "basename" (evalTo "'test/data/py.py' ~* 2 /([^\\/]*\\/)*(.*)/" "Some py.py")+          ]+    ]  evalTo :: T.Text -> String -> Assertion evalTo bsl expected =     let actual = show (exprEval bsl)         in actual @?= expected -pAst :: E ()-pAst =-    EApp ()-        (EApp ()-            (BB () Gt)-            (EApp ()-                (UB () Tally)-                (AllField ())))-        (Lit () (ILit 72))- splitWhitespaceT :: BS.ByteString -> [BS.ByteString] -> TestTree splitWhitespaceT haystack expected =     testCase "split col" $         toList (splitBy defaultRurePtr haystack) @?= expected---- example: ls -l | ja '(+)|0 $5:i'-sumBytes :: T.Text-sumBytes = "(+)|0 $5:i"--krakRegex :: T.Text-krakRegex = "{% /Krakatoa/}{`0}"--krakCol :: T.Text-krakCol = "{`3:i > 4}{`0}"--sumBytesAST :: E ()-sumBytesAST =-    EApp ()-        (EApp ()-            (EApp ()-                (TB () Fold)-                (BB () Plus))-            (Lit () (ILit 0)))-            (IParseCol () 5)--tyFile :: FilePath -> Assertion-tyFile fp = tcIO [] fp =<< TIO.readFile fp--tyRight :: T.Text -> Assertion-tyRight src = assertBool (T.unpack src) (tySrc src `seq` True)--tyOfT :: T.Text -> T -> Assertion-tyOfT src expected =-    tySrc src @?= expected--parseTo :: T.Text -> E () -> Assertion-parseTo src e =-    case rwP . snd <$> parse src of-        Left err     -> assertFailure (show err)-        Right actual -> void (expr actual) @?= e--parseFile :: FilePath -> TestTree-parseFile fp = testCase ("Parses " ++ fp) $ parseNoErr =<< TIO.readFile fp--parseNoErr :: T.Text -> Assertion-parseNoErr src =-    case parse src of-        Left err -> assertFailure (show err)-        Right{}  -> assertBool "success" True
+ test/data/a.csv view
@@ -0,0 +1,3 @@+5.0,"Escaped?","Contains double char ""","newline lol+","another"+5.0,"a","a","b","b"
+ test/data/cabal-info view
@@ -0,0 +1,61 @@+* splitmix         (library)+    Synopsis:      Fast Splittable PRNG+    Versions available: 0, 0.0.3, 0.0.4, 0.0.5, 0.1, 0.1.0.2, 0.1.0.3, 0.1.0.4,+                        0.1.0.5 (and 3 others)+    Versions installed: [ Not installed ]+    Homepage:      [ Not specified ]+    Bug reports:   https://github.com/haskellari/splitmix/issues+    Description:   Pure Haskell implementation of SplitMix described in+                   +                   Guy L. Steele, Jr., Doug Lea, and Christine H. Flood. 2014.+                   Fast splittable pseudorandom number generators. In+                   Proceedings of the 2014 ACM International Conference on+                   Object Oriented Programming Systems Languages & Applications+                   (OOPSLA '14). ACM, New York, NY, USA, 453-472. DOI:+                   <https://doi.org/10.1145/2660193.2660195>+                   +                   The paper describes a new algorithm /SplitMix/ for+                   /splittable/ pseudorandom number generator that is quite+                   fast: 9 64 bit arithmetic/logical operations per 64 bits+                   generated.+                   +                   /SplitMix/ is tested with two standard statistical test+                   suites (DieHarder and TestU01, this implementation only using+                   the former) and it appears to be adequate for "everyday" use,+                   such as Monte Carlo algorithms and randomized data structures+                   where speed is important.+                   +                   In particular, it __should not be used for cryptographic or+                   security applications__, because generated sequences of+                   pseudorandom values are too predictable (the mixing functions+                   are easily inverted, and two successive outputs suffice to+                   reconstruct the internal state).+    Category:      System, Random+    License:       BSD3+    Maintainer:    Oleg Grenrus <oleg.grenrus@iki.fi>+    Source repo:   https://github.com/haskellari/splitmix.git+    Flags:         optimised-mixer+    Dependencies:  base >=4.3 && <4.21, deepseq >=1.3.0.0 && <1.6,+                   time >=1.2.0.3 && <1.13, base,+                   HUnit ==1.3.1.2 || >=1.6.0.0 && <1.7, splitmix, base,+                   base-compat-batteries >=0.10.5 && <0.14, splitmix,+                   async >=2.2.1 && <2.3, base,+                   base-compat-batteries >=0.10.5 && <0.14,+                   bytestring >=0.9.1.8 && <0.13, deepseq,+                   process >=1.0.1.5 && <1.7, random, splitmix,+                   tf-random >=0.5 && <0.6, vector >=0.11.0.0 && <0.14, base,+                   splitmix, base, splitmix, base,+                   base-compat >=0.11.1 && <0.14, containers >=0.4.0.0 && <0.8,+                   HUnit ==1.3.1.2 || >=1.6.0.0 && <1.7,+                   math-functions ==0.1.7.0 || >=0.3.3.0 && <0.4, splitmix,+                   test-framework >=0.8.2.0 && <0.9,+                   test-framework-hunit >=0.3.0.2 && <0.4, base,+                   HUnit ==1.3.1.2 || >=1.6.0.0 && <1.7, splitmix, base, random,+                   splitmix, clock >=0.8 && <0.9, base, random, splitmix, base,+                   containers >=0.4.2.1 && <0.8, criterion >=1.1.0.0 && <1.7,+                   random, splitmix, tf-random >=0.5 && <0.6+    Cached:        Yes+    Modules:+        System.Random.SplitMix+        System.Random.SplitMix32+
+ test/data/cabal-plan view
@@ -0,0 +1,12 @@+apple:flib:apple  /Users/vanessa/dev/haskell/apple/dist-newstyle/build/aarch64-osx/ghc-9.10.1/apple-0.3.0.0/f/apple/build/apple/libapple.dylib+apple:bench:apple-bench  /Users/vanessa/dev/haskell/apple/dist-newstyle/build/aarch64-osx/ghc-9.10.1/apple-0.3.0.0/b/apple-bench/build/apple-bench/apple-bench+apple:test:apple-o  /Users/vanessa/dev/haskell/apple/dist-newstyle/build/aarch64-osx/ghc-9.10.1/apple-0.3.0.0/t/apple-o/build/apple-o/apple-o+apple:test:apple-test  /Users/vanessa/dev/haskell/apple/dist-newstyle/build/aarch64-osx/ghc-9.10.1/apple-0.3.0.0/t/apple-test/build/apple-test/apple-test+apple:exe:arepl  /Users/vanessa/dev/haskell/apple/dist-newstyle/build/aarch64-osx/ghc-9.10.1/apple-0.3.0.0/x/arepl/build/arepl/arepl+apple:exe:atc  /Users/vanessa/dev/haskell/apple/dist-newstyle/build/aarch64-osx/ghc-9.10.1/apple-0.3.0.0/x/atc/build/atc/atc+apple:exe:writeo  /Users/vanessa/dev/haskell/apple/dist-newstyle/build/aarch64-osx/ghc-9.10.1/apple-0.3.0.0/x/writeo/build/writeo/writeo+c2hs:exe:c2hs  /Users/vanessa/.local/state/cabal/store/ghc-9.10.1-64dd/c2hs-0.28.8-3e2168d2/bin/c2hs+criterion:exe:criterion-report  /Users/vanessa/.local/state/cabal/store/ghc-9.10.1-64dd/crtrn-1.6.4.0-d85ffb3c/bin/criterion-report+happy:exe:happy  /Users/vanessa/.local/state/cabal/store/ghc-9.10.1-64dd/hppy-2.1.3-52f20e2f/bin/happy+hsc2hs:exe:hsc2hs  /Users/vanessa/.local/state/cabal/store/ghc-9.10.1-64dd/hsc2hs-0.68.10-86ce5d7f/bin/hsc2hs+alex:exe:alex  /Users/vanessa/.local/state/cabal/store/ghc-9.10.1-64dd/lx-3.5.1.0-20231e5c/bin/alex
+ test/data/cdeps view
@@ -0,0 +1,5 @@+pyc/../c/../include/apple.h+pyc/../c/../include/m.h+pyc/../c/ffi.c+pyc/../include/apple_abi.h+pyc/../include/m.h
+ test/data/download.html view
@@ -0,0 +1,217 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<title> Downloading less </title>
+<link rel="stylesheet" type="text/css" href="style.css">
+</head>
+
+<body>
+
+<table cellpadding=6 cellspacing=4 align="center">
+<tr>
+<h1><center> Downloading less </center></h1> 
+</tr>
+<tr>
+<td> <a href="index.html"> Home </a> </td>
+<td> <a href="faq.html"> FAQ </a> </td>
+<td> <a href="download.html"> Download </a> </td>
+<td> <a href="https://github.com/gwsw/less/issues"> Bugs and Enhancement Requests </a> </td>
+<td> <a href="less-announce.html"> Mailing List </a> </td>
+</tr>
+</table>
+
+<hr>
+
+
+<P>
+You can download a copy of less here.
+First you must choose whether you want 
+<a href=#source><strong>source</strong></a> or <a href=#binaries><strong>binaries</strong></a>.
+It is simpler to get binaries, but binaries are available for
+only a few systems (see below).
+If you download source, you must then <STRONG>build</STRONG> the binaries.
+To do this, you must have a C compiler.
+</P>
+<P>
+You must also choose which version of less you want.
+Generally, you should choose the version marked as <strong>RECOMMENDED</strong>.
+</P>
+
+<HR>
+<a name="source"></a>
+<H2>Source</H2>
+<P>
+If you have a Unix, Linux or another Unix-like system, you should download
+the source and build it on your system.
+Less uses autoconf to make the build process relatively painless.
+Building less will work on most Linux and Unix-like systems.
+Less will also build from source on many non-Unix systems, including
+most versions of Windows, MS-DOS, OS/2, OS-9 and z/OS.
+</P>
+
+Each source release is packaged in both a gzip'd tar archive and in a zip archive.
+You may download either type of archive, whichever is more convenient for you.
+<UL>
+
+<LI>Download <strong>RECOMMENDED</strong> version 668 (source)
+<UL>
+<LI><A HREF="less-668.tar.gz">Gzip'd tar archive</A>.
+<FONT size="-1"><A HREF="less-668.sig">(Package signature)</A></FONT>
+<LI><A HREF="less-668.zip">Zip archive</A>.
+</UL>
+
+<LI>Download version 661 (source)
+<UL>
+<LI><A HREF="less-661.tar.gz">Gzip'd tar archive</A>.
+<FONT size="-1"><A HREF="less-661.sig">(Package signature)</A></FONT>
+<LI><A HREF="less-661.zip">Zip archive</A>.
+</UL>
+
+<LI>Download version 643 (source)
+<UL>
+<LI><A HREF="less-643.tar.gz">Gzip'd tar archive</A>.
+<FONT size="-1"><A HREF="less-643.sig">(Package signature)</A></FONT>
+<LI><A HREF="less-643.zip">Zip archive</A>.
+</UL>
+
+<LI>Download version 633 (source)
+<UL>
+<LI><A HREF="less-633.tar.gz">Gzip'd tar archive</A>.
+<FONT size="-1"><A HREF="less-633.sig">(Package signature)</A></FONT>
+<LI><A HREF="less-633.zip">Zip archive</A>.
+</UL>
+
+<LI>Download version 608 (source)
+<UL>
+<LI><A HREF="less-608.tar.gz">Gzip'd tar archive</A>.
+<FONT size="-1"><A HREF="less-608.sig">(Package signature)</A></FONT>
+<LI><A HREF="less-608.zip">Zip archive</A>.
+</UL>
+
+<LI>Download version 590 (source)
+<UL>
+<LI><A HREF="less-590.tar.gz">Gzip'd tar archive</A>.
+<FONT size="-1"><A HREF="less-590.sig">(Package signature)</A></FONT>
+<LI><A HREF="less-590.zip">Zip archive</A>.
+</UL>
+
+<LI>Download version 581.2 (source)
+<UL>
+<LI><A HREF="less-581.2.tar.gz">Gzip'd tar archive</A>.
+<FONT size="-1"><A HREF="less-581.2.sig">(Package signature)</A></FONT>
+<LI><A HREF="less-581.2.zip">Zip archive</A>.
+</UL>
+
+<LI>Download version 563 (source)
+<UL>
+<LI><A HREF="less-563.tar.gz">Gzip'd tar archive</A>.
+<FONT size="-1"><A HREF="less-563.sig">(Package signature)</A></FONT>
+<LI><A HREF="less-563.zip">Zip archive</A>.
+</UL>
+
+<LI>Download version 551 (source)
+<UL>
+<LI><A HREF="less-551.tar.gz">Gzip'd tar archive</A>.
+<FONT size="-1"><A HREF="less-551.sig">(Package signature)</A></FONT>
+<LI><A HREF="less-551.zip">Zip archive</A>.
+</UL>
+
+<LI>Download version 530 (source)
+<UL>
+<LI><A HREF="less-530.tar.gz">Gzip'd tar archive</A>.
+<FONT size="-1"><A HREF="less-530.sig">(Package signature)</A></FONT>
+<LI><A HREF="less-530.zip">Zip archive</A>.
+</UL>
+
+<LI>Download version 487 (source)
+<UL>
+<LI><A HREF="less-487.tar.gz">Gzip'd tar archive</A>.
+<FONT size="-1"><A HREF="less-487.sig">(Package signature)</A></FONT>
+<LI><A HREF="less-487.zip">Zip archive</A>.
+</UL>
+
+<LI>Download version 481 (source)
+<UL>
+<LI><A HREF="less-481.tar.gz">Gzip'd tar archive</A>.
+<FONT size="-1"><A HREF="less-481.sig">(Package signature)</A></FONT>
+<LI><A HREF="less-481.zip">Zip archive</A>.
+</UL>
+
+<LI>Download version 458 (source)
+<UL>
+<LI><A HREF="less-458.tar.gz">Gzip'd tar archive</A>.
+<FONT size="-1"><A HREF="less-458.sig">(Package signature)</A></FONT>
+<LI><A HREF="less-458.zip">Zip archive</A>.
+</UL>
+
+<LI>Download version 451 (source)
+<UL>
+<LI><A HREF="less-451.tar.gz">Gzip'd tar archive</A>.
+<FONT size="-1"><A HREF="less-451.sig">(Package signature)</A></FONT>
+<LI><A HREF="less-451.zip">Zip archive</A>.
+</UL>
+
+<LI>Download version 436 (source)
+<UL>
+<LI><A HREF="less-436.tar.gz">Gzip'd tar archive</A>.
+<FONT size="-1"><A HREF="less-436.sig">(Package signature)</A></FONT>
+<LI><A HREF="less-436.zip">Zip archive</A>.
+</UL>
+
+<LI>Download version 429 (source)
+<UL>
+<LI><A HREF="less-429.tar.gz">Gzip'd tar archive</A>.
+<FONT size="-1"><A HREF="less-429.sig">(Package signature)</A></FONT>
+<LI><A HREF="less-429.zip">Zip archive</A>.
+</UL>
+
+<LI>Download version 394 (source)
+<UL>
+<LI><A HREF="less-394.tar.gz">Gzip'd tar archive</A>.
+<LI><A HREF="less-394.zip">Zip archive</A>.
+</UL>
+
+<LI>Signature key
+<UL>
+<LI><A HREF="pubkey.asc">GPG public key for package signatures.</A>
+</UL>
+</UL>
+<HR>
+<a name="binaries"></a>
+<H2>Binaries</H2>
+<P>
+Less binaries are no longer distributed on this site, since I do not
+have the resources to generate and test binaries on a variety of systems.
+However binaries for certain systems are available from other sites below.
+</P>
+<P>
+I have not tested or verified the contents of these binary packages,
+so use them at your own risk.
+</P>
+
+<DL>
+
+<DT> <B>Windows</B>
+<DD> Windows binaries are available at:
+<UL>
+<LI> <A HREF="https://github.com/jftuga/less-Windows">https://github.com/jftuga/less-Windows</A>
+</UL>
+
+<DT> <B>Solaris</B>
+<DD> Solaris binaries are available at:
+<UL>
+<LI> <A HREF="http://unixpackages.com">http://unixpackages.com</A>.
+<LI> <A HREF="http://www.ibiblio.org/pub/packages/solaris/sparc">http://www.ibiblio.org/pub/packages/solaris/sparc</A>.
+<LI> <A HREF="http://www.opencsw.org/packages/less">http://www.opencsw.org/packages/less</A>.
+</UL>
+
+</DL>
+
+<FONT size="-1">
+If you maintain a site that hosts less binaries and wish your site to be listed here,
+send an email to <A HREF="mailto:markn@greenwoodsoftware.com">markn@greenwoodsoftware.com</A>.
+</FONT>
+<HR>
+
+</BODY>
+</HTML>
+ test/data/env view
@@ -0,0 +1,39 @@+TERM_SESSION_ID=w0t0p0:B2A638A3-C0C0-4FA1-BA7A-95DFF0A99BED+SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.rii0JhficH/Listeners+LC_TERMINAL_VERSION=3.5.9+COLORFGBG=11;15+ITERM_PROFILE=Default+SQLITE_EXEMPT_PATH_FROM_VNODE_GUARDS=/Users/vanessa/Library/WebKit/Databases+XPC_FLAGS=0x0+LANG=en_US.UTF-8+PWD=/Users/vanessa/dev/haskell/jacinda+SHELL=/bin/zsh+__CFBundleIdentifier=com.googlecode.iterm2+TERM_FEATURES=T3LrMSc7UUw9Ts3BFGsSyHNoSxF+TERM_PROGRAM_VERSION=3.5.9+TERM_PROGRAM=iTerm.app+PATH=/Users/vanessa/.opam/default/bin:/Users/vanessa/.cabal/bin:/Users/vanessa/.ghcup/bin:/Library/Frameworks/Python.framework/Versions/3.13/bin:/Library/Frameworks/Python.framework/Versions/3.12/bin:/Library/Frameworks/Python.framework/Versions/3.11/bin:/Library/Frameworks/Python.framework/Versions/3.10/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/opt/X11/bin:/Library/TeX/texbin:/usr/local/go/bin:/Users/vanessa/.cpm/bin:/Users/vanessa/pakcs/bin:/Users/vanessa/.local/bin:/Users/vanessa/.cargo/bin:/Applications/iTerm.app/Contents/Resources/utilities:/Users/vanessa/.fzf/bin+DISPLAY=/private/tmp/com.apple.launchd.YmA3AqJ9zk/org.xquartz:0+LC_TERMINAL=iTerm2+COLORTERM=truecolor+COMMAND_MODE=unix2003+TERM=xterm-256color+TERMINFO_DIRS=/Applications/iTerm.app/Contents/Resources/terminfo:/usr/share/terminfo+HOME=/Users/vanessa+TMPDIR=/var/folders/t5/6d5ws1yj0g78plhhzy_03ybm0000gn/T/+USER=vanessa+XPC_SERVICE_NAME=0+LOGNAME=vanessa+__CF_USER_TEXT_ENCODING=0x0:0:0+ITERM_SESSION_ID=w0t0p0:B2A638A3-C0C0-4FA1-BA7A-95DFF0A99BED+SHLVL=1+OLDPWD=/Users/vanessa/dev/haskell/apple+HISTSIZE=1000000000+HISTFILESIZE=1000000000+SAVEHIST=1000000000+OPAMNOENVNOTICE=true+OPAM_SWITCH_PREFIX=/Users/vanessa/.opam/default+CAML_LD_LIBRARY_PATH=/Users/vanessa/.opam/default/lib/stublibs:/Users/vanessa/.opam/default/lib/ocaml/stublibs:/Users/vanessa/.opam/default/lib/ocaml+OCAML_TOPLEVEL_PATH=/Users/vanessa/.opam/default/lib/toplevel+OPAM_LAST_ENV=/Users/vanessa/.opam/.last-env/env-e11ea89f0858dbd243348d81ca05c0a8-0+_=/usr/bin/printenv
+ test/data/food-prices.csv view
@@ -0,0 +1,20 @@+Series_reference,Period,Data_value,STATUS,UNITS,Subject,Group,Series_title_1
+CPIM.SAP0100,2006.06,3.11,FINAL,Dollars,Consumers Price Index - CPI,Food Price Index Selected Monthly Weighted Average Prices for New Zealand,"Oranges, 1kg"
+CPIM.SAP0100,2006.07,2.78,FINAL,Dollars,Consumers Price Index - CPI,Food Price Index Selected Monthly Weighted Average Prices for New Zealand,"Oranges, 1kg"
+CPIM.SAP0100,2006.08,2.43,FINAL,Dollars,Consumers Price Index - CPI,Food Price Index Selected Monthly Weighted Average Prices for New Zealand,"Oranges, 1kg"
+CPIM.SAP0100,2006.09,2.42,FINAL,Dollars,Consumers Price Index - CPI,Food Price Index Selected Monthly Weighted Average Prices for New Zealand,"Oranges, 1kg"
+CPIM.SAP0100,2006.1,3.04,FINAL,Dollars,Consumers Price Index - CPI,Food Price Index Selected Monthly Weighted Average Prices for New Zealand,"Oranges, 1kg"
+CPIM.SAP0100,2006.11,3.24,FINAL,Dollars,Consumers Price Index - CPI,Food Price Index Selected Monthly Weighted Average Prices for New Zealand,"Oranges, 1kg"
+CPIM.SAP0100,2006.12,3.27,FINAL,Dollars,Consumers Price Index - CPI,Food Price Index Selected Monthly Weighted Average Prices for New Zealand,"Oranges, 1kg"
+CPIM.SAP0100,2007.01,3.18,FINAL,Dollars,Consumers Price Index - CPI,Food Price Index Selected Monthly Weighted Average Prices for New Zealand,"Oranges, 1kg"
+CPIM.SAP0100,2007.02,3.74,FINAL,Dollars,Consumers Price Index - CPI,Food Price Index Selected Monthly Weighted Average Prices for New Zealand,"Oranges, 1kg"
+CPIM.SAP0100,2007.03,4.21,FINAL,Dollars,Consumers Price Index - CPI,Food Price Index Selected Monthly Weighted Average Prices for New Zealand,"Oranges, 1kg"
+CPIM.SAP0100,2007.04,4.16,FINAL,Dollars,Consumers Price Index - CPI,Food Price Index Selected Monthly Weighted Average Prices for New Zealand,"Oranges, 1kg"
+CPIM.SAP0100,2007.05,4.29,FINAL,Dollars,Consumers Price Index - CPI,Food Price Index Selected Monthly Weighted Average Prices for New Zealand,"Oranges, 1kg"
+CPIM.SAP0100,2007.06,3.6,FINAL,Dollars,Consumers Price Index - CPI,Food Price Index Selected Monthly Weighted Average Prices for New Zealand,"Oranges, 1kg"
+CPIM.SAP0100,2007.07,3.14,FINAL,Dollars,Consumers Price Index - CPI,Food Price Index Selected Monthly Weighted Average Prices for New Zealand,"Oranges, 1kg"
+CPIM.SAP0100,2007.08,2.62,FINAL,Dollars,Consumers Price Index - CPI,Food Price Index Selected Monthly Weighted Average Prices for New Zealand,"Oranges, 1kg"
+CPIM.SAP0100,2007.09,2.47,FINAL,Dollars,Consumers Price Index - CPI,Food Price Index Selected Monthly Weighted Average Prices for New Zealand,"Oranges, 1kg"
+CPIM.SAP0100,2007.1,2.5,FINAL,Dollars,Consumers Price Index - CPI,Food Price Index Selected Monthly Weighted Average Prices for New Zealand,"Oranges, 1kg"
+CPIM.SAP0100,2007.11,2.93,FINAL,Dollars,Consumers Price Index - CPI,Food Price Index Selected Monthly Weighted Average Prices for New Zealand,"Oranges, 1kg"
+CPIM.SAP0100,2007.12,3.28,FINAL,Dollars,Consumers Price Index - CPI,Food Price Index Selected Monthly Weighted Average Prices for New Zealand,"Oranges, 1kg"
+ test/data/fut-ctags view
@@ -0,0 +1,201 @@+type real lib/github.com/diku-dk/complex/complex.fut:50:3-18+type complex lib/github.com/diku-dk/complex/complex.fut:51:3-28+value mk lib/github.com/diku-dk/complex/complex.fut:53:3-37+value mk_re lib/github.com/diku-dk/complex/complex.fut:54:3-37+value mk_im lib/github.com/diku-dk/complex/complex.fut:55:3-37+value conj lib/github.com/diku-dk/complex/complex.fut:57:3-49+value re lib/github.com/diku-dk/complex/complex.fut:58:3-31+value im lib/github.com/diku-dk/complex/complex.fut:59:3-31+value + lib/github.com/diku-dk/complex/complex.fut:61:3-63+value - lib/github.com/diku-dk/complex/complex.fut:62:3-63+value * lib/github.com/diku-dk/complex/complex.fut:63:3-64:64+value / lib/github.com/diku-dk/complex/complex.fut:65:3-67:44+value mag lib/github.com/diku-dk/complex/complex.fut:69:3-70:29+value arg lib/github.com/diku-dk/complex/complex.fut:71:3-72:16+value sqrt lib/github.com/diku-dk/complex/complex.fut:74:3-78:22+value exp lib/github.com/diku-dk/complex/complex.fut:80:3-82:44+value log lib/github.com/diku-dk/complex/complex.fut:84:3-85:31+type real lib/github.com/diku-dk/fft/stockham-radix-2.fut:15:3-18+type complex lib/github.com/diku-dk/fft/stockham-radix-2.fut:16:3-33+value radix lib/github.com/diku-dk/fft/stockham-radix-2.fut:18:3-20+value fft_iteration lib/github.com/diku-dk/fft/stockham-radix-2.fut:20:3-28:49+value fft' lib/github.com/diku-dk/fft/stockham-radix-2.fut:30:3-44:11+value log2 lib/github.com/diku-dk/fft/stockham-radix-2.fut:46:3-52:9+value is_power_of_2 lib/github.com/diku-dk/fft/stockham-radix-2.fut:54:3-50+value generic_fft lib/github.com/diku-dk/fft/stockham-radix-2.fut:56:3-60:40+value fft lib/github.com/diku-dk/fft/stockham-radix-2.fut:62:3-63:26+value ifft lib/github.com/diku-dk/fft/stockham-radix-2.fut:65:3-67:50+value fft_re lib/github.com/diku-dk/fft/stockham-radix-2.fut:69:3-70:33+value ifft_re lib/github.com/diku-dk/fft/stockham-radix-2.fut:72:3-73:34+value generic_fft2 lib/github.com/diku-dk/fft/stockham-radix-2.fut:75:3-82:31+value fft2 lib/github.com/diku-dk/fft/stockham-radix-2.fut:84:3-85:27+value ifft2 lib/github.com/diku-dk/fft/stockham-radix-2.fut:87:3-89:65+value fft2_re lib/github.com/diku-dk/fft/stockham-radix-2.fut:91:3-92:48+value ifft2_re lib/github.com/diku-dk/fft/stockham-radix-2.fut:94:3-95:49+type t lib/github.com/diku-dk/statistics/gammaln.fut:88:1-13+value A1C lib/github.com/diku-dk/statistics/gammaln.fut:90:1-43+value A1 lib/github.com/diku-dk/statistics/gammaln.fut:91:1-96:11+value A2C lib/github.com/diku-dk/statistics/gammaln.fut:97:1-43+value A2 lib/github.com/diku-dk/statistics/gammaln.fut:98:1-103:11+value RC lib/github.com/diku-dk/statistics/gammaln.fut:105:1-19+value R' lib/github.com/diku-dk/statistics/gammaln.fut:107:1-113:11+value SC lib/github.com/diku-dk/statistics/gammaln.fut:115:1-49+value S lib/github.com/diku-dk/statistics/gammaln.fut:117:1-123:10+value T1C lib/github.com/diku-dk/statistics/gammaln.fut:124:1-43+value T1 lib/github.com/diku-dk/statistics/gammaln.fut:125:1-129:11+value T2C lib/github.com/diku-dk/statistics/gammaln.fut:130:1-50+value T2 lib/github.com/diku-dk/statistics/gammaln.fut:131:1-135:11+value T3C lib/github.com/diku-dk/statistics/gammaln.fut:136:1-43+value T3 lib/github.com/diku-dk/statistics/gammaln.fut:137:1-141:11+value UC lib/github.com/diku-dk/statistics/gammaln.fut:142:1-49+value U lib/github.com/diku-dk/statistics/gammaln.fut:143:1-148:10+value VC lib/github.com/diku-dk/statistics/gammaln.fut:149:1-19+value V lib/github.com/diku-dk/statistics/gammaln.fut:150:1-155:10+value WC lib/github.com/diku-dk/statistics/gammaln.fut:156:1-42+value W lib/github.com/diku-dk/statistics/gammaln.fut:157:1-163:10+value YMIN lib/github.com/diku-dk/statistics/gammaln.fut:164:1-38+value TWO52 lib/github.com/diku-dk/statistics/gammaln.fut:165:1-35+value TWO58 lib/github.com/diku-dk/statistics/gammaln.fut:166:1-37+value TINY lib/github.com/diku-dk/statistics/gammaln.fut:167:1-39+value TC lib/github.com/diku-dk/statistics/gammaln.fut:168:1-42+value TF lib/github.com/diku-dk/statistics/gammaln.fut:169:1-49+value TT lib/github.com/diku-dk/statistics/gammaln.fut:170:1-49+value evalpoly lib/github.com/diku-dk/statistics/gammaln.fut:172:1-173:74+value polyvalA1 lib/github.com/diku-dk/statistics/gammaln.fut:175:1-28+value polyvalA2 lib/github.com/diku-dk/statistics/gammaln.fut:176:1-28+value polyvalR lib/github.com/diku-dk/statistics/gammaln.fut:177:1-27+value polyvalS lib/github.com/diku-dk/statistics/gammaln.fut:178:1-26+value polyvalT1 lib/github.com/diku-dk/statistics/gammaln.fut:179:1-28+value polyvalT2 lib/github.com/diku-dk/statistics/gammaln.fut:180:1-28+value polyvalT3 lib/github.com/diku-dk/statistics/gammaln.fut:181:1-28+value polyvalU lib/github.com/diku-dk/statistics/gammaln.fut:182:1-26+value polyvalV lib/github.com/diku-dk/statistics/gammaln.fut:183:1-26+value polyvalW lib/github.com/diku-dk/statistics/gammaln.fut:184:1-26+value sinpi lib/github.com/diku-dk/statistics/gammaln.fut:186:1-31+value case0 lib/github.com/diku-dk/statistics/gammaln.fut:188:1-193:33+value case1 lib/github.com/diku-dk/statistics/gammaln.fut:195:1-202:20+value case2 lib/github.com/diku-dk/statistics/gammaln.fut:204:1-207:42+value gammaln lib/github.com/diku-dk/statistics/gammaln.fut:209:1-267:28+value radix_sort_step lib/github.com/diku-dk/sorts/radix_sort.fut:14:7-32:29+value radix_sort lib/github.com/diku-dk/sorts/radix_sort.fut:50:1-53:63+value with_indices lib/github.com/diku-dk/sorts/radix_sort.fut:55:1-56:18+value by_key_wrapper lib/github.com/diku-dk/sorts/radix_sort.fut:58:7-62:34+value radix_sort_by_key lib/github.com/diku-dk/sorts/radix_sort.fut:65:1-68:52+value radix_sort_int lib/github.com/diku-dk/sorts/radix_sort.fut:73:1-79:37+value radix_sort_int_by_key lib/github.com/diku-dk/sorts/radix_sort.fut:82:1-85:56+value radix_sort_float lib/github.com/diku-dk/sorts/radix_sort.fut:91:1-104:37+value radix_sort_float_by_key lib/github.com/diku-dk/sorts/radix_sort.fut:107:1-110:58+value segmented_scan lib/github.com/diku-dk/segmented/segmented.fut:7:1-13:29+value segmented_reduce lib/github.com/diku-dk/segmented/segmented.fut:20:1-37:71+value replicated_iota lib/github.com/diku-dk/segmented/segmented.fut:44:1-50:36+value segmented_iota lib/github.com/diku-dk/segmented/segmented.fut:58:1-60:27+value expand lib/github.com/diku-dk/segmented/segmented.fut:70:1-74:44+value expand_reduce lib/github.com/diku-dk/segmented/segmented.fut:84:1-91:37+value expand_outer_reduce lib/github.com/diku-dk/segmented/segmented.fut:97:1-103:46+type t lib/github.com/diku-dk/statistics/statistics.fut:130:3-15+value argmax lib/github.com/diku-dk/statistics/statistics.fut:135:3-138:55+value mean lib/github.com/diku-dk/statistics/statistics.fut:140:3-141:23+value gmean lib/github.com/diku-dk/statistics/statistics.fut:143:3-144:36+value hmean lib/github.com/diku-dk/statistics/statistics.fut:146:3-147:38+value qmean lib/github.com/diku-dk/statistics/statistics.fut:149:3-150:53+value pow2 lib/github.com/diku-dk/statistics/statistics.fut:152:3-31+value pow3 lib/github.com/diku-dk/statistics/statistics.fut:153:3-33+value pow4 lib/github.com/diku-dk/statistics/statistics.fut:154:3-36+value variance lib/github.com/diku-dk/statistics/statistics.fut:156:3-159:35+value stddev lib/github.com/diku-dk/statistics/statistics.fut:161:3-162:26+value covariance0 lib/github.com/diku-dk/statistics/statistics.fut:164:3-166:28+value covariance lib/github.com/diku-dk/statistics/statistics.fut:168:3-169:42+value correlation lib/github.com/diku-dk/statistics/statistics.fut:171:3-172:51+value covariance_matrix lib/github.com/diku-dk/statistics/statistics.fut:174:3-180:24+value variance_pop lib/github.com/diku-dk/statistics/statistics.fut:182:3-183:46+value stddev_pop lib/github.com/diku-dk/statistics/statistics.fut:185:3-186:30+value skewness lib/github.com/diku-dk/statistics/statistics.fut:188:3-192:26+value skewness_adj lib/github.com/diku-dk/statistics/statistics.fut:194:3-195:70+value kurtosis lib/github.com/diku-dk/statistics/statistics.fut:197:3-201:26+value kurtosis_excess lib/github.com/diku-dk/statistics/statistics.fut:203:3-204:28+value median_sorted lib/github.com/diku-dk/statistics/statistics.fut:206:3-210:18+value median lib/github.com/diku-dk/statistics/statistics.fut:212:3-71+value quantile_sorted lib/github.com/diku-dk/statistics/statistics.fut:214:3-220:57+value quantile lib/github.com/diku-dk/statistics/statistics.fut:222:3-75+value mode_sorted lib/github.com/diku-dk/statistics/statistics.fut:224:3-230:13+value mode lib/github.com/diku-dk/statistics/statistics.fut:232:3-67+type regression_result lib/github.com/diku-dk/statistics/statistics.fut:234:3-44+value regress lib/github.com/diku-dk/statistics/statistics.fut:236:3-245:30+value gamma_big lib/github.com/diku-dk/statistics/statistics.fut:248:3-263:65+value gamma lib/github.com/diku-dk/statistics/statistics.fut:265:3-268:25+value gammaln lib/github.com/diku-dk/statistics/statistics.fut:272:3-44+type dist lib/github.com/diku-dk/statistics/statistics.fut:275:3-54+value poison_pmf lib/github.com/diku-dk/statistics/statistics.fut:277:3-278:69+value fac lib/github.com/diku-dk/statistics/statistics.fut:280:3-281:64+value poison_cdf lib/github.com/diku-dk/statistics/statistics.fut:283:3-285:96+value normal_pdf lib/github.com/diku-dk/statistics/statistics.fut:287:3-288:84+value erf lib/github.com/diku-dk/statistics/statistics.fut:290:3-304:28+value normal_cdf lib/github.com/diku-dk/statistics/statistics.fut:306:3-307:60+value normal_cdf_inv lib/github.com/diku-dk/statistics/statistics.fut:309:3-352:8+value poison_cdf_inv lib/github.com/diku-dk/statistics/statistics.fut:371:3-41+value mk_poison lib/github.com/diku-dk/statistics/statistics.fut:373:3-374:78+value mk_normal lib/github.com/diku-dk/statistics/statistics.fut:376:3-377:83+value mk_uniform lib/github.com/diku-dk/statistics/statistics.fut:379:3-385:33+value pmf lib/github.com/diku-dk/statistics/statistics.fut:387:3-52+value pdf lib/github.com/diku-dk/statistics/statistics.fut:388:3-50+value cdf lib/github.com/diku-dk/statistics/statistics.fut:389:3-39+value sample lib/github.com/diku-dk/statistics/statistics.fut:391:3-43+value cum_norm_dist_pos lib/github.com/diku-dk/statistics/statistics.fut:394:3-403:47+value cum_norm_dist lib/github.com/diku-dk/statistics/statistics.fut:405:3-407:33+type num lib/github.com/vmchale/img-fut/img.fut:79:3-17+type border lib/github.com/vmchale/img-fut/img.fut:81:3-33+value window lib/github.com/vmchale/img-fut/img.fut:83:9-85:81+value with_window_reflect lib/github.com/vmchale/img-fut/img.fut:87:3-116:24+value with_window_extended lib/github.com/vmchale/img-fut/img.fut:118:3-147:24+value with_window lib/github.com/vmchale/img-fut/img.fut:149:3-152:54+value maximum_2d lib/github.com/vmchale/img-fut/img.fut:154:3-155:32+value minimum_2d lib/github.com/vmchale/img-fut/img.fut:157:3-158:32+value maximum_filter lib/github.com/vmchale/img-fut/img.fut:161:3-162:37+value minimum_filter lib/github.com/vmchale/img-fut/img.fut:164:3-165:37+value matmul lib/github.com/vmchale/img-fut/img.fut:167:3-171:10+value correlate lib/github.com/vmchale/img-fut/img.fut:173:3-183:72+value convolve lib/github.com/vmchale/img-fut/img.fut:185:3-190:32+value ez_resize lib/github.com/vmchale/img-fut/img.fut:192:3-198:62+value crop lib/github.com/vmchale/img-fut/img.fut:200:3-201:34+type num lib/github.com/vmchale/img-fut/img.fut:210:3-17+type real lib/github.com/vmchale/img-fut/img.fut:211:3-18+type border lib/github.com/vmchale/img-fut/img.fut:217:3-32+value with_window lib/github.com/vmchale/img-fut/img.fut:219:3-41+value maximum_filter lib/github.com/vmchale/img-fut/img.fut:220:3-47+value minimum_filter lib/github.com/vmchale/img-fut/img.fut:221:3-47+value maximum_2d lib/github.com/vmchale/img-fut/img.fut:222:3-39+value minimum_2d lib/github.com/vmchale/img-fut/img.fut:223:3-39+value convolve lib/github.com/vmchale/img-fut/img.fut:224:3-35+value correlate lib/github.com/vmchale/img-fut/img.fut:225:3-37+value ez_resize lib/github.com/vmchale/img-fut/img.fut:226:3-37+value crop lib/github.com/vmchale/img-fut/img.fut:227:3-27+value mean_filter lib/github.com/vmchale/img-fut/img.fut:229:3-236:24+value conjugate_fft lib/github.com/vmchale/img-fut/img.fut:238:9-243:73+value fft_mean_filter lib/github.com/vmchale/img-fut/img.fut:247:3-248:39+value sobel lib/github.com/vmchale/img-fut/img.fut:255:3-270:68+value laplacian lib/github.com/vmchale/img-fut/img.fut:272:3-277:28+value prewitt lib/github.com/vmchale/img-fut/img.fut:279:3-294:68+value scale_2d lib/github.com/vmchale/img-fut/img.fut:296:9-298:47+value laplacian_of_gaussian lib/github.com/vmchale/img-fut/img.fut:300:3-328:32+value gaussian lib/github.com/vmchale/img-fut/img.fut:330:3-356:30+type num lib/github.com/vmchale/img-fut/img.fut:370:3-17+type real lib/github.com/vmchale/img-fut/img.fut:371:3-18+type float lib/github.com/vmchale/img-fut/img.fut:372:3-19+type border lib/github.com/vmchale/img-fut/img.fut:374:3-35+value correlate lib/github.com/vmchale/img-fut/img.fut:377:3-40+value convolve lib/github.com/vmchale/img-fut/img.fut:378:3-38+value sobel lib/github.com/vmchale/img-fut/img.fut:379:3-30+value prewitt lib/github.com/vmchale/img-fut/img.fut:380:3-34+value mean_filter lib/github.com/vmchale/img-fut/img.fut:381:3-42+value maximum_filter lib/github.com/vmchale/img-fut/img.fut:382:3-50+value minimum_filter lib/github.com/vmchale/img-fut/img.fut:383:3-50+value with_window lib/github.com/vmchale/img-fut/img.fut:384:3-44+value maximum_2d lib/github.com/vmchale/img-fut/img.fut:385:3-42+value minimum_2d lib/github.com/vmchale/img-fut/img.fut:386:3-42+value ez_resize lib/github.com/vmchale/img-fut/img.fut:387:3-40+value crop lib/github.com/vmchale/img-fut/img.fut:388:3-30+value gaussian lib/github.com/vmchale/img-fut/img.fut:389:3-36+value laplacian lib/github.com/vmchale/img-fut/img.fut:390:3-38+value laplacian_of_gaussian lib/github.com/vmchale/img-fut/img.fut:391:3-62+value fft_mean_filter lib/github.com/vmchale/img-fut/img.fut:392:3-50+value median_filter lib/github.com/vmchale/img-fut/img.fut:395:3-396:67
+ test/data/ghc view
@@ -0,0 +1,1420 @@+GHCi, version 9.10.1: https://www.haskell.org/ghc/  :? for help+Command is not supported (yet) in multi-mode+/Users/vanessa/dev/haskell/apple/src/IR.hs:139:10: warning: [GHC-06201] [-Wmissing-methods]+    • No explicit implementation for+        ‘abs’ and ‘signum’+    • In the instance declaration for ‘Num Exp’+    |+139 | instance Num Exp where+    |          ^^^^^^^++/Users/vanessa/dev/haskell/apple/src/IR.hs:142:10: warning: [GHC-06201] [-Wmissing-methods]+    • No explicit implementation for+        ‘abs’ and ‘signum’+    • In the instance declaration for ‘Num (FExp ftemp Double e)’+    |+142 | instance Num (FExp ftemp Double e) where+    |          ^^^^^^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Hs/A.hs:33:10: warning: [GHC-06201] [-Wmissing-methods]+    • No explicit implementation for+        ‘alignment’+    • In the instance declaration for ‘Storable AB’+   |+33 | instance Storable AB where+   |          ^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Hs/A.hs:35:15: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In a \case alternative:+        Patterns of type ‘Word8’ not matched:+            p where p is not one of {1, 0}+   |+35 |     peek p = (\case 1 -> T; 0 -> F) <$> peek (castPtr p :: Ptr Word8)+   |               ^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Hs/A.hs:39:10: warning: [GHC-06201] [-Wmissing-methods]+    • No explicit implementation for+        ‘alignment’ and (either ‘poke’ or ‘pokeElemOff’ or ‘pokeByteOff’)+    • In the instance declaration for ‘Storable (P2 a b)’+   |+39 | instance (Storable a, Storable b) => Storable (P2 a b) where+   |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Hs/A.hs:43:10: warning: [GHC-06201] [-Wmissing-methods]+    • No explicit implementation for+        ‘alignment’ and (either ‘poke’ or ‘pokeElemOff’ or ‘pokeByteOff’)+    • In the instance declaration for ‘Storable (P3 a b c)’+   |+43 | instance (Storable a, Storable b, Storable c) => Storable (P3 a b c) where+   |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Hs/A.hs:47:10: warning: [GHC-06201] [-Wmissing-methods]+    • No explicit implementation for+        ‘alignment’ and (either ‘poke’ or ‘pokeElemOff’ or ‘pokeByteOff’)+    • In the instance declaration for ‘Storable (P4 a b c d)’+   |+47 | instance (Storable a, Storable b, Storable c, Storable d) => Storable (P4 a b c d) where+   |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Hs/A.hs:69:10: warning: [GHC-06201] [-Wmissing-methods]+    • No explicit implementation for+        ‘alignment’+    • In the instance declaration for ‘Storable (Apple a)’+   |+69 | instance Storable a => Storable (Apple a) where+   |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/IR/Hoist.hs:62:21: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In a case alternative:+        Patterns of type ‘FTemp’ not matched:+            F0+            F1+            F2+            F3+            ...+   |+62 | view f (F2Temp i) = case f (FTemp i) of (FTemp j) -> F2Temp j+   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/IR/Hoist.hs:124:32: warning: [GHC-62161] [-Wincomplete-uni-patterns]+    Pattern match(es) are non-exhaustive+    In a pattern binding:+        Patterns of type ‘(Stmt, ControlAnn)’ not matched:+            ((MJ _ _), _)+            ((J _), _)+            ((MT _ _), _)+            ((MX _ _), _)+            ...+    |+124 |     ss = getCf<$>IS.toList ns; (L lh,_) = getCf n+    |                                ^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/IR/Hoist.hs:128:14: warning: [GHC-40910] [-Wunused-top-binds]+    Defined but not used: record field of S ‘su’+    |+128 |            , su :: !(M.Map FTemp FTemp)+    |              ^^++/Users/vanessa/dev/haskell/apple/src/Asm/X86/Frame.hs:29:11: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘handleRax’:+        Patterns of type ‘CFunc’ not matched:+            JR+            Exp+            Log+            Pow+   |+29 |           handleRax Malloc = filter (/=Rax)+   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/Asm/X86/Frame.hs:34:11: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘mx’:+        Patterns of type ‘CFunc’ not matched:+            JR+            Exp+            Log+            Pow+   |+34 |           mx Free   = const []+   |           ^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/Asm/Aarch64.hs:104:5: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘pw’:+        Patterns of type ‘AbsReg’ not matched:+            LR+            FP+            ASP+    |+104 |     pw (IReg i) = "W" <> pretty i+    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/Asm/Aarch64.hs:116:27: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘pq’:+        Patterns of type ‘V2Reg FAbsReg’ not matched:+            V2Reg FArg0+            V2Reg FArg1+            V2Reg FArg2+            V2Reg FArg3+            ...+    |+116 | instance SIMD F2Abs where pq (V2Reg (FReg i)) = "~Q" <> pretty i; pv (V2Reg (FReg i)) = "~V" <> pretty i+    |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Asm/Aarch64.hs:116:67: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘pv’:+        Patterns of type ‘V2Reg FAbsReg’ not matched:+            V2Reg FArg0+            V2Reg FArg1+            V2Reg FArg2+            V2Reg FArg3+            ...+    |+116 | instance SIMD F2Abs where pq (V2Reg (FReg i)) = "~Q" <> pretty i; pv (V2Reg (FReg i)) = "~V" <> pretty i+    |                                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Asm/Aarch64.hs:215:8: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In a case alternative:+        Patterns of type ‘String’ not matched:+            []+            (p:_) where p is not one of {'l', 'd'}+            ['l']+            ('l':p:_) where p is not one of {'i'}+            ...+    |+215 | pSym = case os of {"linux" -> id; "darwin" -> ("_"<>)}.pretty+    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Asm/X86/CF.hs:78:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘usesF’:+        Patterns of type ‘X86 reg freg ann’ not matched:+            Vfmadd213sd _ _ _ _+            Vfmsub231sd _ _ _ _+            Vfmsub213sd _ _ _ _+            Vfmsub132sd _ _ _ _+            ...+   |+78 | usesF (Movapd _ _ r)            = singleton r+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/Asm/X86/CF.hs:165:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘uses’:+        Patterns of type ‘X86 reg freg ann’ not matched:+            Vfmadd213sd _ _ _ _+            Vfmsub231sd _ _ _ _+            Vfmsub213sd _ _ _ _+            Vfmsub132sd _ _ _ _+            ...+    |+165 | uses (MovRR _ _ r)          = singleton r+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/Asm/X86/CF.hs:254:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘defsF’:+        Patterns of type ‘X86 reg freg ann’ not matched:+            Vfmadd213sd _ _ _ _+            Vfmsub231sd _ _ _ _+            Vfmsub213sd _ _ _ _+            Vfmsub132sd _ _ _ _+            ...+    |+254 | defsF (Movapd _ r _)         = singleton r+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/Asm/X86/CF.hs:342:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘defs’:+        Patterns of type ‘X86 reg freg ann’ not matched:+            Vfmadd213sd _ _ _ _+            Vfmsub231sd _ _ _ _+            Vfmsub213sd _ _ _ _+            Vfmsub132sd _ _ _ _+            ...+    |+342 | defs (MovRR _ r _)     = singleton r+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/Asm/X86/Sp.hs:54:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘ao’: Patterns of type ‘Int’ not matched: _+   |+54 | ao o | Just i8 <- mi8 o = RC BP i8+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/Asm/Aarch64/Fr.hs:65:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘fi’:+        Patterns of type ‘a’ not matched:+            p where p is not one of {(-46), (-45), (-44), ...}+   |+65 | fi 10 = D0; fi 11 = D1; fi 12 = D2; fi 13 = D3+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/Asm/Aarch64/Sp.hs:55:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘ao’: Patterns of type ‘Int’ not matched: _+   |+55 | ao o | Just w16 <- m16 o = RP FP w16+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Asm/G.hs:261:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘freeze’:+        Patterns of type ‘K’, ‘St’ not matched: _ _+    |+261 | freeze ᴋ s | Just (u, _) <- IS.minView (fr$wkls s) =+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/Asm/G.hs:286:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘coalesce’:+        Patterns of type ‘K’, ‘St’ not matched: _ _+    |+286 | coalesce ᴋ s | Just (m@(x,y), nWl) <- S.minView (wl$mvS s) =+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/Asm/G.hs:299:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘sspill’:+        Patterns of type ‘K’, ‘St’ not matched: _ _+    |+299 | sspill ᴋ s | Just (m, nSp) <- IS.minView (sp$wkls s) = freezeMoves ᴋ m $ mapWk (iSimp m . \wk -> wk { sp = nSp }) s+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Asm/X86/P.hs:38:29: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In a case alternative:+        Patterns of type ‘(Either+                             Data.IntSet.Internal.IntSet (IM.IntMap X86Reg),+                           Either+                             Data.IntSet.Internal.IntSet (IM.IntMap FX86Reg))’ not matched:+            ((Right _), (Left _))+            ((Left _), (Left _))+   |+38 |               where rmaps = case (regsM, fregsM) of+   |                             ^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/Asm/X86/P.hs:40:40: warning: [GHC-40910] [-Wunused-matches]+    Defined but not used: ‘fregs’+   |+40 |                         (Left s, Right fregs) ->+   |                                        ^^^^^++/Users/vanessa/dev/haskell/apple/src/Asm/Aarch64/P.hs:37:29: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In a case alternative:+        Patterns of type ‘(Either+                             Data.IntSet.Internal.IntSet (IM.IntMap AReg),+                           Either Data.IntSet.Internal.IntSet (IM.IntMap FAReg))’ not matched:+            ((Right _), (Left _))+            ((Left _), (Left _))+   |+37 |               where rmaps = case (regsM, fregsM) of+   |                             ^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/Asm/Aarch64/P.hs:42:40: warning: [GHC-40910] [-Wunused-matches]+    Defined but not used: ‘fregs’+   |+42 |                         (Left s, Right fregs) ->+   |                                        ^^^^^++/Users/vanessa/dev/haskell/apple/src/Asm/X86/Byte.hs:116:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘bitC’:+        Patterns of type ‘Word8’ not matched:+            p where p is not one of {0, 1}+    |+116 | bitC 0x0 = 0x1+    | ^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/Asm/X86/Byte.hs:147:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘mkVexA’:+        Patterns of type ‘Word8’, ‘PP’, ‘VEXM’, ‘FX86Reg’, ‘FX86Reg’,+                         ‘Addr X86Reg’ not matched:+            _ _ _ _ _ (R _)+            _ _ _ _ _ (RC32 _ _)+            _ _ _ _ _ (RS _ _ _)+            _ _ _ _ _ (RC Rcx _)+            ...+    |+147 | mkVexA opc pp mm xr0 xr1 (RSD b s i d)=+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/Asm/X86/Byte.hs:346:9: warning: [GHC-62161] [-Wincomplete-uni-patterns]+    Pattern match(es) are non-exhaustive+    In a pattern binding:+        Patterns of type ‘(Word8, Word8)’ not matched:+            (p, _) where p is not one of {0}+    |+346 |         (0, b1) = modRM r1+    |         ^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Asm/X86/Byte.hs:362:9: warning: [GHC-62161] [-Wincomplete-uni-patterns]+    Pattern match(es) are non-exhaustive+    In a pattern binding:+        Patterns of type ‘(Word8, Word8)’ not matched:+            (p, _) where p is not one of {0}+    |+362 |         (0, b1) = modRM r1+    |         ^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Asm/X86/Byte.hs:392:9: warning: [GHC-62161] [-Wincomplete-uni-patterns]+    Pattern match(es) are non-exhaustive+    In a pattern binding:+        Patterns of type ‘(Word8, Word8)’ not matched:+            (p, _) where p is not one of {0}+    |+392 |     let (0, b1) = modRM r1+    |         ^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Asm/X86/Byte.hs:430:9: warning: [GHC-62161] [-Wincomplete-uni-patterns]+    Pattern match(es) are non-exhaustive+    In a pattern binding:+        Patterns of type ‘(Word8, Word8)’ not matched:+            (p, _) where p is not one of {0}+            (p, _) where p is not one of {0}+    |+430 |         (0, b1) = modRM r1+    |         ^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Asm/X86/Byte.hs:445:9: warning: [GHC-62161] [-Wincomplete-uni-patterns]+    Pattern match(es) are non-exhaustive+    In a pattern binding:+        Patterns of type ‘(Word8, Word8)’ not matched:+            (p, _) where p is not one of {0}+    |+445 |     let (0, b0) = modRM r0+    |         ^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Asm/X86/Byte.hs:451:9: warning: [GHC-62161] [-Wincomplete-uni-patterns]+    Pattern match(es) are non-exhaustive+    In a pattern binding:+        Patterns of type ‘(Word8, Word8)’ not matched:+            (p, _) where p is not one of {0}+    |+451 |     let (0, bb) = modRM rb+    |         ^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Asm/X86/Byte.hs:755:9: warning: [GHC-62161] [-Wincomplete-uni-patterns]+    Pattern match(es) are non-exhaustive+    In a pattern binding:+        Patterns of type ‘(Word8, Word8)’ not matched:+            (p, _) where p is not one of {0}+    |+755 |     let (0, b) = modRM Rsp+    |         ^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Asm/X86/Byte.hs:781:9: warning: [GHC-62161] [-Wincomplete-uni-patterns]+    Pattern match(es) are non-exhaustive+    In a pattern binding:+        Patterns of type ‘(Word8, Word8)’ not matched:+            (p, _) where p is not one of {0}+    |+781 |         (0, bi) = modRM Rsp+    |         ^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Asm/X86/Byte.hs:789:9: warning: [GHC-62161] [-Wincomplete-uni-patterns]+    Pattern match(es) are non-exhaustive+    In a pattern binding:+        Patterns of type ‘(Word8, Word8)’ not matched:+            (p, _) where p is not one of {0}+    |+789 |         (0, bi) = modRM Rsp+    |         ^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Asm/X86/Byte.hs:839:9: warning: [GHC-62161] [-Wincomplete-uni-patterns]+    Pattern match(es) are non-exhaustive+    In a pattern binding:+        Patterns of type ‘(Word8, Word8)’ not matched:+            (p, _) where p is not one of {0}+    |+839 |     let (0, bi) = modRM ar+    |         ^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Asm/X86/Byte.hs:846:9: warning: [GHC-62161] [-Wincomplete-uni-patterns]+    Pattern match(es) are non-exhaustive+    In a pattern binding:+        Patterns of type ‘(Word8, Word8)’ not matched:+            (p, _) where p is not one of {0}+    |+846 |     let (0, bi) = modRM ar+    |         ^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Asm/Aarch64/Byte.hs:287:104: warning: [GHC-97441] [-Woverflowed-literals]+    Literal 18446462598732840960 is out of the Int range -9223372036854775808..9223372036854775807+    |+287 |         w0=p .&. 0xffff; w1=(p .&. 0xffff0000) `lsr` 16; w2=(p .&. 0xFFFF00000000) `lsr` 32; w3=(p .&. 0xFFFF000000000000) `lsr` 48+    |                                                                                                        ^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Asm/Aarch64/Byte.hs:295:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘rpf’:+        Patterns of type ‘Pfop’ not matched:+            Pfop PLI _ _+            Pfop PLD L2 _+            Pfop PLD L3 _+            Pfop PST L2 _+            ...+    |+295 | rpf (Pfop PLD L1 Keep) = 0b0+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/Asm/Aarch64/Byte.hs:300:109: warning: [GHC-97441] [-Woverflowed-literals]+    Literal 18446462598732840960 is out of the Int range -9223372036854775808..9223372036854775807+    |+300 | m4 r a = let w0=a .&. 0xffff; w1=(a .&. 0xffff0000) `lsr` 16; w2=(a .&. 0xFFFF00000000) `lsr` 32; w3=(a .&. 0xFFFF000000000000) `lsr` 48+    |                                                                                                             ^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/C.hs:113:10: warning: [GHC-06201] [-Wmissing-methods]+    • No explicit implementation for+        ‘abs’ and ‘signum’+    • In the instance declaration for ‘Num CE’+    |+113 | instance Num CE where+    |          ^^^^^^++/Users/vanessa/dev/haskell/apple/src/C.hs:120:10: warning: [GHC-06201] [-Wmissing-methods]+    • No explicit implementation for+        ‘abs’ and ‘signum’+    • In the instance declaration for ‘Num (CFE t Double e)’+    |+120 | instance Num (CFE t Double e) where+    |          ^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/C.hs:272:11: warning: [GHC-40910] [-Wunused-matches]+    Defined but not used: ‘ds’+    |+272 | prettyCS (ds,ss) = pCS (const"") ss+    |           ^^++/Users/vanessa/dev/haskell/apple/src/IR/C.hs:45:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘cToIRM’:+        Patterns of type ‘CS a’ not matched: PlProd _ _ []+   |+45 | cToIRM (G _ l retL)          = pure [IR.C l, IR.L retL]+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/IR/C.hs:167:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘irAt’:+        Patterns of type ‘ArrAcc’ not matched: At _ _ _ _ _+    |+167 | irAt (ARnk t l)                                                = AP (ctemp t) Nothing l+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/C/CF.hs:308:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘uses’:+        Patterns of type ‘CS a’ not matched:+            For _ _ _ _ _ _+            Rof _ _ _ _+            Rof1 _ _ _ _+            R2of _ _ _ _ _+            ...+    |+308 | uses (Ma _ _ _ _ r n _)    = uE r<>uE n+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/C/Alloc.hs:28:35: warning: [GHC-40910] [-Wunused-top-binds]+    Defined but not used: record field of Ss ‘mLive’+   |+28 | data Slots = Ss { keep :: !Alias, mLive :: [(AL, Sh ())] }+   |                                   ^^^^^++/Users/vanessa/dev/haskell/apple/src/A.hs:201:5: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘pt’:+        Patterns of type ‘E (T a)’ not matched:+            Dfn _ _+            ResVar _ _+            Parens _ _+            Ann _ _ _+            ...+    |+201 |     pt (Var t n)                                             = parens (pretty n <+> ":" <+> pretty t)+    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/Ty/Clone.hs:63:5: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘cT’: Patterns of type ‘T a’ not matched: Ρ _ _+   |+63 |     cT F            = pure F+   |     ^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/Ty.hs:40:24: warning: [GHC-40910] [-Wunused-top-binds]+    Defined but not used: record field of Subst ‘tySubst’+   |+40 | data Subst a = Subst { tySubst :: IM.IntMap (T a)+   |                        ^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Ty.hs:42:24: warning: [GHC-40910] [-Wunused-top-binds]+    Defined but not used: record field of Subst ‘sSubst’+   |+42 |                      , sSubst  :: IM.IntMap (Sh a) -- ^ Shape variables+   |                        ^^^^^^++/Users/vanessa/dev/haskell/apple/src/Ty.hs:114:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘mI’:+        Patterns of type ‘Focus’, ‘I a’, ‘I a’ not matched:+            RF (IEVar _ _) (Ix _ _)+            RF (IEVar _ _) (StaPlus _ _ _)+            RF (IEVar _ _) (StaMul _ _ _)+            LF (IEVar _ _) (StaPlus _ _ _)+            ...+    |+114 | mI f i0@(Ix _ i) i1@(Ix _ j) | i == j = Right mempty+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/Ty.hs:364:6: warning: [GHC-40910] [-Wunused-matches]+    Defined but not used: ‘f’+    |+364 | mgSh f l inp (Π t0) (Π t1) = undefined+    |      ^++/Users/vanessa/dev/haskell/apple/src/Ty.hs:364:8: warning: [GHC-40910] [-Wunused-matches]+    Defined but not used: ‘l’+    |+364 | mgSh f l inp (Π t0) (Π t1) = undefined+    |        ^++/Users/vanessa/dev/haskell/apple/src/Ty.hs:364:10: warning: [GHC-40910] [-Wunused-matches]+    Defined but not used: ‘inp’+    |+364 | mgSh f l inp (Π t0) (Π t1) = undefined+    |          ^^^++/Users/vanessa/dev/haskell/apple/src/Ty.hs:364:17: warning: [GHC-40910] [-Wunused-matches]+    Defined but not used: ‘t0’+    |+364 | mgSh f l inp (Π t0) (Π t1) = undefined+    |                 ^^++/Users/vanessa/dev/haskell/apple/src/Ty.hs:364:24: warning: [GHC-40910] [-Wunused-matches]+    Defined but not used: ‘t1’+    |+364 | mgSh f l inp (Π t0) (Π t1) = undefined+    |                        ^^++/Users/vanessa/dev/haskell/apple/src/Ty.hs:503:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘tydrop’:+        Patterns of type ‘Int’, ‘Sh a’ not matched:+            p Nil where p is not one of {0}+            p (SVar _) where p is not one of {0}+            p (Rev _) where p is not one of {0}+            p (Cat _ _) where p is not one of {0}+            ...+    |+503 | tydrop 0 sh            = sh+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/Ty.hs:810:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘checkTy’:+        Patterns of type ‘T a’, ‘(C, a)’ not matched:+            (P _) (IsOrd, _)+            (P _) (IsEq, _)+            (Ρ _ _) (IsOrd, _)+            (Ρ _ _) (IsEq, _)+            ...+    |+810 | checkTy (TVar n) (c, _)       = pure $ Just(n, c)+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/Ty.hs:847:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘tyE’:+        Patterns of type ‘Subst a’, ‘E a’ not matched: _ (Id _ _)+    |+847 | tyE s (EApp _ (Builtin _ Re) (ILit _ n)) = do+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/R/Dfn.hs:9:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘dedfn’:+        Patterns of type ‘E a’ not matched: Id _ _+  |+9 | dedfn e@ILit{} = e+  | ^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/R/Dfn.hs:37:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘replaceXY’:+        Patterns of type ‘a -> Nm a’, ‘a -> Nm a’, ‘E a’ not matched:+            _ _ (Dfn _ _)+            _ _ (Parens _ _)+            _ _ (Id _ _)+   |+37 | replaceXY _ y (ResVar l Y) = (Var l (y l), True)+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/R.hs:70:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘rE’:+        Patterns of type ‘E a’ not matched:+            Dfn _ _+            ResVar _ _+            Parens _ _+            Id _ (FoldSOfZip _ _ _)+            ...+   |+70 | rE (Lam l n e) = doLocal $ do+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/run/QC.hs:36:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘gg’:+        Patterns of type ‘Sh a’ not matched:+            Rev _+            Cat _ _+            Π _+            Cons (IEVar _ _) _+            ...+   |+36 | gg Nil = pure (0, [])+   | ^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/run/QC.hs:74:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘ga’:+        Patterns of type ‘T a’ not matched:+            Li _+            TVar _+            Arrow _ _+            P _+            ...+   |+74 | ga (Arr sh A.F) = do+   | ^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/Parser/Rw.hs:43:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘fi’:+        Patterns of type ‘Builtin’ not matched:+            Log+            IDiv+            Neg+            Sqrt+            ...+   |+43 | fi C = 9+   | ^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/Parser/Rw.hs:59:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘lassoc’:+        Patterns of type ‘Builtin’ not matched:+            Log+            IDiv+            Neg+            Sqrt+            ...+   |+59 | lassoc IntExp = False+   | ^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/CGen.hs:18:5: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘pretty’:+        Patterns of type ‘CType’ not matched:+            ΠC []+            ΠC ((AC _):_)+            ΠC ((ΠC _):_)+            ΠC ((SC CI):_)+            ...+   |+18 |     pretty (AC CR)="Af"; pretty (AC CI)="Ai"; pretty (AC CB)="Ab"+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/CGen.hs:56:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘cTy’:+        Patterns of type ‘T a’ not matched:+            Li _+            TVar _+            Ρ _ _+            Arrow (Arr _ _) _+            ...+   |+56 | cTy F                 = pure (SC CR)+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/CGen.hs:69:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘irTy’: Patterns of type ‘T a’ not matched: Li _+   |+69 | irTy F                 = pure ([], F)+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/A/Opt.hs:25:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘optA’:+        Patterns of type ‘E (T ())’ not matched:+            Def _ _ _+            Dfn _ _+            ResVar _ _+            Parens _ _+            ...+   |+25 | optA (ILit F x)            = pure (FLit F (realToFrac x))+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/A/Opt.hs:25:1: warning: [GHC-61505]+    Pattern match checker ran into -fmax-pmcheck-models=30 limit, so+      • Redundant clauses might not be reported at all+      • Redundant clauses might be reported as inaccessible+      • Patterns reported as unmatched might actually be matched+    Suggested fix:+      Increase the limit or resolve the warnings to suppress this message.+   |+25 | optA (ILit F x)            = pure (FLit F (realToFrac x))+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/A/Eta.hs:20:114: warning: [GHC-62161] [-Wincomplete-uni-patterns]+    Pattern match(es) are non-exhaustive+    In a pattern binding:+        Patterns of type ‘T ()’ not matched:+            Arr _ _+            F+            I+            B+            ...+   |+20 |     lApps <- traverse (\t -> do { n <- nextN t ; pure (\e' -> let t' = eAnn e' in Lam (t ~> t') n e', \e' -> let Arrow _ cod = eAnn e' in EApp cod e' (Var t n)) }) ts+   |                                                                                                                  ^^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/A/Eta.hs:69:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘ηM’:+        Patterns of type ‘E (T ())’ not matched:+            Let _ _ _+            Def _ _ _+            Dfn _ _+            ResVar _ _+            ...+   |+69 | ηM e@FLit{}                = pure e+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/I.hs:62:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘iM’:+        Patterns of type ‘E (T ())’ not matched: Id _ _+   |+62 | iM e@Builtin{} = pure e+   | ^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/I.hs:91:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘bM’:+        Patterns of type ‘E (T ())’ not matched:+            Let _ _ _+            Def _ _ _+   |+91 | bM e@Builtin{} = pure e+   | ^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:15:58: warning: [GHC-38856] [-Wunused-imports]+    The import of ‘foldl1'’ from module ‘Data.List’ is redundant+   |+15 | import           Data.List                        (find, foldl1', scanl')+   |                                                          ^^^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:26:18: warning: [GHC-40910] [-Wunused-top-binds]+    Defined but not used: record field of CSt ‘tempU’+   |+26 | data CSt = CSt { tempU       :: !Int+   |                  ^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:27:18: warning: [GHC-40910] [-Wunused-top-binds]+    Defined but not used: record field of CSt ‘arrU’+   |+27 |                , arrU        :: !AL+   |                  ^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:28:18: warning: [GHC-40910] [-Wunused-top-binds]+    Defined but not used: record field of CSt ‘assemblerSt’+   |+28 |                , assemblerSt :: !Int+   |                  ^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:29:18: warning: [GHC-40910] [-Wunused-top-binds]+    Defined but not used: record field of CSt ‘label’+   |+29 |                , label       :: !Label+   |                  ^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:33:18: warning: [GHC-40910] [-Wunused-top-binds]+    Defined but not used: record field of CSt ‘d2vars’+   |+33 |                , d2vars      :: IM.IntMap F2Temp+   |                  ^^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:37:18: warning: [GHC-40910] [-Wunused-top-binds]+    Defined but not used: record field of CSt ‘mts’+   |+37 |                , mts         :: IM.IntMap Temp+   |                  ^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:96:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘bT’:+        Patterns of type ‘T a’ not matched:+            Li _+            TVar _+            Arrow _ _+            Ρ _ _+   |+96 | bT (P ts)=sum (bT<$>ts); bT F=8; bT I=8; bT B=1; bT Arr{}=8+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:226:5: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘go’:+        Patterns of type ‘E (T ())’, ‘[FTemp]’, ‘[Temp]’ not matched:+            (ALit _ _) _ _+            (Var _ _) _ _+            (Builtin _ _) _ _+            (EApp _ _ _) _ _+            ...+    |+226 |     go (Lam _ x@(Nm _ _ F) e) (fr:frs) rs = addD x fr *> go e frs rs+    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:227:79: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘bt’:+        Patterns of type ‘Temp’ not matched:+            ATemp _+            C0+            C1+            C2+            ...+    |+227 |     go (Lam _ x@(Nm _ _ B) e) frs (r:rs) = addB x (bt r) *> go e frs rs where bt (ITemp i)=BTemp i+    |                                                                               ^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:240:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘rtemp’:+        Patterns of type ‘T a’ not matched:+            Arr _ _+            Li _+            TVar _+            Arrow _ _+            ...+    |+240 | rtemp F=FT<$>nF; rtemp I=IT<$>nI; rtemp B=PT<$>nBT+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:252:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘hasS’:+        Patterns of type ‘E a’ not matched:+            ALit _ _+            ILit _ _+            BLit _ _+            Let _ _ _+            ...+    |+252 | hasS (Builtin _ b)     = bS b+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:261:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘write2’:+        Patterns of type ‘E (T ())’, ‘[F2Temp]’, ‘F2Temp’ not matched:+            (ALit _ _) (_:_) _+            (Var _ _) (_:_) _+            (Builtin _ _) (_:_) _+            (EApp _ _ _) (_:_) _+            ...+    |+261 | write2 (Lam _ x e) (v:vs) vret = addD2 x v *> write2 e vs vret+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:268:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘writeF’:+        Patterns of type ‘E (T ())’, ‘[Arg]’, ‘RT’ not matched:+            (ALit _ _) (_:_) _+            (Var _ _) (_:_) _+            (Builtin _ _) (_:_) _+            (EApp _ _ _) (_:_) _+            ...+    |+268 | writeF (Lam _ x e) (AA r l:rs) ret = addAVar x (l,r) *> writeF e rs ret+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:307:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘arg’:+        Patterns of type ‘T ()’, ‘Ix'd’ not matched: _ _+    |+307 | arg ty at | isR ty = do+    | ^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:315:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘rW’:+        Patterns of type ‘T ()’, ‘Ix'd’ not matched: _ _+    |+315 | rW ty at | isR ty = do+    | ^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:337:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘art’:+        Patterns of type ‘Arg’ not matched: AA _ _+    |+337 | art (IPA r)=IT r;art (FA r)=FT r; art (BA r)=PT r+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:406:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘codT’:+        Patterns of type ‘T ()’ not matched:+            Arr _ _+            F+            I+            B+            ...+    |+406 | codT (Arrow _ t@Arrow{}) = codT t; codT (Arrow _ t) = t+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:418:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘llet’:+        Patterns of type ‘(Nm (T ()), E (T ()))’ not matched:+            (_, _)+            (_, _)+    |+418 | llet (n,e') | isArr (eAnn e') = do+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:432:16: warning: [GHC-40910] [-Wunused-top-binds]+    Defined but not used: record field of AD ‘eigen’+    |+432 | data AD = AD { eigen :: !Temp, alabel :: !(Maybe AL), eit :: Maybe (T ())+    |                ^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:432:32: warning: [GHC-40910] [-Wunused-top-binds]+    Defined but not used: record field of AD ‘alabel’+    |+432 | data AD = AD { eigen :: !Temp, alabel :: !(Maybe AL), eit :: Maybe (T ())+    |                                ^^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:432:55: warning: [GHC-40910] [-Wunused-top-binds]+    Defined but not used: record field of AD ‘eit’+    |+432 | data AD = AD { eigen :: !Temp, alabel :: !(Maybe AL), eit :: Maybe (T ())+    |                                                       ^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:433:16: warning: [GHC-40910] [-Wunused-top-binds]+    Defined but not used: record field of AD ‘elemSz’+    |+433 |              , elemSz :: Maybe Int64+    |                ^^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:434:16: warning: [GHC-40910] [-Wunused-top-binds]+    Defined but not used: record field of AD ‘arrn’+    |+434 |              , arrn :: Maybe CE+    |                ^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:440:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘fill’:+        Patterns of type ‘E (T ())’, ‘AD’, ‘[RA]’ not matched:+            (ALit _ _) _ _+            (Var _ _) _ _+            (Lam _ _ _) _ _+            (ILit _ _) _ _+            ...+    |+440 | fill (Builtin (Arr sh F) Eye) (AD t lA _ _ _) [] | Just [i,_] <- staIx sh = do+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:440:1: warning: [GHC-61505]+    Pattern match checker ran into -fmax-pmcheck-models=30 limit, so+      • Redundant clauses might not be reported at all+      • Redundant clauses might be reported as inaccessible+      • Patterns reported as unmatched might actually be matched+    Suggested fix:+      Increase the limit or resolve the warnings to suppress this message.+    |+440 | fill (Builtin (Arr sh F) Eye) (AD t lA _ _ _) [] | Just [i,_] <- staIx sh = do+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:502:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘afort’:+        Patterns of type ‘T a’, ‘CE’, ‘IRel’, ‘CE’,+                         ‘Temp -> [CS ()]’ not matched:+            F _ _ _ _+            I _ _ _ _+            B _ _ _ _+            (Li _) _ _ _ _+            ...+    |+502 | afort (Arr sh _) el c eu ss = do {i <- nI; pure (for sh i el c eu (ss i))}+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:622:5: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘w’:+        Patterns of type ‘T a’, ‘ArrAcc’, ‘RT’ not matched:+            _ _ (FT _)+            _ _ (PT _)+            _ _ (FT _)+            _ _ (PT _)+            ...+    |+622 |     w ty at tt      | isR ty = wt at tt+    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:750:9: warning: [GHC-62161] [-Wincomplete-uni-patterns]+    Pattern match(es) are non-exhaustive+    In a pattern binding:+        Patterns of type ‘[Temp]’ not matched:+            []+            []+            []+    |+750 |     let _:sstrides = sts; sss=init sssϵ+    |         ^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:788:9: warning: [GHC-62161] [-Wincomplete-uni-patterns]+    Pattern match(es) are non-exhaustive+    In a pattern binding:+        Patterns of type ‘[Temp]’ not matched:+            []+            []+            []+    |+788 |     let _:sstrides = sts; sss=init sssϵ+    |         ^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:827:9: warning: [GHC-62161] [-Wincomplete-uni-patterns]+    Pattern match(es) are non-exhaustive+    In a pattern binding:+        Patterns of type ‘[Temp]’ not matched:+            []+            []+            []+    |+827 |     let _:sstrides = sts; sss=init sssϵ+    |         ^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:857:9: warning: [GHC-62161] [-Wincomplete-uni-patterns]+    Pattern match(es) are non-exhaustive+    In a pattern binding:+        Patterns of type ‘[Temp]’ not matched:+            []+            []+            []+    |+857 |     let _:sstrides = sts; sss=init sssϵ+    |         ^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:968:21: warning: [GHC-62161] [-Wincomplete-uni-patterns]+    Pattern match(es) are non-exhaustive+    In an irrefutable pattern:+        Patterns of type ‘Maybe FTemp’ not matched:+            Nothing+            Nothing+            Nothing+    |+968 |     (prologue, et, ~(Just zs)) <- if re xSh then pure (id, FTmp z0, Nothing) else do {zs <- nF; pure ((MX () zs 0:), FTmp zs+FTmp z0, Just zs)}+    |                     ^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:1041:21: warning: [GHC-62161] [-Wincomplete-uni-patterns]+    Pattern match(es) are non-exhaustive+    In an irrefutable pattern:+        Patterns of type ‘Maybe FTemp’ not matched:+            Nothing+            Nothing+            Nothing+     |+1041 |     (prologue, et, ~(Just zs)) <- if ce bSh then pure (id, FTmp z0, Nothing) else do {zs <- nF; pure ((MX () zs 0:), FTmp zs+FTmp z0, Just zs)}+     |                     ^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:1303:9: warning: [GHC-62161] [-Wincomplete-uni-patterns]+    Pattern match(es) are non-exhaustive+    In a pattern binding:+        Patterns of type ‘[Temp]’ not matched:+            []+            []+            []+            []+     |+1303 |     let _:sstrides = sts; (_:dstrides) = std+     |         ^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:1303:27: warning: [GHC-62161] [-Wincomplete-uni-patterns]+    Pattern match(es) are non-exhaustive+    In a pattern binding:+        Patterns of type ‘[Temp]’ not matched:+            []+            []+            []+            []+     |+1303 |     let _:sstrides = sts; (_:dstrides) = std+     |                           ^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:1396:9: warning: [GHC-62161] [-Wincomplete-uni-patterns]+    Pattern match(es) are non-exhaustive+    In a pattern binding:+        Patterns of type ‘[Temp]’ not matched:+            []+            []+            []+     |+1396 |     let _:strides = sts; sss=init plS+     |         ^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:1482:17: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In a case alternative:+        Patterns of type ‘T ()’ not matched:+            Arr _ _+            Li _+            TVar _+            Arrow _ _+            ...+     |+1482 |         eCond = case ty of+     |                 ^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:1659:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘cond’:+        Patterns of type ‘E (T ())’, ‘E (T ())’, ‘E (T ())’,+                         ‘RT’ not matched:+            (ALit _ _) _ _ _+            (Var _ _) _ _ _+            (Builtin _ _) _ _ _+            (Lam _ _ _) _ _ _+            ...+     |+1659 | cond (EApp _ (EApp _ (Builtin (Arrow F _) op) c0) c1) e e1 (FT t) | Just cmp <- frel op, Just cfe <- mFEval e1 = do+     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:1810:17: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In a case alternative:+        Patterns of type ‘FBin’ not matched:+            FMinus+            FDiv+            FExp+     |+1810 |     let seed2 = case c0 of {FPlus -> MX2 () acc2 (ConstF (0,0)); FTimes -> MX2 () acc2 (ConstF (1,1)); FMax -> DS () acc2 acc; FMin -> DS () acc2 acc}+     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:1831:17: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In a case alternative:+        Patterns of type ‘FBin’ not matched:+            FMinus+            FDiv+            FExp+     |+1831 |     let seedO = case c of {FPlus -> MX2 () acc2 (ConstF (0,0)); FTimes -> MX2 () acc2 (ConstF (1,1)); FMax -> DS () acc2 acc; FMin -> DS () acc2 acc}+     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:1898:9: warning: [GHC-62161] [-Wincomplete-uni-patterns]+    Pattern match(es) are non-exhaustive+    In a pattern binding:+        Patterns of type ‘(Label, [Arg], RT)’ not matched:+            (_, [], _)+            (_, (_:_:_), _)+            (_, [_], (IT _))+            (_, [_], (PT _))+     |+1898 |     let (l, [a], FT r) = getT st f+     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/C/Trans.hs:1934:13: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In a case alternative:+        Patterns of type ‘T ()’ not matched:+            Li _+            TVar _+            Arrow _ _+            P _+            ...+     |+1934 |             case eAnn e of+     |             ^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/as/As.hs:26:15: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In a case alternative:+        Patterns of type ‘(String, String)’ not matched:+            ([], _)+            ((p:_), _) where p is not one of {'a'}+            (['a'], _)+            (('a':p:_), _) where p is not one of {'a'}+            ...+   |+26 |           exe=case (arch, os) of {("aarch64",_) -> "as"; (_,"linux") -> "aarch64-linux-gnu-as"}+   |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/as/As.hs:26:15: warning: [GHC-61505]+    Pattern match checker ran into -fmax-pmcheck-models=30 limit, so+      • Redundant clauses might not be reported at all+      • Redundant clauses might be reported as inaccessible+      • Patterns reported as unmatched might actually be matched+    Suggested fix:+      Increase the limit or resolve the warnings to suppress this message.+   |+26 |           exe=case (arch, os) of {("aarch64",_) -> "as"; (_,"linux") -> "aarch64-linux-gnu-as"}+   |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/src/Dbg.hs:82:11: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘zipS’:+        Patterns of type ‘[X86.X86 reg freg a]’,+                         ‘[BS.ByteString]’ not matched:+            [] (_:_)+            ((X86.IAddRR _ _ _):_) []+            ((X86.IAddRI _ _ _):_) []+            ((X86.ISubRR _ _ _):_) []+            ...+   |+82 |     where zipS [] []                 = []+   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/src/Dbg.hs:93:11: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘zipS’:+        Patterns of type ‘[Aarch64.AArch64 reg freg a]’,+                         ‘[BS.ByteString]’ not matched:+            [] (_:_)+            ((Aarch64.B _ _):_) []+            ((Aarch64.Blr _ _):_) []+            ((Aarch64.Bl _ _):_) []+            ...+   |+93 |     where zipS [] []                                    = []+   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/run/Main.hs:334:18: warning: [GHC-40910] [-Wunused-matches]+    Defined but not used: ‘mp’+    |+334 | freeAsm (sz, fp, mp) = freeFunPtr sz fp -- *> traverse_ free mp+    |                  ^^++/Users/vanessa/dev/haskell/apple/run/Main.hs:427:9: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘cb’:+        Patterns of type ‘a’ not matched: p where p is not one of {0, 1}+    |+427 |         cb 0=False; cb 1=True+    |         ^^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/run/Main.hs:441:21: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In a case alternative:+        Patterns of type ‘T ()’ not matched:+            Li _+            TVar _+            Ρ _ _+    |+441 |                     case eAnn e of+    |                     ^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/run/Main.hs:471:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘rSz’:+        Patterns of type ‘T a’ not matched:+            Li _+            TVar _+            A.Arrow _ _+            Ρ _ _+    |+471 | rSz A.B=1; rSz I=8; rSz A.F=8; rSz (P ts) = sum (rSz<$>ts); rSz Arr{}=8+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++/Users/vanessa/dev/haskell/apple/run/Main.hs:485:1: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘pR’:+        Patterns of type ‘T a’, ‘Ptr b’ not matched:+            (Arr _ _) _+            (Li _) _+            (TVar _) _+            (A.Arrow _ _) _+            ...+    |+485 | pR I p      = do {i <- peek (castPtr p :: Ptr Int64); pure (pretty i)}+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...++/Users/vanessa/dev/haskell/apple/run/Main.hs:554:35: warning: [GHC-62161] [-Wincomplete-patterns]+    Pattern match(es) are non-exhaustive+    In an equation for ‘sB’:+        Patterns of type ‘a’ not matched: p where p is not one of {1, 0}+    |+554 |                             where sB 1 = "#t"; sB 0 = "#f"+    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^++lib/E.chs:155:1: error: [GHC-03355]+    • Illegal foreign declaration: requires one of these back ends:+      native code generator, LLVM, compiling via C,+      compiling to JavaScript, or no code generated+    • When checking declaration:+        foreign export ccall "apple_compile" apple_compile+          :: Ptr JitCtx+             -> CString -> Ptr CSize -> Ptr (Ptr Word64) -> IO (Ptr Word8)+    |+155 | foreign export ccall apple_compile :: Ptr JitCtx -> CString -> Ptr CSize -> Ptr (Ptr Word64) -> IO (Ptr Word8)+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++lib/E.chs:156:1: error: [GHC-03355]+    • Illegal foreign declaration: requires one of these back ends:+      native code generator, LLVM, compiling via C,+      compiling to JavaScript, or no code generated+    • When checking declaration:+        foreign export ccall "apple_printty" apple_printty+          :: CString -> Ptr CString -> IO CString+    |+156 | foreign export ccall apple_printty :: CString -> Ptr CString -> IO CString+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++lib/E.chs:157:1: error: [GHC-03355]+    • Illegal foreign declaration: requires one of these back ends:+      native code generator, LLVM, compiling via C,+      compiling to JavaScript, or no code generated+    • When checking declaration:+        foreign export ccall "apple_dumpasm" apple_dumpasm+          :: CString -> Ptr CString -> IO CString+    |+157 | foreign export ccall apple_dumpasm :: CString -> Ptr CString -> IO CString+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++lib/E.chs:158:1: error: [GHC-03355]+    • Illegal foreign declaration: requires one of these back ends:+      native code generator, LLVM, compiling via C,+      compiling to JavaScript, or no code generated+    • When checking declaration:+        foreign export ccall "apple_dumpir" apple_dumpir+          :: CString -> Ptr CString -> IO CString+    |+158 | foreign export ccall apple_dumpir :: CString -> Ptr CString -> IO CString+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++lib/E.chs:159:1: error: [GHC-03355]+    • Illegal foreign declaration: requires one of these back ends:+      native code generator, LLVM, compiling via C,+      compiling to JavaScript, or no code generated+    • When checking declaration:+        foreign export ccall "apple_ty" apple_ty+          :: CString -> Ptr CString -> IO (Ptr FnTy)+    |+159 | foreign export ccall apple_ty :: CString -> Ptr CString -> IO (Ptr FnTy)+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^++lib/E.chs:160:1: error: [GHC-03355]+    • Illegal foreign declaration: requires one of these back ends:+      native code generator, LLVM, compiling via C,+      compiling to JavaScript, or no code generated+    • When checking declaration:+        foreign export ccall "apple_print_ts_sz" apple_print_ts_sz+          :: CString -> Ptr CSize -> Ptr CString -> IO CString+    |+160 | foreign export ccall apple_print_ts_sz :: CString -> Ptr CSize -> Ptr CString -> IO CString+    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+
+ test/data/ghc-pkg view
@@ -0,0 +1,2 @@+dynamic-library-dirs: /Users/vanessa/.ghcup/ghc/9.10.1/lib/ghc-9.10.1/lib/../lib/aarch64-osx-ghc-9.10.1+                      /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib
+ test/data/git-tags view
@@ -0,0 +1,247 @@+255a03163b32e9bfe0111724f516d65be98ea447	HEAD+a09198f36cb3481322221cea7f75c103e0427755	refs/heads/0.6+bb1536329896e6e211c3bafee7befb06d06fc856	refs/heads/0.8+c87e722e1df520053d2cbd41b32062aaf240f96e	refs/heads/0.8-dev+2cae36f4b6c5a82dd85b1f4f8d1a249f8017154b	refs/heads/0.9-dev+24d8ef6e8fdcc24f0b34cc3b810396a534b58e6c	refs/heads/1.0-dev+4251be9306a33f957678c4045e66b909f6e531e7	refs/heads/active-deactive-global-effects+dacf6f2fc3a44bf9a9c01f9d3db564a6bda8a77a	refs/heads/bus-mapping+61835bb4e68a5198375b5ba16978ab8959418522	refs/heads/bus-routing-per-synth+255a03163b32e9bfe0111724f516d65be98ea447	refs/heads/develop+c9576783e72dbd05decc454034aa1e14737c1997	refs/heads/event-based+0fe55fb0a65364431117a8eb545892708532983b	refs/heads/fix-start-end+88ae0cb11c60e3d3e3244c88a4a60738b4b9c3bf	refs/heads/long-soundfile-support+7abb62e89649daa1232b9cbd6427241868abd30e	refs/heads/master+b59c986f2080d7521206c97fdb152c7b7f49c5e7	refs/heads/pitch-samples+92c9a96fd6817e540f755435d56f97d51f93cd33	refs/heads/revert-84-monitor-pause+d62df267dc20064b7e2229915856671f30ed0cc5	refs/heads/steal-voices+3d833a5d3770224cc51d9f9ecfccc1fb793a28be	refs/heads/topic-add-interpret-from-tidal+9f4577a5e10c88dc57caa9693a468293ca28a9aa	refs/heads/topic-dj-filter+ed53d04849121b2ee6e6304f7603d27c1b78ba20	refs/heads/topic-documentation+5374117cb64e6d4f1645004b8d4da055a4eba87b	refs/heads/topic-dont-cut-at-start+93cb78819d6e9c5f027d0b8ebbfb9e2159698123	refs/heads/topic-events+958e454367df00be8b105e18131440511194780f	refs/heads/topic-events-multi+f6a0f388a9ffdd04ab37e478845a4788c781ee10	refs/heads/topic-fix-cutgroups-in-same-block+e068008dc99f54688fd2a10b41a2dd10cf5b2a6b	refs/heads/topic-fix-fade-in+e72c566e31840bf3f00cad729fc72d702b8817ce	refs/heads/topic-flotsam+29d0ca4b62e7838ad8843401ac33a0f8e29cba33	refs/heads/topic-global-effects-fix+a1a30e8b4d95e9ac5f15dd6d343d09de47e655c8	refs/heads/topic-improve-debug-synth+e46f4b1bd7e48c7bed84a4f76fcb53100f4f258c	refs/heads/topic-info+bfce630b86246bf69b1375bcd760150f47c8184b	refs/heads/topic-leslie-multichannel-fix+26d141348b5ee09ffb832e858256c58d976ccf3c	refs/heads/topic-make-dirt-a-proxy+d5888931ee9a14dea85e3fb8fca3894d7bb150be	refs/heads/topic-midinote+a529ace3700f02a2ebf9124f67043d6438a7def3	refs/heads/topic-net-responders+9211cadc580d254e5fd313e05051c8d63f22f76c	refs/heads/topic-nrpn-fix+89b61d3e6e3ae28ce5e6b656fbc3d5be97cee97a	refs/heads/topic-numWireBufs+f15a1b5d87914909c57bda51315017fe1bba8aca	refs/heads/topic-onsets+cda0b347b1f0b2b8179da252315e5f7bf8c8829b	refs/heads/topic-panic+62ba18c2eb26e06bf214ece26fc6e58a31bb1f52	refs/heads/topic-panning+bd57d794366cc454b8abd917847e0cea1821f616	refs/heads/topic-parameter-syntax+1058ffc2cdca95c664beffa64c3f1364c44160c6	refs/heads/topic-performance-improvements+9a104d423f4f24396768892a48de9fae0ab36c78	refs/heads/topic-pitch-model+d7202e21a65a038c4fe580dce617512715ec5fc1	refs/heads/topic-polymidi+b840bf992a38a5254be12b3474a550200a6ecc13	refs/heads/topic-protect-orbit-wrap+aef5ed0eda92f43d145787b02332fc0ea0ab594a	refs/heads/topic-read-on-demand+8ee7e9941c520681cda57b322d5f6ea57701a0c6	refs/heads/topic-report-missing-sound+86a6755838dca8a552e10bac61905b305f7427c1	refs/heads/topic-resolve-resume+6b56f027133354b69821bef6c7777ab2d1f31692	refs/heads/topic-rms+eaa02aa3346bc277800db4e4f0348badb9ee6e50	refs/heads/topic-safety-limit+00ca6b53e9309cc7600f9f5a91212656213cc993	refs/heads/topic-send-immediate+7b5d7000a85cc56b69059449105da51973e0c910	refs/heads/topic-separate-effects+7b7d32b41e5c87547a0dc8da12402755b68ad0a2	refs/heads/topic-simplify-cuts+133f11cd4a232847b318daeceae0fbd636c4f6ed	refs/heads/topic-sort-files+041010da044501cf96b7c6a07164c9eacc12d78d	refs/heads/topic-tanh+398bd5194f574c856a1ae8f5521ffea15bd1cf7c	refs/heads/topic-test-midi-queue+f8a9dbec469ab45633be291ed363c814456d1f29	refs/heads/topic-test-pause-change+f24d3adc88224505e59db01f83b1746d0062f36c	refs/heads/topic-twelve-orbits+165d96ef3fe5c7b7a1ba4d00762d2e3321f916cd	refs/heads/topic/bypassable-limiter+f751779a8fdb181415d04cdf8cf308b79609fc7d	refs/heads/topic/clarify-hacks+3a16d5ba7f314ad1476678377ceaabcab8482880	refs/heads/topic/efficient-note-event+16495f1097d2c22f91dd5d2e5668e4b05c8aca79	refs/heads/topic/fix-duplicate-instances+47ac2d94093333092c43c83193e20a6298349955	refs/heads/topic/fix-midi-gain+fc263c0974b95f520684bc120ddf6dbc1384d931	refs/heads/topic/more-orbits+aef50b9d7881804b3878d01e1aed2b85a469c7a3	refs/heads/topic/part-time-error+30f11d0b3b577648b68312fd8e4ae5ac98e3e607	refs/heads/topic/speed-scaled-freqs+1c7ccb43061e2e50fa0f630e8d74f8b137910ca3	refs/heads/topic/support-gain-in-controlbus+ac3e7edceb786b2cf190ffb98c3f2f41e73a30bb	refs/heads/use-speed-for-note+9418b2405af27eee729b31c999870f9fec870601	refs/heads/yaxu-patch-1+224e70dbfb78f05efeef05b90049e589f2d0a4f8	refs/pull/101/head+7fc2225f122c7c879815b55d03e4a519bca5ac35	refs/pull/102/head+096827026a65e8204026fcecf61e3e5daaa5632b	refs/pull/103/head+86a6755838dca8a552e10bac61905b305f7427c1	refs/pull/110/head+81d08873b7b1c63c7ad4f0e59670097cc054e3de	refs/pull/112/head+1054ae9c196bf00d7a8883f33923f2d54f148784	refs/pull/113/head+811f7381140e0490563b87fcc968fb6ebe84243a	refs/pull/116/head+ee4f276ba13576d8d2facc74779ab886715adb18	refs/pull/118/head+9f4577a5e10c88dc57caa9693a468293ca28a9aa	refs/pull/119/head+ed53d04849121b2ee6e6304f7603d27c1b78ba20	refs/pull/12/head+61835bb4e68a5198375b5ba16978ab8959418522	refs/pull/121/head+604ab6555a41cfd0fb878726b9f6674bfa474b71	refs/pull/124/head+d8f61f97b5252a445678b11197b5c6f68202a588	refs/pull/126/head+6331841b879d3c571004733fd7d76a08e240d301	refs/pull/127/head+887e1c5566abe5c75d887b21b67c4af4710af440	refs/pull/128/head+b6b8541910f42a1a4dfd48b934a5bcc321e160c7	refs/pull/13/head+89ed2c2bea5bafaf7d3810fb337f4685d7af14df	refs/pull/13/merge+9d5cdc98fed515ced90bb54585e25888cf94f7b0	refs/pull/132/head+fc263c0974b95f520684bc120ddf6dbc1384d931	refs/pull/135/head+44590b56ad4b5b6dc22547ff18fb70d364017053	refs/pull/136/head+59e3d276556271055dfd3b1ea494f4f7cad86b0b	refs/pull/138/head+44ba6c0ae6653009c5c0078336f60cbaabe52bcb	refs/pull/139/head+689e7b1a25565f1ab35d097b9d336feec81885d5	refs/pull/14/head+f24d3adc88224505e59db01f83b1746d0062f36c	refs/pull/142/head+b60e9b9fdf9c752e07d7581313f9ad99f6e3e98b	refs/pull/144/head+ad3aa714dce9c7c6bc1bbc5b84a262e42c56ec6d	refs/pull/145/head+11287b81916321c7020c508dfa1c50ad3ba443cc	refs/pull/149/head+01f763ea8507da528b552b1e59b4f1dc1494ad7d	refs/pull/15/head+e2d4619a44f3a946e9efcf04c22c6292c0a7c26b	refs/pull/150/head+98244fa891a62456113276336dd6709e070389f7	refs/pull/153/head+64c833a23ec8385acbadccfb3c8d325d1f521326	refs/pull/155/head+ed252b0080827b380dda9eeda737a5d284ee49b1	refs/pull/158/head+6da4af3acf0ba77d30833edd4bf69e972522d541	refs/pull/159/head+1058ffc2cdca95c664beffa64c3f1364c44160c6	refs/pull/16/head+85a875456e4eae3bc2c6ce5f8e8fc3c8daa7e763	refs/pull/16/merge+ee65bf8250c4c5debbd274474bd443291f6dd4e4	refs/pull/160/head+7fcd6cf4a23e26dac9d55e5190a43db2e7f57883	refs/pull/161/head+9211cadc580d254e5fd313e05051c8d63f22f76c	refs/pull/162/head+3a16d5ba7f314ad1476678377ceaabcab8482880	refs/pull/163/head+7013c2f70b85f1bbf8ab9af5f676ba6c4f33f15d	refs/pull/164/head+727203c9efa1e122a036ad4f50c57dd71004d909	refs/pull/165/head+eaa02aa3346bc277800db4e4f0348badb9ee6e50	refs/pull/167/head+d7202e21a65a038c4fe580dce617512715ec5fc1	refs/pull/168/head+9f139ae162595334b437fb73ca33f90ccf784fb2	refs/pull/169/head+f185b73c5a48fa8d9bd9e2577e9b7909a3708488	refs/pull/17/head+dd7eaf0bd53a2901c1a2ce45ab4b0d41fb25e1be	refs/pull/170/head+66f4db681c13b57bca1e9361b8cfa036f709ab96	refs/pull/173/head+9418b2405af27eee729b31c999870f9fec870601	refs/pull/174/head+b72f26384b4ac06187b8ff24678b2892cfaa187f	refs/pull/175/head+6c083d9b935273f0cd6c006f360f39c4be3db058	refs/pull/177/head+8af2da154cfb3aabbeeb1c8a678f7607ce0f26bc	refs/pull/179/head+f3f71c2385bd5057ba9ffbc34f0253018784482e	refs/pull/18/head+6ddd0dfab5a05fbe6d6b62fba99151903e0f1ee9	refs/pull/181/head+2f31f42be32113d0add2a6f8e573e7ee4ca2765d	refs/pull/183/head+ab8943454fad9d57d7605137f87277b94c597de3	refs/pull/184/head+d5888931ee9a14dea85e3fb8fca3894d7bb150be	refs/pull/188/head+89b61d3e6e3ae28ce5e6b656fbc3d5be97cee97a	refs/pull/189/head+71d404e9e4342f6bf2c8a82244997b57b6f361b1	refs/pull/19/head+439960c38a47c73aa0a83f5c5077f8ec1ae52cb2	refs/pull/191/head+cda0b347b1f0b2b8179da252315e5f7bf8c8829b	refs/pull/197/head+7758c69a2cb51abfa919c6359976664ab1220f90	refs/pull/198/head+feda26f6e022b088659c0fa73c30c42c0d839732	refs/pull/2/head+e6f6e5ac775601058e645ef8ff71b0e4883ab496	refs/pull/20/head+8ee7e9941c520681cda57b322d5f6ea57701a0c6	refs/pull/201/head+6ce62d7e1859aed96f94e13d2f9bdc7c63882e9b	refs/pull/202/head+e46f4b1bd7e48c7bed84a4f76fcb53100f4f258c	refs/pull/203/head+c53a440e0c8f9c029f07bc699e635b5533c73bdf	refs/pull/204/head+377da63e3fd95c4e11050c64ee4b71fae3279ea8	refs/pull/206/head+0fe55fb0a65364431117a8eb545892708532983b	refs/pull/208/head+fff72f1b75c521222f460fff7bb58f625a3c396f	refs/pull/209/head+f202b2744969bf2e6f8887706938ada32be88a63	refs/pull/21/head+8abea7d526d086ad7a85600261128a8c35b1fed2	refs/pull/21/merge+ad0b57959a276f5288f274d5100e8045cb37a281	refs/pull/210/head+8c99aab75b1c8767026ea70075dafde48f023a4d	refs/pull/211/head+2963c11e90b43a5ecd22a457c07b9aa74f11f04c	refs/pull/213/head+1ce46fea49bb6f028e31f1ac723df86fed203bce	refs/pull/214/head+a156ffe6c5964fe8b4f2b069c4b668b707248d6d	refs/pull/215/head+dacf6f2fc3a44bf9a9c01f9d3db564a6bda8a77a	refs/pull/218/head+165d96ef3fe5c7b7a1ba4d00762d2e3321f916cd	refs/pull/219/head+d010665888069ebac63d3e45c8486f5fec32e121	refs/pull/220/head+4f4adc9b07c255108d146695038c5e83dce9292d	refs/pull/221/head+5cfaae0a77302e4c68566e0d85d8d6ab2a645114	refs/pull/224/head+c2ad95e1c77ca5e4b2fb5d913c8e0acfc9c78261	refs/pull/225/head+1c7ccb43061e2e50fa0f630e8d74f8b137910ca3	refs/pull/227/head+3b08dde10096221811f0644edf2bf1775311112e	refs/pull/228/head+26dba058c35836440f271b7cf12b7cccf7b7e076	refs/pull/229/head+d281b6daba5ef843dcbaa5947a7b1129807fec62	refs/pull/232/head+a529ace3700f02a2ebf9124f67043d6438a7def3	refs/pull/234/head+47ac2d94093333092c43c83193e20a6298349955	refs/pull/236/head+0aa5de5f67b5d52cbb6fbedd1a7a821a533e9910	refs/pull/239/head+8b6525fb5eaf36b101acf129f81c6c4489252f54	refs/pull/241/head+30f11d0b3b577648b68312fd8e4ae5ac98e3e607	refs/pull/244/head+16495f1097d2c22f91dd5d2e5668e4b05c8aca79	refs/pull/246/head+f97aa459da226df1f66113bb3136d1a03f2045bf	refs/pull/247/head+a1a30e8b4d95e9ac5f15dd6d343d09de47e655c8	refs/pull/248/head+c677681404849caefd6145b23f7918b5fe594aaa	refs/pull/25/head+7b7d32b41e5c87547a0dc8da12402755b68ad0a2	refs/pull/252/head+133f11cd4a232847b318daeceae0fbd636c4f6ed	refs/pull/257/head+2d01eb4828dc2e50119b22c1623f8326baf76bf3	refs/pull/26/head+f751779a8fdb181415d04cdf8cf308b79609fc7d	refs/pull/260/head+547c2ad1c0490a2a0d8fd79cd4a10099602a8f19	refs/pull/261/head+1d641e82f88e26412d8f1f7edd26849c3def60a7	refs/pull/262/head+a24f6f9143b3d2b192864b43a6dbe18a08a41ade	refs/pull/262/merge+bd1aa9fdcdc163c88d45d25ccb8e4b7b8c5e8f74	refs/pull/272/head+8d958f50a82889d2c092db26dad9a20b4df4d32c	refs/pull/274/head+f8a9dbec469ab45633be291ed363c814456d1f29	refs/pull/278/head+05f20eddc270d1fb33d8adad97ebf81fd8846aae	refs/pull/28/head+f9440cff90a23e05139e173126172c3920bca489	refs/pull/280/head+f6a0f388a9ffdd04ab37e478845a4788c781ee10	refs/pull/284/head+fdce4ed2886175344a911383e27ec504b9e9d674	refs/pull/285/head+e72c566e31840bf3f00cad729fc72d702b8817ce	refs/pull/287/head+f3e9c73612b8fa8ce6ef8b65e59999ecc6778521	refs/pull/288/head+041010da044501cf96b7c6a07164c9eacc12d78d	refs/pull/289/head+e40bda35e6293d7cf6771acea4f5153d63013583	refs/pull/289/merge+fba19dac568c4be97c246b16e80caee0c52d03f2	refs/pull/291/head+bd57d794366cc454b8abd917847e0cea1821f616	refs/pull/292/head+a614eb4e08c1107107a2dda2d1c5c360f93b5839	refs/pull/294/head+978c492805e3ac344453b09569b1041ef1ffc092	refs/pull/295/head+50a518638d61bd1972e7868bfbff5fe25ab2ca2b	refs/pull/298/head+1204846ca36493d153236df60ff6419b14d9f21a	refs/pull/3/head+b840bf992a38a5254be12b3474a550200a6ecc13	refs/pull/30/head+d555f4ead229a26d05e79d64bb0aa4b8a162aa5d	refs/pull/30/merge+e9ab9d9ce3de1bf0f87b8977286ff919e2dfc8a1	refs/pull/303/head+63ea3827fd567613ae421d0cfb939eb6287fa752	refs/pull/303/merge+4251be9306a33f957678c4045e66b909f6e531e7	refs/pull/305/head+5374117cb64e6d4f1645004b8d4da055a4eba87b	refs/pull/306/head+fff4293595f34cf14ea912da3ade2a823009b85f	refs/pull/307/head+3d833a5d3770224cc51d9f9ecfccc1fb793a28be	refs/pull/31/head+3d833a5d3770224cc51d9f9ecfccc1fb793a28be	refs/pull/32/head+bc52ade4cafea81fbc06b81218b1835041d02642	refs/pull/33/head+9ee02c73f5f56018f6f273f06211794d520d5ff3	refs/pull/34/head+3299251b6947959b07d3cba1907619af0822e678	refs/pull/35/head+075d02975f01c780423950d46aa66d8dc84af247	refs/pull/4/head+62ba18c2eb26e06bf214ece26fc6e58a31bb1f52	refs/pull/40/head+9bb038a4a36c144de450fddcb5c1b55a9ff5a56a	refs/pull/42/head+c5e2bda989a29b9319fe54683808cb8071fa55a4	refs/pull/43/head+f7b6308851d9f400c294cc48ac502ca1aeadecbe	refs/pull/44/head+45367bab40c65efd11999522879fa416217441a0	refs/pull/46/head+b57b964566fe04af4029bec3ad7190353fc513ac	refs/pull/47/head+cd85237c44a478532a00b32dd910d2afea19e01c	refs/pull/47/merge+bddedf459709ec9aa3349a7dea46d7d2973fd4d9	refs/pull/49/head+9685f9ffbbd0b44ca97b857ec7c8190ab54e0237	refs/pull/5/head+29d0ca4b62e7838ad8843401ac33a0f8e29cba33	refs/pull/50/head+bfce630b86246bf69b1375bcd760150f47c8184b	refs/pull/51/head+1c02393d1dc37e968b6b26730baf1b31f75ec99e	refs/pull/52/head+886b1887d7d0c2c384fc474e9c08e1c67e989b4c	refs/pull/52/merge+2a036248321924fcaa4ed950d28fbbceab1b4223	refs/pull/53/head+3e06977baaa856e57d23e7485a6fcde0112794be	refs/pull/55/head+f5bccbc1eee4d32ebc7ef9295dc604a4c34d0a72	refs/pull/55/merge+e083f542a36b413e57ca5e969e44c7e42f56e6d4	refs/pull/56/head+b57b964566fe04af4029bec3ad7190353fc513ac	refs/pull/57/head+defb5d89e25fcf3dbb8f3621ea3d6968038de92d	refs/pull/58/head+7c791c5cd2c14d866750e47bcf4e8a1daaba3baf	refs/pull/6/head+37aa08500e00f91903b16532b9f7e9e29275b664	refs/pull/60/head+ceae7e999539bead183d0e859b217e0a8627e2bf	refs/pull/62/head+ac3e7edceb786b2cf190ffb98c3f2f41e73a30bb	refs/pull/72/head+8419be2f71d400825620c0d941b78a342c492c97	refs/pull/76/head+15fec8fa9cf80abd50c6490ca72ac8d7e372c445	refs/pull/77/head+050dbd147c8d7c0101a50002a3839493979ce01f	refs/pull/77/merge+b59c986f2080d7521206c97fdb152c7b7f49c5e7	refs/pull/79/head+e068008dc99f54688fd2a10b41a2dd10cf5b2a6b	refs/pull/8/head+7b5d7000a85cc56b69059449105da51973e0c910	refs/pull/80/head+990885c3abd04ee1560096e38f858827840da262	refs/pull/82/head+95da7a724f7b99c8fed9c8f2a9772df610d57df2	refs/pull/84/head+92c9a96fd6817e540f755435d56f97d51f93cd33	refs/pull/85/head+60e0a5e222ae90aba72db586522f426d18825d11	refs/pull/9/head+2afd37ac745c380dd607a5bc68d0d46fb36491bd	refs/tags/0.9.1+753f4a174761d24f5bdd665bd8805e80f3575e06	refs/tags/1.0-alpha+b60e9b9fdf9c752e07d7581313f9ad99f6e3e98b	refs/tags/1.1.1+59d5f80fbc926110bbd1b93e08b12c17a051a9c5	refs/tags/v.1.7.3+85e10518539cc559542d3051eb87323e7b968fe9	refs/tags/v1.0+69514a476e4372bfab6bf432180c3bc4dc5da837	refs/tags/v1.1+b60e9b9fdf9c752e07d7581313f9ad99f6e3e98b	refs/tags/v1.1.1+9f139ae162595334b437fb73ca33f90ccf784fb2	refs/tags/v1.1.2+439960c38a47c73aa0a83f5c5077f8ec1ae52cb2	refs/tags/v1.1.3+4f4adc9b07c255108d146695038c5e83dce9292d	refs/tags/v1.7+c2ad95e1c77ca5e4b2fb5d913c8e0acfc9c78261	refs/tags/v1.7.1+7abb62e89649daa1232b9cbd6427241868abd30e	refs/tags/v1.7.2+7e245e87f8f08a3d55e33a360bc97912f32fe69b	refs/tags/v1.7.3+c7f32998572984705d340e7c1b9ed9ad998a39b6	refs/tags/v1.7.4
+ test/data/ls view
@@ -0,0 +1,30 @@+total 216+-rw-r--r--   1 vanessa  staff   4375 Oct 30 17:58 CHANGELOG.md+-rw-r--r--@  1 vanessa  staff  34523 Mar  2  2024 COPYING+-rw-r--r--   1 vanessa  staff    111 Nov 17 07:43 DESIGN.md+-rw-r--r--   1 vanessa  staff   7208 Nov 17 09:30 EXAMPLES.md+-rw-r--r--   1 vanessa  staff    133 Nov  7 11:27 HASKELL-EXAMPLES.md+-rw-r--r--@  1 vanessa  staff    673 Mar  2  2024 LICENSE+-rw-r--r--   1 vanessa  staff   4381 Oct 29 16:18 Makefile+-rw-r--r--   1 vanessa  staff   2620 Oct 30 22:45 README.md+-rw-r--r--   1 vanessa  staff   6564 Oct 30 15:59 ROSETTA.md+-rw-r--r--   1 vanessa  staff   6067 Nov 17 09:14 TODO.md+drwxr-xr-x   3 vanessa  staff     96 Oct 11 12:38 bash+drwxr-xr-x   4 vanessa  staff    128 Nov 17 18:31 bench+-rw-r--r--   1 vanessa  staff    251 Nov 17 09:14 cabal.project+-rw-r--r--   1 vanessa  staff     22 Oct 18 08:32 cabal.project.local+drwxr-xr-x   4 vanessa  staff    128 Oct  5 15:27 csv+drwxr-xr-x   7 vanessa  staff    224 Nov 17 18:47 doc+drwxr-xr-x   4 vanessa  staff    128 Nov 17 09:14 docs+drwxr-xr-x  55 vanessa  staff   1760 Nov 17 14:00 examples+-rw-r--r--   1 vanessa  staff   3909 Nov 17 18:44 jacinda.cabal+drwxr-xr-x  12 vanessa  staff    384 Oct 29 16:18 lib+drwxr-xr-x   4 vanessa  staff    128 Nov 17 13:58 man+drwxr-xr-x   3 vanessa  staff     96 Oct 24 11:43 prelude+drwxr-xr-x  19 vanessa  staff    608 Nov 17 18:40 src+drwxr-xr-x   6 vanessa  staff    192 Nov 17 18:42 test+drwxr-xr-x   7 vanessa  staff    224 Nov 17 09:14 tex+drwxr-xr-x   7 vanessa  staff    224 Nov 17 10:16 vscode+-rw-r--r--   1 vanessa  staff    252 Oct 23 23:55 weeder.toml+drwxr-xr-x   3 vanessa  staff     96 Nov 17 09:31 x+drwxr-xr-x   3 vanessa  staff     96 Nov 11 10:46 zsh
+ test/data/otool view
@@ -0,0 +1,311 @@+libapple.dylib:+Load command 0+      cmd LC_SEGMENT_64+  cmdsize 472+  segname __TEXT+   vmaddr 0x0000000000000000+   vmsize 0x0000000000014000+  fileoff 0+ filesize 81920+  maxprot 0x00000005+ initprot 0x00000005+   nsects 5+    flags 0x0+Section+  sectname __text+   segname __TEXT+      addr 0x0000000000009c88+      size 0x0000000000009b44+    offset 40072+     align 2^3 (8)+    reloff 0+    nreloc 0+     flags 0x80000400+ reserved1 0+ reserved2 0+Section+  sectname __stubs+   segname __TEXT+      addr 0x00000000000137cc+      size 0x000000000000021c+    offset 79820+     align 2^2 (4)+    reloff 0+    nreloc 0+     flags 0x80000408+ reserved1 0 (index into indirect symbol table)+ reserved2 12 (size of stubs)+Section+  sectname __stub_helper+   segname __TEXT+      addr 0x00000000000139e8+      size 0x0000000000000234+    offset 80360+     align 2^2 (4)+    reloff 0+    nreloc 0+     flags 0x80000400+ reserved1 0+ reserved2 0+Section+  sectname __cstring+   segname __TEXT+      addr 0x0000000000013c20+      size 0x000000000000036c+    offset 80928+     align 2^3 (8)+    reloff 0+    nreloc 0+     flags 0x00000002+ reserved1 0+ reserved2 0+Section+  sectname __unwind_info+   segname __TEXT+      addr 0x0000000000013f8c+      size 0x0000000000000070+    offset 81804+     align 2^2 (4)+    reloff 0+    nreloc 0+     flags 0x00000000+ reserved1 0+ reserved2 0+Load command 1+      cmd LC_SEGMENT_64+  cmdsize 312+  segname __DATA_CONST+   vmaddr 0x0000000000014000+   vmsize 0x0000000000004000+  fileoff 81920+ filesize 16384+  maxprot 0x00000003+ initprot 0x00000003+   nsects 3+    flags 0x10+Section+  sectname __got+   segname __DATA_CONST+      addr 0x0000000000014000+      size 0x00000000000000f0+    offset 81920+     align 2^3 (8)+    reloff 0+    nreloc 0+     flags 0x00000006+ reserved1 45 (index into indirect symbol table)+ reserved2 0+Section+  sectname __mod_init_func+   segname __DATA_CONST+      addr 0x00000000000140f0+      size 0x0000000000000008+    offset 82160+     align 2^3 (8)+    reloff 0+    nreloc 0+     flags 0x00000009+ reserved1 0+ reserved2 0+Section+  sectname __const+   segname __DATA_CONST+      addr 0x00000000000140f8+      size 0x0000000000000030+    offset 82168+     align 2^3 (8)+    reloff 0+    nreloc 0+     flags 0x00000000+ reserved1 0+ reserved2 0+Load command 2+      cmd LC_SEGMENT_64+  cmdsize 232+  segname __DATA+   vmaddr 0x0000000000018000+   vmsize 0x0000000000004000+  fileoff 98304+ filesize 16384+  maxprot 0x00000003+ initprot 0x00000003+   nsects 2+    flags 0x0+Section+  sectname __la_symbol_ptr+   segname __DATA+      addr 0x0000000000018000+      size 0x0000000000000168+    offset 98304+     align 2^3 (8)+    reloff 0+    nreloc 0+     flags 0x00000007+ reserved1 75 (index into indirect symbol table)+ reserved2 0+Section+  sectname __data+   segname __DATA+      addr 0x0000000000018168+      size 0x0000000000001400+    offset 98664+     align 2^3 (8)+    reloff 0+    nreloc 0+     flags 0x00000000+ reserved1 0+ reserved2 0+Load command 3+      cmd LC_SEGMENT_64+  cmdsize 72+  segname __LINKEDIT+   vmaddr 0x000000000001c000+   vmsize 0x000000000000c000+  fileoff 114688+ filesize 47152+  maxprot 0x00000001+ initprot 0x00000001+   nsects 0+    flags 0x0+Load command 4+          cmd LC_ID_DYLIB+      cmdsize 48+         name @rpath/libapple.dylib (offset 24)+   time stamp 1 Wed Dec 31 19:00:01 1969+      current version 0.0.0+compatibility version 0.0.0+Load command 5+            cmd LC_DYLD_INFO_ONLY+        cmdsize 48+     rebase_off 114688+    rebase_size 280+       bind_off 114968+      bind_size 3688+  weak_bind_off 0+ weak_bind_size 0+  lazy_bind_off 118656+ lazy_bind_size 1832+     export_off 120488+    export_size 3760+Load command 6+     cmd LC_SYMTAB+ cmdsize 24+  symoff 124720+   nsyms 749+  stroff 137184+ strsize 23240+Load command 7+            cmd LC_DYSYMTAB+        cmdsize 80+      ilocalsym 0+      nlocalsym 410+     iextdefsym 410+     nextdefsym 154+      iundefsym 564+      nundefsym 185+         tocoff 0+           ntoc 0+      modtaboff 0+        nmodtab 0+   extrefsymoff 0+    nextrefsyms 0+ indirectsymoff 136704+  nindirectsyms 120+      extreloff 0+        nextrel 0+      locreloff 0+        nlocrel 0+Load command 8+     cmd LC_UUID+ cmdsize 24+    uuid AFCD0F4E-6BD9-3D32-A26E-B7FB159EC3EA+Load command 9+      cmd LC_BUILD_VERSION+  cmdsize 32+ platform 1+    minos 15.0+      sdk 15.1+   ntools 1+     tool 3+  version 1115.7.3+Load command 10+      cmd LC_SOURCE_VERSION+  cmdsize 16+  version 0.0+Load command 11+          cmd LC_LOAD_DYLIB+      cmdsize 80+         name @rpath/libHSapple-0.3.0.0-inplace-ghc9.10.1.dylib (offset 24)+   time stamp 2 Wed Dec 31 19:00:02 1969+      current version 0.0.0+compatibility version 0.0.0+Load command 12+          cmd LC_LOAD_DYLIB+      cmdsize 80+         name @rpath/libHSbytestring-0.12.1.0-5f32-ghc9.10.1.dylib (offset 24)+   time stamp 2 Wed Dec 31 19:00:02 1969+      current version 0.0.0+compatibility version 0.0.0+Load command 13+          cmd LC_LOAD_DYLIB+      cmdsize 80+         name @rpath/libHSghc-internal-9.1001.0-4685-ghc9.10.1.dylib (offset 24)+   time stamp 2 Wed Dec 31 19:00:02 1969+      current version 0.0.0+compatibility version 0.0.0+Load command 14+          cmd LC_LOAD_DYLIB+      cmdsize 80+         name @rpath/libHSghc-prim-0.11.0-e020-ghc9.10.1.dylib (offset 24)+   time stamp 2 Wed Dec 31 19:00:02 1969+      current version 0.0.0+compatibility version 0.0.0+Load command 15+          cmd LC_LOAD_DYLIB+      cmdsize 64+         name @rpath/libHSrts-1.0.2-ghc9.10.1.dylib (offset 24)+   time stamp 2 Wed Dec 31 19:00:02 1969+      current version 0.0.0+compatibility version 0.0.0+Load command 16+          cmd LC_LOAD_DYLIB+      cmdsize 56+         name /usr/lib/libSystem.B.dylib (offset 24)+   time stamp 2 Wed Dec 31 19:00:02 1969+      current version 1351.0.0+compatibility version 1.0.0+Load command 17+          cmd LC_RPATH+      cmdsize 112+         path /Users/vanessa/dev/haskell/apple/dist-newstyle/build/aarch64-osx/ghc-9.10.1/apple-0.3.0.0/build (offset 12)+Load command 18+          cmd LC_RPATH+      cmdsize 88+         path /Users/vanessa/.ghcup/ghc/9.10.1/lib/ghc-9.10.1/lib/aarch64-osx-ghc-9.10.1 (offset 12)+Load command 19+          cmd LC_RPATH+      cmdsize 72+         path /Users/vanessa/.local/state/cabal/store/ghc-9.10.1-64dd/lib (offset 12)+Load command 20+          cmd LC_RPATH+      cmdsize 80+         path /Library/Developer/CommandLineTools/SDKs/MacOSX15.1.sdk/usr/lib (offset 12)+Load command 21+      cmd LC_FUNCTION_STARTS+  cmdsize 16+  dataoff 124248+ datasize 472+Load command 22+      cmd LC_DATA_IN_CODE+  cmdsize 16+  dataoff 124720+ datasize 0+Load command 23+      cmd LC_CODE_SIGNATURE+  cmdsize 16+  dataoff 160432+ datasize 1408+Load command 24+          cmd LC_RPATH+      cmdsize 96+         path /Users/vanessa/.ghcup/ghc/9.10.1/lib/ghc-9.10.1/lib/../lib/aarch64-osx-ghc-9.10.1 (offset 12)
+ test/data/py-ver view
@@ -0,0 +1,1 @@+Python 3.13.0
+ test/data/python-site view
@@ -0,0 +1,11 @@+sys.path = [+    '/Users/vanessa/dev/haskell/jacinda',+    '/Library/Frameworks/Python.framework/Versions/3.13/lib/python313.zip',+    '/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13',+    '/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/lib-dynload',+    '/Users/vanessa/Library/Python/3.13/lib/python/site-packages',+    '/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages',+]+USER_BASE: '/Users/vanessa/Library/Python/3.13' (exists)+USER_SITE: '/Users/vanessa/Library/Python/3.13/lib/python/site-packages' (exists)+ENABLE_USER_SITE: True
+ test/data/r-version view
@@ -0,0 +1,10 @@+R version 4.4.2 (2024-10-31) -- "Pile of Leaves"+Copyright (C) 2024 The R Foundation for Statistical Computing+Platform: aarch64-apple-darwin20++R is free software and comes with ABSOLUTELY NO WARRANTY.+You are welcome to redistribute it under the terms of the+GNU General Public License versions 2 or 3.+For more information about these matters see+https://www.gnu.org/licenses/.+
+ test/data/readelf view
@@ -0,0 +1,10 @@+String dump of section '.comment':+  [     1]  GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0+  [    2c]  GHC 9.8.2+  [    36]  GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0+  [    61]  rustc version 1.76.0 (07dca489a 2024-02-04)+  [    8d]  GCC: (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0++String dump of section '.note.gnu.gold-version':+  [     c]  GNU+  [    10]  gold 1.16
+ test/data/trailingWhitespace view
@@ -0,0 +1,7 @@+aeval (EApp (Arr oSh _) (EApp _ (Builtin _ Map) f) xs) t a +    | tX@(Arr xSh _) <- eAnn xs+    , Just xRnk <- staRnk xSh+    , Just ((ta0, rnk0), (ta1, rnk1)) <- mAA (eAnn f)+    , Just sz0 <- nSz ta0, Just sz1 <- nSz ta1 = do+    y <- nI; y0 <- nI+    szR <- nI; szY <- nI
+ test/data/url view
@@ -0,0 +1,1 @@+https://soundcloud.com/shitzulover07/ayesha-erotica-vacation-bible-school?utm_medium=text&utm_campaign=social_sharing
+ test/examples/ghc-filt.jac view
@@ -0,0 +1,33 @@+:set rs:=/\n\n/;+:set fs:=/\n/;++fn present(rec) :=+  sprintf '%s %s\n%s\n' (rec->level . rec->loc . rec->msg);++fn annoying(err) :=+    err->code !~ /GHC-06201|unrecognised-warning-flags/+  & err->msg !~ /not used: record field/;++fn ignorance(err) :=+    err->code !~ /incomplete\-(uni\-)?patterns|GHC-61505/;++fn flib(x) :=+  x->msg !~ /Illegal foreign declaration/;++present¨+ignorance#.+flib#.+[x->level ~ /error/ || annoying(x)]#.+  {| let+      val file := option '' [x] (`1 ~* 1 /^([\p{Letter}\/\.\-\pNd]+)/)+      val msg := [x+'\n'+y]|>([x~/^\s+(\p{Letter}|•|_|\-|\.{3}|\(|\[|:)/]#.`$)+      val lc := option '' [':'+x] (`1 ~* 1 /(\d+:\d+):/)+      val span := option '' [sprintf '-%i' (#x)] (`* ~* 1 /(\^+)/)+      val code := drop# 1 (split `1 /(\[|\n|\])/)+    in+      #{ level .= (split `1 /( :|: )/).2+       ; code .= (+)|⍬ code+       ; loc .= sprintf '%s%s%s' (file.lc.span)+       ; file .= file; msg .= msg+       }+    end}
+ test/examples/weeder.jac view
@@ -0,0 +1,1 @@+[sprintf '   \'^E.%s\',' x]¨.?{|`0 ~* 1 /foreign export ccall ([^ ]*)/}
+ test/golden/compiler-version.out view
@@ -0,0 +1,6 @@+GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0+GHC 9.8.2+GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0+rustc version 1.76.0 (07dca489a 2024-02-04)+GCC: (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0+gold 1.16
+ test/golden/csv-col.out view
@@ -0,0 +1,6 @@+5.0+Escaped?+Contains double char "+newline lol++another
+ test/golden/csv-dedup.out view
@@ -0,0 +1,155 @@+Oranges, 1kg+Bananas, 1kg+Apples, 1kg+Kiwifruit, 1kg+Sultanas (supermarket only), 375g+Peaches - canned (supermarket only), 410g+Lettuce, 1kg+Broccoli, 1kg+Cabbage, 1kg+Tomatoes, 1kg+Carrots, 1kg+Mushrooms, 1kg+Potatoes, 1kg+Peas - frozen (supermarket only), 1kg+Beef steak - blade, 1kg+Beef steak - porterhouse/sirloin, 1kg+Beef - mince, 1kg+Pork - loin chops, 1kg+Lamb - chops, 1kg+Sausages, 1kg+Tuna - canned (supermarket only), 185g+Biscuits - chocolate, 200g+Breakfast biscuits, 1kg+Flour - white (supermarket only), 1.5kg+Rice - long grain, white (supermarket only), 1kg+Milk - standard homogenised, 2 litres+Yoghurt - flavoured, 150g pottle (supermarket only), pk of 6+Cheese - mild cheddar (supermarket only), 1kg+Eggs, dozen+Butter - salted, 500g+Sugar - white, 1.5kg+Chocolate - block (supermarket only), 250g+Spaghetti - canned, 420g+Coffee - instant, 100g+Tea bags (supermarket only), box of 100+Soft drink, 1.5 litres+Bottled water, 750ml+Fish and chips, One fish/chips+Meat pie - hot, each+Fruit juice - apple based (supermarket only), 3 litre+Potato crisps, 150g+Tomato sauce - canned, 560g+Bacon - middle rashers (supermarket only), 700g+Chicken breast, 1kg+Bread - white sliced loaf, 600g+Apricots, dried, 100g+Avocado, 1kg+Baby food, 110g+Beans, 1kg+Bread rolls, filled, hot, each+Bread rolls, hamburger buns, 6 pack+Breakfast drink, 250ml, 6 pack+Burger, with or without accompaniments, each+Soup, canned, 500g+Capsicums, green, else red, 1kg+Cauliflower, 1kg+Celery, 1kg+Cheese, camembert, 125g+Cheese, processed slices, 250g+Chicken, cooked, whole, No. 15 - Cheapest Available+Chicken pieces (excluding breast), boneless or bone in, 1kg+Chicken, whole, frozen, No. 15 - Cheapest Available+Chicken nuggets, frozen, 1kg+Chilled fruit juice or smoothies, 1 to 1.5 litre+Chocolate, boxed, loose, 250g+Chocolate blocks, convenience stores, 100g to 250g+Chocolate novelty bars, 50g+Corn flakes, 500g+Corned beef, fresh, chilled or frozen, 1kg+Courgettes, 1kg+Biscuits, savoury, crackers 250g+Cream, 300ml - Cheapest Available+Cucumber, 1kg+Dessert, frozen, 500g+Fruit flavoured drink powder, multipack of 3 to 5+Dried pasta, spaghetti or other type, 500g+Drinking chocolate, 300g+Milk, calcium enriched, 2 litres+Fish fillets, frozen, multipack, 500g+Flat bread - pita, tortilla, or other type+Eggs, free range, 6 pack+Fresh fish, 1kg+Fresh pasta, tortellini or other filled type, 300g+Fried and other takeaway chicken, 5 pieces+Berries, frozen, 500g+Grapes, green or red+Coffee, ground, 200g+Honey, clover, creamed, 500g+Hot chips, hot wedges+Hummus dip, 200g+Ice block, water based, each+Ice cream bought in bulk, 2 litres+Ice cream novelty, chocolate coated, each+Infant formula, 900g+Jam, 375g+Kumara, 1kg+Mandarins, 1kg+Mussels, marinated, 375g+Meat pies, chilled, 6 or 8 pack - Cheapest Available+Mixed vegetables, frozen, 1kg+Muesli, natural or toasted, 750g+Muesli/cereal bars, 200g+Mussels, live, 1kg+Sandwich, fresh or toasted+Olive oil, pure, not extra virgin or light, 1 litre+Onions, 1kg+Orange juice, not apple based, 1 litre - Cheapest Available+Packaged cake slice, 300g+Parsnips, 1kg+Packaged meal, pasta and sauce, 130g+Pasta sauces, tomato based, 500g+Pastry, frozen sheets, puff or flaky, 800g+Pears, 1kg+Pineapple, pieces, in juice or syrup, canned, 425g+Pineapple, 1kg+Biscuits, plain (eg arrowroot, ginger, malt, wine), 250g+Potato fries, frozen, 1kg+Prawns, frozen, 700g+Prepared meals, frozen, 340g+Pumpkin, 1kg+Roasting lamb and hogget, fresh, chilled or frozen, 1kg+Roasting pork, fresh, chilled or frozen, 1kg+Salad, leaf, packaged, 150g+Salami, 100g+Salmon, imported, pink, canned, unflavoured, 210g+Soft drinks, poured+Soft drinks, 600ml+Soy milk, unflavoured, 1 litre+Soy sauce, 300ml+Sports energy drinks, 350ml+Sports energy drinks, 250ml+Two minute noodles, multipack,5+Peanut butter, not salt free, 375g+Sweets, 200g+Cakes and biscuits, takeaway+Coffee, takeway, each+Cookie, takeaway, each+Takeaway muffins and buns, each+Pizza, takeaway+Salad, takeaway, vegetable, 1kg+Tea, takeaway+Tomatoes, canned, 400g+Vinegar, 750ml+Wheatmeal bread, sliced, 700g+Wholegrain bread, sliced, 700g+Fresh herbs, packaged, chilled+Olives, jar, 400g+Tea bags, flavoured or herbal, box of 25+Pizza, fresh or frozen, with any standard topping, each+Margarine/table spread, 500g+Mayonnaise, 380ml+Dried mixed herbs, 10g to 15g+Peanuts, blanched, salted, 250g+Ham, sliced or shaved, 1kg+Chewing gum, packet, each
+ test/golden/ctags.out view
@@ -0,0 +1,201 @@+real	lib/github.com/diku-dk/complex/complex.fut	call cursor(50,3)+complex	lib/github.com/diku-dk/complex/complex.fut	call cursor(51,3)+mk	lib/github.com/diku-dk/complex/complex.fut	call cursor(53,3)+mk_re	lib/github.com/diku-dk/complex/complex.fut	call cursor(54,3)+mk_im	lib/github.com/diku-dk/complex/complex.fut	call cursor(55,3)+conj	lib/github.com/diku-dk/complex/complex.fut	call cursor(57,3)+re	lib/github.com/diku-dk/complex/complex.fut	call cursor(58,3)+im	lib/github.com/diku-dk/complex/complex.fut	call cursor(59,3)+		call cursor(lib/github.com/diku-dk/complex/complex.fut,61)+-	lib/github.com/diku-dk/complex/complex.fut	call cursor(62,3)+*	lib/github.com/diku-dk/complex/complex.fut	call cursor(63,3)+/	lib/github.com/diku-dk/complex/complex.fut	call cursor(65,3)+mag	lib/github.com/diku-dk/complex/complex.fut	call cursor(69,3)+arg	lib/github.com/diku-dk/complex/complex.fut	call cursor(71,3)+sqrt	lib/github.com/diku-dk/complex/complex.fut	call cursor(74,3)+exp	lib/github.com/diku-dk/complex/complex.fut	call cursor(80,3)+log	lib/github.com/diku-dk/complex/complex.fut	call cursor(84,3)+real	lib/github.com/diku-dk/fft/stockham-radix-2.fut	call cursor(15,3)+complex	lib/github.com/diku-dk/fft/stockham-radix-2.fut	call cursor(16,3)+radix	lib/github.com/diku-dk/fft/stockham-radix-2.fut	call cursor(18,3)+fft_iteration	lib/github.com/diku-dk/fft/stockham-radix-2.fut	call cursor(20,3)+fft'	lib/github.com/diku-dk/fft/stockham-radix-2.fut	call cursor(30,3)+log2	lib/github.com/diku-dk/fft/stockham-radix-2.fut	call cursor(46,3)+is_power_of_2	lib/github.com/diku-dk/fft/stockham-radix-2.fut	call cursor(54,3)+generic_fft	lib/github.com/diku-dk/fft/stockham-radix-2.fut	call cursor(56,3)+fft	lib/github.com/diku-dk/fft/stockham-radix-2.fut	call cursor(62,3)+ifft	lib/github.com/diku-dk/fft/stockham-radix-2.fut	call cursor(65,3)+fft_re	lib/github.com/diku-dk/fft/stockham-radix-2.fut	call cursor(69,3)+ifft_re	lib/github.com/diku-dk/fft/stockham-radix-2.fut	call cursor(72,3)+generic_fft2	lib/github.com/diku-dk/fft/stockham-radix-2.fut	call cursor(75,3)+fft2	lib/github.com/diku-dk/fft/stockham-radix-2.fut	call cursor(84,3)+ifft2	lib/github.com/diku-dk/fft/stockham-radix-2.fut	call cursor(87,3)+fft2_re	lib/github.com/diku-dk/fft/stockham-radix-2.fut	call cursor(91,3)+ifft2_re	lib/github.com/diku-dk/fft/stockham-radix-2.fut	call cursor(94,3)+t	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(88,1)+A1C	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(90,1)+A1	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(91,1)+A2C	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(97,1)+A2	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(98,1)+RC	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(105,1)+R'	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(107,1)+SC	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(115,1)+S	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(117,1)+T1C	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(124,1)+T1	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(125,1)+T2C	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(130,1)+T2	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(131,1)+T3C	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(136,1)+T3	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(137,1)+UC	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(142,1)+U	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(143,1)+VC	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(149,1)+V	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(150,1)+WC	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(156,1)+W	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(157,1)+YMIN	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(164,1)+TWO52	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(165,1)+TWO58	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(166,1)+TINY	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(167,1)+TC	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(168,1)+TF	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(169,1)+TT	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(170,1)+evalpoly	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(172,1)+polyvalA1	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(175,1)+polyvalA2	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(176,1)+polyvalR	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(177,1)+polyvalS	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(178,1)+polyvalT1	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(179,1)+polyvalT2	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(180,1)+polyvalT3	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(181,1)+polyvalU	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(182,1)+polyvalV	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(183,1)+polyvalW	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(184,1)+sinpi	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(186,1)+case0	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(188,1)+case1	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(195,1)+case2	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(204,1)+gammaln	lib/github.com/diku-dk/statistics/gammaln.fut	call cursor(209,1)+radix_sort_step	lib/github.com/diku-dk/sorts/radix_sort.fut	call cursor(14,7)+radix_sort	lib/github.com/diku-dk/sorts/radix_sort.fut	call cursor(50,1)+with_indices	lib/github.com/diku-dk/sorts/radix_sort.fut	call cursor(55,1)+by_key_wrapper	lib/github.com/diku-dk/sorts/radix_sort.fut	call cursor(58,7)+radix_sort_by_key	lib/github.com/diku-dk/sorts/radix_sort.fut	call cursor(65,1)+radix_sort_int	lib/github.com/diku-dk/sorts/radix_sort.fut	call cursor(73,1)+radix_sort_int_by_key	lib/github.com/diku-dk/sorts/radix_sort.fut	call cursor(82,1)+radix_sort_float	lib/github.com/diku-dk/sorts/radix_sort.fut	call cursor(91,1)+radix_sort_float_by_key	lib/github.com/diku-dk/sorts/radix_sort.fut	call cursor(107,1)+segmented_scan	lib/github.com/diku-dk/segmented/segmented.fut	call cursor(7,1)+segmented_reduce	lib/github.com/diku-dk/segmented/segmented.fut	call cursor(20,1)+replicated_iota	lib/github.com/diku-dk/segmented/segmented.fut	call cursor(44,1)+segmented_iota	lib/github.com/diku-dk/segmented/segmented.fut	call cursor(58,1)+expand	lib/github.com/diku-dk/segmented/segmented.fut	call cursor(70,1)+expand_reduce	lib/github.com/diku-dk/segmented/segmented.fut	call cursor(84,1)+expand_outer_reduce	lib/github.com/diku-dk/segmented/segmented.fut	call cursor(97,1)+t	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(130,3)+argmax	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(135,3)+mean	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(140,3)+gmean	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(143,3)+hmean	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(146,3)+qmean	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(149,3)+pow2	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(152,3)+pow3	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(153,3)+pow4	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(154,3)+variance	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(156,3)+stddev	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(161,3)+covariance0	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(164,3)+covariance	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(168,3)+correlation	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(171,3)+covariance_matrix	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(174,3)+variance_pop	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(182,3)+stddev_pop	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(185,3)+skewness	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(188,3)+skewness_adj	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(194,3)+kurtosis	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(197,3)+kurtosis_excess	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(203,3)+median_sorted	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(206,3)+median	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(212,3)+quantile_sorted	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(214,3)+quantile	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(222,3)+mode_sorted	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(224,3)+mode	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(232,3)+regression_result	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(234,3)+regress	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(236,3)+gamma_big	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(248,3)+gamma	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(265,3)+gammaln	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(272,3)+dist	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(275,3)+poison_pmf	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(277,3)+fac	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(280,3)+poison_cdf	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(283,3)+normal_pdf	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(287,3)+erf	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(290,3)+normal_cdf	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(306,3)+normal_cdf_inv	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(309,3)+poison_cdf_inv	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(371,3)+mk_poison	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(373,3)+mk_normal	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(376,3)+mk_uniform	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(379,3)+pmf	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(387,3)+pdf	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(388,3)+cdf	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(389,3)+sample	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(391,3)+cum_norm_dist_pos	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(394,3)+cum_norm_dist	lib/github.com/diku-dk/statistics/statistics.fut	call cursor(405,3)+num	lib/github.com/vmchale/img-fut/img.fut	call cursor(79,3)+border	lib/github.com/vmchale/img-fut/img.fut	call cursor(81,3)+window	lib/github.com/vmchale/img-fut/img.fut	call cursor(83,9)+with_window_reflect	lib/github.com/vmchale/img-fut/img.fut	call cursor(87,3)+with_window_extended	lib/github.com/vmchale/img-fut/img.fut	call cursor(118,3)+with_window	lib/github.com/vmchale/img-fut/img.fut	call cursor(149,3)+maximum_2d	lib/github.com/vmchale/img-fut/img.fut	call cursor(154,3)+minimum_2d	lib/github.com/vmchale/img-fut/img.fut	call cursor(157,3)+maximum_filter	lib/github.com/vmchale/img-fut/img.fut	call cursor(161,3)+minimum_filter	lib/github.com/vmchale/img-fut/img.fut	call cursor(164,3)+matmul	lib/github.com/vmchale/img-fut/img.fut	call cursor(167,3)+correlate	lib/github.com/vmchale/img-fut/img.fut	call cursor(173,3)+convolve	lib/github.com/vmchale/img-fut/img.fut	call cursor(185,3)+ez_resize	lib/github.com/vmchale/img-fut/img.fut	call cursor(192,3)+crop	lib/github.com/vmchale/img-fut/img.fut	call cursor(200,3)+num	lib/github.com/vmchale/img-fut/img.fut	call cursor(210,3)+real	lib/github.com/vmchale/img-fut/img.fut	call cursor(211,3)+border	lib/github.com/vmchale/img-fut/img.fut	call cursor(217,3)+with_window	lib/github.com/vmchale/img-fut/img.fut	call cursor(219,3)+maximum_filter	lib/github.com/vmchale/img-fut/img.fut	call cursor(220,3)+minimum_filter	lib/github.com/vmchale/img-fut/img.fut	call cursor(221,3)+maximum_2d	lib/github.com/vmchale/img-fut/img.fut	call cursor(222,3)+minimum_2d	lib/github.com/vmchale/img-fut/img.fut	call cursor(223,3)+convolve	lib/github.com/vmchale/img-fut/img.fut	call cursor(224,3)+correlate	lib/github.com/vmchale/img-fut/img.fut	call cursor(225,3)+ez_resize	lib/github.com/vmchale/img-fut/img.fut	call cursor(226,3)+crop	lib/github.com/vmchale/img-fut/img.fut	call cursor(227,3)+mean_filter	lib/github.com/vmchale/img-fut/img.fut	call cursor(229,3)+conjugate_fft	lib/github.com/vmchale/img-fut/img.fut	call cursor(238,9)+fft_mean_filter	lib/github.com/vmchale/img-fut/img.fut	call cursor(247,3)+sobel	lib/github.com/vmchale/img-fut/img.fut	call cursor(255,3)+laplacian	lib/github.com/vmchale/img-fut/img.fut	call cursor(272,3)+prewitt	lib/github.com/vmchale/img-fut/img.fut	call cursor(279,3)+scale_2d	lib/github.com/vmchale/img-fut/img.fut	call cursor(296,9)+laplacian_of_gaussian	lib/github.com/vmchale/img-fut/img.fut	call cursor(300,3)+gaussian	lib/github.com/vmchale/img-fut/img.fut	call cursor(330,3)+num	lib/github.com/vmchale/img-fut/img.fut	call cursor(370,3)+real	lib/github.com/vmchale/img-fut/img.fut	call cursor(371,3)+float	lib/github.com/vmchale/img-fut/img.fut	call cursor(372,3)+border	lib/github.com/vmchale/img-fut/img.fut	call cursor(374,3)+correlate	lib/github.com/vmchale/img-fut/img.fut	call cursor(377,3)+convolve	lib/github.com/vmchale/img-fut/img.fut	call cursor(378,3)+sobel	lib/github.com/vmchale/img-fut/img.fut	call cursor(379,3)+prewitt	lib/github.com/vmchale/img-fut/img.fut	call cursor(380,3)+mean_filter	lib/github.com/vmchale/img-fut/img.fut	call cursor(381,3)+maximum_filter	lib/github.com/vmchale/img-fut/img.fut	call cursor(382,3)+minimum_filter	lib/github.com/vmchale/img-fut/img.fut	call cursor(383,3)+with_window	lib/github.com/vmchale/img-fut/img.fut	call cursor(384,3)+maximum_2d	lib/github.com/vmchale/img-fut/img.fut	call cursor(385,3)+minimum_2d	lib/github.com/vmchale/img-fut/img.fut	call cursor(386,3)+ez_resize	lib/github.com/vmchale/img-fut/img.fut	call cursor(387,3)+crop	lib/github.com/vmchale/img-fut/img.fut	call cursor(388,3)+gaussian	lib/github.com/vmchale/img-fut/img.fut	call cursor(389,3)+laplacian	lib/github.com/vmchale/img-fut/img.fut	call cursor(390,3)+laplacian_of_gaussian	lib/github.com/vmchale/img-fut/img.fut	call cursor(391,3)+fft_mean_filter	lib/github.com/vmchale/img-fut/img.fut	call cursor(392,3)+median_filter	lib/github.com/vmchale/img-fut/img.fut	call cursor(395,3)
+ test/golden/env.out view
@@ -0,0 +1,1 @@+/Users/vanessa/.opam/default/bin:/Users/vanessa/.cabal/bin:/Users/vanessa/.ghcup/bin:/Library/Frameworks/Python.framework/Versions/3.13/bin:/Library/Frameworks/Python.framework/Versions/3.12/bin:/Library/Frameworks/Python.framework/Versions/3.11/bin:/Library/Frameworks/Python.framework/Versions/3.10/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/opt/X11/bin:/Library/TeX/texbin:/usr/local/go/bin:/Users/vanessa/.cpm/bin:/Users/vanessa/pakcs/bin:/Users/vanessa/.local/bin:/Users/vanessa/.cargo/bin:/Applications/iTerm.app/Contents/Resources/utilities:/Users/vanessa/.fzf/bin
+ test/golden/ghc.out view
@@ -0,0 +1,40 @@+https://www.haskell.org/ghc/  GHCi-7+    • No explicit implementation for+    • In the instance declaration for ‘Num Exp’++warning /Users/vanessa/dev/haskell/apple/src/Asm/X86/P.hs:40:40-5+    Defined but not used: ‘fregs’++warning /Users/vanessa/dev/haskell/apple/src/Asm/Aarch64/P.hs:42:40-5+    Defined but not used: ‘fregs’++warning /Users/vanessa/dev/haskell/apple/src/Asm/Aarch64/Byte.hs:287:104-18+    Literal 18446462598732840960 is out of the Int range -9223372036854775808..9223372036854775807++warning /Users/vanessa/dev/haskell/apple/src/Asm/Aarch64/Byte.hs:300:109-18+    Literal 18446462598732840960 is out of the Int range -9223372036854775808..9223372036854775807++warning /Users/vanessa/dev/haskell/apple/src/C.hs:272:11-2+    Defined but not used: ‘ds’++warning /Users/vanessa/dev/haskell/apple/src/Ty.hs:364:6-1+    Defined but not used: ‘f’++warning /Users/vanessa/dev/haskell/apple/src/Ty.hs:364:8-1+    Defined but not used: ‘l’++warning /Users/vanessa/dev/haskell/apple/src/Ty.hs:364:10-3+    Defined but not used: ‘inp’++warning /Users/vanessa/dev/haskell/apple/src/Ty.hs:364:17-2+    Defined but not used: ‘t0’++warning /Users/vanessa/dev/haskell/apple/src/Ty.hs:364:24-2+    Defined but not used: ‘t1’++warning /Users/vanessa/dev/haskell/apple/src/C/Trans.hs:15:58-7+    The import of ‘foldl1'’ from module ‘Data.List’ is redundant++warning /Users/vanessa/dev/haskell/apple/run/Main.hs:334:18-2+    Defined but not used: ‘mp’+
+ test/golden/hlint-fix.out view
@@ -0,0 +1,4 @@+- fixity: infixr 6 <#>+- fixity: infixr 6 <##>+- fixity: infixr 0 ~>+- fixity: infixr 0 :$
+ test/golden/ldlib.out view
@@ -0,0 +1,6 @@+@rpath/libHSapple-0.3.0.0-inplace-ghc9.10.1.dylib+@rpath/libHSbytestring-0.12.1.0-5f32-ghc9.10.1.dylib+@rpath/libHSghc-internal-9.1001.0-4685-ghc9.10.1.dylib+@rpath/libHSghc-prim-0.11.0-e020-ghc9.10.1.dylib+@rpath/libHSrts-1.0.2-ghc9.10.1.dylib+/usr/lib/libSystem.B.dylib
+ test/golden/mk-depends.out view
@@ -0,0 +1,1 @@+include/apple.h include/m.h c/ffi.c include/apple_abi.h
+ test/golden/rpath.out view
@@ -0,0 +1,5 @@+/Users/vanessa/dev/haskell/apple/dist-newstyle/build/aarch64-osx/ghc-9.10.1/apple-0.3.0.0/build+/Users/vanessa/.ghcup/ghc/9.10.1/lib/ghc-9.10.1/lib/aarch64-osx-ghc-9.10.1+/Users/vanessa/.local/state/cabal/store/ghc-9.10.1-64dd/lib+/Library/Developer/CommandLineTools/SDKs/MacOSX15.1.sdk/usr/lib+/Users/vanessa/.ghcup/ghc/9.10.1/lib/ghc-9.10.1/lib/../lib/aarch64-osx-ghc-9.10.1
+ test/golden/sql.out view
@@ -0,0 +1,1 @@+CREATE TABLE c (Series_reference TEXT, Period TEXT, Data_value TEXT, STATUS TEXT, UNITS TEXT, Subject TEXT, Group TEXT, Series_title_1 TEXT);
+ test/golden/src-dirs.out view
@@ -0,0 +1,4 @@+src+x+test+bench
+ test/golden/trailing-whitespace.out view
@@ -0,0 +1,7 @@+aeval (EApp (Arr oSh _) (EApp _ (Builtin _ Map) f) xs) t a+    | tX@(Arr xSh _) <- eAnn xs+    , Just xRnk <- staRnk xSh+    , Just ((ta0, rnk0), (ta1, rnk1)) <- mAA (eAnn f)+    , Just sz0 <- nSz ta0, Just sz1 <- nSz ta1 = do+    y <- nI; y0 <- nI+    szR <- nI; szY <- nI
x/Opt.hs view
@@ -4,7 +4,6 @@  import           A                   (Mode (..)) import           Control.Applicative ((<|>))-import System.Directory (doesDirectoryExist) import qualified Data.Text           as T import qualified Data.Text.IO        as TIO import qualified Data.Version        as V@@ -13,10 +12,12 @@                                       infoOption, long, many, metavar, option, optional, progDesc, short, str, strOption, switch) import           Parser              (Value) import qualified Paths_jacinda       as P+import           System.Directory    (doesDirectoryExist)+import           System.IO           (stdout)  data Cmd = TC !FilePath ![FilePath]-         | Run !FilePath !(Maybe T.Text) !(Maybe T.Text) !(Maybe FilePath) ![FilePath] ![(T.Text, Value)]-         | Expr !T.Text !(Maybe FilePath) !(Maybe T.Text) !Bool !Bool !Bool !(Maybe T.Text) ![FilePath]+         | Run !FilePath !(Maybe T.Text) !(Maybe T.Text) !(Maybe FilePath) ![FilePath] ![(T.Text, Value)] Bool+         | Expr !T.Text !(Maybe FilePath) !(Maybe T.Text) !Bool !Bool !Bool !(Maybe T.Text) ![FilePath] Bool          | Eval !T.Text          | Install @@ -37,7 +38,7 @@     <> help "Source code"     <> jacCompletions) -csv, asv, usv :: Parser Bool+begin, csv, asv, usv :: Parser Bool csv = switch     (long "csv"     <> help "Process as CSV")@@ -51,6 +52,11 @@     <> short 'u'     <> help "Process as USV") +begin = switch+    (long "header"+    <> short 'b'+    <> help "Include match in record")+ jacRs, jacFs :: Parser (Maybe T.Text) jacRs = optional $ option str     (short 'R'@@ -86,8 +92,8 @@     <|> exprP     where         tcP = TC <$> j'File <*> incls; eP = Eval <$> jacExpr-        runP = Run <$> j'File <*> jacFs <*> jacRs <*> inpFile <*> incls <*> defVar-        exprP = Expr <$> jacExpr <*> inpFile <*> jacFs <*> asv <*> usv <*> csv <*> jacRs <*> incls+        runP = Run <$> j'File <*> jacFs <*> jacRs <*> inpFile <*> incls <*> defVar <*> begin+        exprP = Expr <$> jacExpr <*> inpFile <*> jacFs <*> asv <*> usv <*> csv <*> jacRs <*> incls <*> begin  incls :: Parser [FilePath] incls = many $ strOption@@ -107,7 +113,7 @@ main :: IO () main = run =<< execParser wrapper -ap :: Bool -> Bool -> Bool -> Maybe T.Text -> Maybe T.Text -> Mode+ap :: Bool -> Bool -> Bool -> Maybe T.Text -> Maybe T.Text -> Bool -> Mode ap True True _ _ _          = errorWithoutStackTrace "--asv and --usv both specified." ap True _ True _ _          = errorWithoutStackTrace "--asv and --csv both specified." ap _ True True _ _          = errorWithoutStackTrace "--usv and --csv both specified."@@ -117,19 +123,23 @@ ap True _ _ _ Just{}        = errorWithoutStackTrace "--asv and record separator both speficied." ap _ _ True Just{} _        = errorWithoutStackTrace "--csv and field separator both speficied." ap _ _ True _ Just{}        = errorWithoutStackTrace "--csv and record separator both speficied."-ap _ _ True Nothing Nothing = CSV+ap _ _ True Nothing Nothing = const CSV ap True _ _ Nothing Nothing = AWK (Just "\\x1f") (Just "\\x1e") ap _ True _ Nothing Nothing = AWK (Just "␟") (Just "␞") ap _ _ _ fs rs              = AWK fs rs  run :: Cmd -> IO () run (TC fp is)                         = tcIO is fp =<< TIO.readFile fp-run (Run fp fs rs Nothing is vs)       = do { contents <- TIO.readFile fp ; runStdin is fp contents vs (AWK fs rs) }-run (Run fp fs rs (Just dat) is vs)    = do { contents <- TIO.readFile fp ; runOnFile is fp contents vs (AWK fs rs) dat }-run (Expr eb Nothing fs a u c rs is)   = let m = ap a u c fs rs in runStdin is "(no file info)" eb [] m-run (Expr eb (Just fp) fs a u c rs is) = let m = ap a u c fs rs in runOnFile is "(no file info)" eb [] m fp-run (Eval e)                           = print (exprEval e)-run Install                            = putStrLn =<< getDataDir+run (Run fp fs rs Nothing is vs h)    = do { contents <- TIO.readFile fp ; runStdin is fp contents vs (AWK fs rs h) }+run (Run fp fs rs (Just dat) is vs h) = do { contents <- TIO.readFile fp ; runOnFile is fp contents vs (AWK fs rs h) dat stdout }+run (Expr eb f fs a u c rs is h)      =+    case f of+        Nothing -> runStdin is "(no file info)" eb [] (m h)+        Just fp -> runOnFile is "(no file info)" eb [] (m h) fp stdout+  where+    m = ap a u c fs rs+run (Eval e)                          = print (exprEval e)+run Install                           = putStrLn =<< getDataDir  getDataDir = do     cabal <- P.getDataDir