Bodigrim pushed to branch wip/zip-them-all at Glasgow Haskell Compiler / GHC

Commits:

28 changed files:

Changes:

  • changelog.d/T27308
    1
    +section: compiler
    
    2
    +synopsis: Drop `preloadClosure` from `UnitState`
    
    3
    +issues: #27308
    
    4
    +mrs: !16108
    
    5
    +
    
    6
    +description: {
    
    7
    +    Drop `preloadClosure` from `UnitState` as it is always set to the empty set.
    
    8
    +    This allows to simplify the `UnitState` and related functions.
    
    9
    +}
    
    10
    +

  • compiler/GHC/CmmToAsm/RV64/CodeGen.hs
    ... ... @@ -718,7 +718,7 @@ getRegister' config plat expr =
    718 718
                   ( \dst ->
    
    719 719
                       code
    
    720 720
                         `appOL` code_x
    
    721
    -                    `snocOL` annExpr expr (FCVT IntToFloat (OpReg to dst) (OpReg from reg_x)) -- (Signed ConVerT Float)
    
    721
    +                    `snocOL` annExpr expr (FCVT IntToFloat (OpReg to dst) (OpReg from reg_x) Rne) -- (Signed ConVerT Float)
    
    722 722
                   )
    
    723 723
             MO_SF_Round from to ->
    
    724 724
               pure
    
    ... ... @@ -726,7 +726,7 @@ getRegister' config plat expr =
    726 726
                   (floatFormat to)
    
    727 727
                   ( \dst ->
    
    728 728
                       code
    
    729
    -                    `snocOL` annExpr expr (FCVT IntToFloat (OpReg to dst) (OpReg from reg)) -- (Signed ConVerT Float)
    
    729
    +                    `snocOL` annExpr expr (FCVT IntToFloat (OpReg to dst) (OpReg from reg) Rne) -- (Signed ConVerT Float)
    
    730 730
                   )
    
    731 731
             -- TODO: Can this case happen?
    
    732 732
             MO_FS_Truncate from to
    
    ... ... @@ -738,7 +738,7 @@ getRegister' config plat expr =
    738 738
                           code
    
    739 739
                             `snocOL`
    
    740 740
                             -- W32 is the smallest width to convert to. Decrease width afterwards.
    
    741
    -                        annExpr expr (FCVT FloatToInt (OpReg W32 dst) (OpReg from reg))
    
    741
    +                        annExpr expr (FCVT FloatToInt (OpReg W32 dst) (OpReg from reg) Rtz)
    
    742 742
                             `appOL` signExtendAdjustPrecission W32 to dst dst -- (float convert (-> zero) signed)
    
    743 743
                       )
    
    744 744
             MO_FS_Truncate from to ->
    
    ... ... @@ -747,7 +747,7 @@ getRegister' config plat expr =
    747 747
                   (intFormat to)
    
    748 748
                   ( \dst ->
    
    749 749
                       code
    
    750
    -                    `snocOL` annExpr expr (FCVT FloatToInt (OpReg to dst) (OpReg from reg))
    
    750
    +                    `snocOL` annExpr expr (FCVT FloatToInt (OpReg to dst) (OpReg from reg) Rtz)
    
    751 751
                         `appOL` truncateReg from to dst -- (float convert (-> zero) signed)
    
    752 752
                   )
    
    753 753
             MO_UU_Conv from to
    
    ... ... @@ -769,9 +769,18 @@ getRegister' config plat expr =
    769 769
                         `appOL` truncateReg from to dst
    
    770 770
                   )
    
    771 771
             MO_SS_Conv from to -> ss_conv from to reg code
    
    772
    -        MO_FF_Conv from to -> return $ Any (floatFormat to) (\dst -> code `snocOL` annExpr e (FCVT FloatToFloat (OpReg to dst) (OpReg from reg)))
    
    772
    +        MO_FF_Conv from to -> return $ Any (floatFormat to) (\dst -> code `snocOL` annExpr e (FCVT FloatToFloat (OpReg to dst) (OpReg from reg) Rne))
    
    773 773
             MO_WF_Bitcast w    -> return $ Any (floatFormat w)  (\dst -> code `snocOL` MOV (OpReg w dst) (OpReg w reg))
    
    774
    -        MO_FW_Bitcast w    -> return $ Any (intFormat w)    (\dst -> code `snocOL` MOV (OpReg w dst) (OpReg w reg))
    
    774
    +        MO_FW_Bitcast w ->
    
    775
    +          return
    
    776
    +            $ Any
    
    777
    +              (intFormat w)
    
    778
    +              ( \dst ->
    
    779
    +                  code
    
    780
    +                    `snocOL` MOV (OpReg w dst) (OpReg w reg)
    
    781
    +                    -- FMV.X.W sign-extends the value, so truncate the result
    
    782
    +                    `appOL` truncateReg W64 w dst
    
    783
    +              )
    
    775 784
     
    
    776 785
             -- Conversions
    
    777 786
             -- TODO: Duplication with MO_UU_Conv
    

  • compiler/GHC/CmmToAsm/RV64/Instr.hs
    ... ... @@ -106,7 +106,7 @@ regUsageOfInstr platform instr = case instr of
    106 106
       LDR _ dst src -> usage (regOp src, regOp dst)
    
    107 107
       LDRU _ dst src -> usage (regOp src, regOp dst)
    
    108 108
       FENCE _ _ -> usage ([], [])
    
    109
    -  FCVT _variant dst src -> usage (regOp src, regOp dst)
    
    109
    +  FCVT _variant dst src _rm -> usage (regOp src, regOp dst)
    
    110 110
       FABS dst src -> usage (regOp src, regOp dst)
    
    111 111
       FMIN dst src1 src2 -> usage (regOp src1 ++ regOp src2, regOp dst)
    
    112 112
       FMAX dst src1 src2 -> usage (regOp src1 ++ regOp src2, regOp dst)
    
    ... ... @@ -165,6 +165,7 @@ callerSavedRegisters =
    165 165
         ++ map regSingle [t3RegNo .. t6RegNo]
    
    166 166
         ++ map regSingle [ft0RegNo .. ft7RegNo]
    
    167 167
         ++ map regSingle [fa0RegNo .. fa7RegNo]
    
    168
    +    ++ map regSingle [ft8RegNo .. ft11RegNo]
    
    168 169
     
    
    169 170
     -- | Apply a given mapping to all the register references in this instruction.
    
    170 171
     patchRegsOfInstr :: Instr -> (Reg -> Reg) -> Instr
    
    ... ... @@ -205,7 +206,7 @@ patchRegsOfInstr instr env = case instr of
    205 206
       LDR f o1 o2 -> LDR f (patchOp o1) (patchOp o2)
    
    206 207
       LDRU f o1 o2 -> LDRU f (patchOp o1) (patchOp o2)
    
    207 208
       FENCE o1 o2 -> FENCE o1 o2
    
    208
    -  FCVT variant o1 o2 -> FCVT variant (patchOp o1) (patchOp o2)
    
    209
    +  FCVT variant o1 o2 rm -> FCVT variant (patchOp o1) (patchOp o2) rm
    
    209 210
       FABS o1 o2 -> FABS (patchOp o1) (patchOp o2)
    
    210 211
       FMIN o1 o2 o3 -> FMIN (patchOp o1) (patchOp o2) (patchOp o3)
    
    211 212
       FMAX o1 o2 o3 -> FMAX (patchOp o1) (patchOp o2) (patchOp o3)
    
    ... ... @@ -612,7 +613,7 @@ data Instr
    612 613
         -- Memory barrier.
    
    613 614
         FENCE FenceType FenceType
    
    614 615
       | -- | Floating point conversion
    
    615
    -    FCVT FcvtVariant Operand Operand
    
    616
    +    FCVT FcvtVariant Operand Operand RoundingMode
    
    616 617
       | -- | Floating point ABSolute value
    
    617 618
         FABS Operand Operand
    
    618 619
     
    
    ... ... @@ -636,6 +637,21 @@ data FenceType = FenceRead | FenceWrite | FenceReadWrite
    636 637
     -- | Variant of a floating point conversion instruction
    
    637 638
     data FcvtVariant = FloatToFloat | IntToFloat | FloatToInt
    
    638 639
     
    
    640
    +-- | The rounding mode associated with an instruction
    
    641
    +data RoundingMode
    
    642
    +  = -- | Round to nearest, ties to even
    
    643
    +    Rne
    
    644
    +  | -- | Round toward zero
    
    645
    +    Rtz
    
    646
    +  | -- | Round downward (toward negative infinity)
    
    647
    +    Rdn
    
    648
    +  | -- | Round upward (toward positive infinity)
    
    649
    +    Rup
    
    650
    +  | -- | Round to nearest, ties to max magnitude
    
    651
    +    Rmm
    
    652
    +  | -- | Dynamic rounding mode
    
    653
    +    Dyn
    
    654
    +
    
    639 655
     instrCon :: Instr -> String
    
    640 656
     instrCon i =
    
    641 657
       case i of
    

  • compiler/GHC/CmmToAsm/RV64/Ppr.hs
    ... ... @@ -406,6 +406,17 @@ pprReg w r = case r of
    406 406
           -- no support for widths > W64.
    
    407 407
           | otherwise = pprPanic "Unsupported width in register (max is 64)" (ppr w <+> int i)
    
    408 408
     
    
    409
    +-- | Pretty print a rounding mode
    
    410
    +--
    
    411
    +-- If the rounding mode is omitted, 'dyn' will be used.
    
    412
    +pprRm :: IsLine doc => RoundingMode -> doc
    
    413
    +pprRm Rne = text "rne"
    
    414
    +pprRm Rtz = text "rtz"
    
    415
    +pprRm Rdn = text "rdn"
    
    416
    +pprRm Rup = text "rup"
    
    417
    +pprRm Rmm = text "rmm"
    
    418
    +pprRm Dyn = text "dyn"
    
    419
    +
    
    409 420
     -- | Single precission `Operand` (floating-point)
    
    410 421
     isSingleOp :: Operand -> Bool
    
    411 422
     isSingleOp (OpReg W32 _) = True
    
    ... ... @@ -643,25 +654,26 @@ pprInstr platform instr = case instr of
    643 654
       LDRU FF64 o1 o2@(OpAddr (AddrRegImm _ _)) -> op2 (text "\tfld") o1 o2
    
    644 655
       LDRU f o1 o2 -> pprPanic "Unsupported unsigned load" ((text . show) f <+> pprOp platform o1 <+> pprOp platform o2)
    
    645 656
       FENCE r w -> line $ text "\tfence" <+> pprFenceType r <> char ',' <+> pprFenceType w
    
    646
    -  FCVT FloatToFloat o1@(OpReg W32 _) o2@(OpReg W64 _) -> op2 (text "\tfcvt.s.d") o1 o2
    
    647
    -  FCVT FloatToFloat o1@(OpReg W64 _) o2@(OpReg W32 _) -> op2 (text "\tfcvt.d.s") o1 o2
    
    648
    -  FCVT FloatToFloat o1 o2 ->
    
    657
    +  FCVT FloatToFloat o1@(OpReg W32 _) o2@(OpReg W64 _) rm -> op2rm (text "\tfcvt.s.d") o1 o2 rm
    
    658
    +  -- The assembler seems to be unhappy with explicit rounding mode on fcvt.d.s
    
    659
    +  FCVT FloatToFloat o1@(OpReg W64 _) o2@(OpReg W32 _) _rm -> op2 (text "\tfcvt.d.s") o1 o2
    
    660
    +  FCVT FloatToFloat o1 o2 rm ->
    
    649 661
         pprPanic "RV64.pprInstr - impossible float to float conversion"
    
    650
    -      $ line (pprOp platform o1 <> text "->" <> pprOp platform o2)
    
    651
    -  FCVT IntToFloat o1@(OpReg W32 _) o2@(OpReg W32 _) -> op2 (text "\tfcvt.s.w") o1 o2
    
    652
    -  FCVT IntToFloat o1@(OpReg W32 _) o2@(OpReg W64 _) -> op2 (text "\tfcvt.s.l") o1 o2
    
    653
    -  FCVT IntToFloat o1@(OpReg W64 _) o2@(OpReg W32 _) -> op2 (text "\tfcvt.d.w") o1 o2
    
    654
    -  FCVT IntToFloat o1@(OpReg W64 _) o2@(OpReg W64 _) -> op2 (text "\tfcvt.d.l") o1 o2
    
    655
    -  FCVT IntToFloat o1 o2 ->
    
    662
    +      $ line (pprOp platform o1 <> text "->" <> pprOp platform o2 <> text "," <> pprRm rm)
    
    663
    +  FCVT IntToFloat o1@(OpReg W32 _) o2@(OpReg W32 _) rm -> op2rm (text "\tfcvt.s.w") o1 o2 rm
    
    664
    +  FCVT IntToFloat o1@(OpReg W32 _) o2@(OpReg W64 _) rm -> op2rm (text "\tfcvt.s.l") o1 o2 rm
    
    665
    +  FCVT IntToFloat o1@(OpReg W64 _) o2@(OpReg W32 _) rm -> op2rm (text "\tfcvt.d.w") o1 o2 rm
    
    666
    +  FCVT IntToFloat o1@(OpReg W64 _) o2@(OpReg W64 _) rm -> op2rm (text "\tfcvt.d.l") o1 o2 rm
    
    667
    +  FCVT IntToFloat o1 o2 rm ->
    
    656 668
         pprPanic "RV64.pprInstr - impossible integer to float conversion"
    
    657
    -      $ line (pprOp platform o1 <> text "->" <> pprOp platform o2)
    
    658
    -  FCVT FloatToInt o1@(OpReg W32 _) o2@(OpReg W32 _) -> op2 (text "\tfcvt.w.s") o1 o2
    
    659
    -  FCVT FloatToInt o1@(OpReg W32 _) o2@(OpReg W64 _) -> op2 (text "\tfcvt.w.d") o1 o2
    
    660
    -  FCVT FloatToInt o1@(OpReg W64 _) o2@(OpReg W32 _) -> op2 (text "\tfcvt.l.s") o1 o2
    
    661
    -  FCVT FloatToInt o1@(OpReg W64 _) o2@(OpReg W64 _) -> op2 (text "\tfcvt.l.d") o1 o2
    
    662
    -  FCVT FloatToInt o1 o2 ->
    
    669
    +      $ line (pprOp platform o1 <> text "->" <> pprOp platform o2 <> text "," <> pprRm rm)
    
    670
    +  FCVT FloatToInt o1@(OpReg W32 _) o2@(OpReg W32 _) rm -> op2rm (text "\tfcvt.w.s") o1 o2 rm
    
    671
    +  FCVT FloatToInt o1@(OpReg W32 _) o2@(OpReg W64 _) rm -> op2rm (text "\tfcvt.w.d") o1 o2 rm
    
    672
    +  FCVT FloatToInt o1@(OpReg W64 _) o2@(OpReg W32 _) rm -> op2rm (text "\tfcvt.l.s") o1 o2 rm
    
    673
    +  FCVT FloatToInt o1@(OpReg W64 _) o2@(OpReg W64 _) rm -> op2rm (text "\tfcvt.l.d") o1 o2 rm
    
    674
    +  FCVT FloatToInt o1 o2 rm ->
    
    663 675
         pprPanic "RV64.pprInstr - impossible float to integer conversion"
    
    664
    -      $ line (pprOp platform o1 <> text "->" <> pprOp platform o2)
    
    676
    +      $ line (pprOp platform o1 <> text "->" <> pprOp platform o2 <> text "," <> pprRm rm)
    
    665 677
       FABS o1 o2 | isSingleOp o2 -> op2 (text "\tfabs.s") o1 o2
    
    666 678
       FABS o1 o2 | isDoubleOp o2 -> op2 (text "\tfabs.d") o1 o2
    
    667 679
       FMIN o1 o2 o3 | isSingleOp o1 -> op3 (text "\tfmin.s") o1 o2 o3
    
    ... ... @@ -678,6 +690,8 @@ pprInstr platform instr = case instr of
    678 690
       instr -> panic $ "RV64.pprInstr - Unknown instruction: " ++ instrCon instr
    
    679 691
       where
    
    680 692
         op2 op o1 o2 = line $ op <+> pprOp platform o1 <> comma <+> pprOp platform o2
    
    693
    +    op2rm op o1 o2 Dyn = line $ op <+> pprOp platform o1 <> comma <+> pprOp platform o2
    
    694
    +    op2rm op o1 o2 rm = line $ op <+> pprOp platform o1 <> comma <+> pprOp platform o2 <> comma <+> pprRm rm
    
    681 695
         op3 op o1 o2 o3 = line $ op <+> pprOp platform o1 <> comma <+> pprOp platform o2 <> comma <+> pprOp platform o3
    
    682 696
         op4 op o1 o2 o3 o4 = line $ op <+> pprOp platform o1 <> comma <+> pprOp platform o2 <> comma <+> pprOp platform o3 <> comma <+> pprOp platform o4
    
    683 697
         pprFenceType FenceRead = text "r"
    

  • compiler/GHC/CmmToAsm/RV64/Regs.hs
    ... ... @@ -53,9 +53,14 @@ d7RegNo, ft7RegNo :: RegNo
    53 53
     d7RegNo = 39
    
    54 54
     ft7RegNo = d7RegNo
    
    55 55
     
    
    56
    +d28RegNo, ft8RegNo :: RegNo
    
    57
    +d28RegNo = 60
    
    58
    +ft8RegNo = d28RegNo
    
    59
    +
    
    56 60
     -- | Last floating point register.
    
    57
    -d31RegNo :: RegNo
    
    61
    +d31RegNo, ft11RegNo :: RegNo
    
    58 62
     d31RegNo = 63
    
    63
    +ft11RegNo = d31RegNo
    
    59 64
     
    
    60 65
     a0RegNo, x10RegNo :: RegNo
    
    61 66
     x10RegNo = 10
    

  • compiler/GHC/Data/List/NonEmpty.hs
    1
    +{-# OPTIONS_GHC -Wno-dodgy-imports #-}
    
    1 2
     module GHC.Data.List.NonEmpty (module Data.List.NonEmpty, module GHC.Data.List.NonEmpty, toList) where
    
    2 3
     
    
    3 4
     import Prelude (Bool, (.))
    
    4 5
     import Control.Applicative
    
    5 6
     import qualified Control.Monad as List (zipWithM)
    
    6 7
     import Data.Foldable (Foldable (toList))
    
    7
    -import Data.List.NonEmpty hiding (toList, unzip)
    
    8
    +import Data.List.NonEmpty hiding (toList, unzip, unzip3)
    
    8 9
     import qualified Data.List as List
    
    9 10
     import qualified GHC.Data.List as List
    
    10 11
     
    

  • compiler/GHC/Driver/Backpack.hs
    ... ... @@ -242,7 +242,6 @@ withBkpSession cid insts deps session_type do_this = do
    242 242
                 -- Synthesize the flags
    
    243 243
                 , packageFlags = packageFlags dflags ++ map (\(uid0, rn) ->
    
    244 244
                   let uid = unwireUnit unit_state
    
    245
    -                        $ improveUnit unit_state
    
    246 245
                             $ renameHoleUnit unit_state (listToUFM insts) uid0
    
    247 246
                   in ExposePackage
    
    248 247
                     (showSDoc dflags
    
    ... ... @@ -311,19 +310,16 @@ buildUnit session cid insts lunit = do
    311 310
         -- The compilation dependencies are just the appropriately filled
    
    312 311
         -- in unit IDs which must be compiled before we can compile.
    
    313 312
         let hsubst = listToUFM insts
    
    314
    -        deps0 = map (renameHoleUnit (hsc_units hsc_env) hsubst) raw_deps
    
    313
    +        deps = map (renameHoleUnit (hsc_units hsc_env) hsubst) raw_deps
    
    315 314
     
    
    316 315
         -- Build dependencies OR make sure they make sense. BUT NOTE,
    
    317 316
         -- we can only check the ones that are fully filled; the rest
    
    318 317
         -- we have to defer until we've typechecked our local signature.
    
    319 318
         -- TODO: work this into GHC.Driver.Make!!
    
    320
    -    forM_ (zip [1..] deps0) $ \(i, dep) ->
    
    319
    +    forM_ (zip [1..] deps) $ \(i, dep) ->
    
    321 320
             case session of
    
    322 321
                 TcSession -> return ()
    
    323
    -            _ -> compileInclude (length deps0) (i, dep)
    
    324
    -
    
    325
    -    -- IMPROVE IT
    
    326
    -    let deps = map (improveUnit (hsc_units hsc_env)) deps0
    
    322
    +            _ -> compileInclude (length deps) (i, dep)
    
    327 323
     
    
    328 324
         mb_old_eps <- case session of
    
    329 325
                         TcSession -> fmap Just getEpsGhc
    

  • compiler/GHC/Iface/Load.hs
    ... ... @@ -914,13 +914,13 @@ findAndReadIface hsc_env doc_str mod wanted_mod hi_boot_file = do
    914 914
                   && not (isOneShot (ghcMode dflags))
    
    915 915
                 then return (Failed (HomeModError mod loc))
    
    916 916
                 else do
    
    917
    -                r <- read_file hooks logger name_cache unit_state dflags wanted_mod (ml_hi_file loc)
    
    917
    +                r <- read_file hooks logger name_cache dflags wanted_mod (ml_hi_file loc)
    
    918 918
                     case r of
    
    919 919
                       Failed err
    
    920 920
                         -> return (Failed $ BadIfaceFile err)
    
    921 921
                       Succeeded (iface,_fp)
    
    922 922
                         -> do
    
    923
    -                        r2 <- load_dynamic_too_maybe hooks logger name_cache unit_state
    
    923
    +                        r2 <- load_dynamic_too_maybe hooks logger name_cache
    
    924 924
                                                      (setDynamicNow dflags) wanted_mod
    
    925 925
                                                      iface loc
    
    926 926
                             case r2 of
    
    ... ... @@ -936,20 +936,20 @@ findAndReadIface hsc_env doc_str mod wanted_mod hi_boot_file = do
    936 936
                                   err
    
    937 937
     
    
    938 938
     -- | Check if we need to try the dynamic interface for -dynamic-too
    
    939
    -load_dynamic_too_maybe :: Hooks -> Logger -> NameCache -> UnitState -> DynFlags
    
    939
    +load_dynamic_too_maybe :: Hooks -> Logger -> NameCache -> DynFlags
    
    940 940
                            -> Module -> ModIface -> ModLocation
    
    941 941
                            -> IO (MaybeErr MissingInterfaceError ())
    
    942
    -load_dynamic_too_maybe hooks logger name_cache unit_state dflags wanted_mod iface loc
    
    942
    +load_dynamic_too_maybe hooks logger name_cache dflags wanted_mod iface loc
    
    943 943
       -- Indefinite interfaces are ALWAYS non-dynamic.
    
    944 944
       | not (moduleIsDefinite (mi_module iface)) = return (Succeeded ())
    
    945
    -  | gopt Opt_BuildDynamicToo dflags = load_dynamic_too hooks logger name_cache unit_state dflags wanted_mod iface loc
    
    945
    +  | gopt Opt_BuildDynamicToo dflags = load_dynamic_too hooks logger name_cache dflags wanted_mod iface loc
    
    946 946
       | otherwise = return (Succeeded ())
    
    947 947
     
    
    948
    -load_dynamic_too :: Hooks -> Logger -> NameCache -> UnitState -> DynFlags
    
    948
    +load_dynamic_too :: Hooks -> Logger -> NameCache -> DynFlags
    
    949 949
                      -> Module -> ModIface -> ModLocation
    
    950 950
                      -> IO (MaybeErr MissingInterfaceError ())
    
    951
    -load_dynamic_too hooks logger name_cache unit_state dflags wanted_mod iface loc = do
    
    952
    -  read_file hooks logger name_cache unit_state dflags wanted_mod (ml_dyn_hi_file loc) >>= \case
    
    951
    +load_dynamic_too hooks logger name_cache dflags wanted_mod iface loc = do
    
    952
    +  read_file hooks logger name_cache dflags wanted_mod (ml_dyn_hi_file loc) >>= \case
    
    953 953
         Succeeded (dynIface, _)
    
    954 954
          | mi_mod_hash iface == mi_mod_hash dynIface
    
    955 955
          -> return (Succeeded ())
    
    ... ... @@ -963,10 +963,10 @@ load_dynamic_too hooks logger name_cache unit_state dflags wanted_mod iface loc
    963 963
     
    
    964 964
     
    
    965 965
     
    
    966
    -read_file :: Hooks -> Logger -> NameCache -> UnitState -> DynFlags
    
    966
    +read_file :: Hooks -> Logger -> NameCache -> DynFlags
    
    967 967
               -> Module -> FilePath
    
    968 968
               -> IO (MaybeErr ReadInterfaceError (ModIface, FilePath))
    
    969
    -read_file hooks logger name_cache unit_state dflags wanted_mod file_path = do
    
    969
    +read_file hooks logger name_cache dflags wanted_mod file_path = do
    
    970 970
     
    
    971 971
       -- Figure out what is recorded in mi_module.  If this is
    
    972 972
       -- a fully definite interface, it'll match exactly, but
    
    ... ... @@ -975,7 +975,7 @@ read_file hooks logger name_cache unit_state dflags wanted_mod file_path = do
    975 975
             case getModuleInstantiation wanted_mod of
    
    976 976
                 (_, Nothing) -> wanted_mod
    
    977 977
                 (_, Just indef_mod) ->
    
    978
    -              instModuleToModule unit_state
    
    978
    +              instModuleToModule
    
    979 979
                     (uninstantiateInstantiatedModule indef_mod)
    
    980 980
       read_result <- readIface hooks logger dflags name_cache wanted_mod' file_path
    
    981 981
       case read_result of
    

  • compiler/GHC/Iface/Recomp.hs
    ... ... @@ -620,7 +620,7 @@ checkMergedSignatures hsc_env mod_summary self_recomp = do
    620 620
             new_merged = case lookupUniqMap (requirementContext unit_state)
    
    621 621
                               (ms_mod_name mod_summary) of
    
    622 622
                             Nothing -> []
    
    623
    -                        Just r -> sort $ map (instModuleToModule unit_state) r
    
    623
    +                        Just r -> sort $ map instModuleToModule r
    
    624 624
         if old_merged == new_merged
    
    625 625
             then up_to_date logger (text "signatures to merge in unchanged" $$ ppr new_merged)
    
    626 626
             else return $ needsRecompileBecause SigsMergeChanged
    

  • compiler/GHC/Unit.hs
    ... ... @@ -226,8 +226,8 @@ on-the-fly:
    226 226
     A 'VirtUnit' may be indefinite or definite, it depends on whether some holes
    
    227 227
     remain in the instantiated unit OR in the instantiating units (recursively).
    
    228 228
     Having a fully instantiated (i.e. definite) virtual unit can lead to some issues
    
    229
    -if there is a matching compiled unit in the preload closure.  See Note [VirtUnit
    
    230
    -to RealUnit improvement]
    
    229
    +if there is a matching compiled unit in the preload closure.
    
    230
    +See Note [VirtUnit to RealUnit improvement]
    
    231 231
     
    
    232 232
     Unit database and indefinite units
    
    233 233
     ----------------------------------
    
    ... ... @@ -314,7 +314,6 @@ field in the SDocContext to pretty-print.
    314 314
           (i.e. GHC doesn't correctly call `pprWithUnitState` before pretty-printing a
    
    315 315
           UnitId), that's what will be shown to the user so it's no big deal.
    
    316 316
     
    
    317
    -
    
    318 317
     Note [VirtUnit to RealUnit improvement]
    
    319 318
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    320 319
     
    
    ... ... @@ -332,6 +331,8 @@ same type-checking session, their names won't match (e.g. "abc:M.X" vs
    332 331
     As we want them to match we just replace the virtual unit with the installed
    
    333 332
     one: for some reason this is called "improvement".
    
    334 333
     
    
    334
    +HISTORICAL:
    
    335
    +
    
    335 336
     There is one last niggle: improvement based on the unit database means
    
    336 337
     that we might end up developing on a unit that is not transitively
    
    337 338
     depended upon by the units the user specified directly via command line
    
    ... ... @@ -340,6 +341,12 @@ instantiations are out of date. The solution is to only improve a
    340 341
     unit id if the new unit id is part of the 'preloadClosure'; i.e., the
    
    341 342
     closure of all the units which were explicitly specified.
    
    342 343
     
    
    344
    +NOTE:
    
    345
    +
    
    346
    +The 'preloadClosure' was completely unused, thus we removed it without
    
    347
    +changing any of the tests. It doesn't seem to be necessary any more.
    
    348
    +It is unclear at which exact point this became redundant.
    
    349
    +
    
    343 350
     Note [Representation of module/name variables]
    
    344 351
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    345 352
     In our ICFP'16, we use <A> to represent module holes, and {A.T} to represent
    

  • compiler/GHC/Unit/State.hs
    ... ... @@ -7,7 +7,6 @@ module GHC.Unit.State (
    7 7
     
    
    8 8
             -- * Reading the package config, and processing cmdline args
    
    9 9
             UnitState(..),
    
    10
    -        PreloadUnitClosure,
    
    11 10
             UnitDatabase (..),
    
    12 11
             UnitErr (..),
    
    13 12
             emptyUnitState,
    
    ... ... @@ -29,7 +28,6 @@ module GHC.Unit.State (
    29 28
     
    
    30 29
             lookupPackageName,
    
    31 30
             resolvePackageImport,
    
    32
    -        improveUnit,
    
    33 31
             searchPackageId,
    
    34 32
             listVisibleModuleNames,
    
    35 33
             lookupModuleInAllUnits,
    
    ... ... @@ -89,7 +87,6 @@ import GHC.Unit.Home
    89 87
     
    
    90 88
     import GHC.Types.Unique.FM
    
    91 89
     import GHC.Types.Unique.DFM
    
    92
    -import GHC.Types.Unique.Set
    
    93 90
     import GHC.Types.Unique.DSet
    
    94 91
     import GHC.Types.Unique.Map
    
    95 92
     import GHC.Types.Unique
    
    ... ... @@ -268,8 +265,6 @@ originEmpty :: ModuleOrigin -> Bool
    268 265
     originEmpty (ModOrigin Nothing [] [] False) = True
    
    269 266
     originEmpty _ = False
    
    270 267
     
    
    271
    -type PreloadUnitClosure = UniqSet UnitId
    
    272
    -
    
    273 268
     -- | 'UniqFM' map from 'Unit' to a 'UnitVisibility'.
    
    274 269
     type VisibilityMap = UniqMap Unit UnitVisibility
    
    275 270
     
    
    ... ... @@ -432,13 +427,6 @@ data UnitState = UnitState {
    432 427
       -- may have the 'exposed' flag be 'False'.)
    
    433 428
       unitInfoMap :: UnitInfoMap,
    
    434 429
     
    
    435
    -  -- | The set of transitively reachable units according
    
    436
    -  -- to the explicitly provided command line arguments.
    
    437
    -  -- A fully instantiated VirtUnit may only be replaced by a RealUnit from
    
    438
    -  -- this set.
    
    439
    -  -- See Note [VirtUnit to RealUnit improvement]
    
    440
    -  preloadClosure :: PreloadUnitClosure,
    
    441
    -
    
    442 430
       -- | A mapping of 'PackageName' to 'UnitId'. If several units have the same
    
    443 431
       -- package name (e.g. different instantiations), then we return one of them...
    
    444 432
       -- This is used when users refer to packages in Backpack includes.
    
    ... ... @@ -491,7 +479,6 @@ data UnitState = UnitState {
    491 479
     emptyUnitState :: UnitState
    
    492 480
     emptyUnitState = UnitState {
    
    493 481
         unitInfoMap    = emptyUniqMap,
    
    494
    -    preloadClosure = emptyUniqSet,
    
    495 482
         packageNameMap = emptyUFM,
    
    496 483
         wireMap        = emptyUniqMap,
    
    497 484
         unwireMap      = emptyUniqMap,
    
    ... ... @@ -517,7 +504,7 @@ type UnitInfoMap = UniqMap UnitId UnitInfo
    517 504
     
    
    518 505
     -- | Find the unit we know about with the given unit, if any
    
    519 506
     lookupUnit :: UnitState -> Unit -> Maybe UnitInfo
    
    520
    -lookupUnit pkgs = lookupUnit' (allowVirtualUnits pkgs) (unitInfoMap pkgs) (preloadClosure pkgs)
    
    507
    +lookupUnit pkgs = lookupUnit' (allowVirtualUnits pkgs) (unitInfoMap pkgs)
    
    521 508
     
    
    522 509
     -- | A more specialized interface, which doesn't require a 'UnitState' (so it
    
    523 510
     -- can be used while we're initializing 'DynFlags')
    
    ... ... @@ -525,16 +512,15 @@ lookupUnit pkgs = lookupUnit' (allowVirtualUnits pkgs) (unitInfoMap pkgs) (prelo
    525 512
     -- Parameters:
    
    526 513
     --    * a boolean specifying whether or not to look for on-the-fly renamed interfaces
    
    527 514
     --    * a 'UnitInfoMap'
    
    528
    ---    * a 'PreloadUnitClosure'
    
    529
    -lookupUnit' :: Bool -> UnitInfoMap -> PreloadUnitClosure -> Unit -> Maybe UnitInfo
    
    530
    -lookupUnit' allowOnTheFlyInst pkg_map closure u = case u of
    
    515
    +lookupUnit' :: Bool -> UnitInfoMap -> Unit -> Maybe UnitInfo
    
    516
    +lookupUnit' allowOnTheFlyInst pkg_map u = case u of
    
    531 517
        HoleUnit   -> error "Hole unit"
    
    532 518
        RealUnit i -> lookupUniqMap pkg_map (unDefinite i)
    
    533 519
        VirtUnit i
    
    534 520
           | allowOnTheFlyInst
    
    535 521
           -> -- lookup UnitInfo of the indefinite unit to be instantiated and
    
    536 522
              -- instantiate it on-the-fly
    
    537
    -         fmap (renameUnitInfo pkg_map closure (instUnitInsts i))
    
    523
    +         fmap (renameUnitInfo pkg_map (instUnitInsts i))
    
    538 524
                (lookupUniqMap pkg_map (instUnitInstanceOf i))
    
    539 525
     
    
    540 526
           | otherwise
    
    ... ... @@ -908,7 +894,6 @@ applyTrustFlag prec_map unusable pkgs flag =
    908 894
     applyPackageFlag
    
    909 895
        :: UnitPrecedenceMap
    
    910 896
        -> UnitInfoMap
    
    911
    -   -> PreloadUnitClosure
    
    912 897
        -> UnusableUnits
    
    913 898
        -> Bool -- if False, if you expose a package, it implicitly hides
    
    914 899
                -- any previously exposed packages with the same name
    
    ... ... @@ -917,10 +902,10 @@ applyPackageFlag
    917 902
        -> PackageFlag             -- flag to apply
    
    918 903
        -> MaybeErr UnitErr VisibilityMap -- Now exposed
    
    919 904
     
    
    920
    -applyPackageFlag prec_map pkg_map closure unusable no_hide_others pkgs vm flag =
    
    905
    +applyPackageFlag prec_map pkg_map unusable no_hide_others pkgs vm flag =
    
    921 906
       case flag of
    
    922 907
         ExposePackage _ arg (ModRenaming b rns) ->
    
    923
    -       case findPackages prec_map pkg_map closure arg pkgs unusable of
    
    908
    +       case findPackages prec_map pkg_map arg pkgs unusable of
    
    924 909
              Left ps     -> Failed (PackageFlagErr flag ps)
    
    925 910
              Right (p:_) -> Succeeded vm'
    
    926 911
               where
    
    ... ... @@ -984,7 +969,7 @@ applyPackageFlag prec_map pkg_map closure unusable no_hide_others pkgs vm flag =
    984 969
              _ -> panic "applyPackageFlag"
    
    985 970
     
    
    986 971
         HidePackage str ->
    
    987
    -       case findPackages prec_map pkg_map closure (PackageArg str) pkgs unusable of
    
    972
    +       case findPackages prec_map pkg_map (PackageArg str) pkgs unusable of
    
    988 973
              Left ps  -> Failed (PackageFlagErr flag ps)
    
    989 974
              Right ps -> Succeeded $ foldl' delFromUniqMap vm (map mkUnit ps)
    
    990 975
     
    
    ... ... @@ -993,12 +978,11 @@ applyPackageFlag prec_map pkg_map closure unusable no_hide_others pkgs vm flag =
    993 978
     -- if the 'UnitArg' has a renaming associated with it.
    
    994 979
     findPackages :: UnitPrecedenceMap
    
    995 980
                  -> UnitInfoMap
    
    996
    -             -> PreloadUnitClosure
    
    997 981
                  -> PackageArg -> [UnitInfo]
    
    998 982
                  -> UnusableUnits
    
    999 983
                  -> Either [(UnitInfo, UnusableUnitReason)]
    
    1000 984
                     [UnitInfo]
    
    1001
    -findPackages prec_map pkg_map closure arg pkgs unusable
    
    985
    +findPackages prec_map pkg_map arg pkgs unusable
    
    1002 986
       = let ps = mapMaybe (finder arg) pkgs
    
    1003 987
         in if null ps
    
    1004 988
             then Left (mapMaybe (\(x,y) -> finder arg x >>= \x' -> return (x',y))
    
    ... ... @@ -1016,7 +1000,7 @@ findPackages prec_map pkg_map closure arg pkgs unusable
    1016 1000
                 -> Just p
    
    1017 1001
               VirtUnit inst
    
    1018 1002
                 | instUnitInstanceOf inst == unitId p
    
    1019
    -            -> Just (renameUnitInfo pkg_map closure (instUnitInsts inst) p)
    
    1003
    +            -> Just (renameUnitInfo pkg_map (instUnitInsts inst) p)
    
    1020 1004
               _ -> Nothing
    
    1021 1005
     
    
    1022 1006
     selectPackages :: UnitPrecedenceMap -> PackageArg -> [UnitInfo]
    
    ... ... @@ -1031,10 +1015,10 @@ selectPackages prec_map arg pkgs unusable
    1031 1015
             else Right (sortByPreference prec_map ps, rest)
    
    1032 1016
     
    
    1033 1017
     -- | Rename a 'UnitInfo' according to some module instantiation.
    
    1034
    -renameUnitInfo :: UnitInfoMap -> PreloadUnitClosure -> [(ModuleName, Module)] -> UnitInfo -> UnitInfo
    
    1035
    -renameUnitInfo pkg_map closure insts conf =
    
    1018
    +renameUnitInfo :: UnitInfoMap -> [(ModuleName, Module)] -> UnitInfo -> UnitInfo
    
    1019
    +renameUnitInfo pkg_map insts conf =
    
    1036 1020
         let hsubst = listToUFM insts
    
    1037
    -        smod  = renameHoleModule' pkg_map closure hsubst
    
    1021
    +        smod  = renameHoleModule' pkg_map hsubst
    
    1038 1022
             new_insts = map (\(k,v) -> (k,smod v)) (unitInstantiations conf)
    
    1039 1023
         in conf {
    
    1040 1024
             unitInstantiations = new_insts,
    
    ... ... @@ -1632,7 +1616,7 @@ mkUnitState logger cfg = do
    1632 1616
       -- user tries to enable an unusable package, we should let them know.
    
    1633 1617
       --
    
    1634 1618
       vis_map2 <- mayThrowUnitErr
    
    1635
    -                $ foldM (applyPackageFlag prec_map prelim_pkg_db emptyUniqSet unusable
    
    1619
    +                $ foldM (applyPackageFlag prec_map prelim_pkg_db unusable
    
    1636 1620
                             (unitConfigHideAll cfg) pkgs1)
    
    1637 1621
                                 vis_map1 other_flags
    
    1638 1622
     
    
    ... ... @@ -1661,7 +1645,7 @@ mkUnitState logger cfg = do
    1661 1645
                             | otherwise = vis_map2
    
    1662 1646
                     plugin_vis_map2
    
    1663 1647
                         <- mayThrowUnitErr
    
    1664
    -                        $ foldM (applyPackageFlag prec_map prelim_pkg_db emptyUniqSet unusable
    
    1648
    +                        $ foldM (applyPackageFlag prec_map prelim_pkg_db unusable
    
    1665 1649
                                     hide_plugin_pkgs pkgs1)
    
    1666 1650
                                  plugin_vis_map1
    
    1667 1651
                                  (reverse (unitConfigFlagsPlugins cfg))
    
    ... ... @@ -1713,7 +1697,7 @@ mkUnitState logger cfg = do
    1713 1697
                         $ closeUnitDeps pkg_db
    
    1714 1698
                         $ zip (map toUnitId preload3) (repeat Nothing)
    
    1715 1699
     
    
    1716
    -  let mod_map1 = mkModuleNameProvidersMap logger cfg pkg_db emptyUniqSet vis_map
    
    1700
    +  let mod_map1 = mkModuleNameProvidersMap logger cfg pkg_db vis_map
    
    1717 1701
           mod_map2 = mkUnusableModuleNameProvidersMap unusable
    
    1718 1702
           mod_map = mod_map2 `plusUniqMap` mod_map1
    
    1719 1703
     
    
    ... ... @@ -1723,9 +1707,8 @@ mkUnitState logger cfg = do
    1723 1707
              , explicitUnits                = explicit_pkgs
    
    1724 1708
              , homeUnitDepends              = home_unit_deps
    
    1725 1709
              , unitInfoMap                  = pkg_db
    
    1726
    -         , preloadClosure               = emptyUniqSet
    
    1727 1710
              , moduleNameProvidersMap       = mod_map
    
    1728
    -         , pluginModuleNameProvidersMap = mkModuleNameProvidersMap logger cfg pkg_db emptyUniqSet plugin_vis_map
    
    1711
    +         , pluginModuleNameProvidersMap = mkModuleNameProvidersMap logger cfg pkg_db plugin_vis_map
    
    1729 1712
              , packageNameMap               = pkgname_map
    
    1730 1713
              , wireMap                      = wired_map
    
    1731 1714
              , unwireMap                    = listToUniqMap [ (v,k) | (k,v) <- nonDetUniqMapToList wired_map ]
    
    ... ... @@ -1765,10 +1748,9 @@ mkModuleNameProvidersMap
    1765 1748
       :: Logger
    
    1766 1749
       -> UnitConfig
    
    1767 1750
       -> UnitInfoMap
    
    1768
    -  -> PreloadUnitClosure
    
    1769 1751
       -> VisibilityMap
    
    1770 1752
       -> ModuleNameProvidersMap
    
    1771
    -mkModuleNameProvidersMap logger cfg pkg_map closure vis_map =
    
    1753
    +mkModuleNameProvidersMap logger cfg pkg_map vis_map =
    
    1772 1754
         -- What should we fold on?  Both situations are awkward:
    
    1773 1755
         --
    
    1774 1756
         --    * Folding on the visibility map means that we won't create
    
    ... ... @@ -1840,7 +1822,7 @@ mkModuleNameProvidersMap logger cfg pkg_map closure vis_map =
    1840 1822
         hiddens = [(m, mkModMap pk m ModHidden) | m <- hidden_mods]
    
    1841 1823
     
    
    1842 1824
         pk = mkUnit pkg
    
    1843
    -    unit_lookup uid = lookupUnit' (unitConfigAllowVirtual cfg) pkg_map closure uid
    
    1825
    +    unit_lookup uid = lookupUnit' (unitConfigAllowVirtual cfg) pkg_map uid
    
    1844 1826
                             `orElse` pprPanic "unit_lookup" (ppr uid)
    
    1845 1827
     
    
    1846 1828
         exposed_mods = unitExposedModules pkg
    
    ... ... @@ -2191,44 +2173,16 @@ fsPackageName info = fs
    2191 2173
        where
    
    2192 2174
           PackageName fs = unitPackageName info
    
    2193 2175
     
    
    2194
    -
    
    2195
    --- | Given a fully instantiated 'InstantiatedUnit', improve it into a
    
    2196
    --- 'RealUnit' if we can find it in the package database.
    
    2197
    -improveUnit :: UnitState -> Unit -> Unit
    
    2198
    -improveUnit state u = improveUnit' (unitInfoMap state) (preloadClosure state) u
    
    2199
    -
    
    2200
    --- | Given a fully instantiated 'InstantiatedUnit', improve it into a
    
    2201
    --- 'RealUnit' if we can find it in the package database.
    
    2202
    -improveUnit' :: UnitInfoMap -> PreloadUnitClosure -> Unit -> Unit
    
    2203
    -improveUnit' _       _       uid@(RealUnit _) = uid -- short circuit
    
    2204
    -improveUnit' pkg_map closure uid =
    
    2205
    -    -- Do NOT lookup indefinite ones, they won't be useful!
    
    2206
    -    case lookupUnit' False pkg_map closure uid of
    
    2207
    -        Nothing  -> uid
    
    2208
    -        Just pkg ->
    
    2209
    -            -- Do NOT improve if the indefinite unit id is not
    
    2210
    -            -- part of the closure unique set.  See
    
    2211
    -            -- Note [VirtUnit to RealUnit improvement]
    
    2212
    -            if unitId pkg `elementOfUniqSet` closure
    
    2213
    -                then mkUnit pkg
    
    2214
    -                else uid
    
    2215
    -
    
    2216
    --- | Check the database to see if we already have an installed unit that
    
    2217
    --- corresponds to the given 'InstantiatedUnit'.
    
    2218
    ---
    
    2219
    --- Return a `UnitId` which either wraps the `InstantiatedUnit` unchanged or
    
    2220
    --- references a matching installed unit.
    
    2221
    ---
    
    2222
    --- See Note [VirtUnit to RealUnit improvement]
    
    2223
    -instUnitToUnit :: UnitState -> InstantiatedUnit -> Unit
    
    2224
    -instUnitToUnit state iuid =
    
    2176
    +-- | Return a `UnitId` which either wraps the `InstantiatedUnit` unchanged.
    
    2177
    +instUnitToUnit :: InstantiatedUnit -> Unit
    
    2178
    +instUnitToUnit iuid =
    
    2225 2179
         -- NB: suppose that we want to compare the instantiated
    
    2226 2180
         -- unit p[H=impl:H] against p+abcd (where p+abcd
    
    2227 2181
         -- happens to be the existing, installed version of
    
    2228 2182
         -- p[H=impl:H].  If we *only* wrap in p[H=impl:H]
    
    2229 2183
         -- VirtUnit, they won't compare equal; only
    
    2230 2184
         -- after improvement will the equality hold.
    
    2231
    -    improveUnit state $ VirtUnit iuid
    
    2185
    +    VirtUnit iuid
    
    2232 2186
     
    
    2233 2187
     
    
    2234 2188
     -- | Substitution on module variables, mapping module names to module
    
    ... ... @@ -2240,30 +2194,30 @@ type ShHoleSubst = ModuleNameEnv Module
    2240 2194
     -- @p[A=\<A>]:B@ maps to @p[A=q():A]:B@ with @A=q():A@;
    
    2241 2195
     -- similarly, @\<A>@ maps to @q():A@.
    
    2242 2196
     renameHoleModule :: UnitState -> ShHoleSubst -> Module -> Module
    
    2243
    -renameHoleModule state = renameHoleModule' (unitInfoMap state) (preloadClosure state)
    
    2197
    +renameHoleModule state = renameHoleModule' (unitInfoMap state)
    
    2244 2198
     
    
    2245 2199
     -- | Substitutes holes in a 'Unit', suitable for renaming when
    
    2246 2200
     -- an include occurs; see Note [Representation of module/name variables].
    
    2247 2201
     --
    
    2248 2202
     -- @p[A=\<A>]@ maps to @p[A=\<B>]@ with @A=\<B>@.
    
    2249 2203
     renameHoleUnit :: UnitState -> ShHoleSubst -> Unit -> Unit
    
    2250
    -renameHoleUnit state = renameHoleUnit' (unitInfoMap state) (preloadClosure state)
    
    2204
    +renameHoleUnit state = renameHoleUnit' (unitInfoMap state)
    
    2251 2205
     
    
    2252
    --- | Like 'renameHoleModule', but requires only 'ClosureUnitInfoMap'
    
    2206
    +-- | Like 'renameHoleModule', but requires only 'UnitInfoMap'
    
    2253 2207
     -- so it can be used by "GHC.Unit.State".
    
    2254
    -renameHoleModule' :: UnitInfoMap -> PreloadUnitClosure -> ShHoleSubst -> Module -> Module
    
    2255
    -renameHoleModule' pkg_map closure env m
    
    2208
    +renameHoleModule' :: UnitInfoMap -> ShHoleSubst -> Module -> Module
    
    2209
    +renameHoleModule' pkg_map env m
    
    2256 2210
       | not (isHoleModule m) =
    
    2257
    -        let uid = renameHoleUnit' pkg_map closure env (moduleUnit m)
    
    2211
    +        let uid = renameHoleUnit' pkg_map env (moduleUnit m)
    
    2258 2212
             in mkModule uid (moduleName m)
    
    2259 2213
       | Just m' <- lookupUFM env (moduleName m) = m'
    
    2260 2214
       -- NB m = <Blah>, that's what's in scope.
    
    2261 2215
       | otherwise = m
    
    2262 2216
     
    
    2263
    --- | Like 'renameHoleUnit, but requires only 'ClosureUnitInfoMap'
    
    2217
    +-- | Like 'renameHoleUnit', but requires only 'UnitInfoMap'
    
    2264 2218
     -- so it can be used by "GHC.Unit.State".
    
    2265
    -renameHoleUnit' :: UnitInfoMap -> PreloadUnitClosure -> ShHoleSubst -> Unit -> Unit
    
    2266
    -renameHoleUnit' pkg_map closure env uid =
    
    2219
    +renameHoleUnit' :: UnitInfoMap -> ShHoleSubst -> Unit -> Unit
    
    2220
    +renameHoleUnit' pkg_map env uid =
    
    2267 2221
         case uid of
    
    2268 2222
           (VirtUnit
    
    2269 2223
             InstantiatedUnit{ instUnitInstanceOf = cid
    
    ... ... @@ -2271,20 +2225,15 @@ renameHoleUnit' pkg_map closure env uid =
    2271 2225
                             , instUnitHoles      = fh })
    
    2272 2226
               -> if isNullUFM (intersectUFM_C const (udfmToUfm (getUniqDSet fh)) env)
    
    2273 2227
                     then uid
    
    2274
    -                -- Functorially apply the substitution to the instantiation,
    
    2275
    -                -- then check the 'ClosureUnitInfoMap' to see if there is
    
    2276
    -                -- a compiled version of this 'InstantiatedUnit' we can improve to.
    
    2277
    -                -- See Note [VirtUnit to RealUnit improvement]
    
    2278
    -                else improveUnit' pkg_map closure $
    
    2279
    -                        mkVirtUnit cid
    
    2280
    -                            (map (\(k,v) -> (k, renameHoleModule' pkg_map closure env v)) insts)
    
    2228
    +                else mkVirtUnit cid
    
    2229
    +                          (map (\(k,v) -> (k, renameHoleModule' pkg_map env v)) insts)
    
    2281 2230
           _ -> uid
    
    2282 2231
     
    
    2283 2232
     -- | Injects an 'InstantiatedModule' to 'Module' (see also
    
    2284 2233
     -- 'instUnitToUnit'.
    
    2285
    -instModuleToModule :: UnitState -> InstantiatedModule -> Module
    
    2286
    -instModuleToModule pkgstate (Module iuid mod_name) =
    
    2287
    -    mkModule (instUnitToUnit pkgstate iuid) mod_name
    
    2234
    +instModuleToModule :: InstantiatedModule -> Module
    
    2235
    +instModuleToModule (Module iuid mod_name) =
    
    2236
    +    mkModule (instUnitToUnit iuid) mod_name
    
    2288 2237
     
    
    2289 2238
     -- | Print unit-ids with UnitInfo found in the given UnitState
    
    2290 2239
     pprWithUnitState :: UnitState -> SDoc -> SDoc
    

  • compiler/GHC/Unit/Types.hs
    ... ... @@ -250,9 +250,7 @@ data GenUnit uid
    250 250
     --
    
    251 251
     -- This unit may be indefinite or not (i.e. with remaining holes or not). If it
    
    252 252
     -- is definite, we don't know if it has already been compiled and installed in a
    
    253
    --- database. Nevertheless, we have a mechanism called "improvement" to try to
    
    254
    --- match a fully instantiated unit with existing compiled and installed units:
    
    255
    --- see Note [VirtUnit to RealUnit improvement].
    
    253
    +-- database.
    
    256 254
     --
    
    257 255
     -- An indefinite unit identifier pretty-prints to something like
    
    258 256
     -- @p[H=<H>,A=aimpl:A>]@ (@p@ is the 'UnitId', and the
    

  • docs/users_guide/bugs.rst
    ... ... @@ -551,7 +551,15 @@ undefined or implementation specific in Haskell 98.
    551 551
         ``Int32``, ``Int64`` and the unsigned ``Word`` variants), see the
    
    552 552
         modules ``Data.Int`` and ``Data.Word`` in the library documentation.
    
    553 553
     
    
    554
    -Unchecked floating-point arithmetic
    
    554
    +``Float`` and ``Double``
    
    555
    +    .. index::
    
    556
    +       single: Float
    
    557
    +       single: Double
    
    558
    +       single: IEEE 754
    
    559
    +
    
    560
    +    In GHC, ``Float`` and ``Double`` are represented according to the
    
    561
    +    IEEE 754 standard binary32 and binary64 formats, respectively.
    
    562
    +
    
    555 563
         Operations on ``Float`` and ``Double`` numbers are *unchecked* for
    
    556 564
         overflow, underflow, and other sad occurrences. (note, however, that
    
    557 565
         some architectures trap floating-point overflow and
    

  • libraries/base/base.cabal.in
    ... ... @@ -49,8 +49,10 @@ Library
    49 49
             , Data.Bounded
    
    50 50
             , Data.Char
    
    51 51
             , Data.Complex
    
    52
    +        , Data.Double
    
    52 53
             , Data.Enum
    
    53 54
             , Data.Fixed
    
    55
    +        , Data.Float
    
    54 56
             , Data.Foldable1
    
    55 57
             , Data.Functor.Classes
    
    56 58
             , Data.Functor.Compose
    

  • libraries/base/changelog.md
    ... ... @@ -2,7 +2,9 @@
    2 2
     
    
    3 3
     ## 4.24.0.0 *TBA*
    
    4 4
       * Add `Bounded` instances for `Double`, `Float`, `CDouble` and `CFloat`. ([CLC proposal #402](https://github.com/haskell/core-libraries-committee/issues/402))
    
    5
    +  * Add `Data.List.NonEmpty.{zip{3..7},zipWith{3..7},unzip{3..7}}` ([CLC proposal #409)(https://github.com/haskell/core-libraries-committee/issues/409))
    
    5 6
       * Ensure that `Data.List.elem` and `notElem` can be specialized even when no list fusion happens. ([CLC proposal #412)(https://github.com/haskell/core-libraries-committee/issues/412))
    
    7
    +  * Introduce `Data.Double` and `Data.Float` modules. ([CLC proposal #378](https://github.com/haskell/core-libraries-committee/issues/378))
    
    6 8
     
    
    7 9
     ## 4.23.0.0 *TBA*
    
    8 10
       * Add `System.IO.hGetNewlineMode`. ([CLC proposal #370](https://github.com/haskell/core-libraries-committee/issues/370))
    

  • libraries/base/src/Data/Double.hs
    1
    +{-# LANGUAGE Safe #-}
    
    2
    +
    
    3
    +-- |
    
    4
    +--
    
    5
    +-- Module      :  Data.Double
    
    6
    +-- Copyright   :  (c) GHC contributors 2026
    
    7
    +-- License     :  BSD-style (see the file libraries/base/LICENSE)
    
    8
    +--
    
    9
    +-- Maintainer  :  Core Libraries Committee
    
    10
    +-- Stability   :  stable
    
    11
    +-- Portability :  portable
    
    12
    +--
    
    13
    +-- 'Double' and associated functions.
    
    14
    +module Data.Double
    
    15
    +    ( Double
    
    16
    +    , castWord64ToDouble
    
    17
    +    , castDoubleToWord64
    
    18
    +    ) where
    
    19
    +
    
    20
    +import GHC.Float
    \ No newline at end of file

  • libraries/base/src/Data/Float.hs
    1
    +{-# LANGUAGE Safe #-}
    
    2
    +
    
    3
    +-- |
    
    4
    +--
    
    5
    +-- Module      :  Data.Float
    
    6
    +-- Copyright   :  (c) GHC contributors 2026
    
    7
    +-- License     :  BSD-style (see the file libraries/base/LICENSE)
    
    8
    +--
    
    9
    +-- Maintainer  :  Core Libraries Committee
    
    10
    +-- Stability   :  stable
    
    11
    +-- Portability :  portable
    
    12
    +--
    
    13
    +-- 'Float' and associated functions.
    
    14
    +module Data.Float
    
    15
    +    ( Float
    
    16
    +    , castWord32ToFloat
    
    17
    +    , castFloatToWord32
    
    18
    +    ) where
    
    19
    +
    
    20
    +import GHC.Float
    \ No newline at end of file

  • libraries/base/src/Data/List/NonEmpty.hs
    ... ... @@ -99,10 +99,29 @@ module Data.List.NonEmpty (
    99 99
        , nubOrdBy    -- :: (a -> a -> Ordering) -> NonEmpty a -> NonEmpty a
    
    100 100
        -- * Indexing streams
    
    101 101
        , (!!)        -- :: NonEmpty a -> Int -> a
    
    102
    +
    
    102 103
        -- * Zipping and unzipping streams
    
    103
    -   , zip         -- :: NonEmpty a -> NonEmpty b -> NonEmpty (a,b)
    
    104
    -   , zipWith     -- :: (a -> b -> c) -> NonEmpty a -> NonEmpty b -> NonEmpty c
    
    105
    -   , unzip       -- :: Functor f => f (a,b) -> (f a, f b)
    
    104
    +   , zip
    
    105
    +   , zip3
    
    106
    +   , zip4
    
    107
    +   , zip5
    
    108
    +   , zip6
    
    109
    +   , zip7
    
    110
    +
    
    111
    +   , zipWith
    
    112
    +   , zipWith3
    
    113
    +   , zipWith4
    
    114
    +   , zipWith5
    
    115
    +   , zipWith6
    
    116
    +   , zipWith7
    
    117
    +
    
    118
    +   , unzip
    
    119
    +   , unzip3
    
    120
    +   , unzip4
    
    121
    +   , unzip5
    
    122
    +   , unzip6
    
    123
    +   , unzip7
    
    124
    +
    
    106 125
        -- * Converting to and from a list
    
    107 126
        , fromList    -- :: [a] -> NonEmpty a
    
    108 127
        , toList      -- :: NonEmpty a -> [a]
    
    ... ... @@ -116,7 +135,7 @@ import Prelude hiding (break, cycle, drop, dropWhile,
    116 135
                                           last, length, map, repeat, reverse,
    
    117 136
                                           scanl, scanl1, scanr, scanr1, span,
    
    118 137
                                           splitAt, tail, take, takeWhile,
    
    119
    -                                      unzip, zip, zipWith, (!!), Applicative(..))
    
    138
    +                                      unzip, unzip3, zip, zip3, zipWith, zipWith3, (!!), Applicative(..))
    
    120 139
     import qualified Prelude
    
    121 140
     
    
    122 141
     import           Control.Applicative (Applicative (..), Alternative (many))
    
    ... ... @@ -560,12 +579,97 @@ isPrefixOf (y:ys) (x :| xs) = (y == x) && List.isPrefixOf ys xs
    560 579
       | otherwise = error "NonEmpty.!! negative index"
    
    561 580
     infixl 9 !!
    
    562 581
     
    
    582
    +-- | The 'zip3' function takes three streams and returns a stream of
    
    583
    +-- corresponding triples.
    
    584
    +zip3 :: NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty (a, b, c)
    
    585
    +zip3 (x :| xs) (y :| ys) (z :| zs) = (x, y, z) :| List.zip3 xs ys zs
    
    586
    +
    
    587
    +-- | The 'zip4' function takes four streams and returns a stream of
    
    588
    +-- corresponding quadruples.
    
    589
    +zip4 :: NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty (a, b, c, d)
    
    590
    +zip4 (x :| xs) (y :| ys) (z :| zs) (t :| ts) = (x, y, z, t) :| List.zip4 xs ys zs ts
    
    591
    +
    
    592
    +-- | The 'zip5' function takes five streams and returns a stream of
    
    593
    +-- corresponding quintuples.
    
    594
    +zip5 :: NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e -> NonEmpty (a, b, c, d, e)
    
    595
    +zip5 (x :| xs) (y :| ys) (z :| zs) (t :| ts) (u :| us) = (x, y, z, t, u) :| List.zip5 xs ys zs ts us
    
    596
    +
    
    597
    +-- | The 'zip6' function takes six streams and returns a stream of
    
    598
    +-- corresponding sextuples.
    
    599
    +zip6 :: NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e -> NonEmpty f -> NonEmpty (a, b, c, d, e, f)
    
    600
    +zip6 (x :| xs) (y :| ys) (z :| zs) (t :| ts) (u :| us) (v :| vs) = (x, y, z, t, u, v) :| List.zip6 xs ys zs ts us vs
    
    601
    +
    
    602
    +-- | The 'zip7' function takes seven streams and returns a stream of
    
    603
    +-- corresponding septuples.
    
    604
    +zip7 :: NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e -> NonEmpty f -> NonEmpty g -> NonEmpty (a, b, c, d, e, f, g)
    
    605
    +zip7 (x :| xs) (y :| ys) (z :| zs) (t :| ts) (u :| us) (v :| vs) (w :| ws) = (x, y, z, t, u, v, w) :| List.zip7 xs ys zs ts us vs ws
    
    606
    +
    
    607
    +-- | The 'zipWith3' function generalizes 'zip3'. Rather than tupling
    
    608
    +-- the elements, the elements are combined using the function
    
    609
    +-- passed as the first argument.
    
    610
    +zipWith3 :: (a -> b -> c -> d) -> NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d
    
    611
    +zipWith3 f (x :| xs) (y :| ys) (z :| zs) = f x y z :| List.zipWith3 f xs ys zs
    
    612
    +
    
    613
    +-- | The 'zipWith4' function generalizes 'zip4'. Rather than tupling
    
    614
    +-- the elements, the elements are combined using the function
    
    615
    +-- passed as the first argument.
    
    616
    +zipWith4 :: (a -> b -> c -> d -> e) -> NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e
    
    617
    +zipWith4 f (x :| xs) (y :| ys) (z :| zs) (t :| ts) = f x y z t :| List.zipWith4 f xs ys zs ts
    
    618
    +
    
    619
    +-- | The 'zipWith5' function generalizes 'zip5'. Rather than tupling
    
    620
    +-- the elements, the elements are combined using the function
    
    621
    +-- passed as the first argument.
    
    622
    +zipWith5 :: (a -> b -> c -> d -> e -> f) -> NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e -> NonEmpty f
    
    623
    +zipWith5 f (x :| xs) (y :| ys) (z :| zs) (t :| ts) (u :| us) = f x y z t u :| List.zipWith5 f xs ys zs ts us
    
    624
    +
    
    625
    +-- | The 'zipWith6' function generalizes 'zip6'. Rather than tupling
    
    626
    +-- the elements, the elements are combined using the function
    
    627
    +-- passed as the first argument.
    
    628
    +zipWith6 :: (a -> b -> c -> d -> e -> f -> g) -> NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e -> NonEmpty f -> NonEmpty g
    
    629
    +zipWith6 f (x :| xs) (y :| ys) (z :| zs) (t :| ts) (u :| us) (v :| vs) = f x y z t u v :| List.zipWith6 f xs ys zs ts us vs
    
    630
    +
    
    631
    +-- | The 'zipWith7' function generalizes 'zip7'. Rather than tupling
    
    632
    +-- the elements, the elements are combined using the function
    
    633
    +-- passed as the first argument.
    
    634
    +zipWith7 :: (a -> b -> c -> d -> e -> f -> g -> h) -> NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e -> NonEmpty f -> NonEmpty g -> NonEmpty h
    
    635
    +zipWith7 f (x :| xs) (y :| ys) (z :| zs) (t :| ts) (u :| us) (v :| vs) (w :| ws) = f x y z t u v w :| List.zipWith7 f xs ys zs ts us vs ws
    
    636
    +
    
    563 637
     -- | The 'unzip' function is the inverse of the 'zip' function.
    
    564 638
     unzip :: NonEmpty (a, b) -> (NonEmpty a, NonEmpty b)
    
    565 639
     unzip ((a, b) :| asbs) = (a :| as, b :| bs)
    
    566 640
       where
    
    567 641
         (as, bs) = List.unzip asbs
    
    568 642
     
    
    643
    +-- | The 'unzip3' function is the inverse of the 'zip3' function.
    
    644
    +unzip3 :: NonEmpty (a, b, c) -> (NonEmpty a, NonEmpty b, NonEmpty c)
    
    645
    +unzip3 ((a, b, c) :| asbscs) = (a :| as, b :| bs, c :| cs)
    
    646
    +  where
    
    647
    +    (as, bs, cs) = List.unzip3 asbscs
    
    648
    +
    
    649
    +-- | The 'unzip4' function is the inverse of the 'zip4' function.
    
    650
    +unzip4 :: NonEmpty (a, b, c, d) -> (NonEmpty a, NonEmpty b, NonEmpty c, NonEmpty d)
    
    651
    +unzip4 ((a, b, c, d) :| asbscsds) = (a :| as, b :| bs, c :| cs, d :| ds)
    
    652
    +  where
    
    653
    +    (as, bs, cs, ds) = List.unzip4 asbscsds
    
    654
    +
    
    655
    +-- | The 'unzip5' function is the inverse of the 'zip5' function.
    
    656
    +unzip5 :: NonEmpty (a, b, c, d, e) -> (NonEmpty a, NonEmpty b, NonEmpty c, NonEmpty d, NonEmpty e)
    
    657
    +unzip5 ((a, b, c, d, e) :| asbscsdses) = (a :| as, b :| bs, c :| cs, d :| ds, e :| es)
    
    658
    +  where
    
    659
    +    (as, bs, cs, ds, es) = List.unzip5 asbscsdses
    
    660
    +
    
    661
    +-- | The 'unzip6' function is the inverse of the 'zip6' function.
    
    662
    +unzip6 :: NonEmpty (a, b, c, d, e, f) -> (NonEmpty a, NonEmpty b, NonEmpty c, NonEmpty d, NonEmpty e, NonEmpty f)
    
    663
    +unzip6 ((a, b, c, d, e, f) :| asbscsdsesfs) = (a :| as, b :| bs, c :| cs, d :| ds, e :| es, f :| fs)
    
    664
    +  where
    
    665
    +    (as, bs, cs, ds, es, fs) = List.unzip6 asbscsdsesfs
    
    666
    +
    
    667
    +-- | The 'unzip7' function is the inverse of the 'zip7' function.
    
    668
    +unzip7 :: NonEmpty (a, b, c, d, e, f, g) -> (NonEmpty a, NonEmpty b, NonEmpty c, NonEmpty d, NonEmpty e, NonEmpty f, NonEmpty g)
    
    669
    +unzip7 ((a, b, c, d, e, f, g) :| asbscsdsesfsgs) = (a :| as, b :| bs, c :| cs, d :| ds, e :| es, f :| fs, g :| gs)
    
    670
    +  where
    
    671
    +    (as, bs, cs, ds, es, fs, gs) = List.unzip7 asbscsdsesfsgs
    
    672
    +
    
    569 673
     -- | The 'nub' function removes duplicate elements from a list. In
    
    570 674
     -- particular, it keeps only the first occurrence of each element.
    
    571 675
     -- (The name 'nub' means \'essence\'.)
    

  • libraries/ghc-internal/src/GHC/Internal/Float.hs
    ... ... @@ -1812,8 +1812,8 @@ stgWord32ToFloat :: Word32# -> Float#
    1812 1812
     stgWord32ToFloat = castWord32ToFloat#
    
    1813 1813
     
    
    1814 1814
     
    
    1815
    --- | @'castWord32ToFloat' w@ does a bit-for-bit copy from an integral value
    
    1816
    --- to a floating-point value.
    
    1815
    +-- | @'castWord32ToFloat' w@ does a bit-for-bit copy from a 'Word32'
    
    1816
    +-- to a 'Float', according to the IEEE 754 binary32 format.
    
    1817 1817
     --
    
    1818 1818
     -- @since base-4.11.0.0
    
    1819 1819
     
    
    ... ... @@ -1821,8 +1821,8 @@ stgWord32ToFloat = castWord32ToFloat#
    1821 1821
     castWord32ToFloat :: Word32 -> Float
    
    1822 1822
     castWord32ToFloat (W32# w#) = F# (castWord32ToFloat# w#)
    
    1823 1823
     
    
    1824
    --- | @'castFloatToWord32' f@ does a bit-for-bit copy from a floating-point value
    
    1825
    --- to an integral value.
    
    1824
    +-- | @'castFloatToWord32' f@ does a bit-for-bit copy from a 'Float'
    
    1825
    +-- to a 'Word32', according to the IEEE 754 binary32 format.
    
    1826 1826
     --
    
    1827 1827
     -- @since base-4.11.0.0
    
    1828 1828
     
    
    ... ... @@ -1830,8 +1830,8 @@ castWord32ToFloat (W32# w#) = F# (castWord32ToFloat# w#)
    1830 1830
     castFloatToWord32 :: Float -> Word32
    
    1831 1831
     castFloatToWord32 (F# f#) = W32# (castFloatToWord32# f#)
    
    1832 1832
     
    
    1833
    --- | @'castWord64ToDouble' w@ does a bit-for-bit copy from an integral value
    
    1834
    --- to a floating-point value.
    
    1833
    +-- | @'castWord64ToDouble' w@ does a bit-for-bit copy from a 'Word64'
    
    1834
    +-- to a 'Double', according to the IEEE 754 binary64 format.
    
    1835 1835
     --
    
    1836 1836
     -- @since base-4.11.0.0
    
    1837 1837
     
    
    ... ... @@ -1839,8 +1839,8 @@ castFloatToWord32 (F# f#) = W32# (castFloatToWord32# f#)
    1839 1839
     castWord64ToDouble :: Word64 -> Double
    
    1840 1840
     castWord64ToDouble (W64# w) = D# (castWord64ToDouble# w)
    
    1841 1841
     
    
    1842
    --- | @'castDoubleToWord64' f@ does a bit-for-bit copy from a floating-point value
    
    1843
    --- to an integral value.
    
    1842
    +-- | @'castDoubleToWord64' f@ does a bit-for-bit copy from a 'Double'
    
    1843
    +-- to a 'Word64', according to the IEEE 754 binary64 format.
    
    1844 1844
     --
    
    1845 1845
     -- @since base-4.11.0.0
    
    1846 1846
     
    

  • rts/sm/Evac.h
    ... ... @@ -25,7 +25,9 @@
    25 25
     //         registers EAX, EDX, and ECX instead of on the stack. Functions that
    
    26 26
     //         take a variable number of arguments will continue to be passed all of
    
    27 27
     //         their arguments on the stack.
    
    28
    -#if defined(x86_64_HOST_ARCH) || defined(i386_HOST_ARCH)
    
    28
    +// On x86-64 the attribute has no effect (the first argument is already
    
    29
    +// passed in a register) and GCC 16 warns that it is ignored.
    
    30
    +#if defined(i386_HOST_ARCH)
    
    29 31
     #define REGPARM1 __attribute__((regparm(1)))
    
    30 32
     #else
    
    31 33
     #define REGPARM1
    

  • testsuite/tests/codeGen/should_run/T16617.hs
    1 1
     import GHC.Float
    
    2 2
     
    
    3
    +{-# OPAQUE noinline #-}
    
    4
    +noinline :: a -> a
    
    5
    +noinline x = x
    
    6
    +
    
    3 7
     main :: IO ()
    
    4 8
     main = do
    
    5 9
       -- As per #16617, Word32s should be non-negative
    
    6 10
       print $ castFloatToWord32 (-1)
    
    7 11
       print $ toInteger (castFloatToWord32 (-1)) > 0
    
    12
    +  -- Disable constant folding; see #27300
    
    13
    +  print $ castFloatToWord32 (noinline $ -1)
    
    14
    +  print $ toInteger (castFloatToWord32 (noinline $ -1)) > 0
    
    8 15
       -- For completeness, so should Word64s
    
    9 16
       print $ castDoubleToWord64 (-1)
    
    10 17
       print $ toInteger (castDoubleToWord64 (-1)) > 0
    
    18
    +  print $ castDoubleToWord64 (noinline $ -1)
    
    19
    +  print $ toInteger (castDoubleToWord64 (noinline $ -1)) > 0

  • testsuite/tests/codeGen/should_run/T16617.stdout
    1 1
     3212836864
    
    2 2
     True
    
    3
    +3212836864
    
    4
    +True
    
    5
    +13830554455654793216
    
    6
    +True
    
    3 7
     13830554455654793216
    
    4 8
     True

  • testsuite/tests/interface-stability/base-exports.stdout
    ... ... @@ -936,6 +936,13 @@ module Data.Data where
    936 936
       typeRepFingerprint :: TypeRep -> GHC.Internal.Fingerprint.Type.Fingerprint
    
    937 937
       typeRepTyCon :: TypeRep -> TyCon
    
    938 938
     
    
    939
    +module Data.Double where
    
    940
    +  -- Safety: Safe
    
    941
    +  type Double :: *
    
    942
    +  data Double = ...
    
    943
    +  castDoubleToWord64 :: Double -> GHC.Internal.Word.Word64
    
    944
    +  castWord64ToDouble :: GHC.Internal.Word.Word64 -> Double
    
    945
    +
    
    939 946
     module Data.Dynamic where
    
    940 947
       -- Safety: Safe
    
    941 948
       type Dynamic :: *
    
    ... ... @@ -1035,6 +1042,13 @@ module Data.Fixed where
    1035 1042
       mod' :: forall a. GHC.Internal.Real.Real a => a -> a -> a
    
    1036 1043
       showFixed :: forall {k} (a :: k). HasResolution a => GHC.Internal.Types.Bool -> Fixed a -> GHC.Internal.Base.String
    
    1037 1044
     
    
    1045
    +module Data.Float where
    
    1046
    +  -- Safety: Safe
    
    1047
    +  type Float :: *
    
    1048
    +  data Float = ...
    
    1049
    +  castFloatToWord32 :: Float -> GHC.Internal.Word.Word32
    
    1050
    +  castWord32ToFloat :: GHC.Internal.Word.Word32 -> Float
    
    1051
    +
    
    1038 1052
     module Data.Foldable where
    
    1039 1053
       -- Safety: Safe
    
    1040 1054
       type Foldable :: (* -> *) -> Constraint
    
    ... ... @@ -1507,9 +1521,24 @@ module Data.List.NonEmpty where
    1507 1521
       unfold :: forall a b. (a -> (b, GHC.Internal.Maybe.Maybe a)) -> a -> NonEmpty b
    
    1508 1522
       unfoldr :: forall a b. (a -> (b, GHC.Internal.Maybe.Maybe a)) -> a -> NonEmpty b
    
    1509 1523
       unzip :: forall a b. NonEmpty (a, b) -> (NonEmpty a, NonEmpty b)
    
    1524
    +  unzip3 :: forall a b c. NonEmpty (a, b, c) -> (NonEmpty a, NonEmpty b, NonEmpty c)
    
    1525
    +  unzip4 :: forall a b c d. NonEmpty (a, b, c, d) -> (NonEmpty a, NonEmpty b, NonEmpty c, NonEmpty d)
    
    1526
    +  unzip5 :: forall a b c d e. NonEmpty (a, b, c, d, e) -> (NonEmpty a, NonEmpty b, NonEmpty c, NonEmpty d, NonEmpty e)
    
    1527
    +  unzip6 :: forall a b c d e f. NonEmpty (a, b, c, d, e, f) -> (NonEmpty a, NonEmpty b, NonEmpty c, NonEmpty d, NonEmpty e, NonEmpty f)
    
    1528
    +  unzip7 :: forall a b c d e f g. NonEmpty (a, b, c, d, e, f, g) -> (NonEmpty a, NonEmpty b, NonEmpty c, NonEmpty d, NonEmpty e, NonEmpty f, NonEmpty g)
    
    1510 1529
       xor :: NonEmpty GHC.Internal.Types.Bool -> GHC.Internal.Types.Bool
    
    1511 1530
       zip :: forall a b. NonEmpty a -> NonEmpty b -> NonEmpty (a, b)
    
    1531
    +  zip3 :: forall a b c. NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty (a, b, c)
    
    1532
    +  zip4 :: forall a b c d. NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty (a, b, c, d)
    
    1533
    +  zip5 :: forall a b c d e. NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e -> NonEmpty (a, b, c, d, e)
    
    1534
    +  zip6 :: forall a b c d e f. NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e -> NonEmpty f -> NonEmpty (a, b, c, d, e, f)
    
    1535
    +  zip7 :: forall a b c d e f g. NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e -> NonEmpty f -> NonEmpty g -> NonEmpty (a, b, c, d, e, f, g)
    
    1512 1536
       zipWith :: forall a b c. (a -> b -> c) -> NonEmpty a -> NonEmpty b -> NonEmpty c
    
    1537
    +  zipWith3 :: forall a b c d. (a -> b -> c -> d) -> NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d
    
    1538
    +  zipWith4 :: forall a b c d e. (a -> b -> c -> d -> e) -> NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e
    
    1539
    +  zipWith5 :: forall a b c d e f. (a -> b -> c -> d -> e -> f) -> NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e -> NonEmpty f
    
    1540
    +  zipWith6 :: forall a b c d e f g. (a -> b -> c -> d -> e -> f -> g) -> NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e -> NonEmpty f -> NonEmpty g
    
    1541
    +  zipWith7 :: forall a b c d e f g h. (a -> b -> c -> d -> e -> f -> g -> h) -> NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e -> NonEmpty f -> NonEmpty g -> NonEmpty h
    
    1513 1542
     
    
    1514 1543
     module Data.Maybe where
    
    1515 1544
       -- Safety: Safe
    
    ... ... @@ -11874,6 +11903,8 @@ instance GHC.Internal.Enum.Bounded GHC.Internal.Unicode.GeneralCategory -- Defin
    11874 11903
     instance forall k (a :: k) (b :: k). (a ~ b) => GHC.Internal.Enum.Bounded (a GHC.Internal.Data.Type.Equality.:~: b) -- Defined in ‘GHC.Internal.Data.Type.Equality’
    
    11875 11904
     instance forall k1 k2 (a :: k1) (b :: k2). (a ~~ b) => GHC.Internal.Enum.Bounded (a GHC.Internal.Data.Type.Equality.:~~: b) -- Defined in ‘GHC.Internal.Data.Type.Equality’
    
    11876 11905
     instance forall k (t :: k). GHC.Internal.Enum.Bounded (GHC.Internal.Data.Proxy.Proxy t) -- Defined in ‘GHC.Internal.Data.Proxy’
    
    11906
    +instance GHC.Internal.Enum.Bounded GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    11907
    +instance GHC.Internal.Enum.Bounded GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    11877 11908
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Enum.Bounded (f (g a)) => GHC.Internal.Enum.Bounded (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    11878 11909
     instance forall a. GHC.Internal.Enum.Bounded a => GHC.Internal.Enum.Bounded (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    11879 11910
     instance GHC.Internal.Enum.Bounded GHC.Internal.Int.Int16 -- Defined in ‘GHC.Internal.Int’
    
    ... ... @@ -11922,8 +11953,6 @@ instance GHC.Internal.Enum.Bounded GHC.Internal.Foreign.C.Types.CULong -- Define
    11922 11953
     instance GHC.Internal.Enum.Bounded GHC.Internal.Foreign.C.Types.CUShort -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    11923 11954
     instance GHC.Internal.Enum.Bounded GHC.Internal.Foreign.C.Types.CWchar -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    11924 11955
     instance GHC.Internal.Enum.Bounded GHC.Internal.ByteOrder.ByteOrder -- Defined in ‘GHC.Internal.ByteOrder’
    
    11925
    -instance GHC.Internal.Enum.Bounded GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    11926
    -instance GHC.Internal.Enum.Bounded GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    11927 11956
     instance GHC.Internal.Enum.Bounded GHC.Internal.Generics.Associativity -- Defined in ‘GHC.Internal.Generics’
    
    11928 11957
     instance GHC.Internal.Enum.Bounded GHC.Internal.Generics.DecidedStrictness -- Defined in ‘GHC.Internal.Generics’
    
    11929 11958
     instance GHC.Internal.Enum.Bounded GHC.Internal.Generics.SourceStrictness -- Defined in ‘GHC.Internal.Generics’
    
    ... ... @@ -11949,6 +11978,8 @@ instance GHC.Internal.Enum.Enum GHC.Internal.Unicode.GeneralCategory -- Defined
    11949 11978
     instance forall k (a :: k) (b :: k). (a ~ b) => GHC.Internal.Enum.Enum (a GHC.Internal.Data.Type.Equality.:~: b) -- Defined in ‘GHC.Internal.Data.Type.Equality’
    
    11950 11979
     instance forall k1 k2 (a :: k1) (b :: k2). (a ~~ b) => GHC.Internal.Enum.Enum (a GHC.Internal.Data.Type.Equality.:~~: b) -- Defined in ‘GHC.Internal.Data.Type.Equality’
    
    11951 11980
     instance forall k (s :: k). GHC.Internal.Enum.Enum (GHC.Internal.Data.Proxy.Proxy s) -- Defined in ‘GHC.Internal.Data.Proxy’
    
    11981
    +instance GHC.Internal.Enum.Enum GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    11982
    +instance GHC.Internal.Enum.Enum GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    11952 11983
     instance [safe] forall k (a :: k). GHC.Internal.Enum.Enum (Data.Fixed.Fixed a) -- Defined in ‘Data.Fixed’
    
    11953 11984
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Enum.Enum (f (g a)) => GHC.Internal.Enum.Enum (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    11954 11985
     instance forall a. GHC.Internal.Enum.Enum a => GHC.Internal.Enum.Enum (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    ... ... @@ -11999,8 +12030,6 @@ instance GHC.Internal.Enum.Enum GHC.Internal.Foreign.C.Types.CUSeconds -- Define
    11999 12030
     instance GHC.Internal.Enum.Enum GHC.Internal.Foreign.C.Types.CUShort -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12000 12031
     instance GHC.Internal.Enum.Enum GHC.Internal.Foreign.C.Types.CWchar -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12001 12032
     instance GHC.Internal.Enum.Enum GHC.Internal.ByteOrder.ByteOrder -- Defined in ‘GHC.Internal.ByteOrder’
    
    12002
    -instance GHC.Internal.Enum.Enum GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12003
    -instance GHC.Internal.Enum.Enum GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12004 12033
     instance GHC.Internal.Enum.Enum GHC.Internal.Generics.Associativity -- Defined in ‘GHC.Internal.Generics’
    
    12005 12034
     instance GHC.Internal.Enum.Enum GHC.Internal.Generics.DecidedStrictness -- Defined in ‘GHC.Internal.Generics’
    
    12006 12035
     instance GHC.Internal.Enum.Enum GHC.Internal.Generics.SourceStrictness -- Defined in ‘GHC.Internal.Generics’
    
    ... ... @@ -12043,22 +12072,22 @@ instance [safe] GHC.Internal.Exception.Type.Exception ghc-internal-10.100.0:GHC.
    12043 12072
     instance [safe] GHC.Internal.Exception.Type.Exception System.Timeout.Timeout -- Defined in ‘System.Timeout’
    
    12044 12073
     instance forall k a (b :: k). GHC.Internal.Float.Floating a => GHC.Internal.Float.Floating (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12045 12074
     instance forall a. GHC.Internal.Float.RealFloat a => GHC.Internal.Float.Floating (Data.Complex.Complex a) -- Defined in ‘Data.Complex’
    
    12075
    +instance GHC.Internal.Float.Floating GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12076
    +instance GHC.Internal.Float.Floating GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12046 12077
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Float.Floating (f (g a)) => GHC.Internal.Float.Floating (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    12047 12078
     instance forall a b. GHC.Internal.Float.Floating a => GHC.Internal.Float.Floating (Data.Functor.Contravariant.Op a b) -- Defined in ‘Data.Functor.Contravariant’
    
    12048 12079
     instance forall a. GHC.Internal.Float.Floating a => GHC.Internal.Float.Floating (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    12049 12080
     instance forall a. GHC.Internal.Float.Floating a => GHC.Internal.Float.Floating (GHC.Internal.Data.Ord.Down a) -- Defined in ‘GHC.Internal.Data.Ord’
    
    12050 12081
     instance GHC.Internal.Float.Floating GHC.Internal.Foreign.C.Types.CDouble -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12051 12082
     instance GHC.Internal.Float.Floating GHC.Internal.Foreign.C.Types.CFloat -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12052
    -instance GHC.Internal.Float.Floating GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12053
    -instance GHC.Internal.Float.Floating GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12054 12083
     instance forall k a (b :: k). GHC.Internal.Float.RealFloat a => GHC.Internal.Float.RealFloat (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12084
    +instance GHC.Internal.Float.RealFloat GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12085
    +instance GHC.Internal.Float.RealFloat GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12055 12086
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Float.RealFloat (f (g a)) => GHC.Internal.Float.RealFloat (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    12056 12087
     instance forall a. GHC.Internal.Float.RealFloat a => GHC.Internal.Float.RealFloat (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    12057 12088
     instance forall a. GHC.Internal.Float.RealFloat a => GHC.Internal.Float.RealFloat (GHC.Internal.Data.Ord.Down a) -- Defined in ‘GHC.Internal.Data.Ord’
    
    12058 12089
     instance GHC.Internal.Float.RealFloat GHC.Internal.Foreign.C.Types.CDouble -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12059 12090
     instance GHC.Internal.Float.RealFloat GHC.Internal.Foreign.C.Types.CFloat -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12060
    -instance GHC.Internal.Float.RealFloat GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12061
    -instance GHC.Internal.Float.RealFloat GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12062 12091
     instance forall k a (b :: k). GHC.Internal.Foreign.Storable.Storable a => GHC.Internal.Foreign.Storable.Storable (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12063 12092
     instance forall a. GHC.Internal.Foreign.Storable.Storable a => GHC.Internal.Foreign.Storable.Storable (Data.Complex.Complex a) -- Defined in ‘Data.Complex’
    
    12064 12093
     instance forall a. GHC.Internal.Foreign.Storable.Storable a => GHC.Internal.Foreign.Storable.Storable (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    ... ... @@ -12373,6 +12402,8 @@ instance GHC.Internal.Ix.Ix GHC.Internal.IO.Device.SeekMode -- Defined in ‘GHC
    12373 12402
     instance GHC.Internal.Ix.Ix GHC.Internal.IO.IOMode.IOMode -- Defined in ‘GHC.Internal.IO.IOMode’
    
    12374 12403
     instance forall k a (b :: k). GHC.Internal.Num.Num a => GHC.Internal.Num.Num (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12375 12404
     instance forall a. GHC.Internal.Float.RealFloat a => GHC.Internal.Num.Num (Data.Complex.Complex a) -- Defined in ‘Data.Complex’
    
    12405
    +instance GHC.Internal.Num.Num GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12406
    +instance GHC.Internal.Num.Num GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12376 12407
     instance [safe] forall k (a :: k). Data.Fixed.HasResolution a => GHC.Internal.Num.Num (Data.Fixed.Fixed a) -- Defined in ‘Data.Fixed’
    
    12377 12408
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Num.Num (f (g a)) => GHC.Internal.Num.Num (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    12378 12409
     instance forall a b. GHC.Internal.Num.Num a => GHC.Internal.Num.Num (Data.Functor.Contravariant.Op a b) -- Defined in ‘Data.Functor.Contravariant’
    
    ... ... @@ -12421,8 +12452,6 @@ instance GHC.Internal.Num.Num GHC.Internal.Foreign.C.Types.CULong -- Defined in
    12421 12452
     instance GHC.Internal.Num.Num GHC.Internal.Foreign.C.Types.CUSeconds -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12422 12453
     instance GHC.Internal.Num.Num GHC.Internal.Foreign.C.Types.CUShort -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12423 12454
     instance GHC.Internal.Num.Num GHC.Internal.Foreign.C.Types.CWchar -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12424
    -instance GHC.Internal.Num.Num GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12425
    -instance GHC.Internal.Num.Num GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12426 12455
     instance GHC.Internal.Num.Num GHC.Internal.Types.Int -- Defined in ‘GHC.Internal.Num’
    
    12427 12456
     instance GHC.Internal.Num.Num GHC.Internal.Bignum.Integer.Integer -- Defined in ‘GHC.Internal.Num’
    
    12428 12457
     instance GHC.Internal.Num.Num GHC.Internal.Bignum.Natural.Natural -- Defined in ‘GHC.Internal.Num’
    
    ... ... @@ -12558,6 +12587,8 @@ instance GHC.Internal.Read.Read GHC.Internal.IO.Handle.Types.NewlineMode -- Defi
    12558 12587
     instance GHC.Internal.Read.Read GHC.Internal.IO.Device.SeekMode -- Defined in ‘System.IO’
    
    12559 12588
     instance forall k a (b :: k). GHC.Internal.Real.Fractional a => GHC.Internal.Real.Fractional (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12560 12589
     instance forall a. GHC.Internal.Float.RealFloat a => GHC.Internal.Real.Fractional (Data.Complex.Complex a) -- Defined in ‘Data.Complex’
    
    12590
    +instance GHC.Internal.Real.Fractional GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12591
    +instance GHC.Internal.Real.Fractional GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12561 12592
     instance [safe] forall k (a :: k). Data.Fixed.HasResolution a => GHC.Internal.Real.Fractional (Data.Fixed.Fixed a) -- Defined in ‘Data.Fixed’
    
    12562 12593
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Real.Fractional (f (g a)) => GHC.Internal.Real.Fractional (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    12563 12594
     instance forall a b. GHC.Internal.Real.Fractional a => GHC.Internal.Real.Fractional (Data.Functor.Contravariant.Op a b) -- Defined in ‘Data.Functor.Contravariant’
    
    ... ... @@ -12566,8 +12597,6 @@ instance forall a. GHC.Internal.Real.Fractional a => GHC.Internal.Real.Fractiona
    12566 12597
     instance forall a. GHC.Internal.Real.Integral a => GHC.Internal.Real.Fractional (GHC.Internal.Real.Ratio a) -- Defined in ‘GHC.Internal.Real’
    
    12567 12598
     instance GHC.Internal.Real.Fractional GHC.Internal.Foreign.C.Types.CDouble -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12568 12599
     instance GHC.Internal.Real.Fractional GHC.Internal.Foreign.C.Types.CFloat -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12569
    -instance GHC.Internal.Real.Fractional GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12570
    -instance GHC.Internal.Real.Fractional GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12571 12600
     instance forall k a (b :: k). GHC.Internal.Real.Integral a => GHC.Internal.Real.Integral (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12572 12601
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Real.Integral (f (g a)) => GHC.Internal.Real.Integral (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    12573 12602
     instance forall a. GHC.Internal.Real.Integral a => GHC.Internal.Real.Integral (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    ... ... @@ -12606,6 +12635,8 @@ instance GHC.Internal.Real.Integral GHC.Internal.Foreign.C.Types.CULong -- Defin
    12606 12635
     instance GHC.Internal.Real.Integral GHC.Internal.Foreign.C.Types.CUShort -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12607 12636
     instance GHC.Internal.Real.Integral GHC.Internal.Foreign.C.Types.CWchar -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12608 12637
     instance forall k a (b :: k). GHC.Internal.Real.Real a => GHC.Internal.Real.Real (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12638
    +instance GHC.Internal.Real.Real GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12639
    +instance GHC.Internal.Real.Real GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12609 12640
     instance [safe] forall k (a :: k). Data.Fixed.HasResolution a => GHC.Internal.Real.Real (Data.Fixed.Fixed a) -- Defined in ‘Data.Fixed’
    
    12610 12641
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Real.Real (f (g a)) => GHC.Internal.Real.Real (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    12611 12642
     instance forall a. GHC.Internal.Real.Real a => GHC.Internal.Real.Real (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    ... ... @@ -12651,9 +12682,9 @@ instance GHC.Internal.Real.Real GHC.Internal.Foreign.C.Types.CULong -- Defined i
    12651 12682
     instance GHC.Internal.Real.Real GHC.Internal.Foreign.C.Types.CUSeconds -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12652 12683
     instance GHC.Internal.Real.Real GHC.Internal.Foreign.C.Types.CUShort -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12653 12684
     instance GHC.Internal.Real.Real GHC.Internal.Foreign.C.Types.CWchar -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12654
    -instance GHC.Internal.Real.Real GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12655
    -instance GHC.Internal.Real.Real GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12656 12685
     instance forall k a (b :: k). GHC.Internal.Real.RealFrac a => GHC.Internal.Real.RealFrac (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12686
    +instance GHC.Internal.Real.RealFrac GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12687
    +instance GHC.Internal.Real.RealFrac GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12657 12688
     instance [safe] forall k (a :: k). Data.Fixed.HasResolution a => GHC.Internal.Real.RealFrac (Data.Fixed.Fixed a) -- Defined in ‘Data.Fixed’
    
    12658 12689
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Real.RealFrac (f (g a)) => GHC.Internal.Real.RealFrac (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    12659 12690
     instance forall a. GHC.Internal.Real.RealFrac a => GHC.Internal.Real.RealFrac (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    ... ... @@ -12661,8 +12692,6 @@ instance forall a. GHC.Internal.Real.RealFrac a => GHC.Internal.Real.RealFrac (G
    12661 12692
     instance forall a. GHC.Internal.Real.Integral a => GHC.Internal.Real.RealFrac (GHC.Internal.Real.Ratio a) -- Defined in ‘GHC.Internal.Real’
    
    12662 12693
     instance GHC.Internal.Real.RealFrac GHC.Internal.Foreign.C.Types.CDouble -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12663 12694
     instance GHC.Internal.Real.RealFrac GHC.Internal.Foreign.C.Types.CFloat -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12664
    -instance GHC.Internal.Real.RealFrac GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12665
    -instance GHC.Internal.Real.RealFrac GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12666 12695
     instance forall k a (b :: k). GHC.Internal.Show.Show a => GHC.Internal.Show.Show (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12667 12696
     instance forall a. GHC.Internal.Show.Show a => GHC.Internal.Show.Show (GHC.Internal.Functor.ZipList.ZipList a) -- Defined in ‘GHC.Internal.Functor.ZipList’
    
    12668 12697
     instance GHC.Internal.Show.Show GHC.Internal.Conc.Sync.BlockReason -- Defined in ‘GHC.Internal.Conc.Sync’
    
    ... ... @@ -12753,6 +12782,8 @@ instance GHC.Internal.Show.Show GHC.Internal.Data.Data.Fixity -- Defined in ‘G
    12753 12782
     instance forall k (s :: k). GHC.Internal.Show.Show (GHC.Internal.Data.Proxy.Proxy s) -- Defined in ‘GHC.Internal.Data.Proxy’
    
    12754 12783
     instance GHC.Internal.Show.Show ghc-internal-10.100.0:GHC.Internal.Data.Typeable.Internal.SomeTypeRep -- Defined in ‘ghc-internal-10.100.0:GHC.Internal.Data.Typeable.Internal’
    
    12755 12784
     instance forall k (a :: k). GHC.Internal.Show.Show (ghc-internal-10.100.0:GHC.Internal.Data.Typeable.Internal.TypeRep a) -- Defined in ‘ghc-internal-10.100.0:GHC.Internal.Data.Typeable.Internal’
    
    12785
    +instance GHC.Internal.Show.Show GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12786
    +instance GHC.Internal.Show.Show GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12756 12787
     instance GHC.Internal.Show.Show GHC.Internal.Data.Dynamic.Dynamic -- Defined in ‘GHC.Internal.Data.Dynamic’
    
    12757 12788
     instance forall a b. (GHC.Internal.Show.Show a, GHC.Internal.Show.Show b) => GHC.Internal.Show.Show (GHC.Internal.Data.Either.Either a b) -- Defined in ‘GHC.Internal.Data.Either’
    
    12758 12789
     instance [safe] forall k (a :: k). Data.Fixed.HasResolution a => GHC.Internal.Show.Show (Data.Fixed.Fixed a) -- Defined in ‘Data.Fixed’
    
    ... ... @@ -12831,8 +12862,6 @@ instance GHC.Internal.Show.Show ghc-internal-10.100.0:GHC.Internal.Event.Manager
    12831 12862
     instance GHC.Internal.Show.Show ghc-internal-10.100.0:GHC.Internal.Event.Manager.State -- Defined in ‘ghc-internal-10.100.0:GHC.Internal.Event.Manager’
    
    12832 12863
     instance GHC.Internal.Show.Show ghc-internal-10.100.0:GHC.Internal.Event.TimerManager.State -- Defined in ‘ghc-internal-10.100.0:GHC.Internal.Event.TimerManager’
    
    12833 12864
     instance GHC.Internal.Show.Show GHC.Internal.Fingerprint.Type.Fingerprint -- Defined in ‘GHC.Internal.Fingerprint.Type’
    
    12834
    -instance GHC.Internal.Show.Show GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12835
    -instance GHC.Internal.Show.Show GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12836 12865
     instance forall k (f :: k -> *) (g :: k -> *) (p :: k). (GHC.Internal.Show.Show (f p), GHC.Internal.Show.Show (g p)) => GHC.Internal.Show.Show ((GHC.Internal.Generics.:*:) f g p) -- Defined in ‘GHC.Internal.Generics’
    
    12837 12866
     instance forall k (f :: k -> *) (g :: k -> *) (p :: k). (GHC.Internal.Show.Show (f p), GHC.Internal.Show.Show (g p)) => GHC.Internal.Show.Show ((GHC.Internal.Generics.:+:) f g p) -- Defined in ‘GHC.Internal.Generics’
    
    12838 12867
     instance forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1). GHC.Internal.Show.Show (f (g p)) => GHC.Internal.Show.Show ((GHC.Internal.Generics.:.:) f g p) -- Defined in ‘GHC.Internal.Generics’
    

  • testsuite/tests/interface-stability/base-exports.stdout-javascript-unknown-ghcjs
    ... ... @@ -936,6 +936,13 @@ module Data.Data where
    936 936
       typeRepFingerprint :: TypeRep -> GHC.Internal.Fingerprint.Type.Fingerprint
    
    937 937
       typeRepTyCon :: TypeRep -> TyCon
    
    938 938
     
    
    939
    +module Data.Double where
    
    940
    +  -- Safety: Safe
    
    941
    +  type Double :: *
    
    942
    +  data Double = ...
    
    943
    +  castDoubleToWord64 :: Double -> GHC.Internal.Word.Word64
    
    944
    +  castWord64ToDouble :: GHC.Internal.Word.Word64 -> Double
    
    945
    +
    
    939 946
     module Data.Dynamic where
    
    940 947
       -- Safety: Safe
    
    941 948
       type Dynamic :: *
    
    ... ... @@ -1035,6 +1042,13 @@ module Data.Fixed where
    1035 1042
       mod' :: forall a. GHC.Internal.Real.Real a => a -> a -> a
    
    1036 1043
       showFixed :: forall {k} (a :: k). HasResolution a => GHC.Internal.Types.Bool -> Fixed a -> GHC.Internal.Base.String
    
    1037 1044
     
    
    1045
    +module Data.Float where
    
    1046
    +  -- Safety: Safe
    
    1047
    +  type Float :: *
    
    1048
    +  data Float = ...
    
    1049
    +  castFloatToWord32 :: Float -> GHC.Internal.Word.Word32
    
    1050
    +  castWord32ToFloat :: GHC.Internal.Word.Word32 -> Float
    
    1051
    +
    
    1038 1052
     module Data.Foldable where
    
    1039 1053
       -- Safety: Safe
    
    1040 1054
       type Foldable :: (* -> *) -> Constraint
    
    ... ... @@ -1507,9 +1521,24 @@ module Data.List.NonEmpty where
    1507 1521
       unfold :: forall a b. (a -> (b, GHC.Internal.Maybe.Maybe a)) -> a -> NonEmpty b
    
    1508 1522
       unfoldr :: forall a b. (a -> (b, GHC.Internal.Maybe.Maybe a)) -> a -> NonEmpty b
    
    1509 1523
       unzip :: forall a b. NonEmpty (a, b) -> (NonEmpty a, NonEmpty b)
    
    1524
    +  unzip3 :: forall a b c. NonEmpty (a, b, c) -> (NonEmpty a, NonEmpty b, NonEmpty c)
    
    1525
    +  unzip4 :: forall a b c d. NonEmpty (a, b, c, d) -> (NonEmpty a, NonEmpty b, NonEmpty c, NonEmpty d)
    
    1526
    +  unzip5 :: forall a b c d e. NonEmpty (a, b, c, d, e) -> (NonEmpty a, NonEmpty b, NonEmpty c, NonEmpty d, NonEmpty e)
    
    1527
    +  unzip6 :: forall a b c d e f. NonEmpty (a, b, c, d, e, f) -> (NonEmpty a, NonEmpty b, NonEmpty c, NonEmpty d, NonEmpty e, NonEmpty f)
    
    1528
    +  unzip7 :: forall a b c d e f g. NonEmpty (a, b, c, d, e, f, g) -> (NonEmpty a, NonEmpty b, NonEmpty c, NonEmpty d, NonEmpty e, NonEmpty f, NonEmpty g)
    
    1510 1529
       xor :: NonEmpty GHC.Internal.Types.Bool -> GHC.Internal.Types.Bool
    
    1511 1530
       zip :: forall a b. NonEmpty a -> NonEmpty b -> NonEmpty (a, b)
    
    1531
    +  zip3 :: forall a b c. NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty (a, b, c)
    
    1532
    +  zip4 :: forall a b c d. NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty (a, b, c, d)
    
    1533
    +  zip5 :: forall a b c d e. NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e -> NonEmpty (a, b, c, d, e)
    
    1534
    +  zip6 :: forall a b c d e f. NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e -> NonEmpty f -> NonEmpty (a, b, c, d, e, f)
    
    1535
    +  zip7 :: forall a b c d e f g. NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e -> NonEmpty f -> NonEmpty g -> NonEmpty (a, b, c, d, e, f, g)
    
    1512 1536
       zipWith :: forall a b c. (a -> b -> c) -> NonEmpty a -> NonEmpty b -> NonEmpty c
    
    1537
    +  zipWith3 :: forall a b c d. (a -> b -> c -> d) -> NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d
    
    1538
    +  zipWith4 :: forall a b c d e. (a -> b -> c -> d -> e) -> NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e
    
    1539
    +  zipWith5 :: forall a b c d e f. (a -> b -> c -> d -> e -> f) -> NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e -> NonEmpty f
    
    1540
    +  zipWith6 :: forall a b c d e f g. (a -> b -> c -> d -> e -> f -> g) -> NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e -> NonEmpty f -> NonEmpty g
    
    1541
    +  zipWith7 :: forall a b c d e f g h. (a -> b -> c -> d -> e -> f -> g -> h) -> NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e -> NonEmpty f -> NonEmpty g -> NonEmpty h
    
    1513 1542
     
    
    1514 1543
     module Data.Maybe where
    
    1515 1544
       -- Safety: Safe
    
    ... ... @@ -11901,6 +11930,8 @@ instance GHC.Internal.Enum.Bounded GHC.Internal.Unicode.GeneralCategory -- Defin
    11901 11930
     instance forall k (a :: k) (b :: k). (a ~ b) => GHC.Internal.Enum.Bounded (a GHC.Internal.Data.Type.Equality.:~: b) -- Defined in ‘GHC.Internal.Data.Type.Equality’
    
    11902 11931
     instance forall k1 k2 (a :: k1) (b :: k2). (a ~~ b) => GHC.Internal.Enum.Bounded (a GHC.Internal.Data.Type.Equality.:~~: b) -- Defined in ‘GHC.Internal.Data.Type.Equality’
    
    11903 11932
     instance forall k (t :: k). GHC.Internal.Enum.Bounded (GHC.Internal.Data.Proxy.Proxy t) -- Defined in ‘GHC.Internal.Data.Proxy’
    
    11933
    +instance GHC.Internal.Enum.Bounded GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    11934
    +instance GHC.Internal.Enum.Bounded GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    11904 11935
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Enum.Bounded (f (g a)) => GHC.Internal.Enum.Bounded (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    11905 11936
     instance forall a. GHC.Internal.Enum.Bounded a => GHC.Internal.Enum.Bounded (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    11906 11937
     instance GHC.Internal.Enum.Bounded GHC.Internal.Int.Int16 -- Defined in ‘GHC.Internal.Int’
    
    ... ... @@ -11949,8 +11980,6 @@ instance GHC.Internal.Enum.Bounded GHC.Internal.Foreign.C.Types.CULong -- Define
    11949 11980
     instance GHC.Internal.Enum.Bounded GHC.Internal.Foreign.C.Types.CUShort -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    11950 11981
     instance GHC.Internal.Enum.Bounded GHC.Internal.Foreign.C.Types.CWchar -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    11951 11982
     instance GHC.Internal.Enum.Bounded GHC.Internal.ByteOrder.ByteOrder -- Defined in ‘GHC.Internal.ByteOrder’
    
    11952
    -instance GHC.Internal.Enum.Bounded GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    11953
    -instance GHC.Internal.Enum.Bounded GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    11954 11983
     instance GHC.Internal.Enum.Bounded GHC.Internal.Generics.Associativity -- Defined in ‘GHC.Internal.Generics’
    
    11955 11984
     instance GHC.Internal.Enum.Bounded GHC.Internal.Generics.DecidedStrictness -- Defined in ‘GHC.Internal.Generics’
    
    11956 11985
     instance GHC.Internal.Enum.Bounded GHC.Internal.Generics.SourceStrictness -- Defined in ‘GHC.Internal.Generics’
    
    ... ... @@ -11976,6 +12005,8 @@ instance GHC.Internal.Enum.Enum GHC.Internal.Unicode.GeneralCategory -- Defined
    11976 12005
     instance forall k (a :: k) (b :: k). (a ~ b) => GHC.Internal.Enum.Enum (a GHC.Internal.Data.Type.Equality.:~: b) -- Defined in ‘GHC.Internal.Data.Type.Equality’
    
    11977 12006
     instance forall k1 k2 (a :: k1) (b :: k2). (a ~~ b) => GHC.Internal.Enum.Enum (a GHC.Internal.Data.Type.Equality.:~~: b) -- Defined in ‘GHC.Internal.Data.Type.Equality’
    
    11978 12007
     instance forall k (s :: k). GHC.Internal.Enum.Enum (GHC.Internal.Data.Proxy.Proxy s) -- Defined in ‘GHC.Internal.Data.Proxy’
    
    12008
    +instance GHC.Internal.Enum.Enum GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12009
    +instance GHC.Internal.Enum.Enum GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    11979 12010
     instance [safe] forall k (a :: k). GHC.Internal.Enum.Enum (Data.Fixed.Fixed a) -- Defined in ‘Data.Fixed’
    
    11980 12011
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Enum.Enum (f (g a)) => GHC.Internal.Enum.Enum (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    11981 12012
     instance forall a. GHC.Internal.Enum.Enum a => GHC.Internal.Enum.Enum (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    ... ... @@ -12026,8 +12057,6 @@ instance GHC.Internal.Enum.Enum GHC.Internal.Foreign.C.Types.CUSeconds -- Define
    12026 12057
     instance GHC.Internal.Enum.Enum GHC.Internal.Foreign.C.Types.CUShort -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12027 12058
     instance GHC.Internal.Enum.Enum GHC.Internal.Foreign.C.Types.CWchar -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12028 12059
     instance GHC.Internal.Enum.Enum GHC.Internal.ByteOrder.ByteOrder -- Defined in ‘GHC.Internal.ByteOrder’
    
    12029
    -instance GHC.Internal.Enum.Enum GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12030
    -instance GHC.Internal.Enum.Enum GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12031 12060
     instance GHC.Internal.Enum.Enum GHC.Internal.Generics.Associativity -- Defined in ‘GHC.Internal.Generics’
    
    12032 12061
     instance GHC.Internal.Enum.Enum GHC.Internal.Generics.DecidedStrictness -- Defined in ‘GHC.Internal.Generics’
    
    12033 12062
     instance GHC.Internal.Enum.Enum GHC.Internal.Generics.SourceStrictness -- Defined in ‘GHC.Internal.Generics’
    
    ... ... @@ -12072,22 +12101,22 @@ instance GHC.Internal.Exception.Type.Exception GHC.Internal.JS.Prim.WouldBlockEx
    12072 12101
     instance [safe] GHC.Internal.Exception.Type.Exception System.Timeout.Timeout -- Defined in ‘System.Timeout’
    
    12073 12102
     instance forall k a (b :: k). GHC.Internal.Float.Floating a => GHC.Internal.Float.Floating (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12074 12103
     instance forall a. GHC.Internal.Float.RealFloat a => GHC.Internal.Float.Floating (Data.Complex.Complex a) -- Defined in ‘Data.Complex’
    
    12104
    +instance GHC.Internal.Float.Floating GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12105
    +instance GHC.Internal.Float.Floating GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12075 12106
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Float.Floating (f (g a)) => GHC.Internal.Float.Floating (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    12076 12107
     instance forall a b. GHC.Internal.Float.Floating a => GHC.Internal.Float.Floating (Data.Functor.Contravariant.Op a b) -- Defined in ‘Data.Functor.Contravariant’
    
    12077 12108
     instance forall a. GHC.Internal.Float.Floating a => GHC.Internal.Float.Floating (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    12078 12109
     instance forall a. GHC.Internal.Float.Floating a => GHC.Internal.Float.Floating (GHC.Internal.Data.Ord.Down a) -- Defined in ‘GHC.Internal.Data.Ord’
    
    12079 12110
     instance GHC.Internal.Float.Floating GHC.Internal.Foreign.C.Types.CDouble -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12080 12111
     instance GHC.Internal.Float.Floating GHC.Internal.Foreign.C.Types.CFloat -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12081
    -instance GHC.Internal.Float.Floating GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12082
    -instance GHC.Internal.Float.Floating GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12083 12112
     instance forall k a (b :: k). GHC.Internal.Float.RealFloat a => GHC.Internal.Float.RealFloat (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12113
    +instance GHC.Internal.Float.RealFloat GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12114
    +instance GHC.Internal.Float.RealFloat GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12084 12115
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Float.RealFloat (f (g a)) => GHC.Internal.Float.RealFloat (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    12085 12116
     instance forall a. GHC.Internal.Float.RealFloat a => GHC.Internal.Float.RealFloat (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    12086 12117
     instance forall a. GHC.Internal.Float.RealFloat a => GHC.Internal.Float.RealFloat (GHC.Internal.Data.Ord.Down a) -- Defined in ‘GHC.Internal.Data.Ord’
    
    12087 12118
     instance GHC.Internal.Float.RealFloat GHC.Internal.Foreign.C.Types.CDouble -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12088 12119
     instance GHC.Internal.Float.RealFloat GHC.Internal.Foreign.C.Types.CFloat -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12089
    -instance GHC.Internal.Float.RealFloat GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12090
    -instance GHC.Internal.Float.RealFloat GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12091 12120
     instance forall k a (b :: k). GHC.Internal.Foreign.Storable.Storable a => GHC.Internal.Foreign.Storable.Storable (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12092 12121
     instance forall a. GHC.Internal.Foreign.Storable.Storable a => GHC.Internal.Foreign.Storable.Storable (Data.Complex.Complex a) -- Defined in ‘Data.Complex’
    
    12093 12122
     instance forall a. GHC.Internal.Foreign.Storable.Storable a => GHC.Internal.Foreign.Storable.Storable (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    ... ... @@ -12402,6 +12431,8 @@ instance GHC.Internal.Ix.Ix GHC.Internal.IO.Device.SeekMode -- Defined in ‘GHC
    12402 12431
     instance GHC.Internal.Ix.Ix GHC.Internal.IO.IOMode.IOMode -- Defined in ‘GHC.Internal.IO.IOMode’
    
    12403 12432
     instance forall k a (b :: k). GHC.Internal.Num.Num a => GHC.Internal.Num.Num (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12404 12433
     instance forall a. GHC.Internal.Float.RealFloat a => GHC.Internal.Num.Num (Data.Complex.Complex a) -- Defined in ‘Data.Complex’
    
    12434
    +instance GHC.Internal.Num.Num GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12435
    +instance GHC.Internal.Num.Num GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12405 12436
     instance [safe] forall k (a :: k). Data.Fixed.HasResolution a => GHC.Internal.Num.Num (Data.Fixed.Fixed a) -- Defined in ‘Data.Fixed’
    
    12406 12437
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Num.Num (f (g a)) => GHC.Internal.Num.Num (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    12407 12438
     instance forall a b. GHC.Internal.Num.Num a => GHC.Internal.Num.Num (Data.Functor.Contravariant.Op a b) -- Defined in ‘Data.Functor.Contravariant’
    
    ... ... @@ -12450,8 +12481,6 @@ instance GHC.Internal.Num.Num GHC.Internal.Foreign.C.Types.CULong -- Defined in
    12450 12481
     instance GHC.Internal.Num.Num GHC.Internal.Foreign.C.Types.CUSeconds -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12451 12482
     instance GHC.Internal.Num.Num GHC.Internal.Foreign.C.Types.CUShort -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12452 12483
     instance GHC.Internal.Num.Num GHC.Internal.Foreign.C.Types.CWchar -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12453
    -instance GHC.Internal.Num.Num GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12454
    -instance GHC.Internal.Num.Num GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12455 12484
     instance GHC.Internal.Num.Num GHC.Internal.Types.Int -- Defined in ‘GHC.Internal.Num’
    
    12456 12485
     instance GHC.Internal.Num.Num GHC.Internal.Bignum.Integer.Integer -- Defined in ‘GHC.Internal.Num’
    
    12457 12486
     instance GHC.Internal.Num.Num GHC.Internal.Bignum.Natural.Natural -- Defined in ‘GHC.Internal.Num’
    
    ... ... @@ -12587,6 +12616,8 @@ instance GHC.Internal.Read.Read GHC.Internal.IO.Handle.Types.NewlineMode -- Defi
    12587 12616
     instance GHC.Internal.Read.Read GHC.Internal.IO.Device.SeekMode -- Defined in ‘System.IO’
    
    12588 12617
     instance forall k a (b :: k). GHC.Internal.Real.Fractional a => GHC.Internal.Real.Fractional (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12589 12618
     instance forall a. GHC.Internal.Float.RealFloat a => GHC.Internal.Real.Fractional (Data.Complex.Complex a) -- Defined in ‘Data.Complex’
    
    12619
    +instance GHC.Internal.Real.Fractional GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12620
    +instance GHC.Internal.Real.Fractional GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12590 12621
     instance [safe] forall k (a :: k). Data.Fixed.HasResolution a => GHC.Internal.Real.Fractional (Data.Fixed.Fixed a) -- Defined in ‘Data.Fixed’
    
    12591 12622
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Real.Fractional (f (g a)) => GHC.Internal.Real.Fractional (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    12592 12623
     instance forall a b. GHC.Internal.Real.Fractional a => GHC.Internal.Real.Fractional (Data.Functor.Contravariant.Op a b) -- Defined in ‘Data.Functor.Contravariant’
    
    ... ... @@ -12595,8 +12626,6 @@ instance forall a. GHC.Internal.Real.Fractional a => GHC.Internal.Real.Fractiona
    12595 12626
     instance forall a. GHC.Internal.Real.Integral a => GHC.Internal.Real.Fractional (GHC.Internal.Real.Ratio a) -- Defined in ‘GHC.Internal.Real’
    
    12596 12627
     instance GHC.Internal.Real.Fractional GHC.Internal.Foreign.C.Types.CDouble -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12597 12628
     instance GHC.Internal.Real.Fractional GHC.Internal.Foreign.C.Types.CFloat -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12598
    -instance GHC.Internal.Real.Fractional GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12599
    -instance GHC.Internal.Real.Fractional GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12600 12629
     instance forall k a (b :: k). GHC.Internal.Real.Integral a => GHC.Internal.Real.Integral (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12601 12630
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Real.Integral (f (g a)) => GHC.Internal.Real.Integral (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    12602 12631
     instance forall a. GHC.Internal.Real.Integral a => GHC.Internal.Real.Integral (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    ... ... @@ -12635,6 +12664,8 @@ instance GHC.Internal.Real.Integral GHC.Internal.Foreign.C.Types.CULong -- Defin
    12635 12664
     instance GHC.Internal.Real.Integral GHC.Internal.Foreign.C.Types.CUShort -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12636 12665
     instance GHC.Internal.Real.Integral GHC.Internal.Foreign.C.Types.CWchar -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12637 12666
     instance forall k a (b :: k). GHC.Internal.Real.Real a => GHC.Internal.Real.Real (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12667
    +instance GHC.Internal.Real.Real GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12668
    +instance GHC.Internal.Real.Real GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12638 12669
     instance [safe] forall k (a :: k). Data.Fixed.HasResolution a => GHC.Internal.Real.Real (Data.Fixed.Fixed a) -- Defined in ‘Data.Fixed’
    
    12639 12670
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Real.Real (f (g a)) => GHC.Internal.Real.Real (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    12640 12671
     instance forall a. GHC.Internal.Real.Real a => GHC.Internal.Real.Real (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    ... ... @@ -12680,9 +12711,9 @@ instance GHC.Internal.Real.Real GHC.Internal.Foreign.C.Types.CULong -- Defined i
    12680 12711
     instance GHC.Internal.Real.Real GHC.Internal.Foreign.C.Types.CUSeconds -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12681 12712
     instance GHC.Internal.Real.Real GHC.Internal.Foreign.C.Types.CUShort -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12682 12713
     instance GHC.Internal.Real.Real GHC.Internal.Foreign.C.Types.CWchar -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12683
    -instance GHC.Internal.Real.Real GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12684
    -instance GHC.Internal.Real.Real GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12685 12714
     instance forall k a (b :: k). GHC.Internal.Real.RealFrac a => GHC.Internal.Real.RealFrac (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12715
    +instance GHC.Internal.Real.RealFrac GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12716
    +instance GHC.Internal.Real.RealFrac GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12686 12717
     instance [safe] forall k (a :: k). Data.Fixed.HasResolution a => GHC.Internal.Real.RealFrac (Data.Fixed.Fixed a) -- Defined in ‘Data.Fixed’
    
    12687 12718
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Real.RealFrac (f (g a)) => GHC.Internal.Real.RealFrac (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    12688 12719
     instance forall a. GHC.Internal.Real.RealFrac a => GHC.Internal.Real.RealFrac (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    ... ... @@ -12690,8 +12721,6 @@ instance forall a. GHC.Internal.Real.RealFrac a => GHC.Internal.Real.RealFrac (G
    12690 12721
     instance forall a. GHC.Internal.Real.Integral a => GHC.Internal.Real.RealFrac (GHC.Internal.Real.Ratio a) -- Defined in ‘GHC.Internal.Real’
    
    12691 12722
     instance GHC.Internal.Real.RealFrac GHC.Internal.Foreign.C.Types.CDouble -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12692 12723
     instance GHC.Internal.Real.RealFrac GHC.Internal.Foreign.C.Types.CFloat -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12693
    -instance GHC.Internal.Real.RealFrac GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12694
    -instance GHC.Internal.Real.RealFrac GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12695 12724
     instance forall k a (b :: k). GHC.Internal.Show.Show a => GHC.Internal.Show.Show (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12696 12725
     instance forall a. GHC.Internal.Show.Show a => GHC.Internal.Show.Show (GHC.Internal.Functor.ZipList.ZipList a) -- Defined in ‘GHC.Internal.Functor.ZipList’
    
    12697 12726
     instance GHC.Internal.Show.Show GHC.Internal.Conc.Sync.BlockReason -- Defined in ‘GHC.Internal.Conc.Sync’
    
    ... ... @@ -12782,6 +12811,8 @@ instance GHC.Internal.Show.Show GHC.Internal.Data.Data.Fixity -- Defined in ‘G
    12782 12811
     instance forall k (s :: k). GHC.Internal.Show.Show (GHC.Internal.Data.Proxy.Proxy s) -- Defined in ‘GHC.Internal.Data.Proxy’
    
    12783 12812
     instance GHC.Internal.Show.Show ghc-internal-10.100.0:GHC.Internal.Data.Typeable.Internal.SomeTypeRep -- Defined in ‘ghc-internal-10.100.0:GHC.Internal.Data.Typeable.Internal’
    
    12784 12813
     instance forall k (a :: k). GHC.Internal.Show.Show (ghc-internal-10.100.0:GHC.Internal.Data.Typeable.Internal.TypeRep a) -- Defined in ‘ghc-internal-10.100.0:GHC.Internal.Data.Typeable.Internal’
    
    12814
    +instance GHC.Internal.Show.Show GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12815
    +instance GHC.Internal.Show.Show GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12785 12816
     instance GHC.Internal.Show.Show GHC.Internal.Data.Dynamic.Dynamic -- Defined in ‘GHC.Internal.Data.Dynamic’
    
    12786 12817
     instance forall a b. (GHC.Internal.Show.Show a, GHC.Internal.Show.Show b) => GHC.Internal.Show.Show (GHC.Internal.Data.Either.Either a b) -- Defined in ‘GHC.Internal.Data.Either’
    
    12787 12818
     instance [safe] forall k (a :: k). Data.Fixed.HasResolution a => GHC.Internal.Show.Show (Data.Fixed.Fixed a) -- Defined in ‘Data.Fixed’
    
    ... ... @@ -12853,8 +12884,6 @@ instance forall a. GHC.Internal.Show.Show (GHC.Internal.Foreign.C.ConstPtr.Const
    12853 12884
     instance forall a b. (GHC.Internal.Ix.Ix a, GHC.Internal.Show.Show a, GHC.Internal.Show.Show b) => GHC.Internal.Show.Show (GHC.Internal.Arr.Array a b) -- Defined in ‘GHC.Internal.Arr’
    
    12854 12885
     instance GHC.Internal.Show.Show GHC.Internal.ByteOrder.ByteOrder -- Defined in ‘GHC.Internal.ByteOrder’
    
    12855 12886
     instance GHC.Internal.Show.Show GHC.Internal.Fingerprint.Type.Fingerprint -- Defined in ‘GHC.Internal.Fingerprint.Type’
    
    12856
    -instance GHC.Internal.Show.Show GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12857
    -instance GHC.Internal.Show.Show GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12858 12887
     instance forall k (f :: k -> *) (g :: k -> *) (p :: k). (GHC.Internal.Show.Show (f p), GHC.Internal.Show.Show (g p)) => GHC.Internal.Show.Show ((GHC.Internal.Generics.:*:) f g p) -- Defined in ‘GHC.Internal.Generics’
    
    12859 12888
     instance forall k (f :: k -> *) (g :: k -> *) (p :: k). (GHC.Internal.Show.Show (f p), GHC.Internal.Show.Show (g p)) => GHC.Internal.Show.Show ((GHC.Internal.Generics.:+:) f g p) -- Defined in ‘GHC.Internal.Generics’
    
    12860 12889
     instance forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1). GHC.Internal.Show.Show (f (g p)) => GHC.Internal.Show.Show ((GHC.Internal.Generics.:.:) f g p) -- Defined in ‘GHC.Internal.Generics’
    

  • testsuite/tests/interface-stability/base-exports.stdout-mingw32
    ... ... @@ -936,6 +936,13 @@ module Data.Data where
    936 936
       typeRepFingerprint :: TypeRep -> GHC.Internal.Fingerprint.Type.Fingerprint
    
    937 937
       typeRepTyCon :: TypeRep -> TyCon
    
    938 938
     
    
    939
    +module Data.Double where
    
    940
    +  -- Safety: Safe
    
    941
    +  type Double :: *
    
    942
    +  data Double = ...
    
    943
    +  castDoubleToWord64 :: Double -> GHC.Internal.Word.Word64
    
    944
    +  castWord64ToDouble :: GHC.Internal.Word.Word64 -> Double
    
    945
    +
    
    939 946
     module Data.Dynamic where
    
    940 947
       -- Safety: Safe
    
    941 948
       type Dynamic :: *
    
    ... ... @@ -1035,6 +1042,13 @@ module Data.Fixed where
    1035 1042
       mod' :: forall a. GHC.Internal.Real.Real a => a -> a -> a
    
    1036 1043
       showFixed :: forall {k} (a :: k). HasResolution a => GHC.Internal.Types.Bool -> Fixed a -> GHC.Internal.Base.String
    
    1037 1044
     
    
    1045
    +module Data.Float where
    
    1046
    +  -- Safety: Safe
    
    1047
    +  type Float :: *
    
    1048
    +  data Float = ...
    
    1049
    +  castFloatToWord32 :: Float -> GHC.Internal.Word.Word32
    
    1050
    +  castWord32ToFloat :: GHC.Internal.Word.Word32 -> Float
    
    1051
    +
    
    1038 1052
     module Data.Foldable where
    
    1039 1053
       -- Safety: Safe
    
    1040 1054
       type Foldable :: (* -> *) -> Constraint
    
    ... ... @@ -1507,9 +1521,24 @@ module Data.List.NonEmpty where
    1507 1521
       unfold :: forall a b. (a -> (b, GHC.Internal.Maybe.Maybe a)) -> a -> NonEmpty b
    
    1508 1522
       unfoldr :: forall a b. (a -> (b, GHC.Internal.Maybe.Maybe a)) -> a -> NonEmpty b
    
    1509 1523
       unzip :: forall a b. NonEmpty (a, b) -> (NonEmpty a, NonEmpty b)
    
    1524
    +  unzip3 :: forall a b c. NonEmpty (a, b, c) -> (NonEmpty a, NonEmpty b, NonEmpty c)
    
    1525
    +  unzip4 :: forall a b c d. NonEmpty (a, b, c, d) -> (NonEmpty a, NonEmpty b, NonEmpty c, NonEmpty d)
    
    1526
    +  unzip5 :: forall a b c d e. NonEmpty (a, b, c, d, e) -> (NonEmpty a, NonEmpty b, NonEmpty c, NonEmpty d, NonEmpty e)
    
    1527
    +  unzip6 :: forall a b c d e f. NonEmpty (a, b, c, d, e, f) -> (NonEmpty a, NonEmpty b, NonEmpty c, NonEmpty d, NonEmpty e, NonEmpty f)
    
    1528
    +  unzip7 :: forall a b c d e f g. NonEmpty (a, b, c, d, e, f, g) -> (NonEmpty a, NonEmpty b, NonEmpty c, NonEmpty d, NonEmpty e, NonEmpty f, NonEmpty g)
    
    1510 1529
       xor :: NonEmpty GHC.Internal.Types.Bool -> GHC.Internal.Types.Bool
    
    1511 1530
       zip :: forall a b. NonEmpty a -> NonEmpty b -> NonEmpty (a, b)
    
    1531
    +  zip3 :: forall a b c. NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty (a, b, c)
    
    1532
    +  zip4 :: forall a b c d. NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty (a, b, c, d)
    
    1533
    +  zip5 :: forall a b c d e. NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e -> NonEmpty (a, b, c, d, e)
    
    1534
    +  zip6 :: forall a b c d e f. NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e -> NonEmpty f -> NonEmpty (a, b, c, d, e, f)
    
    1535
    +  zip7 :: forall a b c d e f g. NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e -> NonEmpty f -> NonEmpty g -> NonEmpty (a, b, c, d, e, f, g)
    
    1512 1536
       zipWith :: forall a b c. (a -> b -> c) -> NonEmpty a -> NonEmpty b -> NonEmpty c
    
    1537
    +  zipWith3 :: forall a b c d. (a -> b -> c -> d) -> NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d
    
    1538
    +  zipWith4 :: forall a b c d e. (a -> b -> c -> d -> e) -> NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e
    
    1539
    +  zipWith5 :: forall a b c d e f. (a -> b -> c -> d -> e -> f) -> NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e -> NonEmpty f
    
    1540
    +  zipWith6 :: forall a b c d e f g. (a -> b -> c -> d -> e -> f -> g) -> NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e -> NonEmpty f -> NonEmpty g
    
    1541
    +  zipWith7 :: forall a b c d e f g h. (a -> b -> c -> d -> e -> f -> g -> h) -> NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d -> NonEmpty e -> NonEmpty f -> NonEmpty g -> NonEmpty h
    
    1513 1542
     
    
    1514 1543
     module Data.Maybe where
    
    1515 1544
       -- Safety: Safe
    
    ... ... @@ -12132,6 +12161,8 @@ instance GHC.Internal.Enum.Bounded GHC.Internal.Unicode.GeneralCategory -- Defin
    12132 12161
     instance forall k (a :: k) (b :: k). (a ~ b) => GHC.Internal.Enum.Bounded (a GHC.Internal.Data.Type.Equality.:~: b) -- Defined in ‘GHC.Internal.Data.Type.Equality’
    
    12133 12162
     instance forall k1 k2 (a :: k1) (b :: k2). (a ~~ b) => GHC.Internal.Enum.Bounded (a GHC.Internal.Data.Type.Equality.:~~: b) -- Defined in ‘GHC.Internal.Data.Type.Equality’
    
    12134 12163
     instance forall k (t :: k). GHC.Internal.Enum.Bounded (GHC.Internal.Data.Proxy.Proxy t) -- Defined in ‘GHC.Internal.Data.Proxy’
    
    12164
    +instance GHC.Internal.Enum.Bounded GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12165
    +instance GHC.Internal.Enum.Bounded GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12135 12166
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Enum.Bounded (f (g a)) => GHC.Internal.Enum.Bounded (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    12136 12167
     instance forall a. GHC.Internal.Enum.Bounded a => GHC.Internal.Enum.Bounded (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    12137 12168
     instance GHC.Internal.Enum.Bounded GHC.Internal.Int.Int16 -- Defined in ‘GHC.Internal.Int’
    
    ... ... @@ -12180,8 +12211,6 @@ instance GHC.Internal.Enum.Bounded GHC.Internal.Foreign.C.Types.CULong -- Define
    12180 12211
     instance GHC.Internal.Enum.Bounded GHC.Internal.Foreign.C.Types.CUShort -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12181 12212
     instance GHC.Internal.Enum.Bounded GHC.Internal.Foreign.C.Types.CWchar -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12182 12213
     instance GHC.Internal.Enum.Bounded GHC.Internal.ByteOrder.ByteOrder -- Defined in ‘GHC.Internal.ByteOrder’
    
    12183
    -instance GHC.Internal.Enum.Bounded GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12184
    -instance GHC.Internal.Enum.Bounded GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12185 12214
     instance GHC.Internal.Enum.Bounded GHC.Internal.Generics.Associativity -- Defined in ‘GHC.Internal.Generics’
    
    12186 12215
     instance GHC.Internal.Enum.Bounded GHC.Internal.Generics.DecidedStrictness -- Defined in ‘GHC.Internal.Generics’
    
    12187 12216
     instance GHC.Internal.Enum.Bounded GHC.Internal.Generics.SourceStrictness -- Defined in ‘GHC.Internal.Generics’
    
    ... ... @@ -12207,6 +12236,8 @@ instance GHC.Internal.Enum.Enum GHC.Internal.Unicode.GeneralCategory -- Defined
    12207 12236
     instance forall k (a :: k) (b :: k). (a ~ b) => GHC.Internal.Enum.Enum (a GHC.Internal.Data.Type.Equality.:~: b) -- Defined in ‘GHC.Internal.Data.Type.Equality’
    
    12208 12237
     instance forall k1 k2 (a :: k1) (b :: k2). (a ~~ b) => GHC.Internal.Enum.Enum (a GHC.Internal.Data.Type.Equality.:~~: b) -- Defined in ‘GHC.Internal.Data.Type.Equality’
    
    12209 12238
     instance forall k (s :: k). GHC.Internal.Enum.Enum (GHC.Internal.Data.Proxy.Proxy s) -- Defined in ‘GHC.Internal.Data.Proxy’
    
    12239
    +instance GHC.Internal.Enum.Enum GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12240
    +instance GHC.Internal.Enum.Enum GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12210 12241
     instance [safe] forall k (a :: k). GHC.Internal.Enum.Enum (Data.Fixed.Fixed a) -- Defined in ‘Data.Fixed’
    
    12211 12242
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Enum.Enum (f (g a)) => GHC.Internal.Enum.Enum (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    12212 12243
     instance forall a. GHC.Internal.Enum.Enum a => GHC.Internal.Enum.Enum (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    ... ... @@ -12258,8 +12289,6 @@ instance GHC.Internal.Enum.Enum GHC.Internal.Foreign.C.Types.CUShort -- Defined
    12258 12289
     instance GHC.Internal.Enum.Enum GHC.Internal.Foreign.C.Types.CWchar -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12259 12290
     instance GHC.Internal.Enum.Enum GHC.Internal.ByteOrder.ByteOrder -- Defined in ‘GHC.Internal.ByteOrder’
    
    12260 12291
     instance GHC.Internal.Enum.Enum GHC.Internal.Event.Windows.ConsoleEvent.ConsoleEvent -- Defined in ‘GHC.Internal.Event.Windows.ConsoleEvent’
    
    12261
    -instance GHC.Internal.Enum.Enum GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12262
    -instance GHC.Internal.Enum.Enum GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12263 12292
     instance GHC.Internal.Enum.Enum GHC.Internal.Generics.Associativity -- Defined in ‘GHC.Internal.Generics’
    
    12264 12293
     instance GHC.Internal.Enum.Enum GHC.Internal.Generics.DecidedStrictness -- Defined in ‘GHC.Internal.Generics’
    
    12265 12294
     instance GHC.Internal.Enum.Enum GHC.Internal.Generics.SourceStrictness -- Defined in ‘GHC.Internal.Generics’
    
    ... ... @@ -12302,22 +12331,22 @@ instance [safe] GHC.Internal.Exception.Type.Exception ghc-internal-10.100.0:GHC.
    12302 12331
     instance [safe] GHC.Internal.Exception.Type.Exception System.Timeout.Timeout -- Defined in ‘System.Timeout’
    
    12303 12332
     instance forall k a (b :: k). GHC.Internal.Float.Floating a => GHC.Internal.Float.Floating (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12304 12333
     instance forall a. GHC.Internal.Float.RealFloat a => GHC.Internal.Float.Floating (Data.Complex.Complex a) -- Defined in ‘Data.Complex’
    
    12334
    +instance GHC.Internal.Float.Floating GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12335
    +instance GHC.Internal.Float.Floating GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12305 12336
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Float.Floating (f (g a)) => GHC.Internal.Float.Floating (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    12306 12337
     instance forall a b. GHC.Internal.Float.Floating a => GHC.Internal.Float.Floating (Data.Functor.Contravariant.Op a b) -- Defined in ‘Data.Functor.Contravariant’
    
    12307 12338
     instance forall a. GHC.Internal.Float.Floating a => GHC.Internal.Float.Floating (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    12308 12339
     instance forall a. GHC.Internal.Float.Floating a => GHC.Internal.Float.Floating (GHC.Internal.Data.Ord.Down a) -- Defined in ‘GHC.Internal.Data.Ord’
    
    12309 12340
     instance GHC.Internal.Float.Floating GHC.Internal.Foreign.C.Types.CDouble -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12310 12341
     instance GHC.Internal.Float.Floating GHC.Internal.Foreign.C.Types.CFloat -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12311
    -instance GHC.Internal.Float.Floating GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12312
    -instance GHC.Internal.Float.Floating GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12313 12342
     instance forall k a (b :: k). GHC.Internal.Float.RealFloat a => GHC.Internal.Float.RealFloat (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12343
    +instance GHC.Internal.Float.RealFloat GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12344
    +instance GHC.Internal.Float.RealFloat GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12314 12345
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Float.RealFloat (f (g a)) => GHC.Internal.Float.RealFloat (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    12315 12346
     instance forall a. GHC.Internal.Float.RealFloat a => GHC.Internal.Float.RealFloat (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    12316 12347
     instance forall a. GHC.Internal.Float.RealFloat a => GHC.Internal.Float.RealFloat (GHC.Internal.Data.Ord.Down a) -- Defined in ‘GHC.Internal.Data.Ord’
    
    12317 12348
     instance GHC.Internal.Float.RealFloat GHC.Internal.Foreign.C.Types.CDouble -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12318 12349
     instance GHC.Internal.Float.RealFloat GHC.Internal.Foreign.C.Types.CFloat -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12319
    -instance GHC.Internal.Float.RealFloat GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12320
    -instance GHC.Internal.Float.RealFloat GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12321 12350
     instance forall k a (b :: k). GHC.Internal.Foreign.Storable.Storable a => GHC.Internal.Foreign.Storable.Storable (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12322 12351
     instance forall a. GHC.Internal.Foreign.Storable.Storable a => GHC.Internal.Foreign.Storable.Storable (Data.Complex.Complex a) -- Defined in ‘Data.Complex’
    
    12323 12352
     instance forall a. GHC.Internal.Foreign.Storable.Storable a => GHC.Internal.Foreign.Storable.Storable (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    ... ... @@ -12644,6 +12673,8 @@ instance GHC.Internal.Ix.Ix GHC.Internal.IO.Device.SeekMode -- Defined in ‘GHC
    12644 12673
     instance GHC.Internal.Ix.Ix GHC.Internal.IO.IOMode.IOMode -- Defined in ‘GHC.Internal.IO.IOMode’
    
    12645 12674
     instance forall k a (b :: k). GHC.Internal.Num.Num a => GHC.Internal.Num.Num (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12646 12675
     instance forall a. GHC.Internal.Float.RealFloat a => GHC.Internal.Num.Num (Data.Complex.Complex a) -- Defined in ‘Data.Complex’
    
    12676
    +instance GHC.Internal.Num.Num GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12677
    +instance GHC.Internal.Num.Num GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12647 12678
     instance [safe] forall k (a :: k). Data.Fixed.HasResolution a => GHC.Internal.Num.Num (Data.Fixed.Fixed a) -- Defined in ‘Data.Fixed’
    
    12648 12679
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Num.Num (f (g a)) => GHC.Internal.Num.Num (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    12649 12680
     instance forall a b. GHC.Internal.Num.Num a => GHC.Internal.Num.Num (Data.Functor.Contravariant.Op a b) -- Defined in ‘Data.Functor.Contravariant’
    
    ... ... @@ -12692,8 +12723,6 @@ instance GHC.Internal.Num.Num GHC.Internal.Foreign.C.Types.CULong -- Defined in
    12692 12723
     instance GHC.Internal.Num.Num GHC.Internal.Foreign.C.Types.CUSeconds -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12693 12724
     instance GHC.Internal.Num.Num GHC.Internal.Foreign.C.Types.CUShort -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12694 12725
     instance GHC.Internal.Num.Num GHC.Internal.Foreign.C.Types.CWchar -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12695
    -instance GHC.Internal.Num.Num GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12696
    -instance GHC.Internal.Num.Num GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12697 12726
     instance GHC.Internal.Num.Num GHC.Internal.Types.Int -- Defined in ‘GHC.Internal.Num’
    
    12698 12727
     instance GHC.Internal.Num.Num GHC.Internal.Bignum.Integer.Integer -- Defined in ‘GHC.Internal.Num’
    
    12699 12728
     instance GHC.Internal.Num.Num GHC.Internal.Bignum.Natural.Natural -- Defined in ‘GHC.Internal.Num’
    
    ... ... @@ -12830,6 +12859,8 @@ instance GHC.Internal.Read.Read GHC.Internal.IO.Handle.Types.NewlineMode -- Defi
    12830 12859
     instance GHC.Internal.Read.Read GHC.Internal.IO.Device.SeekMode -- Defined in ‘System.IO’
    
    12831 12860
     instance forall k a (b :: k). GHC.Internal.Real.Fractional a => GHC.Internal.Real.Fractional (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12832 12861
     instance forall a. GHC.Internal.Float.RealFloat a => GHC.Internal.Real.Fractional (Data.Complex.Complex a) -- Defined in ‘Data.Complex’
    
    12862
    +instance GHC.Internal.Real.Fractional GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12863
    +instance GHC.Internal.Real.Fractional GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12833 12864
     instance [safe] forall k (a :: k). Data.Fixed.HasResolution a => GHC.Internal.Real.Fractional (Data.Fixed.Fixed a) -- Defined in ‘Data.Fixed’
    
    12834 12865
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Real.Fractional (f (g a)) => GHC.Internal.Real.Fractional (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    12835 12866
     instance forall a b. GHC.Internal.Real.Fractional a => GHC.Internal.Real.Fractional (Data.Functor.Contravariant.Op a b) -- Defined in ‘Data.Functor.Contravariant’
    
    ... ... @@ -12838,8 +12869,6 @@ instance forall a. GHC.Internal.Real.Fractional a => GHC.Internal.Real.Fractiona
    12838 12869
     instance forall a. GHC.Internal.Real.Integral a => GHC.Internal.Real.Fractional (GHC.Internal.Real.Ratio a) -- Defined in ‘GHC.Internal.Real’
    
    12839 12870
     instance GHC.Internal.Real.Fractional GHC.Internal.Foreign.C.Types.CDouble -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12840 12871
     instance GHC.Internal.Real.Fractional GHC.Internal.Foreign.C.Types.CFloat -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12841
    -instance GHC.Internal.Real.Fractional GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12842
    -instance GHC.Internal.Real.Fractional GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12843 12872
     instance forall k a (b :: k). GHC.Internal.Real.Integral a => GHC.Internal.Real.Integral (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12844 12873
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Real.Integral (f (g a)) => GHC.Internal.Real.Integral (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    12845 12874
     instance forall a. GHC.Internal.Real.Integral a => GHC.Internal.Real.Integral (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    ... ... @@ -12878,6 +12907,8 @@ instance GHC.Internal.Real.Integral GHC.Internal.Foreign.C.Types.CULong -- Defin
    12878 12907
     instance GHC.Internal.Real.Integral GHC.Internal.Foreign.C.Types.CUShort -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12879 12908
     instance GHC.Internal.Real.Integral GHC.Internal.Foreign.C.Types.CWchar -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12880 12909
     instance forall k a (b :: k). GHC.Internal.Real.Real a => GHC.Internal.Real.Real (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12910
    +instance GHC.Internal.Real.Real GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12911
    +instance GHC.Internal.Real.Real GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12881 12912
     instance [safe] forall k (a :: k). Data.Fixed.HasResolution a => GHC.Internal.Real.Real (Data.Fixed.Fixed a) -- Defined in ‘Data.Fixed’
    
    12882 12913
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Real.Real (f (g a)) => GHC.Internal.Real.Real (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    12883 12914
     instance forall a. GHC.Internal.Real.Real a => GHC.Internal.Real.Real (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    ... ... @@ -12923,9 +12954,9 @@ instance GHC.Internal.Real.Real GHC.Internal.Foreign.C.Types.CULong -- Defined i
    12923 12954
     instance GHC.Internal.Real.Real GHC.Internal.Foreign.C.Types.CUSeconds -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12924 12955
     instance GHC.Internal.Real.Real GHC.Internal.Foreign.C.Types.CUShort -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12925 12956
     instance GHC.Internal.Real.Real GHC.Internal.Foreign.C.Types.CWchar -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12926
    -instance GHC.Internal.Real.Real GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12927
    -instance GHC.Internal.Real.Real GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12928 12957
     instance forall k a (b :: k). GHC.Internal.Real.RealFrac a => GHC.Internal.Real.RealFrac (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12958
    +instance GHC.Internal.Real.RealFrac GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12959
    +instance GHC.Internal.Real.RealFrac GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12929 12960
     instance [safe] forall k (a :: k). Data.Fixed.HasResolution a => GHC.Internal.Real.RealFrac (Data.Fixed.Fixed a) -- Defined in ‘Data.Fixed’
    
    12930 12961
     instance forall k1 k2 (f :: k1 -> *) (g :: k2 -> k1) (a :: k2). GHC.Internal.Real.RealFrac (f (g a)) => GHC.Internal.Real.RealFrac (Data.Functor.Compose.Compose f g a) -- Defined in ‘Data.Functor.Compose’
    
    12931 12962
     instance forall a. GHC.Internal.Real.RealFrac a => GHC.Internal.Real.RealFrac (GHC.Internal.Data.Functor.Identity.Identity a) -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    ... ... @@ -12933,8 +12964,6 @@ instance forall a. GHC.Internal.Real.RealFrac a => GHC.Internal.Real.RealFrac (G
    12933 12964
     instance forall a. GHC.Internal.Real.Integral a => GHC.Internal.Real.RealFrac (GHC.Internal.Real.Ratio a) -- Defined in ‘GHC.Internal.Real’
    
    12934 12965
     instance GHC.Internal.Real.RealFrac GHC.Internal.Foreign.C.Types.CDouble -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12935 12966
     instance GHC.Internal.Real.RealFrac GHC.Internal.Foreign.C.Types.CFloat -- Defined in ‘GHC.Internal.Foreign.C.Types’
    
    12936
    -instance GHC.Internal.Real.RealFrac GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    12937
    -instance GHC.Internal.Real.RealFrac GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    12938 12967
     instance forall k a (b :: k). GHC.Internal.Show.Show a => GHC.Internal.Show.Show (GHC.Internal.Data.Functor.Const.Const a b) -- Defined in ‘GHC.Internal.Data.Functor.Const’
    
    12939 12968
     instance forall a. GHC.Internal.Show.Show a => GHC.Internal.Show.Show (GHC.Internal.Functor.ZipList.ZipList a) -- Defined in ‘GHC.Internal.Functor.ZipList’
    
    12940 12969
     instance GHC.Internal.Show.Show GHC.Internal.Conc.Sync.BlockReason -- Defined in ‘GHC.Internal.Conc.Sync’
    
    ... ... @@ -13025,6 +13054,8 @@ instance GHC.Internal.Show.Show GHC.Internal.Data.Data.Fixity -- Defined in ‘G
    13025 13054
     instance forall k (s :: k). GHC.Internal.Show.Show (GHC.Internal.Data.Proxy.Proxy s) -- Defined in ‘GHC.Internal.Data.Proxy’
    
    13026 13055
     instance GHC.Internal.Show.Show ghc-internal-10.100.0:GHC.Internal.Data.Typeable.Internal.SomeTypeRep -- Defined in ‘ghc-internal-10.100.0:GHC.Internal.Data.Typeable.Internal’
    
    13027 13056
     instance forall k (a :: k). GHC.Internal.Show.Show (ghc-internal-10.100.0:GHC.Internal.Data.Typeable.Internal.TypeRep a) -- Defined in ‘ghc-internal-10.100.0:GHC.Internal.Data.Typeable.Internal’
    
    13057
    +instance GHC.Internal.Show.Show GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    13058
    +instance GHC.Internal.Show.Show GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    13028 13059
     instance GHC.Internal.Show.Show GHC.Internal.Data.Dynamic.Dynamic -- Defined in ‘GHC.Internal.Data.Dynamic’
    
    13029 13060
     instance forall a b. (GHC.Internal.Show.Show a, GHC.Internal.Show.Show b) => GHC.Internal.Show.Show (GHC.Internal.Data.Either.Either a b) -- Defined in ‘GHC.Internal.Data.Either’
    
    13030 13061
     instance [safe] forall k (a :: k). Data.Fixed.HasResolution a => GHC.Internal.Show.Show (Data.Fixed.Fixed a) -- Defined in ‘Data.Fixed’
    
    ... ... @@ -13100,8 +13131,6 @@ instance forall a. GHC.Internal.Show.Show a => GHC.Internal.Show.Show (GHC.Inter
    13100 13131
     instance GHC.Internal.Show.Show GHC.Internal.Event.Windows.HandleKey -- Defined in ‘GHC.Internal.Event.Windows’
    
    13101 13132
     instance GHC.Internal.Show.Show GHC.Internal.Event.Windows.FFI.IOCP -- Defined in ‘GHC.Internal.Event.Windows.FFI’
    
    13102 13133
     instance GHC.Internal.Show.Show GHC.Internal.Fingerprint.Type.Fingerprint -- Defined in ‘GHC.Internal.Fingerprint.Type’
    
    13103
    -instance GHC.Internal.Show.Show GHC.Internal.Types.Double -- Defined in ‘GHC.Internal.Float’
    
    13104
    -instance GHC.Internal.Show.Show GHC.Internal.Types.Float -- Defined in ‘GHC.Internal.Float’
    
    13105 13134
     instance forall k (f :: k -> *) (g :: k -> *) (p :: k). (GHC.Internal.Show.Show (f p), GHC.Internal.Show.Show (g p)) => GHC.Internal.Show.Show ((GHC.Internal.Generics.:*:) f g p) -- Defined in ‘GHC.Internal.Generics’
    
    13106 13135
     instance forall k (f :: k -> *) (g :: k -> *) (p :: k). (GHC.Internal.Show.Show (f p), GHC.Internal.Show.Show (g p)) => GHC.Internal.Show.Show ((GHC.Internal.Generics.:+:) f g p) -- Defined in ‘GHC.Internal.Generics’
    
    13107 13136
     instance forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1). GHC.Internal.Show.Show (f (g p)) => GHC.Internal.Show.Show ((GHC.Internal.Generics.:.:) f g p) -- Defined in ‘GHC.Internal.Generics’
    

  • utils/haddock/html-test/ref/Hash.html
    ... ... @@ -337,7 +337,7 @@
    337 337
     		      ></span
    
    338 338
     		      > <a href="#" title="Hash"
    
    339 339
     		      >Hash</a
    
    340
    -		      > <a href="#" title="Prelude"
    
    340
    +		      > <a href="#" title="Data.Float"
    
    341 341
     		      >Float</a
    
    342 342
     		      ></span
    
    343 343
     		    > <a href="#" class="selflink"
    
    ... ... @@ -361,7 +361,7 @@
    361 361
     			><p class="src"
    
    362 362
     			><a href="#"
    
    363 363
     			  >hash</a
    
    364
    -			  > :: <a href="#" title="Prelude"
    
    364
    +			  > :: <a href="#" title="Data.Float"
    
    365 365
     			  >Float</a
    
    366 366
     			  > -&gt; <a href="#" title="Data.Int"
    
    367 367
     			  >Int</a
    

  • utils/haddock/html-test/ref/Test.html
    ... ... @@ -181,7 +181,7 @@
    181 181
     		  >Int</a
    
    182 182
     		  > (<a href="#" title="Data.Maybe"
    
    183 183
     		  >Maybe</a
    
    184
    -		  > <a href="#" title="Prelude"
    
    184
    +		  > <a href="#" title="Data.Float"
    
    185 185
     		  >Float</a
    
    186 186
     		  >)</li
    
    187 187
     		><li
    
    ... ... @@ -193,7 +193,7 @@
    193 193
     		  >T</a
    
    194 194
     		  > <a href="#" title="Data.Int"
    
    195 195
     		  >Int</a
    
    196
    -		  > <a href="#" title="Prelude"
    
    196
    +		  > <a href="#" title="Data.Float"
    
    197 197
     		  >Float</a
    
    198 198
     		  >)</li
    
    199 199
     		></ul
    
    ... ... @@ -433,9 +433,9 @@
    433 433
     		      >Bool</a
    
    434 434
     		      > -&gt; <a href="#" title="Test"
    
    435 435
     		      >T4</a
    
    436
    -		      > <a href="#" title="Prelude"
    
    436
    +		      > <a href="#" title="Data.Float"
    
    437 437
     		      >Float</a
    
    438
    -		      > <a href="#" title="Prelude"
    
    438
    +		      > <a href="#" title="Data.Float"
    
    439 439
     		      >Float</a
    
    440 440
     		      > -&gt; <a href="#" title="Test"
    
    441 441
     		      >T5</a
    
    ... ... @@ -655,9 +655,9 @@
    655 655
     	      >Bool</a
    
    656 656
     	      > -&gt; <a href="#" title="Test"
    
    657 657
     	      >T4</a
    
    658
    -	      > <a href="#" title="Prelude"
    
    658
    +	      > <a href="#" title="Data.Float"
    
    659 659
     	      >Float</a
    
    660
    -	      > <a href="#" title="Prelude"
    
    660
    +	      > <a href="#" title="Data.Float"
    
    661 661
     	      >Float</a
    
    662 662
     	      >) -&gt; <a href="#" title="Test"
    
    663 663
     	      >T5</a
    
    ... ... @@ -671,7 +671,7 @@
    671 671
     	      >Int</a
    
    672 672
     	      >, <a href="#" title="Data.Int"
    
    673 673
     	      >Int</a
    
    674
    -	      >, <a href="#" title="Prelude"
    
    674
    +	      >, <a href="#" title="Data.Float"
    
    675 675
     	      >Float</a
    
    676 676
     	      >) -&gt; <a href="#" title="Data.Int"
    
    677 677
     	      >Int</a
    
    ... ... @@ -691,11 +691,11 @@
    691 691
     	    ><li class="src short"
    
    692 692
     	    ><a href="#"
    
    693 693
     	      >o</a
    
    694
    -	      > :: <a href="#" title="Prelude"
    
    694
    +	      > :: <a href="#" title="Data.Float"
    
    695 695
     	      >Float</a
    
    696 696
     	      > -&gt; <a href="#" title="System.IO"
    
    697 697
     	      >IO</a
    
    698
    -	      > <a href="#" title="Prelude"
    
    698
    +	      > <a href="#" title="Data.Float"
    
    699 699
     	      >Float</a
    
    700 700
     	      ></li
    
    701 701
     	    ><li class="src short"
    
    ... ... @@ -754,7 +754,7 @@
    754 754
     		  >Int</a
    
    755 755
     		  > (<a href="#" title="Data.Maybe"
    
    756 756
     		  >Maybe</a
    
    757
    -		  > <a href="#" title="Prelude"
    
    757
    +		  > <a href="#" title="Data.Float"
    
    758 758
     		  >Float</a
    
    759 759
     		  >)</td
    
    760 760
     		><td class="doc"
    
    ... ... @@ -776,7 +776,7 @@
    776 776
     		  >T</a
    
    777 777
     		  > <a href="#" title="Data.Int"
    
    778 778
     		  >Int</a
    
    779
    -		  > <a href="#" title="Prelude"
    
    779
    +		  > <a href="#" title="Data.Float"
    
    780 780
     		  >Float</a
    
    781 781
     		  >)</td
    
    782 782
     		><td class="doc"
    
    ... ... @@ -1456,9 +1456,9 @@
    1456 1456
     			  >Bool</a
    
    1457 1457
     			  > -&gt; <a href="#" title="Test"
    
    1458 1458
     			  >T4</a
    
    1459
    -			  > <a href="#" title="Prelude"
    
    1459
    +			  > <a href="#" title="Data.Float"
    
    1460 1460
     			  >Float</a
    
    1461
    -			  > <a href="#" title="Prelude"
    
    1461
    +			  > <a href="#" title="Data.Float"
    
    1462 1462
     			  >Float</a
    
    1463 1463
     			  > -&gt; <a href="#" title="Test"
    
    1464 1464
     			  >T5</a
    
    ... ... @@ -1750,7 +1750,7 @@
    1750 1750
     		      ></span
    
    1751 1751
     		      > <a href="#" title="Test"
    
    1752 1752
     		      >D</a
    
    1753
    -		      > <a href="#" title="Prelude"
    
    1753
    +		      > <a href="#" title="Data.Float"
    
    1754 1754
     		      >Float</a
    
    1755 1755
     		      ></span
    
    1756 1756
     		    > <a href="#" class="selflink"
    
    ... ... @@ -1776,7 +1776,7 @@
    1776 1776
     			  >d</a
    
    1777 1777
     			  > :: <a href="#" title="Test"
    
    1778 1778
     			  >T</a
    
    1779
    -			  > <a href="#" title="Prelude"
    
    1779
    +			  > <a href="#" title="Data.Float"
    
    1780 1780
     			  >Float</a
    
    1781 1781
     			  > b <a href="#" class="selflink"
    
    1782 1782
     			  >#</a
    
    ... ... @@ -1784,9 +1784,9 @@
    1784 1784
     			><p class="src"
    
    1785 1785
     			><a href="#"
    
    1786 1786
     			  >e</a
    
    1787
    -			  > :: (<a href="#" title="Prelude"
    
    1787
    +			  > :: (<a href="#" title="Data.Float"
    
    1788 1788
     			  >Float</a
    
    1789
    -			  >, <a href="#" title="Prelude"
    
    1789
    +			  >, <a href="#" title="Data.Float"
    
    1790 1790
     			  >Float</a
    
    1791 1791
     			  >) <a href="#" class="selflink"
    
    1792 1792
     			  >#</a
    
    ... ... @@ -2241,9 +2241,9 @@ is at the beginning of the line).</pre
    2241 2241
     		  >Bool</a
    
    2242 2242
     		  > -&gt; <a href="#" title="Test"
    
    2243 2243
     		  >T4</a
    
    2244
    -		  > <a href="#" title="Prelude"
    
    2244
    +		  > <a href="#" title="Data.Float"
    
    2245 2245
     		  >Float</a
    
    2246
    -		  > <a href="#" title="Prelude"
    
    2246
    +		  > <a href="#" title="Data.Float"
    
    2247 2247
     		  >Float</a
    
    2248 2248
     		  >)</td
    
    2249 2249
     		><td class="doc"
    
    ... ... @@ -2299,7 +2299,7 @@ is at the beginning of the line).</pre
    2299 2299
     		  >Int</a
    
    2300 2300
     		  >, <a href="#" title="Data.Int"
    
    2301 2301
     		  >Int</a
    
    2302
    -		  >, <a href="#" title="Prelude"
    
    2302
    +		  >, <a href="#" title="Data.Float"
    
    2303 2303
     		  >Float</a
    
    2304 2304
     		  >)</td
    
    2305 2305
     		><td class="doc"
    
    ... ... @@ -2385,7 +2385,7 @@ is at the beginning of the line).</pre
    2385 2385
     	    ><table
    
    2386 2386
     	    ><tr
    
    2387 2387
     	      ><td class="src"
    
    2388
    -		>:: <a href="#" title="Prelude"
    
    2388
    +		>:: <a href="#" title="Data.Float"
    
    2389 2389
     		  >Float</a
    
    2390 2390
     		  ></td
    
    2391 2391
     		><td class="doc"
    
    ... ... @@ -2397,7 +2397,7 @@ is at the beginning of the line).</pre
    2397 2397
     	      ><td class="src"
    
    2398 2398
     		>-&gt; <a href="#" title="System.IO"
    
    2399 2399
     		  >IO</a
    
    2400
    -		  > <a href="#" title="Prelude"
    
    2400
    +		  > <a href="#" title="Data.Float"
    
    2401 2401
     		  >Float</a
    
    2402 2402
     		  ></td
    
    2403 2403
     		><td class="doc"
    

  • utils/haddock/html-test/ref/TypeFamilies3.html
    ... ... @@ -282,7 +282,7 @@
    282 282
     		      >newtype</span
    
    283 283
     		      > <a href="#" title="TypeFamilies3"
    
    284 284
     		      >Baz</a
    
    285
    -		      > <a href="#" title="Prelude"
    
    285
    +		      > <a href="#" title="Data.Double"
    
    286 286
     		      >Double</a
    
    287 287
     		      ></span
    
    288 288
     		    > <a href="#" class="selflink"
    
    ... ... @@ -305,11 +305,11 @@
    305 305
     			>newtype</span
    
    306 306
     			> <a href="#" title="TypeFamilies3"
    
    307 307
     			>Baz</a
    
    308
    -			> <a href="#" title="Prelude"
    
    308
    +			> <a href="#" title="Data.Double"
    
    309 309
     			>Double</a
    
    310 310
     			> = <a id="v:Baz3" class="def"
    
    311 311
     			>Baz3</a
    
    312
    -			> <a href="#" title="Prelude"
    
    312
    +			> <a href="#" title="Data.Float"
    
    313 313
     			>Float</a
    
    314 314
     			></div
    
    315 315
     		      ></details