├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── Setup.hs ├── app ├── Flags.hs └── Main.hs ├── docs ├── CNAME ├── all.js ├── all.js.externs ├── index.html ├── lib.js ├── manifest.webapp ├── out.frefs.js ├── out.frefs.json ├── out.js ├── out.stats ├── rts.js ├── runmain.js └── style.css ├── hie.yaml ├── json-to-haskell.cabal ├── package.yaml ├── src ├── JsonToHaskell.hs └── JsonToHaskell │ └── Internal │ ├── Options.hs │ ├── Parser.hs │ └── Printer.hs ├── stack.yaml ├── stack.yaml.lock └── test └── Spec.hs /.gitignore: -------------------------------------------------------------------------------- 1 | .stack-work/ 2 | *~ 3 | testdata 4 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog for json-to-haskell 2 | 3 | ## 0.1.1.2 4 | - Fix including changelog in package 5 | 6 | ## 0.1.1.1 7 | - Only look at first element of lists when determining type 8 | 9 | ## Unreleased changes 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright Author name here (c) 2020 2 | 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | 11 | * Redistributions in binary form must reproduce the above 12 | copyright notice, this list of conditions and the following 13 | disclaimer in the documentation and/or other materials provided 14 | with the distribution. 15 | 16 | * Neither the name of Author name here nor the names of other 17 | contributors may be used to endorse or promote products derived 18 | from this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # json-to-haskell 2 | 3 | 4 | 5 | * [Web interface](#web-interface) 6 | * [What is it?](#what-is-it) 7 | * [Installation](#installation) 8 | * [Usage](#usage) 9 | * [Help Wanted](#help-wanted) 10 | 11 | 12 | 13 | ## Web interface 14 | 15 | [Click here for the web interface](http://json-to-haskell.chrispenner.ca/) 16 | [Web interface source code (Miso)](https://github.com/ChrisPenner/json-to-haskell-web) 17 | 18 | ## What is it? 19 | 20 | In goes JSON, out comes Haskell! 21 | 22 | A handy tool for quickly spec'ing out types for a given JSON type. 23 | 24 | **Note: This tool isn't perfect, but it should get you _most_ of the way there.** 25 | 26 | ```sh 27 | $ cat > company.json 28 | { "company": 29 | { "employees": 30 | [ {"name": "Jon", "age": 32} 31 | , {"name": "Alice", "age": 27} 32 | ] 33 | , "star_rating": 4.7 34 | } 35 | } 36 | ``` 37 | 38 | ```haskell 39 | $ cat company.json | json-to-haskell 40 | {-# LANGUAGE DuplicateRecordFields #-} 41 | {-# LANGUAGE RecordWildCards #-} 42 | {-# LANGUAGE OverloadedStrings #-} 43 | module Model where 44 | 45 | import Data.Aeson (ToJSON(..), FromJSON(..), Value(..), (.:), (.=), object) 46 | import Data.Aeson.Types (prependFailure, typeMismatch) 47 | import Data.Text (Text) 48 | 49 | data Company = Company 50 | { companyStarRating :: Double 51 | , companyEmployees :: [Employees] 52 | } deriving (Show, Eq, Ord) 53 | 54 | data Employees = Employees 55 | { employeesAge :: Int 56 | , employeesName :: Text 57 | } deriving (Show, Eq, Ord) 58 | 59 | data Model = Model 60 | { modelCompany :: Company 61 | } deriving (Show, Eq, Ord) 62 | 63 | instance ToJSON Company where 64 | toJSON Company{..} = object 65 | [ "star_rating" .= companyStarRating 66 | , "employees" .= companyEmployees 67 | ] 68 | 69 | instance ToJSON Employees where 70 | toJSON Employees{..} = object 71 | [ "age" .= employeesAge 72 | , "name" .= employeesName 73 | ] 74 | 75 | instance ToJSON Model where 76 | toJSON Model{..} = object 77 | [ "company" .= modelCompany 78 | ] 79 | 80 | instance FromJSON Company where 81 | parseJSON (Object v) = do 82 | companyStarRating <- v .: "star_rating" 83 | companyEmployees <- v .: "employees" 84 | pure $ Company{..} 85 | parseJSON invalid = do 86 | prependFailure "parsing Company failed, " 87 | (typeMismatch "Object" invalid) 88 | 89 | instance FromJSON Employees where 90 | parseJSON (Object v) = do 91 | employeesAge <- v .: "age" 92 | employeesName <- v .: "name" 93 | pure $ Employees{..} 94 | parseJSON invalid = do 95 | prependFailure "parsing Employees failed, " 96 | (typeMismatch "Object" invalid) 97 | 98 | instance FromJSON Model where 99 | parseJSON (Object v) = do 100 | modelCompany <- v .: "company" 101 | pure $ Model{..} 102 | parseJSON invalid = do 103 | prependFailure "parsing Model failed, " 104 | (typeMismatch "Object" invalid) 105 | ``` 106 | 107 | ## Installation 108 | 109 | Take your pick: 110 | 111 | ```sh 112 | cabal install haskell-to-json 113 | # OR 114 | stack install haskell-to-json 115 | ``` 116 | 117 | ## Usage 118 | 119 | There's a web interface [here](http://json-to-haskell.chrispenner.ca/) if you prefer. 120 | 121 | 122 | Otherwise, install the cli and ask for help; the cli will have the most up to date help message: 123 | 124 | ```sh 125 | $ json-to-haskell --help 126 | Usage: json-to-haskell [-t|--tab-stop ARG] [-n|--numbers ARG] [-s|--strings ARG] 127 | [-m|--maps ARG] [-l|--lists ARG] [--no-module-header] 128 | [--no-instances] [--no-prefix-record-fields] [--strict] 129 | 130 | Available options: 131 | -t,--tab-stop ARG Number of spaces to indent each level. 132 | -n,--numbers ARG Type to use for numbers. 133 | 134 | 'smart-floats': 135 | Use floats for numbers with decimals, Int for whole numbers. 136 | 'smart-doubles': 137 | Use floats for numbers with decimals, Int for whole numbers. 138 | 'floats': 139 | Use floats for all numbers. 140 | 'doubles': 141 | Use doubles for all numbers. 142 | 'scientific': 143 | Use scientific for all numbers. 144 | 145 | -s,--strings ARG Type to use for strings. 146 | 147 | 'string': 148 | Use String for strings. 149 | 'text': 150 | Use Text for strings. 151 | 'bytestring': 152 | Use ByteString for strings. 153 | 154 | -m,--maps ARG Type to use for maps. 155 | 156 | 'map': 157 | Use Data.Map for maps. 158 | 'hashmap': 159 | Use Data.HashMap for maps. 160 | 161 | -l,--lists ARG Type to use for lists. 162 | 163 | 'list': 164 | Use [] for lists. 165 | 'vector': 166 | Use Data.Vector for lists. 167 | 168 | --no-module-header Omit the module header containing language extensions, module definition and imports. 169 | --no-instances Omit the ToJSON and FromJSON instances. 170 | --no-prefix-record-fields 171 | Omit record field prefixes. 172 | --strict Use strict record fields. 173 | -h,--help Show this help text 174 | ``` 175 | 176 | ## Help Wanted 177 | 178 | Want to help out? 179 | 180 | I'd love to have a Purescript version of the app! It should be pretty easy to port, you'd just need to adapt the "printer" for the parsed data type. 181 | Check out [Printer.hs](./src/JsonToHaskell/Internal/Printer.hs) . 182 | 183 | It'd also be really nice to port the whole project to Purescript, the current miso build is difficult to set up locally. 184 | -------------------------------------------------------------------------------- /Setup.hs: -------------------------------------------------------------------------------- 1 | import Distribution.Simple 2 | main = defaultMain 3 | -------------------------------------------------------------------------------- /app/Flags.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE ApplicativeDo #-} 2 | {-# LANGUAGE RecordWildCards #-} 3 | {-# LANGUAGE LambdaCase #-} 4 | {-# LANGUAGE QuasiQuotes #-} 5 | module Flags where 6 | 7 | import Options.Applicative 8 | import JsonToHaskell 9 | import Text.RawString.QQ (r) 10 | import Text.PrettyPrint.ANSI.Leijen 11 | 12 | optionsParserInfo :: ParserInfo Options 13 | optionsParserInfo = info (optionParser <**> helper) fullDesc 14 | 15 | parseNumberType :: ReadM NumberType 16 | parseNumberType = maybeReader $ \case 17 | "smart-floats" -> Just UseSmartFloats 18 | "smart-doubles" -> Just UseSmartDoubles 19 | "floats" -> Just UseFloats 20 | "doubles" -> Just UseDoubles 21 | _ -> Nothing 22 | 23 | parseTextType :: ReadM TextType 24 | parseTextType = maybeReader $ \case 25 | "string" -> Just UseString 26 | "text" -> Just UseText 27 | "bytestring" -> Just UseByteString 28 | _ -> Nothing 29 | 30 | parseMapType :: ReadM MapType 31 | parseMapType = maybeReader $ \case 32 | "map" -> Just UseMap 33 | "hashmap" -> Just UseHashMap 34 | _ -> Nothing 35 | 36 | parseListType :: ReadM ListType 37 | parseListType = maybeReader $ \case 38 | "list" -> Just UseList 39 | "vector" -> Just UseVector 40 | _ -> Nothing 41 | 42 | stringDoc :: String -> Mod f a 43 | stringDoc = helpDoc . Just . string 44 | 45 | optionParser :: Parser Options 46 | optionParser = do 47 | _tabStop <- option auto 48 | (short 't' 49 | <> long "tab-stop" 50 | <> stringDoc "Number of spaces to indent each level." 51 | <> value 2) 52 | _numberType <- option parseNumberType 53 | (short 'n' 54 | <> long "numbers" 55 | <> value UseSmartDoubles 56 | <> stringDoc [r|Type to use for numbers. 57 | 58 | 'smart-floats': 59 | Use floats for numbers with decimals, Int for whole numbers. 60 | 'smart-doubles': 61 | Use floats for numbers with decimals, Int for whole numbers. 62 | 'floats': 63 | Use floats for all numbers. 64 | 'doubles': 65 | Use doubles for all numbers. 66 | 'scientific': 67 | Use scientific for all numbers. 68 | |]) 69 | _textType <- option parseTextType 70 | (short 's' 71 | <> long "strings" 72 | <> value UseText 73 | <> stringDoc [r|Type to use for strings. 74 | 75 | 'string': 76 | Use String for strings. 77 | 'text': 78 | Use Text for strings. 79 | 'bytestring': 80 | Use ByteString for strings. 81 | |]) 82 | _mapType <- option parseMapType 83 | (short 'm' 84 | <> long "maps" 85 | <> value UseMap 86 | <> stringDoc [r|Type to use for maps. 87 | 88 | 'map': 89 | Use Data.Map for maps. 90 | 'hashmap': 91 | Use Data.HashMap for maps. 92 | |]) 93 | _listType <- option parseListType 94 | (short 'l' 95 | <> long "lists" 96 | <> value UseList 97 | <> stringDoc [r|Type to use for lists. 98 | 99 | 'list': 100 | Use [] for lists. 101 | 'vector': 102 | Use Data.Vector for lists. 103 | |]) 104 | _includeHeader <- flag True False 105 | (long "no-module-header" 106 | <> stringDoc [r|Omit the module header containing language extensions, module definition and imports.|]) 107 | _includeInstances <- flag True False 108 | (long "no-instances" 109 | <> stringDoc [r|Omit the ToJSON and FromJSON instances.|]) 110 | _prefixRecordFields <- flag True False 111 | (long "no-prefix-record-fields" 112 | <> stringDoc [r|Omit record field prefixes.|]) 113 | _strictData <- flag False True 114 | (long "strict" 115 | <> stringDoc [r|Use strict record fields.|]) 116 | pure $ Options {.. } 117 | -------------------------------------------------------------------------------- /app/Main.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE OverloadedStrings #-} 2 | {-# LANGUAGE QuasiQuotes #-} 3 | {-# LANGUAGE TypeApplications #-} 4 | module Main where 5 | 6 | import JsonToHaskell 7 | import qualified Data.Text.IO as T 8 | import qualified Data.ByteString.Lazy as BL 9 | import Options.Applicative 10 | import System.Exit 11 | import Flags 12 | import Data.Aeson 13 | 14 | main :: IO () 15 | main = do 16 | opts <- execParser optionsParserInfo 17 | input <- BL.getContents 18 | case eitherDecode input of 19 | Left err -> putStrLn err >> exitWith (ExitFailure 1) 20 | Right val -> T.putStrLn $ jsonToHaskell opts val 21 | -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | json-to-haskell.chrispenner.ca -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /docs/manifest.webapp: -------------------------------------------------------------------------------- 1 | { 2 | "name": "GHCJS Web Application", 3 | "description": "GHCJS Web Application", 4 | "launch_path": "/index.html", 5 | "icons": { 6 | "16": "/icons/icon16x16.png", 7 | "48": "/icons/icon48x48.png", 8 | "60": "/icons/icon60x60.png", 9 | "128": "/icons/icon128x128.png" 10 | }, 11 | "type": "privileged", 12 | "permissions": {} 13 | } -------------------------------------------------------------------------------- /docs/out.frefs.json: -------------------------------------------------------------------------------- 1 | [{"span":"","pattern":"h$hs_intToInt64","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./System/Posix/Types.hs (178,51)-(178,54)","pattern":"h$base_poke_lflag($1_1,$1_2,$2);","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Types.hs (178,92)-(178,96)","pattern":"$r = h$base_echo;","arguments":["ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Types.hs (178,51)-(178,54)","pattern":"h$base_poke_lflag($1_1,$1_2,$2);","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Types.hs (178,92)-(178,96)","pattern":"$r = h$base_echo;","arguments":["ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (193,18)-(198,47)","pattern":"$r = h$base_lflag($1_1,$1_2);","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Types.hs (178,92)-(178,96)","pattern":"$r = h$base_icanon;","arguments":["ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Types.hs (178,92)-(178,96)","pattern":"$r = h$base_icanon;","arguments":["ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (220,25)-(220,81)","pattern":"$r = h$base_vtime;","arguments":["ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (219,25)-(219,81)","pattern":"$r = h$base_vmin;","arguments":["ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (217,25)-(222,25)","pattern":"$r1 = h$base_ptr_c_cc($1_1,$1_2); $r2 = h$ret_1;","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (212,21)-(212,27)","pattern":"h$base_poke_lflag($1_1,$1_2,$2);","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (208,18)-(222,25)","pattern":"$r = h$base_lflag($1_1,$1_2);","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (237,14)-(237,45)","pattern":"h$__hscore_set_saved_termios","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Foreign/Marshal/Utils.hs (159,1)-(160,40)","pattern":"h$memcpy","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Foreign/Marshal/Alloc.hs (214,1)-(219,23)","pattern":"h$malloc","arguments":["ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Foreign/Marshal/Alloc.hs (214,1)-(219,23)","pattern":"$r = h$base_sizeof_termios;","arguments":["ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (232,26)-(237,45)","pattern":"h$__hscore_get_saved_termios","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Foreign/C/Error.hs (263,1)-(263,47)","pattern":"h$__hscore_get_errno","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Foreign/C/Error.hs (263,1)-(263,47)","pattern":"h$__hscore_get_errno","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Foreign/C/Error.hs (263,1)-(263,47)","pattern":"h$__hscore_get_errno","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Foreign/C/Error.hs (263,1)-(263,47)","pattern":"h$__hscore_get_errno","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./System/Posix/Internals.hs (256,63)-(256,70)","pattern":"$r = h$base_sigprocmask($1,$2_1,$2_2,$3_1,$3_2);","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./Foreign/C/Error.hs (298,1)-(301,52)","pattern":"$r = h$base_sig_setmask;","arguments":["ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (254,47)-(254,53)","pattern":"$r = h$base_tcsetattr($1,$2,$3_1,$3_2);","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./Foreign/C/Error.hs (354,1)-(354,69)","pattern":"$r = h$base_tcsanow;","arguments":["ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (251,57)-(251,69)","pattern":"$r = h$base_sigprocmask($1,$2_1,$2_2,$3_1,$3_2);","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./Foreign/C/Error.hs (298,1)-(301,52)","pattern":"$r = h$base_sig_block;","arguments":["ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./Foreign/C/Error.hs (298,1)-(301,52)","pattern":"$r = h$base_sigaddset($1_1,$1_2,$2);","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./Foreign/C/Error.hs (298,1)-(301,52)","pattern":"$r = h$base_sigttou;","arguments":["ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./Foreign/C/Error.hs (298,1)-(301,52)","pattern":"$r = h$base_sigemptyset($1_1,$1_2);","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./Foreign/C/Error.hs (354,1)-(354,69)","pattern":"$r = h$base_tcgetattr($1,$2_1,$2_2);","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Types.hs (178,92)-(178,96)","pattern":"$r = h$base_echo;","arguments":["ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (202,18)-(204,54)","pattern":"$r = h$base_lflag($1_1,$1_2);","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (115,12)-(115,25)","pattern":"$r1 = h$base_st_ino($1_1,$1_2); $r2 = h$ret1;","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (114,12)-(114,25)","pattern":"$r = h$base_st_dev($1_1,$1_2);","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (479,1)-(479,31)","pattern":"$r = h$base_c_s_isblk($1);","arguments":["ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (115,12)-(115,25)","pattern":"$r1 = h$base_st_ino($1_1,$1_2); $r2 = h$ret1;","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (114,12)-(114,25)","pattern":"$r = h$base_st_dev($1_1,$1_2);","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (475,1)-(475,31)","pattern":"$r = h$base_c_s_isreg($1);","arguments":["ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (115,12)-(115,25)","pattern":"$r1 = h$base_st_ino($1_1,$1_2); $r2 = h$ret1;","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (114,12)-(114,25)","pattern":"$r = h$base_st_dev($1_1,$1_2);","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (477,1)-(477,31)","pattern":"$r = h$base_c_s_ischr($1);","arguments":["ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (115,12)-(115,25)","pattern":"$r1 = h$base_st_ino($1_1,$1_2); $r2 = h$ret1;","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (114,12)-(114,25)","pattern":"$r = h$base_st_dev($1_1,$1_2);","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (510,1)-(510,39)","pattern":"h$base_c_s_issock($1)","arguments":["ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (115,12)-(115,25)","pattern":"$r1 = h$base_st_ino($1_1,$1_2); $r2 = h$ret1;","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (114,12)-(114,25)","pattern":"$r = h$base_st_dev($1_1,$1_2);","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (483,1)-(483,33)","pattern":"$r = h$base_c_s_isfifo($1);","arguments":["ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (115,12)-(115,25)","pattern":"$r1 = h$base_st_ino($1_1,$1_2); $r2 = h$ret1;","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (114,12)-(114,25)","pattern":"$r = h$base_st_dev($1_1,$1_2);","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (481,1)-(481,31)","pattern":"$r = h$base_c_s_isdir($1);","arguments":["ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (122,1)-(131,63)","pattern":"$r = h$base_st_mode($1_1,$1_2);","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./Foreign/C/Error.hs (354,1)-(354,69)","pattern":"h$base_fstat($1,$2_1,$2_2,$c);","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"interruptible","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (94,14)-(96,35)","pattern":"$r1 = h$base_st_size($1_1,$1_2); $r2 = h$ret1;","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (475,1)-(475,31)","pattern":"$r = h$base_c_s_isreg($1);","arguments":["ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./System/Posix/Internals.hs (91,15)-(91,41)","pattern":"$r = h$base_st_mode($1_1,$1_2);","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./Foreign/C/Error.hs (354,1)-(354,69)","pattern":"h$base_fstat($1,$2_1,$2_2,$c);","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"interruptible","cconv":"javascript"},{"span":"","pattern":"$r = h$base_sizeof_stat;","arguments":["ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"","pattern":"$r = h$base_sizeof_termios;","arguments":["ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"","pattern":"$r = h$base_sizeof_sigset_t;","arguments":["ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Unicode.hs (206,17)-(206,38)","pattern":"h$u_iswspace","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Unicode.hs (368,1)-(368,35)","pattern":"h$u_towlower","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Unicode.hs (365,1)-(365,37)","pattern":"h$u_iswupper","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/TopHandler.hs (182,28)-(184,20)","pattern":"h$reportHeapOverflow","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/TopHandler.hs (176,29)-(178,18)","pattern":"h$reportStackOverflow","arguments":["ghc-prim:GHC.Prim.ThreadId#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/TopHandler.hs (209,27)-(210,35)","pattern":"h$errorBelch2","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/TopHandler.hs (250,1)-(251,66)","pattern":"h$shutdownHaskellAndExit","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"ccall"},{"span":"./GHC/TopHandler.hs (250,1)-(251,66)","pattern":"h$shutdownHaskellAndExit","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"ccall"},{"span":"./GHC/TopHandler.hs (86,7)-(86,51)","pattern":"h$rts_setMainThread","arguments":["ghc-prim:GHC.Prim.Weak#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Int.hs (688,29)-(688,53)","pattern":"h$hs_eqInt64","arguments":["ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/IO/FD.hs (74,3)-(74,7)","pattern":"h$base_write($1,$2_1,$2_2,$3,$c);","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"interruptible","cconv":"javascript"},{"span":"./GHC/IO/FD.hs (74,3)-(74,7)","pattern":"h$base_write($1,$2_1,$2_2,$3,$c);","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"interruptible","cconv":"javascript"},{"span":"./GHC/IO/FD.hs (400,27)-(400,28)","pattern":"h$fdReady","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"safe","cconv":"ccall"},{"span":"./GHC/IO/FD.hs (396,29)-(396,49)","pattern":"h$hs_intToInt64","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./System/Posix/Types.hs (218,39)-(218,42)","pattern":"h$base_close($1,$c);","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"interruptible","cconv":"javascript"},{"span":"./GHC/IO/FD.hs (74,3)-(74,7)","pattern":"h$unlockFile","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/IO/FD.hs (74,3)-(74,7)","pattern":"$r = h$base_isatty($1);","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/IO/FD.hs (352,36)-(352,44)","pattern":"$r = h$base_SEEK_END","arguments":["ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/IO/FD.hs (351,36)-(351,44)","pattern":"$r = h$base_SEEK_CUR;","arguments":["ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/IO/FD.hs (350,36)-(350,44)","pattern":"$r = h$base_SEEK_SET;","arguments":["ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/IO/FD.hs (349,16)-(352,44)","pattern":"h$base_lseek($1,$2_1,$2_2,$3,$c);","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"interruptible","cconv":"javascript"},{"span":"./Foreign/C/Error.hs (383,52)-(383,54)","pattern":"h$hs_negateInt64","arguments":["ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/IO/FD.hs (74,3)-(74,7)","pattern":"h$base_lseek($1,$2_1,$2_2,$3,$c);","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"interruptible","cconv":"javascript"},{"span":"./GHC/IO/FD.hs (74,3)-(74,7)","pattern":"$r = h$base_SEEK_CUR;","arguments":["ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/IO/FD.hs (74,3)-(74,7)","pattern":"h$base_ftruncate($1,$2_1,$2_2,$c);","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"interruptible","cconv":"javascript"},{"span":"./Foreign/C/Error.hs (263,1)-(263,47)","pattern":"h$__hscore_get_errno","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/IO/FD.hs (74,3)-(74,7)","pattern":"h$base_dup($1,$c);","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"interruptible","cconv":"javascript"},{"span":"./GHC/IO/FD.hs (74,3)-(74,7)","pattern":"h$base_dup2($1,$2,$c);","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"interruptible","cconv":"javascript"},{"span":"./Foreign/C/Error.hs (263,1)-(263,47)","pattern":"h$__hscore_get_errno","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/IO/FD.hs (74,3)-(74,7)","pattern":"h$base_read($1,$2_1,$2_2,$3,$c);","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"interruptible","cconv":"javascript"},{"span":"./GHC/IO/FD.hs (74,3)-(74,7)","pattern":"h$base_read($1,$2_1,$2_2,$3,$c);","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"interruptible","cconv":"javascript"},{"span":"./GHC/IO/FD.hs (74,3)-(74,7)","pattern":"h$base_read($1,$2_1,$2_2,$3,$c);","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"interruptible","cconv":"javascript"},{"span":"./GHC/IO/FD.hs (74,3)-(74,7)","pattern":"h$base_write($1,$2_1,$2_2,$3,$c);","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"interruptible","cconv":"javascript"},{"span":"./GHC/IO/FD.hs (74,3)-(74,7)","pattern":"h$base_write($1,$2_1,$2_2,$3,$c);","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"interruptible","cconv":"javascript"},{"span":"./GHC/Word.hs (673,1)-(673,55)","pattern":"h$hs_eqWord64","arguments":["ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Word.hs (673,1)-(673,55)","pattern":"h$hs_eqWord64","arguments":["ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Fingerprint.hs (56,26)-(56,31)","pattern":"h$__hsbase_MD5Final","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Fingerprint.hs (54,5)-(54,45)","pattern":"h$__hsbase_MD5Update","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Fingerprint.hs (52,20)-(57,48)","pattern":"h$__hsbase_MD5Init","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Conc/Sync.hs (897,29)-(897,33)","pattern":"h$errorBelch2","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Conc/Sync.hs (870,6)-(870,31)","pattern":"h$reportStackOverflow","arguments":["ghc-prim:GHC.Prim.ThreadId#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Word.hs (788,1)-(789,67)","pattern":"h$hs_uncheckedShiftRL64","arguments":["ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Foreign/Storable.hs (276,37)-(276,53)","pattern":"h$hs_word64ToWord","arguments":["ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Word.hs (755,34)-(755,55)","pattern":"h$hs_or64","arguments":["ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Storable.hs (96,74)-(96,79)","pattern":"h$hs_wordToWord64","arguments":["ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Word.hs (785,1)-(786,66)","pattern":"h$hs_uncheckedShiftL64","arguments":["ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Foreign/C/Error.hs (263,1)-(263,47)","pattern":"h$__hscore_get_errno","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Foreign/C/Error.hs (263,1)-(263,47)","pattern":"h$__hscore_get_errno","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Foreign/C/Error.hs (468,65)-(470,70)","pattern":"h$strerror","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Typeable/Internal.hs (836,24)-(836,60)","pattern":"h$hs_eqWord64","arguments":["ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Typeable/Internal.hs (836,24)-(836,60)","pattern":"h$hs_eqWord64","arguments":["ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHCJS/Prim/Internal.hs (40,33)-(40,63)","pattern":"h$setCurrentThreadResultValue($1);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"javascript"},{"span":"./GHCJS/Prim/Internal.hs (33,7)-(33,42)","pattern":"h$setCurrentThreadResultWouldBlock();","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"javascript"},{"span":"./GHCJS/Prim/Internal.hs (35,7)-(35,45)","pattern":"h$setCurrentThreadResultJSException($1);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"javascript"},{"span":"./GHCJS/Prim.hs (237,26)-(237,28)","pattern":"h$setCurrentThreadResultHaskellException($1);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"javascript"},{"span":"./GHCJS/Prim.hs (237,26)-(237,28)","pattern":"h$fromHsString($1)","arguments":["ghc-prim:GHC.Types.Any","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"","pattern":"h$decodeUtf8z($1_1, $1_2)","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1097,1)-(1097,57)","pattern":"h$ghcjsbn_add_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1158,31)-(1158,61)","pattern":"h$ghcjsbn_sub_bw($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1120,33)-(1120,62)","pattern":"h$ghcjsbn_add_bw($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1136,1)-(1136,59)","pattern":"h$ghcjsbn_sub_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1136,1)-(1136,59)","pattern":"h$ghcjsbn_sub_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (873,1)-(876,11)","pattern":"h$ghcjsbn_cmp_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1097,1)-(1097,57)","pattern":"h$ghcjsbn_add_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1120,33)-(1120,62)","pattern":"h$ghcjsbn_add_bw($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1158,31)-(1158,61)","pattern":"h$ghcjsbn_sub_bw($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1067,1)-(1067,43)","pattern":"h$ghcjsbn_mkBigNat_w($1)","arguments":["ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1067,1)-(1067,43)","pattern":"h$ghcjsbn_mkBigNat_w($1)","arguments":["ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1176,22)-(1176,92)","pattern":"h$ghcjsbn_mul_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"h$ghcjsbn_isZero_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"h$ghcjsbn_isZero_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1176,22)-(1176,92)","pattern":"h$ghcjsbn_mul_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"h$ghcjsbn_isZero_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"h$ghcjsbn_isZero_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1208,1)-(1208,61)","pattern":"h$ghcjsbn_mul_bw($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1208,1)-(1208,61)","pattern":"h$ghcjsbn_mul_bw($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1176,22)-(1176,92)","pattern":"h$ghcjsbn_mul_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"h$ghcjsbn_isZero_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"h$ghcjsbn_isZero_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1176,22)-(1176,92)","pattern":"h$ghcjsbn_mul_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"h$ghcjsbn_isZero_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"h$ghcjsbn_isZero_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1208,1)-(1208,61)","pattern":"h$ghcjsbn_mul_bw($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1208,1)-(1208,61)","pattern":"h$ghcjsbn_mul_bw($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1622,22)-(1622,46)","pattern":"h$ghcjsbn_gcd_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"h$ghcjsbn_isZero_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"h$ghcjsbn_isZero_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1622,22)-(1622,46)","pattern":"h$ghcjsbn_gcd_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"h$ghcjsbn_isZero_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"h$ghcjsbn_isZero_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1611,1)-(1611,53)","pattern":"h$ghcjsbn_gcd_bw($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (2531,1)-(2534,46)","pattern":"h$ghcjsbn_gcd_ww($1,$2)","arguments":["ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (559,31)-(559,71)","pattern":"h$ghcjsbn_toNegInteger_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (547,28)-(547,65)","pattern":"h$ghcjsbn_toInteger_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (559,31)-(559,71)","pattern":"h$ghcjsbn_toNegInteger_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (547,28)-(547,65)","pattern":"h$ghcjsbn_toInteger_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1084,1)-(1084,55)","pattern":"h$ghcjsbn_mkBigNat_ww($1,$2)","arguments":["ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1067,1)-(1067,43)","pattern":"h$ghcjsbn_mkBigNat_w($1)","arguments":["ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1546,26)-(1546,55)","pattern":"h$ghcjsbn_quot_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (873,1)-(876,11)","pattern":"h$ghcjsbn_cmp_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (952,1)-(952,51)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (952,1)-(952,51)","pattern":"h$ghcjsbn_eq_bw($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"h$ghcjsbn_isZero_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1048,1)-(1048,36)","pattern":"$r = h$ghcjsbn_null_b;","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (989,1)-(989,36)","pattern":"$r = h$ghcjsbn_zero_b;","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (542,45)-(542,46)","pattern":"h$ghcjsbn_mkBigNat_w($1)","arguments":["ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1084,1)-(1084,55)","pattern":"h$ghcjsbn_mkBigNat_ww($1,$2)","arguments":["ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1084,1)-(1084,55)","pattern":"h$ghcjsbn_mkBigNat_ww($1,$2)","arguments":["ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1084,1)-(1084,55)","pattern":"h$ghcjsbn_mkBigNat_ww($1,$2)","arguments":["ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (527,45)-(527,46)","pattern":"h$ghcjsbn_mkBigNat_w($1)","arguments":["ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1084,1)-(1084,55)","pattern":"h$ghcjsbn_mkBigNat_ww($1,$2)","arguments":["ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1067,1)-(1067,43)","pattern":"h$ghcjsbn_mkBigNat_w($1)","arguments":["ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"","pattern":"h$integer_int64ToInteger($1_1,$1_2)","arguments":["ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"","pattern":"h$ghcjsbn_toInteger_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"","pattern":"h$ghcjsbn_toNegInteger_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"","pattern":"h$ghcjsbn_toWord_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"","pattern":"h$ghcjsbn_toInt_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1067,1)-(1067,43)","pattern":"h$ghcjsbn_mkBigNat_w($1)","arguments":["ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1954,37)-(1954,66)","pattern":"h$ghcjsbn_toDouble_b($1,$2)","arguments":["ghc-prim:GHC.Types.Bool","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1953,37)-(1953,66)","pattern":"h$ghcjsbn_toDouble_b($1,$2)","arguments":["ghc-prim:GHC.Types.Bool","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1519,12)-(1519,79)","pattern":"$r1 = []; $r2 = []; h$ghcjsbn_quotRem_bb($r1,$r2,$1,$2);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (873,1)-(876,11)","pattern":"h$ghcjsbn_cmp_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (952,1)-(952,51)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (952,1)-(952,51)","pattern":"h$ghcjsbn_eq_bw($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"h$ghcjsbn_isZero_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1519,12)-(1519,79)","pattern":"$r1 = []; $r2 = []; h$ghcjsbn_quotRem_bb($r1,$r2,$1,$2);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (873,1)-(876,11)","pattern":"h$ghcjsbn_cmp_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (952,1)-(952,51)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (952,1)-(952,51)","pattern":"h$ghcjsbn_eq_bw($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"h$ghcjsbn_isZero_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1581,3)-(1581,70)","pattern":"$r1 = []; $r2 = h$ghcjsbn_quotRem_bw($r1,$1,$2);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1581,3)-(1581,70)","pattern":"$r1 = []; $r2 = h$ghcjsbn_quotRem_bw($r1,$1,$2);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1519,12)-(1519,79)","pattern":"$r1 = []; $r2 = []; h$ghcjsbn_quotRem_bb($r1,$r2,$1,$2);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (873,1)-(876,11)","pattern":"h$ghcjsbn_cmp_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (952,1)-(952,51)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (952,1)-(952,51)","pattern":"h$ghcjsbn_eq_bw($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"h$ghcjsbn_isZero_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1519,12)-(1519,79)","pattern":"$r1 = []; $r2 = []; h$ghcjsbn_quotRem_bb($r1,$r2,$1,$2);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (873,1)-(876,11)","pattern":"h$ghcjsbn_cmp_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (952,1)-(952,51)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (952,1)-(952,51)","pattern":"h$ghcjsbn_eq_bw($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1002,1)-(1002,43)","pattern":"h$ghcjsbn_isZero_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (734,65)-(734,67)","pattern":"h$ghcjsbn_mkBigNat_w($1)","arguments":["ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1581,3)-(1581,70)","pattern":"$r1 = []; $r2 = h$ghcjsbn_quotRem_bw($r1,$1,$2);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (736,68)-(736,70)","pattern":"h$ghcjsbn_mkBigNat_w($1)","arguments":["ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1581,3)-(1581,70)","pattern":"$r1 = []; $r2 = h$ghcjsbn_quotRem_bw($r1,$1,$2);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (904,1)-(906,43)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (904,1)-(906,43)","pattern":"h$ghcjsbn_gt_bw($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1581,3)-(1581,70)","pattern":"$r1 = []; $r2 = h$ghcjsbn_quotRem_bw($r1,$1,$2);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1581,3)-(1581,70)","pattern":"$r1 = []; $r2 = h$ghcjsbn_quotRem_bw($r1,$1,$2);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1581,3)-(1581,70)","pattern":"$r1 = []; $r2 = h$ghcjsbn_quotRem_bw($r1,$1,$2);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (1581,3)-(1581,70)","pattern":"$r1 = []; $r2 = h$ghcjsbn_quotRem_bw($r1,$1,$2);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (904,1)-(906,43)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (904,1)-(906,43)","pattern":"h$ghcjsbn_gt_bw($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (873,1)-(876,11)","pattern":"h$ghcjsbn_cmp_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (873,1)-(876,11)","pattern":"h$ghcjsbn_cmp_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (873,1)-(876,11)","pattern":"h$ghcjsbn_cmp_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (873,1)-(876,11)","pattern":"h$ghcjsbn_cmp_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (873,1)-(876,11)","pattern":"h$ghcjsbn_cmp_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (873,1)-(876,11)","pattern":"h$ghcjsbn_cmp_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (923,1)-(925,44)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (923,1)-(925,44)","pattern":"h$ghcjsbn_eq_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (923,1)-(925,44)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (923,1)-(925,44)","pattern":"h$ghcjsbn_eq_bb($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (960,1)-(962,43)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (960,1)-(962,43)","pattern":"h$ghcjsbn_eq_bw($1,$2)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (261,1)-(261,47)","pattern":"h$hs_negateInt64","arguments":["ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"src/GHC/Integer/Type.hs (261,1)-(261,47)","pattern":"h$hs_word64ToInt64","arguments":["ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"src/GHC/Integer/Type.hs (261,1)-(261,47)","pattern":"$r1 = h$ghcjsbn_toWord64_b($1); $r2 = h$ret1;","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (261,1)-(261,47)","pattern":"h$hs_word64ToInt64","arguments":["ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"src/GHC/Integer/Type.hs (261,1)-(261,47)","pattern":"$r1 = h$ghcjsbn_toWord64_b($1); $r2 = h$ret1;","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (980,1)-(980,43)","pattern":"h$ghcjsbn_toInt_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"src/GHC/Integer/Type.hs (980,1)-(980,43)","pattern":"h$ghcjsbn_toInt_b($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,37)-(1382,38)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1253,1)-(1253,29)","pattern":"$r = true;","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1379,28)-(1379,29)","pattern":"$2[$1]","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1045,1)-(1045,19)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1045,1)-(1045,19)","pattern":"$1===$2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./Unsafe/Coerce.hs (39,1)-(39,15)","pattern":"h$jsstringPack($1)","arguments":["ghc-prim:GHC.Types.Any","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./Unsafe/Coerce.hs (39,1)-(39,15)","pattern":"h$jsstringPack($1)","arguments":["ghc-prim:GHC.Types.Any","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./Data/Either.hs (178,1)-(179,31)","pattern":"h$textFromString","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/TopHandler.hs (86,7)-(86,51)","pattern":"h$rts_setMainThread","arguments":["ghc-prim:GHC.Prim.Weak#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Base.hs (1322,12)-(1322,13)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1322,12)-(1322,13)","pattern":"$1===$2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1322,12)-(1322,13)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1322,12)-(1322,13)","pattern":"$1===$2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1322,12)-(1322,13)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1322,12)-(1322,13)","pattern":"$1===$2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1322,12)-(1322,13)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1322,12)-(1322,13)","pattern":"$1===$2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1322,12)-(1322,13)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1322,12)-(1322,13)","pattern":"$1===$2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1322,12)-(1322,13)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1322,12)-(1322,13)","pattern":"$1===$2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1322,12)-(1322,13)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1322,12)-(1322,13)","pattern":"$1===$2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1322,12)-(1322,13)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1322,12)-(1322,13)","pattern":"$1===$2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1322,12)-(1322,13)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1322,12)-(1322,13)","pattern":"$1===$2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1322,12)-(1322,13)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1322,12)-(1322,13)","pattern":"$1===$2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,71)-(1382,76)","pattern":"diff($1, $2, $3, $4);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1388,1)-(1388,16)","pattern":"$r = null;","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,1)-(1382,77)","pattern":"$r = document;","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,1)-(1382,77)","pattern":"$r = document.body;","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Classes.hs (519,1)-(520,33)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Classes.hs (519,1)-(520,33)","pattern":"$1===$2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Classes.hs (519,1)-(520,33)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Classes.hs (519,1)-(520,33)","pattern":"$1===$2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"","pattern":"h$memcpy","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"","pattern":"h$memcpy","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Encoding.hs (145,21)-(145,46)","pattern":"h$_hs_text_decode_utf8","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Internal/Search.hs (65,34)-(65,60)","pattern":"h$hs_or64","arguments":["ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Internal/Unsafe/Shift.hs (53,5)-(53,65)","pattern":"h$hs_or64","arguments":["ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Internal/Unsafe/Shift.hs (53,5)-(53,65)","pattern":"h$hs_uncheckedShiftL64","arguments":["ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Internal/Search.hs (83,78)-(83,79)","pattern":"h$hs_eqWord64","arguments":["ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Internal/Unsafe/Shift.hs (53,32)-(53,65)","pattern":"h$hs_and64","arguments":["ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Internal/Unsafe/Shift.hs (53,32)-(53,65)","pattern":"h$hs_uncheckedShiftL64","arguments":["ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Internal/Search.hs (65,51)-(65,52)","pattern":"h$hs_uncheckedShiftL64","arguments":["ghc-prim:GHC.Prim.Word64#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text.hs (759,47)-(759,49)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text.hs (760,43)-(760,45)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text.hs (762,62)-(762,65)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Internal.hs (165,48)-(165,63)","pattern":"h$hs_int64ToInt","arguments":["ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Internal.hs (167,18)-(167,28)","pattern":"h$hs_gtInt64","arguments":["ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text.hs (752,44)-(752,56)","pattern":"h$hs_ltInt64","arguments":["ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text.hs (752,44)-(752,56)","pattern":"h$hs_timesInt64","arguments":["ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text.hs (752,44)-(752,56)","pattern":"h$hs_intToInt64","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text.hs (752,20)-(752,37)","pattern":"h$hs_intToInt64","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Internal.hs (166,17)-(166,37)","pattern":"h$hs_negateInt64","arguments":["ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text.hs (487,36)-(487,39)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (85,7)-(85,10)","pattern":"h$_hs_text_memcmp","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (85,7)-(85,10)","pattern":"h$_hs_text_memcmp","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text.hs (985,49)-(985,50)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text.hs (985,49)-(985,50)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Base.hs (1382,37)-(1382,38)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1379,28)-(1379,29)","pattern":"$2[$1]","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,37)-(1382,38)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1379,28)-(1379,29)","pattern":"$2[$1]","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,37)-(1382,38)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1379,28)-(1379,29)","pattern":"$2[$1]","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,37)-(1382,38)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1253,1)-(1253,29)","pattern":"$r = true;","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,37)-(1382,38)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1253,1)-(1253,29)","pattern":"$r = false;","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1379,28)-(1379,29)","pattern":"$2[$1]","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,37)-(1382,38)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1379,28)-(1379,29)","pattern":"$2[$1]","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,37)-(1382,38)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1379,28)-(1379,29)","pattern":"$2[$1]","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,37)-(1382,38)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1253,1)-(1253,29)","pattern":"$r = true;","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,37)-(1382,38)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1253,1)-(1253,29)","pattern":"$r = false;","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1379,28)-(1379,29)","pattern":"$2[$1]","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1298,22)-(1298,23)","pattern":"h$jsstringIndex","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,71)-(1382,76)","pattern":"h$fromHsListJSVal($1)","arguments":["ghc-prim:GHC.Types.Any","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1385,67)-(1385,72)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1385,67)-(1385,72)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1298,19)-(1298,24)","pattern":"registerCallback($1);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1385,37)-(1385,38)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./Unsafe/Coerce.hs (39,1)-(39,15)","pattern":"h$makeCallbackApply($1, h$run, [], $2)","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Types.Any","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,37)-(1382,38)","pattern":"$r = objectToJSON($1,$2);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,1)-(1382,77)","pattern":"$r = {};","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,37)-(1382,38)","pattern":"$2[$1]","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1385,67)-(1385,72)","pattern":"$r = null;","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,37)-(1382,38)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./Unsafe/Coerce.hs (39,1)-(39,15)","pattern":"h$fromHsListJSVal($1)","arguments":["ghc-prim:GHC.Types.Any","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,71)-(1382,76)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1385,67)-(1385,72)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,71)-(1382,76)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1385,67)-(1385,72)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1385,67)-(1385,72)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1385,67)-(1385,72)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1385,37)-(1385,38)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (705,1)-(705,26)","pattern":"$r = {};","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (705,1)-(705,26)","pattern":"$r = {};","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (705,1)-(705,26)","pattern":"$r = {};","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,1)-(1382,77)","pattern":"$r = {};","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1379,31)-(1379,32)","pattern":"$r = true;","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1379,31)-(1379,32)","pattern":"$r = false;","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1385,67)-(1385,72)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1379,31)-(1379,32)","pattern":"$r = true;","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1385,67)-(1385,72)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1379,31)-(1379,32)","pattern":"$r = false;","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/TypeLits.hs (78,1)-(79,31)","pattern":"h$fromHsString($1)","arguments":["ghc-prim:GHC.Types.Any","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1385,37)-(1385,38)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./GHC/TypeLits.hs (78,1)-(79,31)","pattern":"h$fromHsString($1)","arguments":["ghc-prim:GHC.Types.Any","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,1)-(1382,77)","pattern":"$r = {};","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1385,67)-(1385,72)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1385,37)-(1385,38)","pattern":"$3[$1] = $2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"safe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,1)-(1382,77)","pattern":"$r = {};","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./Data/Map/Internal.hs (776,9)-(784,55)","pattern":"h$jsstringCompare","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./Data/Map/Internal.hs (3348,41)-(3348,43)","pattern":"h$jsstringCompare","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./Data/Map/Internal.hs (3348,41)-(3348,43)","pattern":"h$jsstringCompare","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./Data/Map/Internal.hs (3348,41)-(3348,43)","pattern":"h$jsstringCompare","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./Data/Map/Internal.hs (3348,41)-(3348,43)","pattern":"h$jsstringCompare","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1322,1)-(1322,13)","pattern":"h$textToString($1,$2,$3)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,71)-(1382,76)","pattern":"diff($1, $2, $3, $4);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,71)-(1382,76)","pattern":"diff($1, $2, $3, $4);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1388,1)-(1388,16)","pattern":"$r = null;","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,71)-(1382,76)","pattern":"diff($1, $2, $3, $4);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1388,1)-(1388,16)","pattern":"$r = null;","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,1)-(1382,77)","pattern":"$r = document;","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,37)-(1382,38)","pattern":"$r = document.getElementById($1);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,1)-(1382,77)","pattern":"$r = document.body;","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,71)-(1382,76)","pattern":"delegate($1, $2, $3);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"javascript"},{"span":"./Unsafe/Coerce.hs (39,1)-(39,15)","pattern":"h$makeCallbackApply($2, h$runSync, [$1], $3)","arguments":["ghc-prim:GHC.Types.Bool","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Types.Any","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1379,28)-(1379,29)","pattern":"$1($2);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,1)-(1382,77)","pattern":"$r = document.getElementById($1);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,1)-(1382,77)","pattern":"$r = document.body;","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1385,1)-(1385,73)","pattern":"releaseCallbacks();","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1385,1)-(1385,73)","pattern":"swapCallbacks();","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"javascript"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (154,1)-(156,53)","pattern":"h$u_iswalpha","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Unicode.hs (362,1)-(362,37)","pattern":"h$u_iswalnum","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Unicode.hs (362,1)-(362,37)","pattern":"h$u_iswalnum","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Unicode.hs (362,1)-(362,37)","pattern":"h$u_iswalnum","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text.hs (1100,57)-(1100,58)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Internal.hs (165,48)-(165,63)","pattern":"h$hs_int64ToInt","arguments":["ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Internal.hs (167,18)-(167,28)","pattern":"h$hs_gtInt64","arguments":["ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text.hs (1094,19)-(1094,20)","pattern":"h$hs_ltInt64","arguments":["ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text.hs (1094,19)-(1094,20)","pattern":"h$hs_timesInt64","arguments":["ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text.hs (1094,19)-(1094,20)","pattern":"h$hs_intToInt64","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text.hs (1094,11)-(1094,12)","pattern":"h$hs_intToInt64","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Internal.hs (166,17)-(166,37)","pattern":"h$hs_negateInt64","arguments":["ghc-prim:GHC.Prim.Int64#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Unicode.hs (362,1)-(362,37)","pattern":"h$u_iswalnum","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Unicode.hs (362,1)-(362,37)","pattern":"h$u_iswalnum","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Unicode.hs (362,1)-(362,37)","pattern":"h$u_iswalnum","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Unicode.hs (362,1)-(362,37)","pattern":"h$u_iswalnum","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (122,33)-(122,36)","pattern":"h$_hs_text_memcpy","arguments":["ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.MutableByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (154,1)-(156,53)","pattern":"h$u_iswalpha","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (154,1)-(156,53)","pattern":"h$u_iswspace","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Internal/Unsafe/Char.hs (44,1)-(44,47)","pattern":"h$u_iswspace","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Internal/Unsafe/Char.hs (44,1)-(44,47)","pattern":"h$u_iswspace","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Internal/Encoding/Utf16.hs (33,13)-(33,25)","pattern":"h$u_iswspace","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"src/GHC/Integer/Logarithms.hs (72,1)-(72,50)","pattern":"h$ghcjsbn_integerLog2($1)","arguments":["ghc-prim:GHC.Types.Any","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,68)-(1382,69)","pattern":"$1.handle = window.requestAnimationFrame($c);","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"interruptible","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,68)-(1382,69)","pattern":"h$animationFrameCancel","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.Unit#","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,1)-(1382,77)","pattern":"{ handle: null, callback: null }","arguments":["ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./Data/Text/Array.hs (85,7)-(85,10)","pattern":"h$_hs_text_memcmp","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Traversable.hs (240,41)-(240,42)","pattern":"h$textFromString","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,37)-(1382,38)","pattern":"$2[$1]","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"safe","cconv":"javascript"},{"span":"./Unsafe/Coerce.hs (39,1)-(39,15)","pattern":"h$listProps","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHCJS/Prim.hs (102,1)-(102,44)","pattern":"h$toHsListJSVal($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1379,31)-(1379,32)","pattern":"h$textFromString","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1379,31)-(1379,32)","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1379,31)-(1379,32)","pattern":"$1 ? true : false","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1379,31)-(1379,32)","pattern":"$r = +$1;","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1379,31)-(1379,32)","pattern":"$r = $1|0;","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"","pattern":"h$jsonTypeOf($1)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./Data/Text/Array.hs (85,7)-(85,10)","pattern":"h$_hs_text_memcmp","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Base.hs (1382,71)-(1382,76)","pattern":"h$fromHsListJSVal($1)","arguments":["ghc-prim:GHC.Types.Any","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,71)-(1382,76)","pattern":"h$fromHsListJSVal($1)","arguments":["ghc-prim:GHC.Types.Any","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,71)-(1382,76)","pattern":"h$fromHsListJSVal($1)","arguments":["ghc-prim:GHC.Types.Any","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1382,71)-(1382,76)","pattern":"h$fromHsListJSVal($1)","arguments":["ghc-prim:GHC.Types.Any","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1379,28)-(1379,29)","pattern":"[$1,$2]","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1253,1)-(1253,29)","pattern":"h$hashable_fnv_hash_offset","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"","pattern":"$r = false;","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"","pattern":"$r = true;","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"","pattern":"h$textToString($1,$2,$3)","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"","pattern":"$r = '';","arguments":["ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"","pattern":"$r = !(!$1)","arguments":["ghc-prim:GHC.Prim.Int#"],"result":"ghc-prim:GHC.Types.Bool","safety":"unsafe","cconv":"javascript"},{"span":"","pattern":"$1===$2","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Base.hs (1298,22)-(1298,23)","pattern":"h$jsstringIndex","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"","pattern":"h$jsstringCompare","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"javascript"},{"span":"./GHC/Unicode.hs (365,1)-(365,37)","pattern":"h$u_iswupper","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Unicode.hs (369,1)-(369,35)","pattern":"h$u_towupper","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Unicode.hs (365,1)-(365,37)","pattern":"h$u_iswupper","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/ByteString/Internal.hs (626,1)-(626,58)","pattern":"h$memcpy","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/ByteString/Internal.hs (459,22)-(459,45)","pattern":"h$memcpy","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/ByteString/Internal.hs (626,1)-(626,58)","pattern":"h$memcpy","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/ByteString/Internal.hs (620,1)-(620,45)","pattern":"h$memcmp","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/ByteString/Internal.hs (626,1)-(626,58)","pattern":"h$memcpy","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Base.hs (1253,1)-(1253,29)","pattern":"h$memcpy","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Base.hs (1253,1)-(1253,29)","pattern":"h$memcpy","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Base.hs (1253,1)-(1253,29)","pattern":"h$memcpy","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Unicode.hs (362,1)-(362,37)","pattern":"h$u_iswalnum","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Unicode.hs (361,1)-(361,37)","pattern":"h$u_iswalpha","arguments":["ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (85,7)-(85,10)","pattern":"h$_hs_text_memcmp","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (85,7)-(85,10)","pattern":"h$_hs_text_memcmp","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Base.hs (1253,1)-(1253,29)","pattern":"h$hashable_fnv_hash_offset","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (85,7)-(85,10)","pattern":"h$_hs_text_memcmp","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Num.hs (94,5)-(94,30)","pattern":"h$memcmp","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/ByteString/Internal.hs (247,16)-(247,21)","pattern":"h$strlen","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Num.hs (94,5)-(94,30)","pattern":"h$memcmp","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/ByteString/Internal.hs (247,16)-(247,21)","pattern":"h$strlen","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Num.hs (94,5)-(94,30)","pattern":"h$memcmp","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/ByteString/Internal.hs (247,16)-(247,21)","pattern":"h$strlen","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Num.hs (94,5)-(94,30)","pattern":"h$memcmp","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/ByteString/Internal.hs (247,16)-(247,21)","pattern":"h$strlen","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Num.hs (94,5)-(94,30)","pattern":"h$memcmp","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/ByteString/Internal.hs (247,16)-(247,21)","pattern":"h$strlen","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Num.hs (94,5)-(94,30)","pattern":"h$memcmp","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/ByteString/Internal.hs (247,16)-(247,21)","pattern":"h$strlen","arguments":["ghc-prim:GHC.Prim.Addr#","ghc-prim:GHC.Prim.Void#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./GHC/Base.hs (1253,1)-(1253,29)","pattern":"h$hashable_fnv_hash_offset","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.Int#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"},{"span":"./Data/Text/Array.hs (85,7)-(85,10)","pattern":"h$_hs_text_memcmp","arguments":["ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.ByteArray#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.Word#","ghc-prim:GHC.Prim.State#"],"result":"ghc-prim:GHC.Prim.(#,#)","safety":"unsafe","cconv":"ccall"}] -------------------------------------------------------------------------------- /docs/out.stats: -------------------------------------------------------------------------------- 1 | code size summary per package: 2 | 3 | aeson-1.4.2.0-KI9D1oB1yKLLLHHPSQ9U4P:59953 4 | aeson-extra-0.4.1.1-6oD0Ntz8EEXKuXyNG1Bh15:5131 5 | attoparsec-0.13.2.2-GXDpxZMHNt6DerDaoJhZlK:37055 6 | base: 350611 7 | bimap-0.3.3-56XO0CrU8v9F3kNCpYtXeW:1429 8 | bytestring-0.10.8.2-FBklFuapa1a7kq4yflY7Bt:24406 9 | casing-0.1.4.0-6neY1RN3Kg74kGTlBz0Cvf:55113 10 | containers-0.6.0.1-BAqcfV1UBBeCIRjPbUYeSG:65209 11 | ghc-prim: 35915 12 | ghcjs-base-0.2.0.0-EjoE99fiFSxxkwn8hxotx:27696 13 | ghcjs-prim-0.1.1.0-EXzjGVHQlAS2XAXcu0iCbS:3496 14 | integer-gmp: 2109 15 | integer-logarithms-1.0.3-8EbIvyaPt1VK2rKaCK88I2:26095 16 | json-to-haskell-0.1.1.1-4jUCHG4Ih9sKXPYRWr1JyK:751642 17 | main: 46912 18 | miso-0.21.2.0-2b5PVYCvLL0DtqAgGXpMDL:45678 19 | nonempty-containers-0.1.1.0-8BkGFUXFJceDfD0fKXa3NC:1 20 | primitive-0.6.4.0-Ix68lo67v0n3y1QMYDPFlz:3437 21 | scientific-0.3.6.2-9q8JP2eLKMJ7fUGkyRpkGr:20260 22 | split-0.2.3.3-LGnyxBzrKWwJCmCgeKG5L:26251 23 | text-1.2.3.1-2mMWCa8HNEL4R4p8nnvwO2:40112 24 | unordered-containers-0.2.9.0-ENnNUDBCeYM3LeK1fMybtG:25157 25 | vector-0.12.0.3-Ljxp3Ug7QBk3GWhyQE0Ewc:59448 26 | 27 | 28 | code size per module: 29 | 30 | aeson-1.4.2.0-KI9D1oB1yKLLLHHPSQ9U4P 31 | Data.Aeson.Parser.Internal: 38967 32 | Data.Aeson.Parser.UnescapePure: 7983 33 | Data.Aeson.Types.FromJSON: 5171 34 | Data.Aeson.Types.Internal: 7832 35 | 36 | aeson-extra-0.4.1.1-6oD0Ntz8EEXKuXyNG1Bh15 37 | Data.Aeson.Extra.Recursive: 5131 38 | 39 | attoparsec-0.13.2.2-GXDpxZMHNt6DerDaoJhZlK 40 | Data.Attoparsec.ByteString.Buffer: 7172 41 | Data.Attoparsec.ByteString.Char8: 23904 42 | Data.Attoparsec.ByteString.Internal:2058 43 | Data.Attoparsec.ByteString.Lazy: 383 44 | Data.Attoparsec.Internal: 1 45 | Data.Attoparsec.Internal.Types: 3537 46 | 47 | base 48 | Control.Exception.Base: 1 49 | Data.Either: 7111 50 | Data.OldList: 5300 51 | Data.Semigroup.Internal: 43720 52 | Data.Typeable.Internal: 9914 53 | Foreign.C.Error: 874 54 | Foreign.Marshal.Alloc: 2644 55 | Foreign.Storable: 2478 56 | GHC.Arr: 3317 57 | GHC.Base: 308 58 | GHC.Char: 5757 59 | GHC.Conc.Sync: 12814 60 | GHC.Enum: 132 61 | GHC.Err: 6404 62 | GHC.Exception: 2326 63 | GHC.Exception.Type: 5038 64 | GHC.Fingerprint: 319 65 | GHC.Fingerprint.Type: 23801 66 | GHC.Float: 10951 67 | GHC.Foreign: 325 68 | GHC.ForeignPtr: 1221 69 | GHC.IO: 441 70 | GHC.IO.Buffer: 1 71 | GHC.IO.BufferedIO: 434 72 | GHC.IO.Device: 398 73 | GHC.IO.Encoding: 592 74 | GHC.IO.Encoding.Failure: 1 75 | GHC.IO.Encoding.Types: 58104 76 | GHC.IO.Encoding.UTF8: 10879 77 | GHC.IO.Exception: 25520 78 | GHC.IO.FD: 274 79 | GHC.IO.Handle: 4794 80 | GHC.IO.Handle.FD: 23525 81 | GHC.IO.Handle.Internals: 1906 82 | GHC.IO.Handle.Types: 373 83 | GHC.Int: 7517 84 | GHC.List: 1 85 | GHC.MVar: 113 86 | GHC.Maybe: 995 87 | GHC.Num: 113 88 | GHC.Ptr: 10133 89 | GHC.Real: 1 90 | GHC.STRef: 12816 91 | GHC.Show: 4000 92 | GHC.Stack.CCS: 488 93 | GHC.Stack.Types: 9976 94 | GHC.TopHandler: 1354 95 | GHC.Unicode: 10357 96 | GHC.Word: 3688 97 | Numeric: 13450 98 | System.Posix.Internals: 3612 99 | 100 | bimap-0.3.3-56XO0CrU8v9F3kNCpYtXeW 101 | Data.Bimap: 1429 102 | 103 | bytestring-0.10.8.2-FBklFuapa1a7kq4yflY7Bt 104 | Data.ByteString: 2424 105 | Data.ByteString.Builder.Internal: 11353 106 | Data.ByteString.Internal: 883 107 | Data.ByteString.Lazy.Internal: 9746 108 | 109 | casing-0.1.4.0-6neY1RN3Kg74kGTlBz0Cvf 110 | Text.Casing: 55113 111 | 112 | containers-0.6.0.1-BAqcfV1UBBeCIRjPbUYeSG 113 | Data.Map.Internal: 20915 114 | Data.Sequence.Internal: 42233 115 | Data.Set.Internal: 2061 116 | 117 | ghc-prim 118 | GHC.CString: 3783 119 | GHC.Classes: 139 120 | GHC.IntWord64: 1747 121 | GHC.Tuple: 125 122 | GHC.Types: 30121 123 | 124 | ghcjs-base-0.2.0.0-EjoE99fiFSxxkwn8hxotx 125 | Data.JSString: 110 126 | Data.JSString.Internal.Type: 143 127 | Data.JSString.Text: 382 128 | GHCJS.Foreign.Internal: 23178 129 | GHCJS.Marshal: 1 130 | GHCJS.Marshal.Internal: 291 131 | GHCJS.Marshal.Pure: 1 132 | JavaScript.Array.Internal: 890 133 | JavaScript.Web.AnimationFrame: 2700 134 | 135 | ghcjs-prim-0.1.1.0-EXzjGVHQlAS2XAXcu0iCbS 136 | GHCJS.Prim: 2018 137 | GHCJS.Prim.Internal: 1478 138 | 139 | integer-gmp 140 | GHC.Integer.Type: 2109 141 | 142 | integer-logarithms-1.0.3-8EbIvyaPt1VK2rKaCK88I2 143 | Math.NumberTheory.Logarithms: 26095 144 | 145 | json-to-haskell-0.1.1.1-4jUCHG4Ih9sKXPYRWr1JyK 146 | JsonToHaskell: 4257 147 | JsonToHaskell.Internal.Options: 71800 148 | JsonToHaskell.Internal.Parser: 637288 149 | JsonToHaskell.Internal.Printer: 38297 150 | 151 | main 152 | Main: 46912 153 | 154 | miso-0.21.2.0-2b5PVYCvLL0DtqAgGXpMDL 155 | Miso: 1402 156 | Miso.Delegate: 1997 157 | Miso.Diff: 1 158 | Miso.Effect: 3908 159 | Miso.Event.Decoder: 12349 160 | Miso.Event.Types: 1210 161 | Miso.Html.Element: 153 162 | Miso.Html.Event: 16849 163 | Miso.Html.Internal: 7137 164 | Miso.Html.Property: 268 165 | Miso.String: 404 166 | 167 | nonempty-containers-0.1.1.0-8BkGFUXFJceDfD0fKXa3NC 168 | Data.Set.NonEmpty.Internal: 1 169 | 170 | primitive-0.6.4.0-Ix68lo67v0n3y1QMYDPFlz 171 | Data.Primitive.Array: 3437 172 | 173 | scientific-0.3.6.2-9q8JP2eLKMJ7fUGkyRpkGr 174 | Data.Scientific: 20260 175 | 176 | split-0.2.3.3-LGnyxBzrKWwJCmCgeKG5L 177 | Data.List.Split.Internals: 26251 178 | 179 | text-1.2.3.1-2mMWCa8HNEL4R4p8nnvwO2 180 | Data.Text: 566 181 | Data.Text.Array: 11061 182 | Data.Text.Encoding: 2988 183 | Data.Text.Encoding.Error: 503 184 | Data.Text.Internal: 1 185 | Data.Text.Internal.Fusion.Common: 408 186 | Data.Text.Internal.Fusion.Size: 531 187 | Data.Text.Internal.Fusion.Types: 263 188 | Data.Text.Internal.Lazy: 12955 189 | Data.Text.Lazy.Encoding: 8129 190 | Data.Text.Show: 96 191 | Data.Text.Unsafe: 2611 192 | 193 | unordered-containers-0.2.9.0-ENnNUDBCeYM3LeK1fMybtG 194 | Data.HashMap.Array: 16121 195 | Data.HashMap.Base: 8804 196 | Data.HashMap.List: 232 197 | 198 | vector-0.12.0.3-Ljxp3Ug7QBk3GWhyQE0Ewc 199 | Data.Vector: 498 200 | Data.Vector.Mutable: 58950 201 | 202 | 203 | 204 | packed metadata: 507908 205 | 206 | -------------------------------------------------------------------------------- /docs/runmain.js: -------------------------------------------------------------------------------- 1 | h$main(h$mainZCZCMainzimain); 2 | 3 | -------------------------------------------------------------------------------- /docs/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding: 0.5em 1em; 3 | font-family: 'Helvetica Neue', Helvetica, Arial, sans; 4 | } 5 | 6 | .container { 7 | display: flex; 8 | flex-flow: row; 9 | min-height: 70vh; 10 | } 11 | 12 | .input, 13 | .output { 14 | flex: 1; 15 | margin: 0.5em; 16 | } 17 | 18 | .input textarea, 19 | .output textarea { 20 | width: 100%; 21 | height: 100%; 22 | } 23 | 24 | h1, 25 | h2 { 26 | text-align: center; 27 | } 28 | 29 | .settings { 30 | margin: auto; 31 | display: flex; 32 | flex-flow: column; 33 | align-items: center; 34 | } 35 | .checkboxes { 36 | margin-bottom: 2em; 37 | } 38 | 39 | select { 40 | margin-left: 1em; 41 | } 42 | 43 | label { 44 | margin: 2em 2em 2em 0; 45 | padding: 5px; 46 | border: 1px solid gray; 47 | border-radius: 5px; 48 | } 49 | 50 | .install textarea { 51 | width: 240px; 52 | height: 20px; 53 | padding: 5px; 54 | resize: none; 55 | } 56 | -------------------------------------------------------------------------------- /hie.yaml: -------------------------------------------------------------------------------- 1 | cradle: 2 | stack: 3 | - path: "./src" 4 | component: "json-to-haskell:lib" 5 | 6 | - path: "./app" 7 | component: "json-to-haskell:exe:json-to-haskell-exe" 8 | 9 | - path: "./test" 10 | component: "json-to-haskell:test:json-to-haskell-test" 11 | -------------------------------------------------------------------------------- /json-to-haskell.cabal: -------------------------------------------------------------------------------- 1 | cabal-version: 1.12 2 | 3 | -- This file has been generated from package.yaml by hpack version 0.33.0. 4 | -- 5 | -- see: https://github.com/sol/hpack 6 | -- 7 | -- hash: cc4c6327c9fb7753bcb567426edabc8f0136cde2af157aee72e577bdd2e492d7 8 | 9 | name: json-to-haskell 10 | version: 0.1.1.2 11 | description: Please see the README on GitHub at 12 | homepage: https://github.com/ChrisPenner/json-to-haskell#readme 13 | bug-reports: https://github.com/ChrisPenner/json-to-haskell/issues 14 | author: Chris Penner 15 | maintainer: christopher.penner@gmail.com 16 | copyright: 2020 Chris Penner 17 | license: BSD3 18 | license-file: LICENSE 19 | build-type: Simple 20 | extra-source-files: 21 | README.md 22 | CHANGELOG.md 23 | 24 | source-repository head 25 | type: git 26 | location: https://github.com/ChrisPenner/json-to-haskell 27 | 28 | library 29 | exposed-modules: 30 | JsonToHaskell 31 | JsonToHaskell.Internal.Options 32 | JsonToHaskell.Internal.Parser 33 | JsonToHaskell.Internal.Printer 34 | other-modules: 35 | Paths_json_to_haskell 36 | hs-source-dirs: 37 | src 38 | ghc-options: -Wall -Wincomplete-patterns 39 | build-depends: 40 | aeson 41 | , aeson-extra 42 | , base >=4.7 && <5 43 | , bimap 44 | , casing 45 | , containers 46 | , microlens-platform 47 | , mtl 48 | , nonempty-containers 49 | , recursion-schemes 50 | , text 51 | , unordered-containers 52 | , vector 53 | default-language: Haskell2010 54 | 55 | executable json-to-haskell 56 | main-is: Main.hs 57 | other-modules: 58 | Flags 59 | Paths_json_to_haskell 60 | hs-source-dirs: 61 | app 62 | ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N 63 | build-depends: 64 | aeson 65 | , aeson-extra 66 | , ansi-wl-pprint 67 | , base >=4.7 && <5 68 | , bimap 69 | , bytestring 70 | , casing 71 | , containers 72 | , json-to-haskell 73 | , microlens-platform 74 | , mtl 75 | , nonempty-containers 76 | , optparse-applicative 77 | , raw-strings-qq 78 | , recursion-schemes 79 | , text 80 | , unordered-containers 81 | , vector 82 | default-language: Haskell2010 83 | 84 | test-suite json-to-haskell-test 85 | type: exitcode-stdio-1.0 86 | main-is: Spec.hs 87 | other-modules: 88 | Paths_json_to_haskell 89 | hs-source-dirs: 90 | test 91 | ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N 92 | build-depends: 93 | aeson 94 | , aeson-extra 95 | , base >=4.7 && <5 96 | , bimap 97 | , bytestring 98 | , casing 99 | , containers 100 | , hspec 101 | , json-to-haskell 102 | , microlens-platform 103 | , mtl 104 | , nonempty-containers 105 | , raw-strings-qq 106 | , recursion-schemes 107 | , text 108 | , unordered-containers 109 | , vector 110 | default-language: Haskell2010 111 | -------------------------------------------------------------------------------- /package.yaml: -------------------------------------------------------------------------------- 1 | name: json-to-haskell 2 | version: 0.1.1.2 3 | github: "ChrisPenner/json-to-haskell" 4 | license: BSD3 5 | author: "Chris Penner" 6 | maintainer: "christopher.penner@gmail.com" 7 | copyright: "2020 Chris Penner" 8 | 9 | extra-source-files: 10 | - README.md 11 | - CHANGELOG.md 12 | 13 | # Metadata used when publishing your package 14 | # synopsis: Short description of your package 15 | # category: Web 16 | 17 | # To avoid duplicated efforts in documentation and dealing with the 18 | # complications of embedding Haddock markup inside cabal files, it is 19 | # common to point users to the README.md file. 20 | description: Please see the README on GitHub at 21 | 22 | dependencies: 23 | - base >= 4.7 && < 5 24 | - recursion-schemes 25 | - aeson 26 | - aeson-extra 27 | - containers 28 | - unordered-containers 29 | - text 30 | - mtl 31 | - casing 32 | - nonempty-containers 33 | - bimap 34 | - microlens-platform 35 | - vector 36 | 37 | ghc-options: 38 | - -Wall 39 | 40 | library: 41 | source-dirs: src 42 | ghc-options: 43 | - -Wincomplete-patterns 44 | 45 | executables: 46 | json-to-haskell: 47 | main: Main.hs 48 | source-dirs: app 49 | ghc-options: 50 | - -threaded 51 | - -rtsopts 52 | - -with-rtsopts=-N 53 | dependencies: 54 | - json-to-haskell 55 | - raw-strings-qq 56 | - optparse-applicative 57 | - bytestring 58 | - ansi-wl-pprint 59 | 60 | tests: 61 | json-to-haskell-test: 62 | main: Spec.hs 63 | source-dirs: test 64 | ghc-options: 65 | - -threaded 66 | - -rtsopts 67 | - -with-rtsopts=-N 68 | dependencies: 69 | - json-to-haskell 70 | - hspec 71 | - text 72 | - bytestring 73 | - raw-strings-qq 74 | -------------------------------------------------------------------------------- /src/JsonToHaskell.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE OverloadedStrings #-} 2 | {-# LANGUAGE LambdaCase #-} 3 | {-# LANGUAGE FlexibleContexts #-} 4 | {-# LANGUAGE ScopedTypeVariables #-} 5 | {-# LANGUAGE DataKinds #-} 6 | {-# LANGUAGE StandaloneDeriving #-} 7 | {-# LANGUAGE GADTs #-} 8 | {-# LANGUAGE KindSignatures #-} 9 | {-# LANGUAGE ViewPatterns #-} 10 | {-# LANGUAGE TemplateHaskell #-} 11 | {-# LANGUAGE TypeApplications #-} 12 | module JsonToHaskell 13 | ( jsonToHaskell 14 | , simpleOptions 15 | , performantOptions 16 | , Options(..) 17 | , NumberType(..) 18 | , TextType(..) 19 | , MapType(..) 20 | , ListType(..) 21 | ) where 22 | 23 | import JsonToHaskell.Internal.Options 24 | import JsonToHaskell.Internal.Printer 25 | import JsonToHaskell.Internal.Parser 26 | import Data.Aeson (Value) 27 | import qualified Data.Text as T 28 | import qualified Data.Bimap as BM 29 | 30 | -- | Transform an Aeson 'Value' into a complete Haskell module (as 'T.Text'). 31 | -- This function is all that you need. 32 | -- 33 | -- Use 'defaultOptions' as a reasonable starting point. 34 | jsonToHaskell :: Options -> Value -> T.Text 35 | jsonToHaskell opts v = do 36 | let allStructs = analyze v 37 | namedStructs = canonicalizeRecordNames allStructs 38 | referencedStructs = BM.mapR (fmap (addReferences namedStructs)) namedStructs 39 | in T.strip $ writeModel opts referencedStructs 40 | -------------------------------------------------------------------------------- /src/JsonToHaskell/Internal/Options.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE TemplateHaskell #-} 2 | module JsonToHaskell.Internal.Options where 3 | 4 | import Lens.Micro.Platform (makeLenses) 5 | 6 | -- | Choose which type to use for Numbers 7 | data NumberType = 8 | -- | Use 'Int' for whole numbers, 'Float' for decimals 9 | UseSmartFloats 10 | -- | Use 'Int' for whole numbers, 'Double' for decimals 11 | | UseSmartDoubles 12 | -- | Use 'Float' for all numbers 13 | | UseFloats 14 | -- | Use 'Double' for all numbers 15 | | UseDoubles 16 | -- | Use 'Scientific' for all numbers 17 | | UseScientific 18 | deriving (Show, Eq, Ord) 19 | 20 | -- | Choose which type to use for strings 21 | data TextType = 22 | -- | Use 'String' for strings 23 | UseString 24 | -- | Use 'Text' for string 25 | | UseText 26 | -- | Use 'ByteString' for strings 27 | | UseByteString 28 | deriving (Show, Eq, Ord) 29 | 30 | -- | Choose which type to use for key-value maps 31 | data MapType = 32 | -- | Use Data.Map 33 | UseMap 34 | -- | Use Data.HashMap 35 | | UseHashMap 36 | deriving (Show, Eq, Ord) 37 | 38 | -- | Choose which type to use for arrays 39 | data ListType = 40 | -- | Use lists 41 | UseList 42 | -- | Use vectors 43 | | UseVector 44 | deriving (Show, Eq, Ord) 45 | 46 | -- | Options for module generation 47 | data Options = Options 48 | { _tabStop :: Int 49 | , _numberType :: NumberType 50 | , _textType :: TextType 51 | , _mapType :: MapType 52 | , _listType :: ListType 53 | , _includeHeader :: Bool 54 | , _includeInstances :: Bool 55 | , _strictData :: Bool 56 | , _prefixRecordFields :: Bool 57 | } deriving (Show, Eq, Ord) 58 | 59 | 60 | makeLenses ''Options 61 | 62 | -- | Simple module generation options. 63 | -- These are reasonable defaults for a simple module 64 | simpleOptions :: Options 65 | simpleOptions = Options 66 | { _tabStop = 2 67 | , _numberType = UseDoubles 68 | , _textType = UseText 69 | , _mapType = UseMap 70 | , _listType = UseList 71 | , _includeHeader = True 72 | , _includeInstances = False 73 | , _strictData = False 74 | , _prefixRecordFields = True 75 | } 76 | 77 | -- | Use more performant data types, use these for production apps. 78 | performantOptions :: Options 79 | performantOptions = Options 80 | { _tabStop = 2 81 | , _numberType = UseDoubles 82 | , _textType = UseText 83 | , _mapType = UseMap 84 | , _listType = UseList 85 | , _includeHeader = True 86 | , _includeInstances = False 87 | , _strictData = True 88 | , _prefixRecordFields = True 89 | } 90 | 91 | 92 | -------------------------------------------------------------------------------- /src/JsonToHaskell/Internal/Parser.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE DataKinds #-} 2 | {-# LANGUAGE LambdaCase #-} 3 | {-# LANGUAGE KindSignatures #-} 4 | {-# LANGUAGE StandaloneDeriving #-} 5 | {-# LANGUAGE ViewPatterns #-} 6 | {-# LANGUAGE GADTs #-} 7 | {-# LANGUAGE FlexibleContexts #-} 8 | {-# LANGUAGE OverloadedStrings #-} 9 | module JsonToHaskell.Internal.Parser where 10 | 11 | import Control.Monad.State 12 | import Control.Monad.Reader 13 | import Data.Aeson (Value) 14 | import Data.Aeson.Extra.Recursive (ValueF(..)) 15 | import Data.Char (isAlpha, isAlphaNum) 16 | import Data.Functor.Foldable (cataA) 17 | import Data.Foldable (for_) 18 | import Data.Either (fromRight) 19 | import Text.Casing (toPascal, fromAny) 20 | import qualified Data.List as L 21 | import qualified Data.Bimap as BM 22 | import qualified Data.HashMap.Strict as HM 23 | import qualified Data.Map as M 24 | import qualified Data.Set.NonEmpty as NES 25 | import qualified Data.Text as T 26 | import qualified Data.Vector as V 27 | import qualified Data.Set as S 28 | 29 | -- | Used to track whether the value was fractional or whole. 30 | data NumberVariant = Fractional | Whole 31 | deriving (Show, Eq, Ord) 32 | 33 | -- a DataKind for tracking whether a structure contains nested structs or Record Names 34 | data RecordType = Ref | Structure 35 | -- | The representation of a record's field types 36 | type RecordFields r = HM.HashMap T.Text (Struct r) 37 | -- | The recursive representation of the "type" of a JSON value 38 | data Struct (r :: RecordType) where 39 | SArray :: Struct r -> Struct r 40 | SRecord :: (RecordFields 'Structure) -> Struct 'Structure 41 | SRecordRef :: T.Text -> Struct 'Ref 42 | SMap :: Struct r -> Struct r 43 | SBool :: Struct r 44 | SNumber :: NumberVariant -> Struct r 45 | SNull :: Struct r 46 | SString :: Struct r 47 | SValue :: Struct r 48 | deriving instance Show (Struct r) 49 | deriving instance Eq (Struct r) 50 | deriving instance Ord (Struct r) 51 | 52 | type AnalyzeM a = 53 | ReaderT T.Text 54 | (State (M.Map (RecordFields 'Structure) 55 | (NES.NESet T.Text))) 56 | a 57 | 58 | -- | Convert a 'Value' into a Typed representation of its structure, tracking reasonable names 59 | -- for each subrecord along the way 60 | analyze :: Value 61 | -> M.Map (RecordFields 'Structure) (NES.NESet T.Text) 62 | analyze value = 63 | flip execState mempty . flip runReaderT "Model" $ cataA alg value 64 | where 65 | -- Algebra for reducing a JSON ValueF from the bottom up. 66 | alg :: ValueF (AnalyzeM (Struct 'Structure)) 67 | -> AnalyzeM (Struct 'Structure) 68 | alg = \case 69 | ObjectF m -> do 70 | m' <- flip HM.traverseWithKey m 71 | $ \fieldName substructM -> do 72 | -- Pass down the current field name as a heuristic for picking a 73 | -- reasonable name for records encountered at the lower levels 74 | local (const fieldName) substructM 75 | nameRecord m' 76 | pure $ SRecord m' 77 | ArrayF itemsM -> do 78 | case (itemsM V.!? 0) of 79 | Just s -> SArray <$> s 80 | Nothing -> pure $ SArray SValue 81 | StringF _ -> pure SString 82 | NumberF n -> pure . SNumber 83 | $ if (ceiling n == (floor n :: Int)) 84 | then Whole 85 | else Fractional 86 | BoolF _ -> pure SBool 87 | NullF -> pure SNull 88 | 89 | -- Pair the given record with the name in scope 90 | nameRecord :: RecordFields 'Structure -> AnalyzeM () 91 | nameRecord record = do 92 | name <- asks toRecordName 93 | modify . flip M.alter record $ \case 94 | Nothing -> Just $ NES.singleton name 95 | Just s -> Just $ NES.insert name s 96 | 97 | -- | Given a mapping of structures to name candidates, pick names for each record, avoiding 98 | -- duplicates 99 | canonicalizeRecordNames :: M.Map (RecordFields 'Structure) (NES.NESet T.Text) -> BM.Bimap T.Text (RecordFields 'Structure) 100 | canonicalizeRecordNames m = 101 | flip execState BM.empty $ do 102 | -- Pick names for those with the fewest candidates first 103 | -- This helps give everything a "good" name 104 | for_ (L.sortOn (NES.size . snd) . M.toList $ m) $ \(struct, names) -> do 105 | existingNames <- get 106 | let bestName = chooseBestName names (S.fromAscList . BM.keys $ existingNames) 107 | modify (BM.insert bestName struct) 108 | 109 | -- | Choose a "fresh" name given a list of candidates and a map of names which have already 110 | -- been chosen. 111 | chooseBestName :: NES.NESet T.Text -> S.Set T.Text -> T.Text 112 | chooseBestName candidates takenNames = 113 | case S.lookupMin $ S.difference (NES.toSet candidates) takenNames of 114 | Nothing -> makeUnique (NES.findMin candidates) takenNames 115 | Just name -> name 116 | 117 | -- | Given a name candidate, make it unique amongs the set of taken names by appending 118 | -- the lowest number which isn't yet taken. E.g. if "name" is taken, try "name2", "name3" 119 | -- ad infinitum 120 | makeUnique :: T.Text -> S.Set T.Text -> T.Text 121 | makeUnique candidate takenNames = 122 | -- construct an infinite candidates list of ["name", "name2", "name3", ...] 123 | let candidates = (candidate <>) <$> ("" : fmap (T.pack . show) [(2 :: Int)..]) 124 | -- Get the first unique name from the list. 125 | -- The list is infinite, so head is safe here. 126 | in head . filter (not . flip S.member takenNames) $ candidates 127 | 128 | -- | Switch literal struct definitions with their "names" 129 | addReferences :: BM.Bimap T.Text (RecordFields 'Structure) -> Struct 'Structure -> Struct 'Ref 130 | addReferences m = 131 | \case 132 | SNull -> SNull 133 | SString -> SString 134 | SNumber t -> SNumber t 135 | SBool -> SBool 136 | SValue -> SValue 137 | SMap s -> SMap (addReferences m s) 138 | SArray s -> SArray (addReferences m s) 139 | SRecord s -> SRecordRef . fromRight (error "Expected record name but wasn't found") $ BM.lookupR s m 140 | 141 | -- | Clean a name into a valid Haskell record name 142 | toRecordName :: T.Text -> T.Text 143 | toRecordName = T.filter (isAlphaNum) . T.pack . toPascal . fromAny . T.unpack . T.dropWhile (not . isAlpha) 144 | -------------------------------------------------------------------------------- /src/JsonToHaskell/Internal/Printer.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE TemplateHaskell #-} 2 | {-# LANGUAGE LambdaCase #-} 3 | {-# LANGUAGE OverloadedStrings #-} 4 | {-# LANGUAGE ViewPatterns #-} 5 | {-# LANGUAGE FlexibleContexts #-} 6 | {-# LANGUAGE DataKinds #-} 7 | {-# LANGUAGE GADTs #-} 8 | module JsonToHaskell.Internal.Printer where 9 | 10 | import Lens.Micro.Platform (makeLenses) 11 | import JsonToHaskell.Internal.Parser 12 | import JsonToHaskell.Internal.Options 13 | import Control.Monad.State 14 | import Control.Monad.Reader 15 | import Control.Monad.Writer 16 | import Data.Foldable (for_, fold) 17 | import qualified Data.Bimap as BM 18 | import qualified Data.HashMap.Strict as HM 19 | import qualified Data.Map as M 20 | import qualified Data.Text as T 21 | import Text.Casing (toCamel, fromAny) 22 | import Data.Char (isAlpha, isAlphaNum) 23 | import Lens.Micro.Platform (view, (+~), (<&>)) 24 | 25 | 26 | -- | The environment used for printing the module 27 | data Env = Env 28 | { _options :: Options 29 | , _indentationLevel :: Int 30 | } 31 | makeLenses ''Env 32 | 33 | 34 | 35 | -- | Convert a name into a valid haskell field name 36 | toFieldName :: T.Text -> T.Text 37 | toFieldName = T.filter (isAlphaNum) . T.pack . toCamel . fromAny . T.unpack . T.dropWhile (not . isAlpha) 38 | 39 | type StructName = T.Text 40 | 41 | -- | Wrap a writer in parens 42 | parens :: MonadWriter T.Text m => m a -> m a 43 | parens m = 44 | tell "(" *> m <* tell ")" 45 | 46 | -- | Embed the given writer at the correct level of indentation and add a newline 47 | line :: (MonadReader Env m, MonadWriter T.Text m) => m a -> m a 48 | line m = do 49 | n <- view indentationLevel 50 | tell $ T.replicate n " " 51 | a <- m 52 | newline 53 | return a 54 | 55 | -- | Add a newline 56 | newline :: MonadWriter T.Text m => m () 57 | newline = tell "\n" 58 | 59 | -- | Indent all 'line's of the given writer by one tabstop 60 | indented :: (MonadReader Env m, MonadWriter T.Text m) => m a -> m a 61 | indented m = do 62 | n <- view (options . tabStop) 63 | local (indentationLevel +~ n) m 64 | 65 | type Builder a = ReaderT Env (Writer T.Text) () 66 | 67 | writeFieldName :: T.Text -> T.Text -> Builder () 68 | writeFieldName recordName fieldName = do 69 | addPrefix <- view (options . prefixRecordFields) 70 | let fieldName' = if addPrefix 71 | then recordName <> toRecordName fieldName 72 | else fieldName 73 | tell $ toFieldName fieldName' 74 | 75 | -- | Write out the Haskell code for a record data type 76 | writeRecord :: StructName -> RecordFields 'Ref -> Builder () 77 | writeRecord name struct = do 78 | line . tell . fold $ ["data ", name, " = ", name] 79 | 80 | indented $ do 81 | when (HM.null struct) . line $ tell "{" 82 | for_ (zip [0 :: Int ..] $ HM.toList struct) $ \(i, (k, v)) -> do 83 | line $ do 84 | if (i == 0) then tell "{ " 85 | else tell ", " 86 | writeFieldName name k 87 | tell " :: " 88 | useStrictData <- view (options . strictData) 89 | when useStrictData (tell "!") 90 | writeType False v 91 | indented . line $ do 92 | tell "} " 93 | tell "deriving (Show, Eq, Ord)" 94 | 95 | -- | Write out the Haskell code for a ToJSON instance for the given record 96 | writeToJSONInstance :: StructName -> RecordFields 'Ref -> Builder () 97 | writeToJSONInstance name struct = do 98 | line $ tell $ "instance ToJSON " <> name <> " where" 99 | indented $ do 100 | line $ do 101 | tell $ "toJSON " <> name 102 | when (not . HM.null $ struct) $ tell "{..}" 103 | tell " = object" 104 | indented $ do 105 | when (HM.null struct) . line $ tell "[" 106 | for_ (zip [0 :: Int ..] $ HM.keys struct) $ \(i, k) -> do 107 | line $ do 108 | if (i == 0) then tell "[ " 109 | else tell ", " 110 | tell $ "\"" <> escapeQuotes k <> "\"" 111 | tell " .= " 112 | writeFieldName name k 113 | line . tell $ "] " 114 | 115 | -- | Write out the Haskell code for a FromJSON instance for the given record 116 | writeFromJSONInstance :: StructName -> RecordFields 'Ref -> Builder () 117 | writeFromJSONInstance name struct = do 118 | line $ tell $ "instance FromJSON " <> name <> " where" 119 | indented $ do 120 | line $ tell $ "parseJSON (Object v) = do" 121 | indented $ do 122 | for_ (HM.keys struct) $ \k -> do 123 | line $ do 124 | writeFieldName name k 125 | tell " <- v .: " 126 | tell $ "\"" <> escapeQuotes k <> "\"" 127 | line $ do 128 | tell $ "pure $ " <> name 129 | when (not . HM.null $ struct) $ tell "{..}" 130 | line $ tell $ "parseJSON invalid =" 131 | indented $ do 132 | line . tell $ "prependFailure \"parsing " <> name <> " failed, \"" 133 | indented . line . tell $ "(typeMismatch \"Object\" invalid)" 134 | 135 | 136 | -- | Write out the Haskell representation for a given JSON type 137 | writeType :: Bool -> Struct 'Ref -> Builder () 138 | writeType nested struct = do 139 | strict <- view (options . strictData) 140 | let wrapOuter = if strict || nested then parens else id 141 | case struct of 142 | SNull -> wrapOuter $ tell "Maybe Value" 143 | SString -> do 144 | getTextType >>= tell 145 | SNumber t -> do 146 | pref <- view (options . numberType) 147 | case (pref, t) of 148 | (UseFloats, _) -> tell "Float" 149 | (UseDoubles, _) -> tell "Double" 150 | (UseScientific, _) -> tell "Scientific" 151 | (UseSmartFloats, Fractional) -> tell "Float" 152 | (UseSmartFloats, Whole) -> tell "Int" 153 | (UseSmartDoubles, Fractional) -> tell "Double" 154 | (UseSmartDoubles, Whole) -> tell "Int" 155 | 156 | SBool -> tell "Bool" 157 | SValue -> tell "Value" 158 | SMap s -> do 159 | txtType <- getTextType 160 | mapStr <- view (options . mapType) <&> \case 161 | UseMap -> "Map" 162 | UseHashMap -> "HashMap" 163 | wrapOuter $ tell (mapStr <> " " <> txtType <> " ") >> writeType True s 164 | SArray s -> do 165 | view (options . listType) >>= \case 166 | UseList -> tell "[" >> writeType False s >> tell "]" 167 | UseVector -> wrapOuter $ tell "Vector " >> writeType True s 168 | SRecordRef n -> tell n 169 | where 170 | getTextType = do 171 | view (options . textType) <&> \case 172 | UseString -> "String" 173 | UseByteString -> "ByteString" 174 | UseText -> "Text" 175 | 176 | -- | Write out all the given records and their instances 177 | writeModel :: Options -> BM.Bimap T.Text (RecordFields 'Ref) -> T.Text 178 | writeModel opts (BM.toMap -> m) = execWriter . flip runReaderT (Env opts 0) $ do 179 | incHeader <- view (options . includeHeader) 180 | incInstances <- view (options . includeInstances) 181 | includeScientific <- view (options . numberType) <&> (== UseScientific) 182 | includeVector <- view (options . listType) <&> (== UseVector) 183 | includeText <- view (options . textType) <&> (== UseText) 184 | includeByteString <- view (options . textType) <&> (== UseByteString) 185 | when incHeader $ do 186 | tell . T.unlines $ 187 | [ "{-# LANGUAGE DuplicateRecordFields #-}" 188 | , "{-# LANGUAGE RecordWildCards #-}" 189 | , "{-# LANGUAGE OverloadedStrings #-}" 190 | , "module Model where" 191 | , "" 192 | , "import Data.Aeson (ToJSON(..), FromJSON(..), Value(..), (.:), (.=), object)" 193 | , "import Data.Aeson.Types (prependFailure, typeMismatch)" 194 | ] 195 | when includeVector . line . tell $ "import Data.Vector (Vector)" 196 | when includeScientific . line . tell $ "import Data.Scientific (Scientific)" 197 | when includeText . line . tell $ "import Data.Text (Text)" 198 | when includeByteString . line . tell $ "import Data.ByteString (ByteString)" 199 | newline 200 | void . flip M.traverseWithKey m $ \k v -> do 201 | writeRecord k v 202 | newline 203 | when incInstances $ do 204 | void . flip M.traverseWithKey m $ \k v -> do 205 | writeToJSONInstance k v 206 | newline 207 | void . flip M.traverseWithKey m $ \k v -> do 208 | writeFromJSONInstance k v 209 | newline 210 | 211 | escapeQuotes :: T.Text -> T.Text 212 | escapeQuotes = T.replace "\"" "\\\"" 213 | -------------------------------------------------------------------------------- /stack.yaml: -------------------------------------------------------------------------------- 1 | # This file was automatically generated by 'stack init' 2 | # 3 | # Some commonly used options have been documented as comments in this file. 4 | # For advanced use and comprehensive documentation of the format, please see: 5 | # https://docs.haskellstack.org/en/stable/yaml_configuration/ 6 | 7 | # Resolver to choose a 'specific' stackage snapshot or a compiler version. 8 | # A snapshot resolver dictates the compiler version and the set of packages 9 | # to be used for project dependencies. For example: 10 | # 11 | # resolver: lts-3.5 12 | # resolver: nightly-2015-09-21 13 | # resolver: ghc-7.10.2 14 | # 15 | # The location of a snapshot can be provided as a file or url. Stack assumes 16 | # a snapshot provided as a file might change, whereas a url resource does not. 17 | # 18 | # resolver: ./custom-snapshot.yaml 19 | # resolver: https://example.com/snapshots/2018-01-01.yaml 20 | resolver: lts-16.17 21 | 22 | # User packages to be built. 23 | # Various formats can be used as shown in the example below. 24 | # 25 | # packages: 26 | # - some-directory 27 | # - https://example.com/foo/bar/baz-0.0.2.tar.gz 28 | # subdirs: 29 | # - auto-update 30 | # - wai 31 | packages: 32 | - . 33 | # Dependency packages to be pulled from upstream that are not in the resolver. 34 | # These entries can reference officially published versions as well as 35 | # forks / in-progress versions pinned to a git hash. For example: 36 | # 37 | extra-deps: 38 | - aeson-extra-0.4.1.3@sha256:8ad8e4d28e46280ea98af2e94dcaaf524c396c9d91b1eba867961efc6e7f923f,2997 39 | # 40 | # extra-deps: [] 41 | 42 | # Override default flag values for local packages and extra-deps 43 | # flags: {} 44 | 45 | # Extra package databases containing global packages 46 | # extra-package-dbs: [] 47 | 48 | # Control whether we use the GHC we find on the path 49 | # system-ghc: true 50 | # 51 | # Require a specific version of stack, using version ranges 52 | # require-stack-version: -any # Default 53 | # require-stack-version: ">=2.5" 54 | # 55 | # Override the architecture used by stack, especially useful on Windows 56 | # arch: i386 57 | # arch: x86_64 58 | # 59 | # Extra directories used by stack for building 60 | # extra-include-dirs: [/path/to/dir] 61 | # extra-lib-dirs: [/path/to/dir] 62 | # 63 | # Allow a newer minor version of GHC than the snapshot specifies 64 | # compiler-check: newer-minor 65 | -------------------------------------------------------------------------------- /stack.yaml.lock: -------------------------------------------------------------------------------- 1 | # This file was autogenerated by Stack. 2 | # You should not edit this file by hand. 3 | # For more information, please see the documentation at: 4 | # https://docs.haskellstack.org/en/stable/lock_files 5 | 6 | packages: 7 | - completed: 8 | hackage: aeson-extra-0.4.1.3@sha256:8ad8e4d28e46280ea98af2e94dcaaf524c396c9d91b1eba867961efc6e7f923f,2997 9 | pantry-tree: 10 | size: 1145 11 | sha256: 432b1bdef20887031fc88dbba9bd13d18594d459a3bd1227da7ec65f2a6ed722 12 | original: 13 | hackage: aeson-extra-0.4.1.3@sha256:8ad8e4d28e46280ea98af2e94dcaaf524c396c9d91b1eba867961efc6e7f923f,2997 14 | snapshots: 15 | - completed: 16 | size: 532386 17 | url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/16/17.yaml 18 | sha256: d3ee1ae797cf63189c95cf27f00700304946c5cb3c1e6a82001cd6584a221e1b 19 | original: lts-16.17 20 | -------------------------------------------------------------------------------- /test/Spec.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE OverloadedStrings #-} 2 | {-# LANGUAGE QuasiQuotes #-} 3 | import Test.Hspec 4 | 5 | import JsonToHaskell 6 | import Data.Maybe 7 | import Data.Aeson 8 | import qualified Data.ByteString.Lazy as BL 9 | import qualified Data.ByteString.Lazy.Char8 as BC 10 | import qualified Data.Text as T 11 | import Text.RawString.QQ (r) 12 | 13 | shouldRender :: BL.ByteString -> T.Text -> Expectation 14 | shouldRender inp out = 15 | (jsonToHaskell simpleOptions{_includeHeader=False, _includeInstances=False} (fromMaybe (error $ "bad json: " <> BC.unpack inp) $ decode inp)) 16 | `shouldBe` T.strip out 17 | 18 | 19 | main :: IO () 20 | main = hspec spec 21 | 22 | -- TODO: Should probably alphabetize records internally to ensure consistent order. 23 | spec :: Spec 24 | spec = do 25 | describe "analyze" $ do 26 | it "should build a record with all types" $ do 27 | [r| 28 | { "a": 1 29 | , "b": "hi" 30 | , "c": [null] 31 | , "d": 2.5 32 | } 33 | |] 34 | `shouldRender` 35 | [r| 36 | data Model = Model 37 | { modelA :: Double 38 | , modelD :: Double 39 | , modelB :: Text 40 | , modelC :: [Maybe Value] 41 | } deriving (Show, Eq, Ord) 42 | |] 43 | it "should share records definitions for identical subrecords" $ do 44 | [r| 45 | { "a": { "name": "bob", "age": 20 } 46 | , "b": { "name": "alice", "age": 22 } 47 | } 48 | |] 49 | `shouldRender` 50 | [r| 51 | data A = A 52 | { aAge :: Double 53 | , aName :: Text 54 | } deriving (Show, Eq, Ord) 55 | 56 | data Model = Model 57 | { modelA :: A 58 | , modelB :: A 59 | } deriving (Show, Eq, Ord) 60 | |] 61 | it "should pick good names for differing records which share field names" $ do 62 | [r| 63 | { "a": { "field": {"name": "bob" } } 64 | , "b": { "field": {"age": 22 } } 65 | } 66 | |] 67 | `shouldRender` 68 | [r| 69 | data A = A 70 | { aField :: Field 71 | } deriving (Show, Eq, Ord) 72 | 73 | data B = B 74 | { bField :: Field2 75 | } deriving (Show, Eq, Ord) 76 | 77 | data Field = Field 78 | { fieldName :: Text 79 | } deriving (Show, Eq, Ord) 80 | 81 | data Field2 = Field2 82 | { field2Age :: Double 83 | } deriving (Show, Eq, Ord) 84 | 85 | data Model = Model 86 | { modelA :: A 87 | , modelB :: B 88 | } deriving (Show, Eq, Ord) 89 | |] 90 | it "should pick the best name if there are multiple possible names but some conflict" $ do 91 | [r| 92 | { "a": { "field": {"name": "bob" } } 93 | , "b": { "field": {"age": 22 } } 94 | , "c": { "other": {"age": 22 } } 95 | } 96 | |] 97 | `shouldRender` 98 | [r| 99 | data A = A 100 | { aField :: Field 101 | } deriving (Show, Eq, Ord) 102 | 103 | data B = B 104 | { bField :: Other 105 | } deriving (Show, Eq, Ord) 106 | 107 | data C = C 108 | { cOther :: Other 109 | } deriving (Show, Eq, Ord) 110 | 111 | data Field = Field 112 | { fieldName :: Text 113 | } deriving (Show, Eq, Ord) 114 | 115 | data Model = Model 116 | { modelA :: A 117 | , modelB :: B 118 | , modelC :: C 119 | } deriving (Show, Eq, Ord) 120 | 121 | data Other = Other 122 | { otherAge :: Double 123 | } deriving (Show, Eq, Ord) 124 | |] 125 | 126 | it "should sanitize weird field and record names" $ do 127 | [r| 128 | { "'t\"!h.*#e nam9e": {"'9sub--field": "bob" } 129 | } 130 | |] 131 | `shouldRender` 132 | [r| 133 | data Model = Model 134 | { modelTheNam9e :: TheNam9e 135 | } deriving (Show, Eq, Ord) 136 | 137 | data TheNam9e = TheNam9e 138 | { theNam9eSubField :: Text 139 | } deriving (Show, Eq, Ord) 140 | |] 141 | --------------------------------------------------------------------------------