Marge Bot pushed to branch wip/marge_bot_batch_merge_job at Glasgow Haskell Compiler / GHC
Commits:
-
44354255
by Vo Minh Thu at 2026-02-20T18:53:06-05:00
-
eab3dbba
by Andreas Klebinger at 2026-02-20T18:53:51-05:00
-
25049e92
by Teo Camarasu at 2026-02-24T05:05:40-05:00
-
ff34fd17
by Wolfgang Jeltsch at 2026-02-24T05:05:40-05:00
25 changed files:
- compiler/GHC/Builtin/Names.hs
- + docs/users_guide/10.0.1-notes.rst
- docs/users_guide/ghci.rst
- ghc/GHCi/UI.hs
- hadrian/build-cabal
- libraries/base/src/Control/Arrow.hs
- libraries/base/src/System/IO.hs
- libraries/ghc-internal/src/GHC/Internal/Control/Arrow.hs
- libraries/ghc-internal/src/GHC/Internal/Control/Monad/Fix.hs
- libraries/ghc-internal/src/GHC/Internal/Control/Monad/ST/Lazy/Imp.hs
- libraries/ghc-internal/src/GHC/Internal/Data/Functor/Identity.hs
- libraries/ghc-internal/src/GHC/Internal/Event/Windows/ManagedThreadPool.hs
- libraries/ghc-internal/src/GHC/Internal/RTS/Flags/Test.hsc
- libraries/ghc-internal/src/GHC/Internal/System/IO.hs
- libraries/ghc-internal/src/GHC/Internal/System/IO/OS.hs
- libraries/ghc-internal/src/GHC/Internal/TH/Monad.hs
- testsuite/tests/ghci/scripts/ListTuplePunsPpr.stdout
- testsuite/tests/ghci/scripts/T10963.stderr
- testsuite/tests/ghci/scripts/T4175.stdout
- 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/interface-stability/base-exports.stdout-ws-32
- testsuite/tests/interface-stability/template-haskell-exports.stdout
- testsuite/tests/mdo/should_fail/mdofail006.stderr
Changes:
| ... | ... | @@ -1489,7 +1489,9 @@ composeAName = varQual gHC_INTERNAL_DESUGAR (fsLit ">>>") composeAIdKey |
| 1489 | 1489 | firstAName = varQual gHC_INTERNAL_ARROW (fsLit "first") firstAIdKey
|
| 1490 | 1490 | appAName = varQual gHC_INTERNAL_ARROW (fsLit "app") appAIdKey
|
| 1491 | 1491 | choiceAName = varQual gHC_INTERNAL_ARROW (fsLit "|||") choiceAIdKey
|
| 1492 | -loopAName = varQual gHC_INTERNAL_ARROW (fsLit "loop") loopAIdKey
|
|
| 1492 | +-- This is defined in Monad.Fix to flatten the module hierarchy of `ghc-internal`
|
|
| 1493 | +-- It is the only thing from Control.Arrow that requires MonadFix
|
|
| 1494 | +loopAName = varQual gHC_INTERNAL_MONAD_FIX (fsLit "loop") loopAIdKey
|
|
| 1493 | 1495 | |
| 1494 | 1496 | -- Monad comprehensions
|
| 1495 | 1497 | guardMName, mzipName :: Name
|
| 1 | +.. _release-10-0-1:
|
|
| 2 | + |
|
| 3 | +Version 10.0.1
|
|
| 4 | +==============
|
|
| 5 | + |
|
| 6 | +Language
|
|
| 7 | +~~~~~~~~
|
|
| 8 | + |
|
| 9 | +Compiler
|
|
| 10 | +~~~~~~~~
|
|
| 11 | + |
|
| 12 | +GHCi
|
|
| 13 | +~~~~
|
|
| 14 | + |
|
| 15 | +- Added the :ghci-cmd:`:version` command. This displays the current GHC version.
|
|
| 16 | + |
|
| 17 | +Runtime system
|
|
| 18 | +~~~~~~~~~~~~~~
|
|
| 19 | + |
|
| 20 | +``base`` library
|
|
| 21 | +~~~~~~~~~~~~~~~~
|
|
| 22 | + |
|
| 23 | +``ghc-prim`` library
|
|
| 24 | +~~~~~~~~~~~~~~~~~~~~
|
|
| 25 | + |
|
| 26 | +``ghc`` library
|
|
| 27 | +~~~~~~~~~~~~~~~
|
|
| 28 | + |
|
| 29 | +``ghc-heap`` library
|
|
| 30 | +~~~~~~~~~~~~~~~~~~~~
|
|
| 31 | + |
|
| 32 | +``template-haskell`` library
|
|
| 33 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
| 34 | + |
|
| 35 | +Included libraries
|
|
| 36 | +~~~~~~~~~~~~~~~~~~ |
| ... | ... | @@ -3140,6 +3140,10 @@ commonly used commands. |
| 3140 | 3140 | |
| 3141 | 3141 | The :ghci-cmd:`:uses` command requires :ghci-cmd:`:set +c` to be set.
|
| 3142 | 3142 | |
| 3143 | +.. ghci-cmd:: :version
|
|
| 3144 | + |
|
| 3145 | + Display the current GHC version.
|
|
| 3146 | + |
|
| 3143 | 3147 | .. ghci-cmd:: :where
|
| 3144 | 3148 | |
| 3145 | 3149 | Show the current evaluation stack while stopped at a breakpoint.
|
| ... | ... | @@ -193,9 +193,11 @@ defaultGhciSettings = |
| 193 | 193 | fullHelpText = defFullHelpText
|
| 194 | 194 | }
|
| 195 | 195 | |
| 196 | +versionString :: String
|
|
| 197 | +versionString = "GHCi, version " ++ cProjectVersion
|
|
| 198 | + |
|
| 196 | 199 | ghciWelcomeMsg :: String
|
| 197 | -ghciWelcomeMsg = "GHCi, version " ++ cProjectVersion ++
|
|
| 198 | - ": https://www.haskell.org/ghc/ :? for help"
|
|
| 200 | +ghciWelcomeMsg = versionString ++ ": https://www.haskell.org/ghc/ :? for help"
|
|
| 199 | 201 | |
| 200 | 202 | ghciCommands :: [Command]
|
| 201 | 203 | ghciCommands = map mkCmd [
|
| ... | ... | @@ -253,6 +255,7 @@ ghciCommands = map mkCmd [ |
| 253 | 255 | ("unadd", keepGoingPaths unAddModule, completeFilename),
|
| 254 | 256 | ("undef", keepGoing undefineMacro, completeMacro),
|
| 255 | 257 | ("unset", keepGoing unsetOptions, completeSetOptions),
|
| 258 | + ("version", keepGoing showVersion', noCompletion),
|
|
| 256 | 259 | ("where", keepGoing whereCmd, noCompletion),
|
| 257 | 260 | ("instances", keepGoing' instancesCmd, completeExpression)
|
| 258 | 261 | ] ++ map mkCmdHidden [ -- hidden commands
|
| ... | ... | @@ -366,6 +369,7 @@ defFullHelpText = |
| 366 | 369 | " :type +d <expr> show the type of <expr>, defaulting type variables\n" ++
|
| 367 | 370 | " :unadd <module> ... remove module(s) from the current target set\n" ++
|
| 368 | 371 | " :undef <cmd> undefine user-defined command :<cmd>\n" ++
|
| 372 | + " :version display the current GHC version\n" ++
|
|
| 369 | 373 | " ::<cmd> run the builtin command\n" ++
|
| 370 | 374 | " :!<command> run the shell command <command>\n" ++
|
| 371 | 375 | " :shell <command> run shell via sh -c <command>\n" ++
|
| ... | ... | @@ -3626,6 +3630,9 @@ unsetOptions str |
| 3626 | 3630 | no_flags <- mapM no_flag minus_opts
|
| 3627 | 3631 | when (not (null no_flags)) $ newDynFlags False no_flags
|
| 3628 | 3632 | |
| 3633 | +showVersion' :: GhciMonad m => String -> m ()
|
|
| 3634 | +showVersion' _ = liftIO (putStrLn versionString)
|
|
| 3635 | + |
|
| 3629 | 3636 | isMinus :: String -> Bool
|
| 3630 | 3637 | isMinus ('-':_) = True
|
| 3631 | 3638 | isMinus _ = False
|
| ... | ... | @@ -23,9 +23,52 @@ fi |
| 23 | 23 | CABVERSTR=$("$CABAL" --numeric-version)
|
| 24 | 24 | CABVER=( ${CABVERSTR//./ } )
|
| 25 | 25 | |
| 26 | +THREADS="-j1"
|
|
| 27 | +GC_THREADS=""
|
|
| 28 | +SEMAPHORE=""
|
|
| 29 | + |
|
| 30 | +echo "$@"
|
|
| 31 | + |
|
| 32 | +# Try building hadrian in parallel. We check for -j<n>.
|
|
| 33 | +# If threads > 1 we pass --semaphore to allow ghc to build more than one module in parallel
|
|
| 34 | +# If threads > 4 we pass -qn as higher parallel gc thread counts can lead to slow downs
|
|
| 35 | +# We only do any of thise for cabal >= 3.14, because I don't trust older versions to handle --semaphore right
|
|
| 36 | +if [ "${CABVER[0]}" -gt 3 ] || [ "${CABVER[0]}" -eq 3 -a "${CABVER[1]}" -ge 14 ];
|
|
| 37 | +then
|
|
| 38 | + |
|
| 39 | + for arg in "$@"; do
|
|
| 40 | + case "$arg" in
|
|
| 41 | + -j)
|
|
| 42 | + GC_THREADS="-qn4"
|
|
| 43 | + SEMAPHORE="--semaphore"
|
|
| 44 | + THREADS="-j"
|
|
| 45 | + ;;
|
|
| 46 | + -j[0-9]*)
|
|
| 47 | + threads="${arg#-j}"
|
|
| 48 | + if [[ "$threads" =~ ^[0-9]+$ ]] && [ "$threads" -ne 0 ]; then
|
|
| 49 | + THREADS="-j${threads}"
|
|
| 50 | + if [ $threads -ge 4 ]; then
|
|
| 51 | + GC_THREADS="-qn4"
|
|
| 52 | + fi
|
|
| 53 | + if [ $threads -gt 1 ]; then
|
|
| 54 | + SEMAPHORE="--semaphore"
|
|
| 55 | + fi
|
|
| 56 | + fi
|
|
| 57 | + ;;
|
|
| 58 | + esac
|
|
| 59 | + |
|
| 60 | + done
|
|
| 61 | + |
|
| 62 | +fi
|
|
| 63 | + |
|
| 64 | +if [ "$(uname -s)" = "FreeBSD" ]; then
|
|
| 65 | + # Can't rely on posix semaphore support in free bsd.
|
|
| 66 | + SEMAPHORE=""
|
|
| 67 | +fi
|
|
| 68 | + |
|
| 26 | 69 | if [ "${CABVER[0]}" -gt 2 -o "${CABVER[0]}" -eq 2 -a "${CABVER[1]}" -ge 2 ];
|
| 27 | 70 | then
|
| 28 | - "$CABAL" --project-file="$PROJ" new-build "${CABFLAGS[@]}" -j exe:hadrian
|
|
| 71 | + "$CABAL" --project-file="$PROJ" new-build "${CABFLAGS[@]}" ${THREADS} ${SEMAPHORE} --ghc-options="+RTS ${GC_THREADS} -RTS" exe:hadrian
|
|
| 29 | 72 | # use new-exec instead of new-run to make sure that the build-tools (alex & happy) are in PATH
|
| 30 | 73 | "$CABAL" --project-file="$PROJ" new-exec "${CABFLAGS[@]}" hadrian -- \
|
| 31 | 74 | --directory "$PWD" \
|
| ... | ... | @@ -50,3 +50,4 @@ module Control.Arrow |
| 50 | 50 | ) where
|
| 51 | 51 | |
| 52 | 52 | import GHC.Internal.Control.Arrow
|
| 53 | +import GHC.Internal.Control.Monad.Fix (ArrowLoop(..)) |
| ... | ... | @@ -185,6 +185,7 @@ module System.IO |
| 185 | 185 | ) where
|
| 186 | 186 | |
| 187 | 187 | import GHC.Internal.System.IO
|
| 188 | +import GHC.Internal.Control.Monad.Fix (fixIO)
|
|
| 188 | 189 | |
| 189 | 190 | -- $locking
|
| 190 | 191 | -- Implementations should enforce as far as possible, at least locally to the
|
| ... | ... | @@ -45,13 +45,10 @@ module GHC.Internal.Control.Arrow ( |
| 45 | 45 | ArrowChoice(..),
|
| 46 | 46 | -- * Arrow application
|
| 47 | 47 | ArrowApply(..), ArrowMonad(..), leftApp,
|
| 48 | - -- * Feedback
|
|
| 49 | - ArrowLoop(..)
|
|
| 50 | 48 | ) where
|
| 51 | 49 | |
| 52 | -import GHC.Internal.Data.Tuple ( fst, snd, uncurry )
|
|
| 50 | +import GHC.Internal.Data.Tuple ( uncurry )
|
|
| 53 | 51 | import GHC.Internal.Data.Either
|
| 54 | -import GHC.Internal.Control.Monad.Fix
|
|
| 55 | 52 | import GHC.Internal.Control.Category
|
| 56 | 53 | import GHC.Internal.Base hiding ( (.), id )
|
| 57 | 54 | import GHC.Internal.Generics (Generic, Generic1)
|
| ... | ... | @@ -419,55 +416,3 @@ leftApp :: ArrowApply a => a b c -> a (Either b d) (Either c d) |
| 419 | 416 | leftApp f = arr ((\b -> (arr (\() -> b) >>> f >>> arr Left, ())) |||
|
| 420 | 417 | (\d -> (arr (\() -> d) >>> arr Right, ()))) >>> app
|
| 421 | 418 | |
| 422 | --- | The 'loop' operator expresses computations in which an output value
|
|
| 423 | --- is fed back as input, although the computation occurs only once.
|
|
| 424 | --- It underlies the @rec@ value recursion construct in arrow notation.
|
|
| 425 | --- 'loop' should satisfy the following laws:
|
|
| 426 | ---
|
|
| 427 | --- [/extension/]
|
|
| 428 | --- @'loop' ('arr' f) = 'arr' (\\ b -> 'fst' ('fix' (\\ (c,d) -> f (b,d))))@
|
|
| 429 | ---
|
|
| 430 | --- [/left tightening/]
|
|
| 431 | --- @'loop' ('first' h >>> f) = h >>> 'loop' f@
|
|
| 432 | ---
|
|
| 433 | --- [/right tightening/]
|
|
| 434 | --- @'loop' (f >>> 'first' h) = 'loop' f >>> h@
|
|
| 435 | ---
|
|
| 436 | --- [/sliding/]
|
|
| 437 | --- @'loop' (f >>> 'arr' ('id' *** k)) = 'loop' ('arr' ('id' *** k) >>> f)@
|
|
| 438 | ---
|
|
| 439 | --- [/vanishing/]
|
|
| 440 | --- @'loop' ('loop' f) = 'loop' ('arr' unassoc >>> f >>> 'arr' assoc)@
|
|
| 441 | ---
|
|
| 442 | --- [/superposing/]
|
|
| 443 | --- @'second' ('loop' f) = 'loop' ('arr' assoc >>> 'second' f >>> 'arr' unassoc)@
|
|
| 444 | ---
|
|
| 445 | --- where
|
|
| 446 | ---
|
|
| 447 | --- > assoc ((a,b),c) = (a,(b,c))
|
|
| 448 | --- > unassoc (a,(b,c)) = ((a,b),c)
|
|
| 449 | ---
|
|
| 450 | -class Arrow a => ArrowLoop a where
|
|
| 451 | - -- |
|
|
| 452 | - --
|
|
| 453 | - -- > ╭──────────────╮
|
|
| 454 | - -- > b │ ╭───╮ │ c
|
|
| 455 | - -- > >───┼─────┤ ├────┼───>
|
|
| 456 | - -- > │ ┌─┤ ├─┐ │
|
|
| 457 | - -- > │ d │ ╰───╯ │ │
|
|
| 458 | - -- > │ └───<───┘ │
|
|
| 459 | - -- > ╰──────────────╯
|
|
| 460 | - loop :: a (b,d) (c,d) -> a b c
|
|
| 461 | - |
|
| 462 | --- | @since base-2.01
|
|
| 463 | -instance ArrowLoop (->) where
|
|
| 464 | - loop f b = let (c,d) = f (b,d) in c
|
|
| 465 | - |
|
| 466 | --- | Beware that for many monads (those for which the '>>=' operation
|
|
| 467 | --- is strict) this instance will /not/ satisfy the right-tightening law
|
|
| 468 | --- required by the 'ArrowLoop' class.
|
|
| 469 | ---
|
|
| 470 | --- @since base-2.01
|
|
| 471 | -instance MonadFix m => ArrowLoop (Kleisli m) where
|
|
| 472 | - loop (Kleisli f) = Kleisli (liftM fst . mfix . f')
|
|
| 473 | - where f' x y = f (x, snd y) |
| ... | ... | @@ -24,7 +24,10 @@ |
| 24 | 24 | |
| 25 | 25 | module GHC.Internal.Control.Monad.Fix (
|
| 26 | 26 | MonadFix(mfix),
|
| 27 | - fix
|
|
| 27 | + fix,
|
|
| 28 | + fixIO,
|
|
| 29 | + -- * Feedback for Arrow
|
|
| 30 | + ArrowLoop(..)
|
|
| 28 | 31 | ) where
|
| 29 | 32 | |
| 30 | 33 | import GHC.Internal.Data.Either
|
| ... | ... | @@ -34,12 +37,19 @@ import GHC.Internal.Data.Monoid ( Monoid, Dual(..), Sum(..), Product(..) |
| 34 | 37 | , First(..), Last(..), Alt(..), Ap(..) )
|
| 35 | 38 | import GHC.Internal.Data.NonEmpty ( NonEmpty(..) )
|
| 36 | 39 | import GHC.Internal.Data.Ord ( Down(..) )
|
| 37 | -import GHC.Internal.Data.Tuple ( Solo(..), snd )
|
|
| 38 | -import GHC.Internal.Base ( Monad, errorWithoutStackTrace, (.) )
|
|
| 40 | +import GHC.Internal.Data.Tuple ( Solo(..), fst, snd )
|
|
| 41 | +import GHC.Internal.Base ( IO, Monad, errorWithoutStackTrace, (.), return, liftM )
|
|
| 39 | 42 | import GHC.Internal.Generics
|
| 40 | 43 | import GHC.Internal.List ( head, drop )
|
| 41 | 44 | import GHC.Internal.Control.Monad.ST.Imp
|
| 42 | -import GHC.Internal.System.IO
|
|
| 45 | +import qualified GHC.Internal.Control.Monad.ST.Lazy.Imp as Lazy
|
|
| 46 | +import GHC.Internal.Data.Functor.Identity (Identity(..))
|
|
| 47 | +import GHC.Internal.MVar
|
|
| 48 | +import GHC.Internal.IO.Unsafe
|
|
| 49 | +import GHC.Internal.IO.Exception
|
|
| 50 | +import GHC.Internal.TH.Monad
|
|
| 51 | +import GHC.Internal.Control.Exception
|
|
| 52 | +import GHC.Internal.Control.Arrow
|
|
| 43 | 53 | |
| 44 | 54 | -- | Monads having fixed points with a \'knot-tying\' semantics.
|
| 45 | 55 | -- Instances of 'MonadFix' should satisfy the following laws:
|
| ... | ... | @@ -102,6 +112,86 @@ instance MonadFix NonEmpty where |
| 102 | 112 | instance MonadFix IO where
|
| 103 | 113 | mfix = fixIO
|
| 104 | 114 | |
| 115 | +-- ---------------------------------------------------------------------------
|
|
| 116 | +-- fixIO
|
|
| 117 | + |
|
| 118 | +-- | The implementation of 'Control.Monad.Fix.mfix' for 'IO'.
|
|
| 119 | +--
|
|
| 120 | +-- This operation may fail with:
|
|
| 121 | +--
|
|
| 122 | +-- * 'FixIOException' if the function passed to 'fixIO' inspects its argument.
|
|
| 123 | +--
|
|
| 124 | +-- ==== __Examples__
|
|
| 125 | +--
|
|
| 126 | +-- the IO-action is only executed once. The recursion is only on the values.
|
|
| 127 | +--
|
|
| 128 | +-- >>> take 3 <$> fixIO (\x -> putStr ":D" >> (:x) <$> readLn @Int)
|
|
| 129 | +-- :D
|
|
| 130 | +-- 2
|
|
| 131 | +-- [2,2,2]
|
|
| 132 | +--
|
|
| 133 | +-- If we are strict in the value, just as with 'Data.Function.fix', we do not get termination:
|
|
| 134 | +--
|
|
| 135 | +-- >>> fixIO (\x -> putStr x >> pure ('x' : x))
|
|
| 136 | +-- * hangs forever *
|
|
| 137 | +--
|
|
| 138 | +-- We can tie the knot of a structure within 'IO' using 'fixIO':
|
|
| 139 | +--
|
|
| 140 | +-- @
|
|
| 141 | +-- data Node = MkNode Int (IORef Node)
|
|
| 142 | +--
|
|
| 143 | +-- foo :: IO ()
|
|
| 144 | +-- foo = do
|
|
| 145 | +-- p \<- fixIO (\p -> newIORef (MkNode 0 p))
|
|
| 146 | +-- q <- output p
|
|
| 147 | +-- r <- output q
|
|
| 148 | +-- _ <- output r
|
|
| 149 | +-- pure ()
|
|
| 150 | +--
|
|
| 151 | +-- output :: IORef Node -> IO (IORef Node)
|
|
| 152 | +-- output ref = do
|
|
| 153 | +-- MkNode x p <- readIORef ref
|
|
| 154 | +-- print x
|
|
| 155 | +-- pure p
|
|
| 156 | +-- @
|
|
| 157 | +--
|
|
| 158 | +-- >>> foo
|
|
| 159 | +-- 0
|
|
| 160 | +-- 0
|
|
| 161 | +-- 0
|
|
| 162 | +fixIO :: (a -> IO a) -> IO a
|
|
| 163 | +fixIO k = do
|
|
| 164 | + m <- newEmptyMVar
|
|
| 165 | + ans <- unsafeDupableInterleaveIO
|
|
| 166 | + (readMVar m `catch` \BlockedIndefinitelyOnMVar ->
|
|
| 167 | + throwIO FixIOException)
|
|
| 168 | + result <- k ans
|
|
| 169 | + putMVar m result
|
|
| 170 | + return result
|
|
| 171 | + |
|
| 172 | +-- Note [Blackholing in fixIO]
|
|
| 173 | +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
| 174 | +-- We do our own explicit black holing here, because GHC's lazy
|
|
| 175 | +-- blackholing isn't enough. In an infinite loop, GHC may run the IO
|
|
| 176 | +-- computation a few times before it notices the loop, which is wrong.
|
|
| 177 | +--
|
|
| 178 | +-- NOTE2: the explicit black-holing with an IORef ran into trouble
|
|
| 179 | +-- with multiple threads (see #5421), so now we use an MVar. We used
|
|
| 180 | +-- to use takeMVar with unsafeInterleaveIO. This, however, uses noDuplicate#,
|
|
| 181 | +-- which is not particularly cheap. Better to use readMVar, which can be
|
|
| 182 | +-- performed in multiple threads safely, and to use unsafeDupableInterleaveIO
|
|
| 183 | +-- to avoid the noDuplicate cost.
|
|
| 184 | +--
|
|
| 185 | +-- What we'd ideally want is probably an IVar, but we don't quite have those.
|
|
| 186 | +-- STM TVars look like an option at first, but I don't think they are:
|
|
| 187 | +-- we'd need to be able to write to the variable in an IO context, which can
|
|
| 188 | +-- only be done using 'atomically', and 'atomically' is not allowed within
|
|
| 189 | +-- unsafePerformIO. We can't know if someone will try to use the result
|
|
| 190 | +-- of fixIO with unsafePerformIO!
|
|
| 191 | +--
|
|
| 192 | +-- See also System.IO.Unsafe.unsafeFixIO.
|
|
| 193 | +--
|
|
| 194 | + |
|
| 105 | 195 | -- | @since base-2.01
|
| 106 | 196 | instance MonadFix ((->) r) where
|
| 107 | 197 | mfix f = \ r -> let a = f a r in a
|
| ... | ... | @@ -116,6 +206,10 @@ instance MonadFix (Either e) where |
| 116 | 206 | instance MonadFix (ST s) where
|
| 117 | 207 | mfix = fixST
|
| 118 | 208 | |
| 209 | +-- | @since base-2.01
|
|
| 210 | +instance MonadFix (Lazy.ST s) where
|
|
| 211 | + mfix = Lazy.fixST
|
|
| 212 | + |
|
| 119 | 213 | -- Instances of Data.Monoid wrappers
|
| 120 | 214 | |
| 121 | 215 | -- | @since base-4.8.0.0
|
| ... | ... | @@ -171,3 +265,77 @@ instance (MonadFix f, MonadFix g) => MonadFix (f :*: g) where |
| 171 | 265 | -- | @since base-4.12.0.0
|
| 172 | 266 | instance MonadFix Down where
|
| 173 | 267 | mfix f = Down (fix (getDown . f))
|
| 268 | + |
|
| 269 | + |
|
| 270 | +-- | @since base-4.8.0.0
|
|
| 271 | +instance MonadFix Identity where
|
|
| 272 | + mfix f = Identity (fix (runIdentity . f))
|
|
| 273 | + |
|
| 274 | +-- | If the function passed to 'mfix' inspects its argument,
|
|
| 275 | +-- the resulting action will throw a 'FixIOException'.
|
|
| 276 | +--
|
|
| 277 | +-- @since 2.17.0.0
|
|
| 278 | +instance MonadFix Q where
|
|
| 279 | + -- We use the same blackholing approach as in fixIO.
|
|
| 280 | + -- See Note [Blackholing in fixIO].
|
|
| 281 | + mfix k = do
|
|
| 282 | + m <- runIO newEmptyMVar
|
|
| 283 | + ans <- runIO (unsafeDupableInterleaveIO
|
|
| 284 | + (readMVar m `catch` \BlockedIndefinitelyOnMVar ->
|
|
| 285 | + throwIO FixIOException))
|
|
| 286 | + result <- k ans
|
|
| 287 | + runIO (putMVar m result)
|
|
| 288 | + return result
|
|
| 289 | + |
|
| 290 | +-- | The 'loop' operator expresses computations in which an output value
|
|
| 291 | +-- is fed back as input, although the computation occurs only once.
|
|
| 292 | +-- It underlies the @rec@ value recursion construct in arrow notation.
|
|
| 293 | +-- 'loop' should satisfy the following laws:
|
|
| 294 | +--
|
|
| 295 | +-- [/extension/]
|
|
| 296 | +-- @'loop' ('arr' f) = 'arr' (\\ b -> 'fst' ('fix' (\\ (c,d) -> f (b,d))))@
|
|
| 297 | +--
|
|
| 298 | +-- [/left tightening/]
|
|
| 299 | +-- @'loop' ('first' h >>> f) = h >>> 'loop' f@
|
|
| 300 | +--
|
|
| 301 | +-- [/right tightening/]
|
|
| 302 | +-- @'loop' (f >>> 'first' h) = 'loop' f >>> h@
|
|
| 303 | +--
|
|
| 304 | +-- [/sliding/]
|
|
| 305 | +-- @'loop' (f >>> 'arr' ('id' *** k)) = 'loop' ('arr' ('id' *** k) >>> f)@
|
|
| 306 | +--
|
|
| 307 | +-- [/vanishing/]
|
|
| 308 | +-- @'loop' ('loop' f) = 'loop' ('arr' unassoc >>> f >>> 'arr' assoc)@
|
|
| 309 | +--
|
|
| 310 | +-- [/superposing/]
|
|
| 311 | +-- @'second' ('loop' f) = 'loop' ('arr' assoc >>> 'second' f >>> 'arr' unassoc)@
|
|
| 312 | +--
|
|
| 313 | +-- where
|
|
| 314 | +--
|
|
| 315 | +-- > assoc ((a,b),c) = (a,(b,c))
|
|
| 316 | +-- > unassoc (a,(b,c)) = ((a,b),c)
|
|
| 317 | +--
|
|
| 318 | +class Arrow a => ArrowLoop a where
|
|
| 319 | + -- |
|
|
| 320 | + --
|
|
| 321 | + -- > ╭──────────────╮
|
|
| 322 | + -- > b │ ╭───╮ │ c
|
|
| 323 | + -- > >───┼─────┤ ├────┼───>
|
|
| 324 | + -- > │ ┌─┤ ├─┐ │
|
|
| 325 | + -- > │ d │ ╰───╯ │ │
|
|
| 326 | + -- > │ └───<───┘ │
|
|
| 327 | + -- > ╰──────────────╯
|
|
| 328 | + loop :: a (b,d) (c,d) -> a b c
|
|
| 329 | + |
|
| 330 | +-- | @since base-2.01
|
|
| 331 | +instance ArrowLoop (->) where
|
|
| 332 | + loop f b = let (c,d) = f (b,d) in c
|
|
| 333 | + |
|
| 334 | +-- | Beware that for many monads (those for which the '>>=' operation
|
|
| 335 | +-- is strict) this instance will /not/ satisfy the right-tightening law
|
|
| 336 | +-- required by the 'ArrowLoop' class.
|
|
| 337 | +--
|
|
| 338 | +-- @since base-2.01
|
|
| 339 | +instance MonadFix m => ArrowLoop (Kleisli m) where
|
|
| 340 | + loop (Kleisli f) = Kleisli (liftM fst . mfix . f')
|
|
| 341 | + where f' x y = f (x, snd y) |
| ... | ... | @@ -37,7 +37,6 @@ module GHC.Internal.Control.Monad.ST.Lazy.Imp ( |
| 37 | 37 | unsafeIOToST
|
| 38 | 38 | ) where
|
| 39 | 39 | |
| 40 | -import GHC.Internal.Control.Monad.Fix
|
|
| 41 | 40 | import GHC.Internal.Data.Tuple
|
| 42 | 41 | |
| 43 | 42 | import qualified GHC.Internal.Control.Monad.ST.Imp as ST
|
| ... | ... | @@ -210,10 +209,6 @@ fixST m = ST (\ s -> |
| 210 | 209 | -- itself is demanded directly in the `let` body. See also
|
| 211 | 210 | -- Note [Lazy ST: not producing lazy pairs].
|
| 212 | 211 | |
| 213 | --- | @since base-2.01
|
|
| 214 | -instance MonadFix (ST s) where
|
|
| 215 | - mfix = fixST
|
|
| 216 | - |
|
| 217 | 212 | -- | @since base-4.23.0.0
|
| 218 | 213 | instance Semigroup a => Semigroup (ST s a) where
|
| 219 | 214 | (<>) = liftA2 (<>)
|
| ... | ... | @@ -33,7 +33,6 @@ module GHC.Internal.Data.Functor.Identity ( |
| 33 | 33 | Identity(..),
|
| 34 | 34 | ) where
|
| 35 | 35 | |
| 36 | -import GHC.Internal.Control.Monad.Fix
|
|
| 37 | 36 | import GHC.Internal.Data.Bits (Bits, FiniteBits)
|
| 38 | 37 | import GHC.Internal.Data.Coerce
|
| 39 | 38 | import GHC.Internal.Data.Foldable
|
| ... | ... | @@ -143,7 +142,3 @@ instance Applicative Identity where |
| 143 | 142 | -- | @since base-4.8.0.0
|
| 144 | 143 | instance Monad Identity where
|
| 145 | 144 | m >>= k = k (runIdentity m) |
| 146 | - |
|
| 147 | --- | @since base-4.8.0.0
|
|
| 148 | -instance MonadFix Identity where
|
|
| 149 | - mfix f = Identity (fix (runIdentity . f)) |
| ... | ... | @@ -35,7 +35,7 @@ import GHC.Internal.Real (fromIntegral) |
| 35 | 35 | import qualified GHC.Internal.Event.Array as A
|
| 36 | 36 | import GHC.Internal.IO.Handle.Internals (debugIO)
|
| 37 | 37 | import GHC.Internal.Conc.Sync (ThreadId(..))
|
| 38 | -import GHC.Internal.RTS.Flags
|
|
| 38 | +import GHC.Internal.RTS.Flags.Test
|
|
| 39 | 39 | |
| 40 | 40 | ------------------------------------------------------------------------
|
| 41 | 41 | -- Thread spool manager
|
| ... | ... | @@ -60,7 +60,7 @@ startThreadPool job = do |
| 60 | 60 | let thrMinThreads = 2
|
| 61 | 61 | let thrCurThreads = 0
|
| 62 | 62 | let thrCallBack = job
|
| 63 | - thrMaxThreads <- (fromIntegral . numIoWorkerThreads) `fmap` getMiscFlags
|
|
| 63 | + thrMaxThreads <- getNumIoWorkerThreads
|
|
| 64 | 64 | thrActiveThreads <- newMVar 0
|
| 65 | 65 | thrMonitor <- newEmptyMVar
|
| 66 | 66 | thrThreadIds <- undefined -- A.new thrMaxThreads
|
| ... | ... | @@ -4,24 +4,23 @@ |
| 4 | 4 | -- that allows to quickly test if some flag is set.
|
| 5 | 5 | module GHC.Internal.RTS.Flags.Test
|
| 6 | 6 | ( getUserEventTracingEnabled
|
| 7 | + , getNumIoWorkerThreads
|
|
| 7 | 8 | )
|
| 8 | 9 | where
|
| 9 | 10 | |
| 10 | 11 | import GHC.Internal.Base
|
| 11 | - |
|
| 12 | -#if !defined(javascript_HOST_ARCH)
|
|
| 13 | - |
|
| 14 | 12 | import GHC.Internal.Ptr
|
| 15 | 13 | import GHC.Internal.Foreign.C.Types
|
| 16 | 14 | import GHC.Internal.Foreign.Marshal.Utils
|
| 17 | 15 | import GHC.Internal.Foreign.Storable
|
| 18 | 16 | import GHC.Internal.Data.Functor ((<$>))
|
| 17 | +import GHC.Internal.Word (Word32)
|
|
| 18 | +import GHC.Internal.Real (fromIntegral)
|
|
| 19 | 19 | |
| 20 | 20 | #include "Rts.h"
|
| 21 | 21 | #include "rts/Flags.h"
|
| 22 | 22 | |
| 23 | 23 | foreign import ccall "&RtsFlags" rtsFlagsPtr :: Ptr ()
|
| 24 | -#endif
|
|
| 25 | 24 | |
| 26 | 25 | -- | Specialized version of 'getTraceFlags' for just checking if user
|
| 27 | 26 | -- event tracing is enabled.
|
| ... | ... | @@ -34,3 +33,9 @@ getUserEventTracingEnabled = do |
| 34 | 33 | let ptr = (#ptr RTS_FLAGS, TraceFlags) rtsFlagsPtr
|
| 35 | 34 | toBool <$> (#{peek TRACE_FLAGS, user} ptr :: IO CBool)
|
| 36 | 35 | #endif
|
| 36 | + |
|
| 37 | +-- | Specialized version of 'getMiscFlags' for just checking the number of IO worker threads
|
|
| 38 | +getNumIoWorkerThreads :: IO Int
|
|
| 39 | +getNumIoWorkerThreads = do
|
|
| 40 | + let ptr = (#ptr RTS_FLAGS, MiscFlags) rtsFlagsPtr
|
|
| 41 | + fromIntegral <$> (#{peek MISC_FLAGS, numIoWorkerThreads} ptr :: IO Word32) |
| ... | ... | @@ -20,7 +20,6 @@ module GHC.Internal.System.IO ( |
| 20 | 20 | -- * The IO monad
|
| 21 | 21 | |
| 22 | 22 | IO,
|
| 23 | - fixIO,
|
|
| 24 | 23 | |
| 25 | 24 | -- * Files and handles
|
| 26 | 25 | |
| ... | ... | @@ -258,7 +257,6 @@ import GHC.Internal.IO.Encoding |
| 258 | 257 | import GHC.Internal.Text.Read
|
| 259 | 258 | import GHC.Internal.IO.StdHandles
|
| 260 | 259 | import GHC.Internal.Show
|
| 261 | -import GHC.Internal.MVar
|
|
| 262 | 260 | -----------------------------------------------------------------------------
|
| 263 | 261 | -- Standard IO
|
| 264 | 262 | |
| ... | ... | @@ -602,87 +600,6 @@ hReady h = hWaitForInput h 0 |
| 602 | 600 | hPrint :: Show a => Handle -> a -> IO ()
|
| 603 | 601 | hPrint hdl = hPutStrLn hdl . show
|
| 604 | 602 | |
| 605 | - |
|
| 606 | --- ---------------------------------------------------------------------------
|
|
| 607 | --- fixIO
|
|
| 608 | - |
|
| 609 | --- | The implementation of 'Control.Monad.Fix.mfix' for 'IO'.
|
|
| 610 | ---
|
|
| 611 | --- This operation may fail with:
|
|
| 612 | ---
|
|
| 613 | --- * 'FixIOException' if the function passed to 'fixIO' inspects its argument.
|
|
| 614 | ---
|
|
| 615 | --- ==== __Examples__
|
|
| 616 | ---
|
|
| 617 | --- the IO-action is only executed once. The recursion is only on the values.
|
|
| 618 | ---
|
|
| 619 | --- >>> take 3 <$> fixIO (\x -> putStr ":D" >> (:x) <$> readLn @Int)
|
|
| 620 | --- :D
|
|
| 621 | --- 2
|
|
| 622 | --- [2,2,2]
|
|
| 623 | ---
|
|
| 624 | --- If we are strict in the value, just as with 'Data.Function.fix', we do not get termination:
|
|
| 625 | ---
|
|
| 626 | --- >>> fixIO (\x -> putStr x >> pure ('x' : x))
|
|
| 627 | --- * hangs forever *
|
|
| 628 | ---
|
|
| 629 | --- We can tie the knot of a structure within 'IO' using 'fixIO':
|
|
| 630 | ---
|
|
| 631 | --- @
|
|
| 632 | --- data Node = MkNode Int (IORef Node)
|
|
| 633 | ---
|
|
| 634 | --- foo :: IO ()
|
|
| 635 | --- foo = do
|
|
| 636 | --- p \<- fixIO (\p -> newIORef (MkNode 0 p))
|
|
| 637 | --- q <- output p
|
|
| 638 | --- r <- output q
|
|
| 639 | --- _ <- output r
|
|
| 640 | --- pure ()
|
|
| 641 | ---
|
|
| 642 | --- output :: IORef Node -> IO (IORef Node)
|
|
| 643 | --- output ref = do
|
|
| 644 | --- MkNode x p <- readIORef ref
|
|
| 645 | --- print x
|
|
| 646 | --- pure p
|
|
| 647 | --- @
|
|
| 648 | ---
|
|
| 649 | --- >>> foo
|
|
| 650 | --- 0
|
|
| 651 | --- 0
|
|
| 652 | --- 0
|
|
| 653 | -fixIO :: (a -> IO a) -> IO a
|
|
| 654 | -fixIO k = do
|
|
| 655 | - m <- newEmptyMVar
|
|
| 656 | - ans <- unsafeDupableInterleaveIO
|
|
| 657 | - (readMVar m `catch` \BlockedIndefinitelyOnMVar ->
|
|
| 658 | - throwIO FixIOException)
|
|
| 659 | - result <- k ans
|
|
| 660 | - putMVar m result
|
|
| 661 | - return result
|
|
| 662 | - |
|
| 663 | --- Note [Blackholing in fixIO]
|
|
| 664 | --- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
| 665 | --- We do our own explicit black holing here, because GHC's lazy
|
|
| 666 | --- blackholing isn't enough. In an infinite loop, GHC may run the IO
|
|
| 667 | --- computation a few times before it notices the loop, which is wrong.
|
|
| 668 | ---
|
|
| 669 | --- NOTE2: the explicit black-holing with an IORef ran into trouble
|
|
| 670 | --- with multiple threads (see #5421), so now we use an MVar. We used
|
|
| 671 | --- to use takeMVar with unsafeInterleaveIO. This, however, uses noDuplicate#,
|
|
| 672 | --- which is not particularly cheap. Better to use readMVar, which can be
|
|
| 673 | --- performed in multiple threads safely, and to use unsafeDupableInterleaveIO
|
|
| 674 | --- to avoid the noDuplicate cost.
|
|
| 675 | ---
|
|
| 676 | --- What we'd ideally want is probably an IVar, but we don't quite have those.
|
|
| 677 | --- STM TVars look like an option at first, but I don't think they are:
|
|
| 678 | --- we'd need to be able to write to the variable in an IO context, which can
|
|
| 679 | --- only be done using 'atomically', and 'atomically' is not allowed within
|
|
| 680 | --- unsafePerformIO. We can't know if someone will try to use the result
|
|
| 681 | --- of fixIO with unsafePerformIO!
|
|
| 682 | ---
|
|
| 683 | --- See also System.IO.Unsafe.unsafeFixIO.
|
|
| 684 | ---
|
|
| 685 | - |
|
| 686 | 603 | -- | The function creates a temporary file in ReadWrite mode.
|
| 687 | 604 | -- The created file isn\'t deleted automatically, so you need to delete it manually.
|
| 688 | 605 | --
|
| ... | ... | @@ -23,7 +23,9 @@ module GHC.Internal.System.IO.OS |
| 23 | 23 | )
|
| 24 | 24 | where
|
| 25 | 25 | |
| 26 | -import GHC.Internal.Base
|
|
| 26 | +#if defined(mingw32_HOST_OS)
|
|
| 27 | +import GHC.Internal.Base (otherwise)
|
|
| 28 | +#endif
|
|
| 27 | 29 | import GHC.Internal.Control.Monad (return)
|
| 28 | 30 | import GHC.Internal.Control.Concurrent.MVar (MVar)
|
| 29 | 31 | import GHC.Internal.Control.Exception (mask)
|
| ... | ... | @@ -28,13 +28,8 @@ import Data.Data hiding (Fixity(..)) |
| 28 | 28 | import Data.IORef
|
| 29 | 29 | import System.IO.Unsafe ( unsafePerformIO )
|
| 30 | 30 | import Control.Monad.IO.Class (MonadIO (..))
|
| 31 | -import Control.Monad.Fix (MonadFix (..))
|
|
| 32 | -import Control.Exception (BlockedIndefinitelyOnMVar (..), catch, throwIO)
|
|
| 33 | -import Control.Exception.Base (FixIOException (..))
|
|
| 34 | -import Control.Concurrent.MVar (newEmptyMVar, readMVar, putMVar)
|
|
| 35 | 31 | import System.IO ( hPutStrLn, stderr )
|
| 36 | 32 | import qualified Data.Kind as Kind (Type)
|
| 37 | -import GHC.IO.Unsafe ( unsafeDupableInterleaveIO )
|
|
| 38 | 33 | import GHC.Types (TYPE, RuntimeRep(..))
|
| 39 | 34 | #else
|
| 40 | 35 | import GHC.Internal.Base hiding (NonEmpty(..),Type, Module, sequence)
|
| ... | ... | @@ -46,12 +41,8 @@ import GHC.Internal.Data.Foldable |
| 46 | 41 | import GHC.Internal.Data.Typeable
|
| 47 | 42 | import GHC.Internal.Control.Monad.IO.Class
|
| 48 | 43 | import GHC.Internal.Control.Monad.Fail
|
| 49 | -import GHC.Internal.Control.Monad.Fix
|
|
| 50 | -import GHC.Internal.Control.Exception
|
|
| 51 | 44 | import GHC.Internal.Num
|
| 52 | 45 | import GHC.Internal.IO.Unsafe
|
| 53 | -import GHC.Internal.MVar
|
|
| 54 | -import GHC.Internal.IO.Exception
|
|
| 55 | 46 | import qualified GHC.Internal.Types as Kind (Type)
|
| 56 | 47 | #endif
|
| 57 | 48 | import GHC.Internal.ForeignSrcLang
|
| ... | ... | @@ -258,22 +249,6 @@ instance Semigroup a => Semigroup (Q a) where |
| 258 | 249 | instance Monoid a => Monoid (Q a) where
|
| 259 | 250 | mempty = pure mempty
|
| 260 | 251 | |
| 261 | --- | If the function passed to 'mfix' inspects its argument,
|
|
| 262 | --- the resulting action will throw a 'FixIOException'.
|
|
| 263 | ---
|
|
| 264 | --- @since 2.17.0.0
|
|
| 265 | -instance MonadFix Q where
|
|
| 266 | - -- We use the same blackholing approach as in fixIO.
|
|
| 267 | - -- See Note [Blackholing in fixIO] in System.IO in base.
|
|
| 268 | - mfix k = do
|
|
| 269 | - m <- runIO newEmptyMVar
|
|
| 270 | - ans <- runIO (unsafeDupableInterleaveIO
|
|
| 271 | - (readMVar m `catch` \BlockedIndefinitelyOnMVar ->
|
|
| 272 | - throwIO FixIOException))
|
|
| 273 | - result <- k ans
|
|
| 274 | - runIO (putMVar m result)
|
|
| 275 | - return result
|
|
| 276 | - |
|
| 277 | 252 | |
| 278 | 253 | -----------------------------------------------------
|
| 279 | 254 | --
|
| ... | ... | @@ -41,10 +41,10 @@ data Tuple2 a b = (,) a b |
| 41 | 41 | -- Defined in ‘GHC.Internal.Tuple’
|
| 42 | 42 | instance Traversable (Tuple2 a)
|
| 43 | 43 | -- Defined in ‘GHC.Internal.Data.Traversable’
|
| 44 | -instance Foldable (Tuple2 a)
|
|
| 45 | - -- Defined in ‘GHC.Internal.Data.Foldable’
|
|
| 46 | 44 | instance Monoid a => Applicative (Tuple2 a)
|
| 47 | 45 | -- Defined in ‘GHC.Internal.Base’
|
| 46 | +instance Foldable (Tuple2 a)
|
|
| 47 | + -- Defined in ‘GHC.Internal.Data.Foldable’
|
|
| 48 | 48 | instance Functor (Tuple2 a) -- Defined in ‘GHC.Internal.Base’
|
| 49 | 49 | instance Monoid a => Monad (Tuple2 a)
|
| 50 | 50 | -- Defined in ‘GHC.Internal.Base’
|
| 1 | - |
|
| 2 | 1 | <interactive>:1:1: error: [GHC-39999]
|
| 3 | 2 | • Ambiguous type variable ‘a0’ arising from a use of ‘foo’
|
| 4 | 3 | prevents the constraint ‘(Num a0)’ from being solved.
|
| ... | ... | @@ -10,3 +9,4 @@ |
| 10 | 9 | ...plus one instance involving out-of-scope types
|
| 11 | 10 | (use -fprint-potential-instances to see them all)
|
| 12 | 11 | • In the expression: foo
|
| 12 | + |
| ... | ... | @@ -44,8 +44,8 @@ instance Traversable Maybe |
| 44 | 44 | -- Defined in ‘GHC.Internal.Data.Traversable’
|
| 45 | 45 | instance MonadFail Maybe
|
| 46 | 46 | -- Defined in ‘GHC.Internal.Control.Monad.Fail’
|
| 47 | -instance Foldable Maybe -- Defined in ‘GHC.Internal.Data.Foldable’
|
|
| 48 | 47 | instance Applicative Maybe -- Defined in ‘GHC.Internal.Base’
|
| 48 | +instance Foldable Maybe -- Defined in ‘GHC.Internal.Data.Foldable’
|
|
| 49 | 49 | instance Functor Maybe -- Defined in ‘GHC.Internal.Base’
|
| 50 | 50 | instance Monad Maybe -- Defined in ‘GHC.Internal.Base’
|
| 51 | 51 | instance Semigroup a => Monoid (Maybe a)
|
| ... | ... | @@ -11527,8 +11527,6 @@ instance GHC.Internal.Control.Arrow.ArrowApply (->) -- Defined in ‘GHC.Interna |
| 11527 | 11527 | instance forall (m :: * -> *). GHC.Internal.Base.Monad m => GHC.Internal.Control.Arrow.ArrowApply (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
|
| 11528 | 11528 | instance GHC.Internal.Control.Arrow.ArrowChoice (->) -- Defined in ‘GHC.Internal.Control.Arrow’
|
| 11529 | 11529 | instance forall (m :: * -> *). GHC.Internal.Base.Monad m => GHC.Internal.Control.Arrow.ArrowChoice (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
|
| 11530 | -instance GHC.Internal.Control.Arrow.ArrowLoop (->) -- Defined in ‘GHC.Internal.Control.Arrow’
|
|
| 11531 | -instance forall (m :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix m => GHC.Internal.Control.Arrow.ArrowLoop (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
|
|
| 11532 | 11530 | instance forall (m :: * -> *). GHC.Internal.Base.MonadPlus m => GHC.Internal.Control.Arrow.ArrowPlus (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
|
| 11533 | 11531 | instance forall (m :: * -> *). GHC.Internal.Base.MonadPlus m => GHC.Internal.Control.Arrow.ArrowZero (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
|
| 11534 | 11532 | instance forall (m :: * -> *). GHC.Internal.Base.Monad m => GHC.Internal.Control.Category.Category (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
|
| ... | ... | @@ -11544,6 +11542,8 @@ instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fail.MonadFail f => GH |
| 11544 | 11542 | instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.Text.ParserCombinators.ReadP.P -- Defined in ‘GHC.Internal.Text.ParserCombinators.ReadP’
|
| 11545 | 11543 | instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.Text.ParserCombinators.ReadP.ReadP -- Defined in ‘GHC.Internal.Text.ParserCombinators.ReadP’
|
| 11546 | 11544 | instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.Text.ParserCombinators.ReadPrec.ReadPrec -- Defined in ‘GHC.Internal.Text.ParserCombinators.ReadPrec’
|
| 11545 | +instance GHC.Internal.Control.Monad.Fix.ArrowLoop (->) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
|
| 11546 | +instance forall (m :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix m => GHC.Internal.Control.Monad.Fix.ArrowLoop (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
|
| 11547 | 11547 | instance forall (f :: * -> *) (g :: * -> *). (GHC.Internal.Control.Monad.Fix.MonadFix f, GHC.Internal.Control.Monad.Fix.MonadFix g) => GHC.Internal.Control.Monad.Fix.MonadFix (f GHC.Internal.Generics.:*: g) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11548 | 11548 | instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Data.Semigroup.Internal.Alt f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11549 | 11549 | instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Data.Monoid.Ap f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| ... | ... | @@ -11553,6 +11553,7 @@ instance forall e. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Data.Ei |
| 11553 | 11553 | instance forall r. GHC.Internal.Control.Monad.Fix.MonadFix ((->) r) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11554 | 11554 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Monoid.First -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11555 | 11555 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Types.IO -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11556 | +instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Functor.Identity.Identity -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
|
| 11556 | 11557 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Monoid.Last -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11557 | 11558 | instance GHC.Internal.Control.Monad.Fix.MonadFix [] -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11558 | 11559 | instance forall (f :: * -> *) i (c :: GHC.Internal.Generics.Meta). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Generics.M1 i c f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| ... | ... | @@ -11560,14 +11561,14 @@ instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Maybe.Maybe -- Def |
| 11560 | 11561 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Base.NonEmpty -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11561 | 11562 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Generics.Par1 -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11562 | 11563 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Semigroup.Internal.Product -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11564 | +instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.TH.Monad.Q -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
|
| 11563 | 11565 | instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Generics.Rec1 f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11566 | +instance forall s. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Control.Monad.ST.Lazy.Imp.ST s) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
|
| 11564 | 11567 | instance forall s. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.ST.ST s) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11565 | 11568 | instance GHC.Internal.Control.Monad.Fix.MonadFix Solo -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11566 | 11569 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Semigroup.Internal.Sum -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11567 | 11570 | instance forall a. GHC.Internal.Base.Monoid a => GHC.Internal.Control.Monad.Fix.MonadFix ((,) a) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11568 | -instance forall s. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Control.Monad.ST.Lazy.Imp.ST s) -- Defined in ‘GHC.Internal.Control.Monad.ST.Lazy.Imp’
|
|
| 11569 | 11571 | instance GHC.Internal.Control.Monad.Fix.MonadFix Data.Complex.Complex -- Defined in ‘Data.Complex’
|
| 11570 | -instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Functor.Identity.Identity -- Defined in ‘GHC.Internal.Data.Functor.Identity’
|
|
| 11571 | 11572 | instance [safe] forall (f :: * -> *) (g :: * -> *). (GHC.Internal.Control.Monad.Fix.MonadFix f, GHC.Internal.Control.Monad.Fix.MonadFix g) => GHC.Internal.Control.Monad.Fix.MonadFix (Data.Functor.Product.Product f g) -- Defined in ‘Data.Functor.Product’
|
| 11572 | 11573 | instance GHC.Internal.Control.Monad.Fix.MonadFix Data.Semigroup.First -- Defined in ‘Data.Semigroup’
|
| 11573 | 11574 | instance GHC.Internal.Control.Monad.Fix.MonadFix Data.Semigroup.Last -- Defined in ‘Data.Semigroup’
|
| ... | ... | @@ -11554,8 +11554,6 @@ instance GHC.Internal.Control.Arrow.ArrowApply (->) -- Defined in ‘GHC.Interna |
| 11554 | 11554 | instance forall (m :: * -> *). GHC.Internal.Base.Monad m => GHC.Internal.Control.Arrow.ArrowApply (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
|
| 11555 | 11555 | instance GHC.Internal.Control.Arrow.ArrowChoice (->) -- Defined in ‘GHC.Internal.Control.Arrow’
|
| 11556 | 11556 | instance forall (m :: * -> *). GHC.Internal.Base.Monad m => GHC.Internal.Control.Arrow.ArrowChoice (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
|
| 11557 | -instance GHC.Internal.Control.Arrow.ArrowLoop (->) -- Defined in ‘GHC.Internal.Control.Arrow’
|
|
| 11558 | -instance forall (m :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix m => GHC.Internal.Control.Arrow.ArrowLoop (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
|
|
| 11559 | 11557 | instance forall (m :: * -> *). GHC.Internal.Base.MonadPlus m => GHC.Internal.Control.Arrow.ArrowPlus (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
|
| 11560 | 11558 | instance forall (m :: * -> *). GHC.Internal.Base.MonadPlus m => GHC.Internal.Control.Arrow.ArrowZero (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
|
| 11561 | 11559 | instance forall (m :: * -> *). GHC.Internal.Base.Monad m => GHC.Internal.Control.Category.Category (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
|
| ... | ... | @@ -11571,6 +11569,8 @@ instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fail.MonadFail f => GH |
| 11571 | 11569 | instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.Text.ParserCombinators.ReadP.P -- Defined in ‘GHC.Internal.Text.ParserCombinators.ReadP’
|
| 11572 | 11570 | instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.Text.ParserCombinators.ReadP.ReadP -- Defined in ‘GHC.Internal.Text.ParserCombinators.ReadP’
|
| 11573 | 11571 | instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.Text.ParserCombinators.ReadPrec.ReadPrec -- Defined in ‘GHC.Internal.Text.ParserCombinators.ReadPrec’
|
| 11572 | +instance GHC.Internal.Control.Monad.Fix.ArrowLoop (->) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
|
| 11573 | +instance forall (m :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix m => GHC.Internal.Control.Monad.Fix.ArrowLoop (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
|
| 11574 | 11574 | instance forall (f :: * -> *) (g :: * -> *). (GHC.Internal.Control.Monad.Fix.MonadFix f, GHC.Internal.Control.Monad.Fix.MonadFix g) => GHC.Internal.Control.Monad.Fix.MonadFix (f GHC.Internal.Generics.:*: g) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11575 | 11575 | instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Data.Semigroup.Internal.Alt f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11576 | 11576 | instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Data.Monoid.Ap f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| ... | ... | @@ -11580,6 +11580,7 @@ instance forall e. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Data.Ei |
| 11580 | 11580 | instance forall r. GHC.Internal.Control.Monad.Fix.MonadFix ((->) r) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11581 | 11581 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Monoid.First -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11582 | 11582 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Types.IO -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11583 | +instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Functor.Identity.Identity -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
|
| 11583 | 11584 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Monoid.Last -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11584 | 11585 | instance GHC.Internal.Control.Monad.Fix.MonadFix [] -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11585 | 11586 | instance forall (f :: * -> *) i (c :: GHC.Internal.Generics.Meta). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Generics.M1 i c f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| ... | ... | @@ -11587,14 +11588,14 @@ instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Maybe.Maybe -- Def |
| 11587 | 11588 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Base.NonEmpty -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11588 | 11589 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Generics.Par1 -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11589 | 11590 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Semigroup.Internal.Product -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11591 | +instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.TH.Monad.Q -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
|
| 11590 | 11592 | instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Generics.Rec1 f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11593 | +instance forall s. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Control.Monad.ST.Lazy.Imp.ST s) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
|
| 11591 | 11594 | instance forall s. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.ST.ST s) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11592 | 11595 | instance GHC.Internal.Control.Monad.Fix.MonadFix Solo -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11593 | 11596 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Semigroup.Internal.Sum -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11594 | 11597 | instance forall a. GHC.Internal.Base.Monoid a => GHC.Internal.Control.Monad.Fix.MonadFix ((,) a) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11595 | -instance forall s. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Control.Monad.ST.Lazy.Imp.ST s) -- Defined in ‘GHC.Internal.Control.Monad.ST.Lazy.Imp’
|
|
| 11596 | 11598 | instance GHC.Internal.Control.Monad.Fix.MonadFix Data.Complex.Complex -- Defined in ‘Data.Complex’
|
| 11597 | -instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Functor.Identity.Identity -- Defined in ‘GHC.Internal.Data.Functor.Identity’
|
|
| 11598 | 11599 | instance [safe] forall (f :: * -> *) (g :: * -> *). (GHC.Internal.Control.Monad.Fix.MonadFix f, GHC.Internal.Control.Monad.Fix.MonadFix g) => GHC.Internal.Control.Monad.Fix.MonadFix (Data.Functor.Product.Product f g) -- Defined in ‘Data.Functor.Product’
|
| 11599 | 11600 | instance GHC.Internal.Control.Monad.Fix.MonadFix Data.Semigroup.First -- Defined in ‘Data.Semigroup’
|
| 11600 | 11601 | instance GHC.Internal.Control.Monad.Fix.MonadFix Data.Semigroup.Last -- Defined in ‘Data.Semigroup’
|
| ... | ... | @@ -11785,8 +11785,6 @@ instance GHC.Internal.Control.Arrow.ArrowApply (->) -- Defined in ‘GHC.Interna |
| 11785 | 11785 | instance forall (m :: * -> *). GHC.Internal.Base.Monad m => GHC.Internal.Control.Arrow.ArrowApply (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
|
| 11786 | 11786 | instance GHC.Internal.Control.Arrow.ArrowChoice (->) -- Defined in ‘GHC.Internal.Control.Arrow’
|
| 11787 | 11787 | instance forall (m :: * -> *). GHC.Internal.Base.Monad m => GHC.Internal.Control.Arrow.ArrowChoice (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
|
| 11788 | -instance GHC.Internal.Control.Arrow.ArrowLoop (->) -- Defined in ‘GHC.Internal.Control.Arrow’
|
|
| 11789 | -instance forall (m :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix m => GHC.Internal.Control.Arrow.ArrowLoop (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
|
|
| 11790 | 11788 | instance forall (m :: * -> *). GHC.Internal.Base.MonadPlus m => GHC.Internal.Control.Arrow.ArrowPlus (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
|
| 11791 | 11789 | instance forall (m :: * -> *). GHC.Internal.Base.MonadPlus m => GHC.Internal.Control.Arrow.ArrowZero (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
|
| 11792 | 11790 | instance forall (m :: * -> *). GHC.Internal.Base.Monad m => GHC.Internal.Control.Category.Category (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
|
| ... | ... | @@ -11802,6 +11800,8 @@ instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fail.MonadFail f => GH |
| 11802 | 11800 | instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.Text.ParserCombinators.ReadP.P -- Defined in ‘GHC.Internal.Text.ParserCombinators.ReadP’
|
| 11803 | 11801 | instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.Text.ParserCombinators.ReadP.ReadP -- Defined in ‘GHC.Internal.Text.ParserCombinators.ReadP’
|
| 11804 | 11802 | instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.Text.ParserCombinators.ReadPrec.ReadPrec -- Defined in ‘GHC.Internal.Text.ParserCombinators.ReadPrec’
|
| 11803 | +instance GHC.Internal.Control.Monad.Fix.ArrowLoop (->) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
|
| 11804 | +instance forall (m :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix m => GHC.Internal.Control.Monad.Fix.ArrowLoop (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
|
| 11805 | 11805 | instance forall (f :: * -> *) (g :: * -> *). (GHC.Internal.Control.Monad.Fix.MonadFix f, GHC.Internal.Control.Monad.Fix.MonadFix g) => GHC.Internal.Control.Monad.Fix.MonadFix (f GHC.Internal.Generics.:*: g) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11806 | 11806 | instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Data.Semigroup.Internal.Alt f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11807 | 11807 | instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Data.Monoid.Ap f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| ... | ... | @@ -11811,6 +11811,7 @@ instance forall e. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Data.Ei |
| 11811 | 11811 | instance forall r. GHC.Internal.Control.Monad.Fix.MonadFix ((->) r) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11812 | 11812 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Monoid.First -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11813 | 11813 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Types.IO -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11814 | +instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Functor.Identity.Identity -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
|
| 11814 | 11815 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Monoid.Last -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11815 | 11816 | instance GHC.Internal.Control.Monad.Fix.MonadFix [] -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11816 | 11817 | instance forall (f :: * -> *) i (c :: GHC.Internal.Generics.Meta). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Generics.M1 i c f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| ... | ... | @@ -11818,14 +11819,14 @@ instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Maybe.Maybe -- Def |
| 11818 | 11819 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Base.NonEmpty -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11819 | 11820 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Generics.Par1 -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11820 | 11821 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Semigroup.Internal.Product -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11822 | +instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.TH.Monad.Q -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
|
| 11821 | 11823 | instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Generics.Rec1 f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11824 | +instance forall s. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Control.Monad.ST.Lazy.Imp.ST s) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
|
| 11822 | 11825 | instance forall s. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.ST.ST s) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11823 | 11826 | instance GHC.Internal.Control.Monad.Fix.MonadFix Solo -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11824 | 11827 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Semigroup.Internal.Sum -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11825 | 11828 | instance forall a. GHC.Internal.Base.Monoid a => GHC.Internal.Control.Monad.Fix.MonadFix ((,) a) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11826 | -instance forall s. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Control.Monad.ST.Lazy.Imp.ST s) -- Defined in ‘GHC.Internal.Control.Monad.ST.Lazy.Imp’
|
|
| 11827 | 11829 | instance GHC.Internal.Control.Monad.Fix.MonadFix Data.Complex.Complex -- Defined in ‘Data.Complex’
|
| 11828 | -instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Functor.Identity.Identity -- Defined in ‘GHC.Internal.Data.Functor.Identity’
|
|
| 11829 | 11830 | instance [safe] forall (f :: * -> *) (g :: * -> *). (GHC.Internal.Control.Monad.Fix.MonadFix f, GHC.Internal.Control.Monad.Fix.MonadFix g) => GHC.Internal.Control.Monad.Fix.MonadFix (Data.Functor.Product.Product f g) -- Defined in ‘Data.Functor.Product’
|
| 11830 | 11831 | instance GHC.Internal.Control.Monad.Fix.MonadFix Data.Semigroup.First -- Defined in ‘Data.Semigroup’
|
| 11831 | 11832 | instance GHC.Internal.Control.Monad.Fix.MonadFix Data.Semigroup.Last -- Defined in ‘Data.Semigroup’
|
| ... | ... | @@ -11527,8 +11527,6 @@ instance GHC.Internal.Control.Arrow.ArrowApply (->) -- Defined in ‘GHC.Interna |
| 11527 | 11527 | instance forall (m :: * -> *). GHC.Internal.Base.Monad m => GHC.Internal.Control.Arrow.ArrowApply (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
|
| 11528 | 11528 | instance GHC.Internal.Control.Arrow.ArrowChoice (->) -- Defined in ‘GHC.Internal.Control.Arrow’
|
| 11529 | 11529 | instance forall (m :: * -> *). GHC.Internal.Base.Monad m => GHC.Internal.Control.Arrow.ArrowChoice (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
|
| 11530 | -instance GHC.Internal.Control.Arrow.ArrowLoop (->) -- Defined in ‘GHC.Internal.Control.Arrow’
|
|
| 11531 | -instance forall (m :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix m => GHC.Internal.Control.Arrow.ArrowLoop (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
|
|
| 11532 | 11530 | instance forall (m :: * -> *). GHC.Internal.Base.MonadPlus m => GHC.Internal.Control.Arrow.ArrowPlus (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
|
| 11533 | 11531 | instance forall (m :: * -> *). GHC.Internal.Base.MonadPlus m => GHC.Internal.Control.Arrow.ArrowZero (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
|
| 11534 | 11532 | instance forall (m :: * -> *). GHC.Internal.Base.Monad m => GHC.Internal.Control.Category.Category (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
|
| ... | ... | @@ -11544,6 +11542,8 @@ instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fail.MonadFail f => GH |
| 11544 | 11542 | instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.Text.ParserCombinators.ReadP.P -- Defined in ‘GHC.Internal.Text.ParserCombinators.ReadP’
|
| 11545 | 11543 | instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.Text.ParserCombinators.ReadP.ReadP -- Defined in ‘GHC.Internal.Text.ParserCombinators.ReadP’
|
| 11546 | 11544 | instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.Text.ParserCombinators.ReadPrec.ReadPrec -- Defined in ‘GHC.Internal.Text.ParserCombinators.ReadPrec’
|
| 11545 | +instance GHC.Internal.Control.Monad.Fix.ArrowLoop (->) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
|
| 11546 | +instance forall (m :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix m => GHC.Internal.Control.Monad.Fix.ArrowLoop (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
|
| 11547 | 11547 | instance forall (f :: * -> *) (g :: * -> *). (GHC.Internal.Control.Monad.Fix.MonadFix f, GHC.Internal.Control.Monad.Fix.MonadFix g) => GHC.Internal.Control.Monad.Fix.MonadFix (f GHC.Internal.Generics.:*: g) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11548 | 11548 | instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Data.Semigroup.Internal.Alt f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11549 | 11549 | instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Data.Monoid.Ap f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| ... | ... | @@ -11553,6 +11553,7 @@ instance forall e. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Data.Ei |
| 11553 | 11553 | instance forall r. GHC.Internal.Control.Monad.Fix.MonadFix ((->) r) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11554 | 11554 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Monoid.First -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11555 | 11555 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Types.IO -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11556 | +instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Functor.Identity.Identity -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
|
| 11556 | 11557 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Monoid.Last -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11557 | 11558 | instance GHC.Internal.Control.Monad.Fix.MonadFix [] -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11558 | 11559 | instance forall (f :: * -> *) i (c :: GHC.Internal.Generics.Meta). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Generics.M1 i c f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| ... | ... | @@ -11560,14 +11561,14 @@ instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Maybe.Maybe -- Def |
| 11560 | 11561 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Base.NonEmpty -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11561 | 11562 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Generics.Par1 -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11562 | 11563 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Semigroup.Internal.Product -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11564 | +instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.TH.Monad.Q -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
|
| 11563 | 11565 | instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Generics.Rec1 f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11566 | +instance forall s. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Control.Monad.ST.Lazy.Imp.ST s) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
|
| 11564 | 11567 | instance forall s. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.ST.ST s) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11565 | 11568 | instance GHC.Internal.Control.Monad.Fix.MonadFix Solo -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11566 | 11569 | instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Semigroup.Internal.Sum -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11567 | 11570 | instance forall a. GHC.Internal.Base.Monoid a => GHC.Internal.Control.Monad.Fix.MonadFix ((,) a) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
|
| 11568 | -instance forall s. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Control.Monad.ST.Lazy.Imp.ST s) -- Defined in ‘GHC.Internal.Control.Monad.ST.Lazy.Imp’
|
|
| 11569 | 11571 | instance GHC.Internal.Control.Monad.Fix.MonadFix Data.Complex.Complex -- Defined in ‘Data.Complex’
|
| 11570 | -instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Functor.Identity.Identity -- Defined in ‘GHC.Internal.Data.Functor.Identity’
|
|
| 11571 | 11572 | instance [safe] forall (f :: * -> *) (g :: * -> *). (GHC.Internal.Control.Monad.Fix.MonadFix f, GHC.Internal.Control.Monad.Fix.MonadFix g) => GHC.Internal.Control.Monad.Fix.MonadFix (Data.Functor.Product.Product f g) -- Defined in ‘Data.Functor.Product’
|
| 11572 | 11573 | instance GHC.Internal.Control.Monad.Fix.MonadFix Data.Semigroup.First -- Defined in ‘Data.Semigroup’
|
| 11573 | 11574 | instance GHC.Internal.Control.Monad.Fix.MonadFix Data.Semigroup.Last -- Defined in ‘Data.Semigroup’
|
| ... | ... | @@ -2052,7 +2052,6 @@ instance GHC.Internal.Classes.Ord GHC.Internal.TH.Syntax.Type -- Defined in ‘G |
| 2052 | 2052 | instance GHC.Internal.Classes.Ord GHC.Internal.TH.Syntax.TypeFamilyHead -- Defined in ‘GHC.Internal.TH.Syntax’
|
| 2053 | 2053 | instance GHC.Internal.Classes.Ord GHC.Internal.LanguageExtensions.Extension -- Defined in ‘GHC.Internal.LanguageExtensions’
|
| 2054 | 2054 | instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.TH.Monad.Q -- Defined in ‘GHC.Internal.TH.Monad’
|
| 2055 | -instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.TH.Monad.Q -- Defined in ‘GHC.Internal.TH.Monad’
|
|
| 2056 | 2055 | instance GHC.Internal.Control.Monad.IO.Class.MonadIO GHC.Internal.TH.Monad.Q -- Defined in ‘GHC.Internal.TH.Monad’
|
| 2057 | 2056 | instance GHC.Internal.Data.Foldable.Foldable GHC.Internal.TH.Syntax.TyVarBndr -- Defined in ‘GHC.Internal.TH.Syntax’
|
| 2058 | 2057 | instance GHC.Internal.Data.Traversable.Traversable GHC.Internal.TH.Syntax.TyVarBndr -- Defined in ‘GHC.Internal.TH.Syntax’
|
| ... | ... | @@ -5,5 +5,5 @@ cyclic evaluation in fixIO |
| 5 | 5 | While handling thread blocked indefinitely in an MVar operation
|
| 6 | 6 | |
| 7 | 7 | HasCallStack backtrace:
|
| 8 | - throwIO, called at libraries/ghc-internal/src/GHC/Internal/System/IO.hs:641:37 in ghc-internal:GHC.Internal.System.IO
|
|
| 8 | + throwIO, called at libraries/ghc-internal/src/GHC/Internal/Control/Monad/Fix.hs:167:37 in ghc-internal:GHC.Internal.Control.Monad.Fix
|
|
| 9 | 9 |