-
Notifications
You must be signed in to change notification settings - Fork 162
Expand file tree
/
Copy pathApiCompare.hs
More file actions
28 lines (25 loc) · 877 Bytes
/
ApiCompare.hs
File metadata and controls
28 lines (25 loc) · 877 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
-- This script compares the strict and lazy Text APIs to ensure that
-- they're reasonably in sync.
{-# LANGUAGE OverloadedStrings #-}
import qualified Data.Set as S
import qualified Data.Text as T
import System.Process
main = do
let tidy pkg = (S.fromList . filter (T.isInfixOf "::") . T.lines .
T.replace "GHC.Int.Int64" "Int" .
T.replace "\n " "" .
T.replace (T.append (T.pack pkg) ".") "" . T.pack) `fmap`
readProcess "ghci" [] (":browse " ++ pkg)
let diff a b = mapM_ (putStrLn . (" "++) . T.unpack) . S.toList $
S.difference a b
text <- tidy "Data.Text"
lazy <- tidy "Data.Text.Lazy"
list <- tidy "Data.List"
putStrLn "Text \\ List:"
diff text list
putStrLn ""
putStrLn "Text \\ Lazy:"
diff text lazy
putStrLn ""
putStrLn "Lazy \\ Text:"
diff lazy text