BinderDavid pushed to branch wip/clc-proposal-442 at Glasgow Haskell Compiler / GHC
Commits:
-
545fd4fb
by ARATA Mizuki at 2026-09-22T15:03:24-04:00
-
bf17f289
by fendor at 2026-09-22T15:04:05-04:00
-
b930a64d
by David Binder at 2026-09-23T15:47:51+00:00
-
ad376f33
by David Binder at 2026-09-23T15:47:51+00:00
-
187fdad1
by David Binder at 2026-09-23T15:47:51+00:00
-
c0cb03d0
by David Binder at 2026-09-23T15:47:51+00:00
25 changed files:
- + changelog.d/26610
- + changelog.d/clc-442
- compiler/GHC/Driver/Env.hs
- libraries/base/changelog.md
- libraries/base/src/Data/Tuple.hs
- rts/include/stg/Prim.h
- rts/prim/bitrev.c
- rts/prim/bswap.c
- + testsuite/tests/ghci/prog-mhu008/Makefile
- + testsuite/tests/ghci/prog-mhu008/a/M.hs
- + testsuite/tests/ghci/prog-mhu008/all.T
- + testsuite/tests/ghci/prog-mhu008/b/M.hs
- + testsuite/tests/ghci/prog-mhu008/prog-mhu008.script
- + testsuite/tests/ghci/prog-mhu008/prog-mhu008.stdout
- + testsuite/tests/ghci/prog-mhu008/unitA
- + testsuite/tests/ghci/prog-mhu008/unitB
- testsuite/tests/interface-stability/base-exports.stdout
- testsuite/tests/interface-stability/base-exports.stdout-javascript-unknown-ghcjs
- testsuite/tests/interface-stability/base-exports.stdout-mingw32
- + testsuite/tests/primops/should_run/T27299.hs
- + testsuite/tests/primops/should_run/T27299.stdout
- testsuite/tests/primops/should_run/all.T
- testsuite/tests/typecheck/should_compile/T25180.stderr
- utils/haddock/html-test/ref/Bug923.html
- utils/haddock/html-test/ref/Instances.html
Changes:
| 1 | +section: compiler
|
|
| 2 | +synopsis: Fix instance resolution for shadowed modules
|
|
| 3 | +description:
|
|
| 4 | + Instances imported from modules with the same module name as the importing module
|
|
| 5 | + were dropped accidentally since we didn't account for the unit id of the imported module.
|
|
| 6 | +mrs: !16648
|
|
| 7 | +issues: #26610 |
| 1 | +section: base
|
|
| 2 | +issues: #27849
|
|
| 3 | +mrs: !16718
|
|
| 4 | +synopsis:
|
|
| 5 | + Expose `data Unit` and `data TupleN` from `Data.Tuple` in `base`
|
|
| 6 | +description:
|
|
| 7 | + The data types `data Unit` and `data TupleN` (for N from 2 to 64) are now exported from
|
|
| 8 | + `Data.Tuple` in the `base` library instead of `Data.Tuple.Experimental` in `ghc-experimental`.
|
|
| 9 | + See `CLC proposal 442 <https://github.com/haskell/core-libraries-committee/issues/442>`_. |
| ... | ... | @@ -263,13 +263,13 @@ hugCompleteSigsBelow hsc uid mn = foldr (++) [] <$> |
| 263 | 263 | -- | Find instances visible from the given set of imports
|
| 264 | 264 | hugInstancesBelow :: HscEnv -> UnitId -> ModuleNameWithIsBoot -> IO (InstEnv, [FamInst])
|
| 265 | 265 | hugInstancesBelow hsc_env uid mnwib = do
|
| 266 | - let mn = gwib_mod mnwib
|
|
| 266 | + let mn = mkModule uid (gwib_mod mnwib)
|
|
| 267 | 267 | (insts, famInsts) <-
|
| 268 | 268 | unzip . concat <$>
|
| 269 | 269 | hugSomeThingsBelowUs (\mod_info ->
|
| 270 | 270 | let details = hm_details mod_info
|
| 271 | 271 | -- Don't include instances for the current module
|
| 272 | - in if moduleName (mi_module (hm_iface mod_info)) == mn
|
|
| 272 | + in if fmap toUnitId (mi_module (hm_iface mod_info)) == mn
|
|
| 273 | 273 | then []
|
| 274 | 274 | else [(md_insts details, md_fam_insts details)])
|
| 275 | 275 | True -- Include -hi-boot
|
| ... | ... | @@ -7,6 +7,7 @@ |
| 7 | 7 | * 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))
|
| 8 | 8 | * 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))
|
| 9 | 9 | * Introduce `Data.Double` and `Data.Float` modules. ([CLC proposal #378](https://github.com/haskell/core-libraries-committee/issues/378))
|
| 10 | + * Expose `data Unit` and `data TupleN` (for `N` from 2 to 64) from module `Data.Tuple` ([CLC proposal #442](https://github.com/haskell/core-libraries-committee/issues/442))
|
|
| 10 | 11 | * Change `Generically a`'s `Monoid` definition to require a `Semigroup` constraint, and define its `mconcat` using `(<>)` from that constraint. ([CLC proposal #413](https://github.com/haskell/core-libraries-committee/issues/413))
|
| 11 | 12 | * Add `withEmptyCallStack` to `GHC.Stack`. ([CLC proposal #428](https://github.com/haskell/core-libraries-committee/issues/428))
|
| 12 | 13 | * Add new `Data.RealFloat` module re-exporting `RealFloat` from `GHC.Float` ([CLC proposal #394](https://github.com/haskell/core-libraries-committee/issues/394))
|
| ... | ... | @@ -14,13 +14,78 @@ |
| 14 | 14 | --
|
| 15 | 15 | |
| 16 | 16 | module Data.Tuple
|
| 17 | - (Solo(..),
|
|
| 17 | + (Unit(..),
|
|
| 18 | + Solo(..),
|
|
| 18 | 19 | getSolo,
|
| 19 | 20 | fst,
|
| 20 | 21 | snd,
|
| 21 | 22 | curry,
|
| 22 | 23 | uncurry,
|
| 23 | - swap
|
|
| 24 | + swap,
|
|
| 25 | + Tuple2(..),
|
|
| 26 | + Tuple3(..),
|
|
| 27 | + Tuple4(..),
|
|
| 28 | + Tuple5(..),
|
|
| 29 | + Tuple6(..),
|
|
| 30 | + Tuple7(..),
|
|
| 31 | + Tuple8(..),
|
|
| 32 | + Tuple9(..),
|
|
| 33 | + Tuple10(..),
|
|
| 34 | + Tuple11(..),
|
|
| 35 | + Tuple12(..),
|
|
| 36 | + Tuple13(..),
|
|
| 37 | + Tuple14(..),
|
|
| 38 | + Tuple15(..),
|
|
| 39 | + Tuple16(..),
|
|
| 40 | + Tuple17(..),
|
|
| 41 | + Tuple18(..),
|
|
| 42 | + Tuple19(..),
|
|
| 43 | + Tuple20(..),
|
|
| 44 | + Tuple21(..),
|
|
| 45 | + Tuple22(..),
|
|
| 46 | + Tuple23(..),
|
|
| 47 | + Tuple24(..),
|
|
| 48 | + Tuple25(..),
|
|
| 49 | + Tuple26(..),
|
|
| 50 | + Tuple27(..),
|
|
| 51 | + Tuple28(..),
|
|
| 52 | + Tuple29(..),
|
|
| 53 | + Tuple30(..),
|
|
| 54 | + Tuple31(..),
|
|
| 55 | + Tuple32(..),
|
|
| 56 | + Tuple33(..),
|
|
| 57 | + Tuple34(..),
|
|
| 58 | + Tuple35(..),
|
|
| 59 | + Tuple36(..),
|
|
| 60 | + Tuple37(..),
|
|
| 61 | + Tuple38(..),
|
|
| 62 | + Tuple39(..),
|
|
| 63 | + Tuple40(..),
|
|
| 64 | + Tuple41(..),
|
|
| 65 | + Tuple42(..),
|
|
| 66 | + Tuple43(..),
|
|
| 67 | + Tuple44(..),
|
|
| 68 | + Tuple45(..),
|
|
| 69 | + Tuple46(..),
|
|
| 70 | + Tuple47(..),
|
|
| 71 | + Tuple48(..),
|
|
| 72 | + Tuple49(..),
|
|
| 73 | + Tuple50(..),
|
|
| 74 | + Tuple51(..),
|
|
| 75 | + Tuple52(..),
|
|
| 76 | + Tuple53(..),
|
|
| 77 | + Tuple54(..),
|
|
| 78 | + Tuple55(..),
|
|
| 79 | + Tuple56(..),
|
|
| 80 | + Tuple57(..),
|
|
| 81 | + Tuple58(..),
|
|
| 82 | + Tuple59(..),
|
|
| 83 | + Tuple60(..),
|
|
| 84 | + Tuple61(..),
|
|
| 85 | + Tuple62(..),
|
|
| 86 | + Tuple63(..),
|
|
| 87 | + Tuple64(..),
|
|
| 24 | 88 | ) where
|
| 25 | 89 | |
| 26 | -import GHC.Internal.Data.Tuple |
|
| \ No newline at end of file | ||
| 90 | +import GHC.Internal.Data.Tuple
|
|
| 91 | +import GHC.Tuple |
|
| \ No newline at end of file |
| ... | ... | @@ -59,16 +59,16 @@ StgWord hs_xchg32(StgWord x, StgWord val); |
| 59 | 59 | StgWord64 hs_xchg64(StgWord x, StgWord64 val);
|
| 60 | 60 | |
| 61 | 61 | /* rts/prim/bswap.c */
|
| 62 | -StgWord16 hs_bswap16(StgWord16 x);
|
|
| 63 | -StgWord32 hs_bswap32(StgWord32 x);
|
|
| 62 | +StgWord hs_bswap16(StgWord x);
|
|
| 63 | +StgWord hs_bswap32(StgWord x);
|
|
| 64 | 64 | StgWord64 hs_bswap64(StgWord64 x);
|
| 65 | 65 | |
| 66 | 66 | /* rts/prim/bitrev.c
|
| 67 | 67 | This was done as part of issue #16164.
|
| 68 | 68 | See Note [Bit reversal primop] for more details about the implementation.*/
|
| 69 | 69 | StgWord hs_bitrev8(StgWord x);
|
| 70 | -StgWord16 hs_bitrev16(StgWord16 x);
|
|
| 71 | -StgWord32 hs_bitrev32(StgWord32 x);
|
|
| 70 | +StgWord hs_bitrev16(StgWord x);
|
|
| 71 | +StgWord hs_bitrev32(StgWord x);
|
|
| 72 | 72 | StgWord64 hs_bitrev64(StgWord64 x);
|
| 73 | 73 | |
| 74 | 74 | /* rts/prim/longlong.c */
|
| ... | ... | @@ -36,8 +36,8 @@ hs_bitrev8(StgWord x) |
| 36 | 36 | return x;
|
| 37 | 37 | }
|
| 38 | 38 | |
| 39 | -StgWord16
|
|
| 40 | -hs_bitrev16(StgWord16 x)
|
|
| 39 | +StgWord
|
|
| 40 | +hs_bitrev16(StgWord x)
|
|
| 41 | 41 | {
|
| 42 | 42 | x = ((x >> 1) & 0x5555) | ((x & 0x5555) << 1 );
|
| 43 | 43 | x = ((x >> 2) & 0x3333) | ((x & 0x3333) << 2 );
|
| ... | ... | @@ -46,14 +46,14 @@ hs_bitrev16(StgWord16 x) |
| 46 | 46 | return x;
|
| 47 | 47 | }
|
| 48 | 48 | |
| 49 | -StgWord32
|
|
| 50 | -hs_bitrev32(StgWord32 x)
|
|
| 49 | +StgWord
|
|
| 50 | +hs_bitrev32(StgWord x)
|
|
| 51 | 51 | {
|
| 52 | - x = ((x >> 1) & 0x55555555) | ((x & 0x55555555) << 1 );
|
|
| 53 | - x = ((x >> 2) & 0x33333333) | ((x & 0x33333333) << 2 );
|
|
| 54 | - x = ((x >> 4) & 0x0F0F0F0F) | ((x & 0x0F0F0F0F) << 4 );
|
|
| 55 | - x = ((x >> 8) & 0x00FF00FF) | ((x & 0x00FF00FF) << 8 );
|
|
| 56 | - x = ( x >> 16 ) | ( x << 16 );
|
|
| 52 | + x = ((x >> 1) & 0x55555555) | ((x & 0x55555555) << 1 );
|
|
| 53 | + x = ((x >> 2) & 0x33333333) | ((x & 0x33333333) << 2 );
|
|
| 54 | + x = ((x >> 4) & 0x0F0F0F0F) | ((x & 0x0F0F0F0F) << 4 );
|
|
| 55 | + x = ((x >> 8) & 0x00FF00FF) | ((x & 0x00FF00FF) << 8 );
|
|
| 56 | + x = ((x >> 16) & 0x0000FFFF) | ((x & 0x0000FFFF) << 16);
|
|
| 57 | 57 | return x;
|
| 58 | 58 | }
|
| 59 | 59 |
| 1 | 1 | #include "Rts.h"
|
| 2 | 2 | |
| 3 | -StgWord16
|
|
| 4 | -hs_bswap16(StgWord16 x)
|
|
| 3 | +StgWord
|
|
| 4 | +hs_bswap16(StgWord x)
|
|
| 5 | 5 | {
|
| 6 | - return ((x >> 8) | (x << 8));
|
|
| 6 | + x = (StgWord16)x;
|
|
| 7 | + return (StgWord16)((x >> 8) | (x << 8));
|
|
| 7 | 8 | }
|
| 8 | 9 | |
| 9 | -StgWord32
|
|
| 10 | -hs_bswap32(StgWord32 x)
|
|
| 10 | +StgWord
|
|
| 11 | +hs_bswap32(StgWord x)
|
|
| 11 | 12 | {
|
| 12 | - return ((x >> 24) | ((x >> 8) & 0xff00) |
|
|
| 13 | - (x << 24) | ((x & 0xff00) << 8));
|
|
| 13 | + x = (StgWord32)x;
|
|
| 14 | + return (StgWord32)((x >> 24) | ((x >> 8) & 0xff00) |
|
|
| 15 | + (x << 24) | ((x & 0xff00) << 8));
|
|
| 14 | 16 | }
|
| 15 | 17 | |
| 16 | 18 | StgWord64
|
| 1 | +TOP=../../..
|
|
| 2 | +include $(TOP)/mk/boilerplate.mk
|
|
| 3 | +include $(TOP)/mk/test.mk |
| 1 | +module M (T (..)) where
|
|
| 2 | + |
|
| 3 | +newtype T = MkT Int
|
|
| 4 | + deriving (Eq, Ord) |
| 1 | +test('prog-mhu008',
|
|
| 2 | + [extra_files(['a/', 'b/', 'unitA', 'unitB']),
|
|
| 3 | + cmd_prefix('ghciWayFlags=' + config.ghci_way_flags),
|
|
| 4 | + req_interp],
|
|
| 5 | + ghci_multiunit_script, [['unitA', 'unitB'], 'prog-mhu008.script']) |
| 1 | +{-# LANGUAGE PackageImports #-}
|
|
| 2 | + |
|
| 3 | +module M
|
|
| 4 | + ( module Export
|
|
| 5 | + , cmp
|
|
| 6 | + ) where
|
|
| 7 | + |
|
| 8 | +import "a" M as Export
|
|
| 9 | + |
|
| 10 | +cmp :: T -> T -> Bool
|
|
| 11 | +cmp x y = x <= y |
| 1 | +:set -XPackageImports
|
|
| 2 | +import "a" M qualified as MA
|
|
| 3 | +import "b" M qualified as MB
|
|
| 4 | + |
|
| 5 | +MB.cmp (MA.MkT 1) (MA.MkT 2) |
| 1 | +True |
| 1 | +-this-unit-id a-0-inplace
|
|
| 2 | +-this-package-name a
|
|
| 3 | +-i
|
|
| 4 | +-ia
|
|
| 5 | +M |
| 1 | +-this-unit-id b-0-inplace
|
|
| 2 | +-this-package-name b
|
|
| 3 | +-package-id a-0-inplace
|
|
| 4 | +-i
|
|
| 5 | +-ib
|
|
| 6 | +M |
| 1 | +{-# LANGUAGE MagicHash #-}
|
|
| 2 | +import GHC.Exts
|
|
| 3 | +import GHC.Word
|
|
| 4 | +import Numeric
|
|
| 5 | + |
|
| 6 | +main :: IO ()
|
|
| 7 | +main = do
|
|
| 8 | + putStrLn $ showHex (W# (bitReverse8# 0x55##)) ""
|
|
| 9 | + putStrLn $ showHex (W# (bitReverse8# 0xAA##)) ""
|
|
| 10 | + putStrLn $ showHex (W# (bitReverse16# 0x5555##)) ""
|
|
| 11 | + putStrLn $ showHex (W# (bitReverse16# 0xAAAA##)) ""
|
|
| 12 | + putStrLn $ showHex (W# (bitReverse32# 0x5555_5555##)) ""
|
|
| 13 | + putStrLn $ showHex (W# (bitReverse32# 0xAAAA_AAAA##)) ""
|
|
| 14 | + putStrLn $ showHex (W# (byteSwap16# 0xABCD##)) ""
|
|
| 15 | + putStrLn $ showHex (W# (byteSwap32# 0xABCD_EF12##)) ""
|
|
| 16 | + putStrLn $ showHex (W# (noinline bitReverse8# 0x55##)) ""
|
|
| 17 | + putStrLn $ showHex (W# (noinline bitReverse8# 0xAA##)) ""
|
|
| 18 | + putStrLn $ showHex (W# (noinline bitReverse16# 0x5555##)) ""
|
|
| 19 | + putStrLn $ showHex (W# (noinline bitReverse16# 0xAAAA##)) ""
|
|
| 20 | + putStrLn $ showHex (W# (noinline bitReverse32# 0x5555_5555##)) ""
|
|
| 21 | + putStrLn $ showHex (W# (noinline bitReverse32# 0xAAAA_AAAA##)) ""
|
|
| 22 | + putStrLn $ showHex (W# (noinline byteSwap16# 0xABCD##)) ""
|
|
| 23 | + putStrLn $ showHex (W# (noinline byteSwap32# 0xABCD_EF12##)) "" |
| 1 | +aa
|
|
| 2 | +55
|
|
| 3 | +aaaa
|
|
| 4 | +5555
|
|
| 5 | +aaaaaaaa
|
|
| 6 | +55555555
|
|
| 7 | +cdab
|
|
| 8 | +12efcdab
|
|
| 9 | +aa
|
|
| 10 | +55
|
|
| 11 | +aaaa
|
|
| 12 | +5555
|
|
| 13 | +aaaaaaaa
|
|
| 14 | +55555555
|
|
| 15 | +cdab
|
|
| 16 | +12efcdab |
| ... | ... | @@ -91,3 +91,4 @@ test('T24496' |
| 91 | 91 | ]
|
| 92 | 92 | , compile_and_run, ['-O'])
|
| 93 | 93 | test('T6026', normal, compile_and_run, [''])
|
| 94 | +test('T27299', normal, compile_and_run, ['']) |
| ... | ... | @@ -5,6 +5,9 @@ T25180.hs:12:8: warning: [GHC-88464] [-Wtyped-holes (in -Wdefault)] |
| 5 | 5 | Valid hole fits include
|
| 6 | 6 | tup0 :: () (bound at T25180.hs:12:1)
|
| 7 | 7 | () :: () (bound at <wired into compiler>)
|
| 8 | + () :: ()
|
|
| 9 | + (imported from ‘Data.Tuple’ at T25180.hs:6:1-17
|
|
| 10 | + (and originally defined in ‘GHC.Internal.Tuple’))
|
|
| 8 | 11 | mempty :: forall a. Monoid a => a
|
| 9 | 12 | with mempty @()
|
| 10 | 13 | (imported from ‘Prelude’
|
| ... | ... | @@ -60,6 +63,10 @@ T25180.hs:26:8: warning: [GHC-88464] [-Wtyped-holes (in -Wdefault)] |
| 60 | 63 | (,) :: forall a b. a -> b -> (a, b)
|
| 61 | 64 | with (,) @a @b
|
| 62 | 65 | (bound at <wired into compiler>)
|
| 66 | + (,) :: forall a b. a -> b -> (a, b)
|
|
| 67 | + with (,) @a @b
|
|
| 68 | + (imported from ‘Data.Tuple’ at T25180.hs:6:1-17
|
|
| 69 | + (and originally defined in ‘GHC.Internal.Tuple’))
|
|
| 63 | 70 | |
| 64 | 71 | T25180.hs:33:8: warning: [GHC-88464] [-Wtyped-holes (in -Wdefault)]
|
| 65 | 72 | • Found hole: _ :: a -> b -> c -> (a, b, c)
|
| ... | ... | @@ -75,6 +82,10 @@ T25180.hs:33:8: warning: [GHC-88464] [-Wtyped-holes (in -Wdefault)] |
| 75 | 82 | (,,) :: forall a b c. a -> b -> c -> (a, b, c)
|
| 76 | 83 | with (,,) @a @b @c
|
| 77 | 84 | (bound at <wired into compiler>)
|
| 85 | + (,,) :: forall a b c. a -> b -> c -> (a, b, c)
|
|
| 86 | + with (,,) @a @b @c
|
|
| 87 | + (imported from ‘Data.Tuple’ at T25180.hs:6:1-17
|
|
| 88 | + (and originally defined in ‘GHC.Internal.Tuple’))
|
|
| 78 | 89 | |
| 79 | 90 | T25180.hs:38:11: warning: [GHC-88464] [-Wtyped-holes (in -Wdefault)]
|
| 80 | 91 | • Found hole: _ :: (# #)
|
| ... | ... | @@ -76,7 +76,9 @@ |
| 76 | 76 | >forall</span
|
| 77 | 77 | > a. a -> <a href="#" title="Bug923"
|
| 78 | 78 | >T</a
|
| 79 | - > ('(,) a :: <a href="#" title="Data.Kind"
|
|
| 79 | + > ('<a href="#" title="Data.Tuple"
|
|
| 80 | + >(,)</a
|
|
| 81 | + > a :: <a href="#" title="Data.Kind"
|
|
| 80 | 82 | >Type</a
|
| 81 | 83 | > -> (<a href="#" title="Data.Kind"
|
| 82 | 84 | >Type</a
|
| ... | ... | @@ -126,7 +128,9 @@ |
| 126 | 128 | >forall</span
|
| 127 | 129 | > a. a -> <a href="#" title="Bug923"
|
| 128 | 130 | >T</a
|
| 129 | - > ('(,) a :: <a href="#" title="Data.Kind"
|
|
| 131 | + > ('<a href="#" title="Data.Tuple"
|
|
| 132 | + >(,)</a
|
|
| 133 | + > a :: <a href="#" title="Data.Kind"
|
|
| 130 | 134 | >Type</a
|
| 131 | 135 | > -> (<a href="#" title="Data.Kind"
|
| 132 | 136 | >Type</a
|
| ... | ... | @@ -156,7 +160,9 @@ |
| 156 | 160 | >Eq</a
|
| 157 | 161 | > (<a href="#" title="Bug923"
|
| 158 | 162 | >T</a
|
| 159 | - > ('(,) a :: <a href="#" title="Data.Kind"
|
|
| 163 | + > ('<a href="#" title="Data.Tuple"
|
|
| 164 | + >(,)</a
|
|
| 165 | + > a :: <a href="#" title="Data.Kind"
|
|
| 160 | 166 | >Type</a
|
| 161 | 167 | > -> (<a href="#" title="Data.Kind"
|
| 162 | 168 | >Type</a
|
| ... | ... | @@ -188,7 +194,9 @@ |
| 188 | 194 | >(==)</a
|
| 189 | 195 | > :: <a href="#" title="Bug923"
|
| 190 | 196 | >T</a
|
| 191 | - > ('(,) a :: <a href="#" title="Data.Kind"
|
|
| 197 | + > ('<a href="#" title="Data.Tuple"
|
|
| 198 | + >(,)</a
|
|
| 199 | + > a :: <a href="#" title="Data.Kind"
|
|
| 192 | 200 | >Type</a
|
| 193 | 201 | > -> (<a href="#" title="Data.Kind"
|
| 194 | 202 | >Type</a
|
| ... | ... | @@ -196,7 +204,9 @@ |
| 196 | 204 | >Type</a
|
| 197 | 205 | >)) -> <a href="#" title="Bug923"
|
| 198 | 206 | >T</a
|
| 199 | - > ('(,) a :: <a href="#" title="Data.Kind"
|
|
| 207 | + > ('<a href="#" title="Data.Tuple"
|
|
| 208 | + >(,)</a
|
|
| 209 | + > a :: <a href="#" title="Data.Kind"
|
|
| 200 | 210 | >Type</a
|
| 201 | 211 | > -> (<a href="#" title="Data.Kind"
|
| 202 | 212 | >Type</a
|
| ... | ... | @@ -212,7 +222,9 @@ |
| 212 | 222 | >(/=)</a
|
| 213 | 223 | > :: <a href="#" title="Bug923"
|
| 214 | 224 | >T</a
|
| 215 | - > ('(,) a :: <a href="#" title="Data.Kind"
|
|
| 225 | + > ('<a href="#" title="Data.Tuple"
|
|
| 226 | + >(,)</a
|
|
| 227 | + > a :: <a href="#" title="Data.Kind"
|
|
| 216 | 228 | >Type</a
|
| 217 | 229 | > -> (<a href="#" title="Data.Kind"
|
| 218 | 230 | >Type</a
|
| ... | ... | @@ -220,7 +232,9 @@ |
| 220 | 232 | >Type</a
|
| 221 | 233 | >)) -> <a href="#" title="Bug923"
|
| 222 | 234 | >T</a
|
| 223 | - > ('(,) a :: <a href="#" title="Data.Kind"
|
|
| 235 | + > ('<a href="#" title="Data.Tuple"
|
|
| 236 | + >(,)</a
|
|
| 237 | + > a :: <a href="#" title="Data.Kind"
|
|
| 224 | 238 | >Type</a
|
| 225 | 239 | > -> (<a href="#" title="Data.Kind"
|
| 226 | 240 | >Type</a
|
| ... | ... | @@ -450,7 +450,9 @@ |
| 450 | 450 | >)</span
|
| 451 | 451 | > => <a href="#" title="Instances"
|
| 452 | 452 | >Foo</a
|
| 453 | - > ((,) (f a))</span
|
|
| 453 | + > (<a href="#" title="Data.Tuple"
|
|
| 454 | + >(,)</a
|
|
| 455 | + > (f a))</span
|
|
| 454 | 456 | > <a href="#" class="selflink"
|
| 455 | 457 | >#</a
|
| 456 | 458 | ></td
|
| ... | ... | @@ -560,7 +562,9 @@ |
| 560 | 562 | ></span
|
| 561 | 563 | > <a href="#" title="Instances"
|
| 562 | 564 | >Foo</a
|
| 563 | - > ((,,) a a)</span
|
|
| 565 | + > (<a href="#" title="Data.Tuple"
|
|
| 566 | + >(,,)</a
|
|
| 567 | + > a a)</span
|
|
| 564 | 568 | > <a href="#" class="selflink"
|
| 565 | 569 | >#</a
|
| 566 | 570 | ></td
|
| ... | ... | @@ -1164,9 +1168,13 @@ |
| 1164 | 1168 | ></span
|
| 1165 | 1169 | > <a href="#" title="Instances"
|
| 1166 | 1170 | >Foo</a
|
| 1167 | - > ((,,) a b) => <a href="#" title="Instances"
|
|
| 1171 | + > (<a href="#" title="Data.Tuple"
|
|
| 1172 | + >(,,)</a
|
|
| 1173 | + > a b) => <a href="#" title="Instances"
|
|
| 1168 | 1174 | >Bar</a
|
| 1169 | - > ((,,) a b) (a, b, a)</span
|
|
| 1175 | + > (<a href="#" title="Data.Tuple"
|
|
| 1176 | + >(,,)</a
|
|
| 1177 | + > a b) (a, b, a)</span
|
|
| 1170 | 1178 | > <a href="#" class="selflink"
|
| 1171 | 1179 | >#</a
|
| 1172 | 1180 | ></td
|