mirror of
https://github.com/unisonweb/unison.git
synced 2024-09-17 13:27:30 +03:00
Merge remote-tracking branch 'origin/trunk' into topic/builtins-misc
This commit is contained in:
commit
9e0e93135f
@ -5,6 +5,7 @@
|
||||
* [`UNISON_DEBUG`](#unison_debug)
|
||||
* [`UNISON_PAGER`](#unison_pager)
|
||||
* [`UNISON_LSP_PORT`](#unison_lsp_port)
|
||||
* [`UNISON_LSP_ENABLED`](#unison_lsp_enabled)
|
||||
* [`UNISON_SHARE_HOST`](#unison_share_host)
|
||||
* [`UNISON_SHARE_ACCESS_TOKEN`](#unison_share_access_token)
|
||||
* [Local Codebase Server](#local-codebase-server)
|
||||
@ -50,6 +51,31 @@ E.g.
|
||||
$ UNISON_LSP_PORT=8080 ucm
|
||||
```
|
||||
|
||||
### `UNISON_LSP_ENABLED`
|
||||
|
||||
Allows explicitly enabling or disabling the LSP server.
|
||||
Acceptable values are 'true' or 'false'
|
||||
|
||||
Note for Windows users: Due to an outstanding issue with GHC's IO manager on Windows, the LSP is **disabled by default** on Windows machines.
|
||||
Enabling the LSP on windows can cause UCM to hang on exit and may require the process to be killed by the operating system or via Ctrl-C.
|
||||
Note that this doesn't pose any risk of codebase corruption or cause any known issues, it's simply an annoyance.
|
||||
|
||||
If you accept this annoyance, you can enable the LSP server on Windows by exporting the `UNISON_LSP_ENABLED=true` environment variable.
|
||||
|
||||
You can set this persistently in powershell using:
|
||||
|
||||
```powershell
|
||||
[System.Environment]::SetEnvironmentVariable('UNISON_LSP_ENABLED','true')
|
||||
```
|
||||
|
||||
See [this issue](https://github.com/unisonweb/unison/issues/3487) for more details.
|
||||
|
||||
E.g.
|
||||
|
||||
```sh
|
||||
$ UNISON_LSP_ENABLED=true ucm
|
||||
```
|
||||
|
||||
### `UNISON_SHARE_HOST`
|
||||
|
||||
Allows selecting the location for the default Share server.
|
||||
|
@ -20,6 +20,19 @@ Currently the only supported configuration is to connect to the LSP via a specif
|
||||
|
||||
By default the LSP is hosted at `127.0.0.1:5757`, but you can change the port using `UNISON_LSP_PORT=1234`.
|
||||
|
||||
Note for Windows users: Due to an outstanding issue with GHC's IO manager on Windows, the LSP is **disabled by default** on Windows machines.
|
||||
Enabling the LSP on windows can cause UCM to hang on exit and may require the process to be killed by the operating system or via Ctrl-C.
|
||||
Note that this doesn't pose any risk of codebase corruption or cause any known issues, it's simply an annoyance.
|
||||
|
||||
If you accept this annoyance, you can enable the LSP server on Windows by exporting the `UNISON_LSP_ENABLED=true` environment variable.
|
||||
|
||||
You can set this persistently in powershell using:
|
||||
|
||||
```powershell
|
||||
[System.Environment]::SetEnvironmentVariable('UNISON_LSP_ENABLED','true')
|
||||
```
|
||||
|
||||
See [this issue](https://github.com/unisonweb/unison/issues/3487) for more details.
|
||||
|
||||
### NeoVim
|
||||
|
||||
|
@ -70,6 +70,7 @@ dependencies:
|
||||
- monad-validate
|
||||
- mtl
|
||||
- mutable-containers
|
||||
- murmur-hash
|
||||
- mwc-random
|
||||
- natural-transformation
|
||||
- network
|
||||
|
@ -455,6 +455,7 @@ builtinsSrc =
|
||||
B "Universal.<" $ forall1 "a" (\a -> a --> a --> boolean),
|
||||
B "Universal.>=" $ forall1 "a" (\a -> a --> a --> boolean),
|
||||
B "Universal.<=" $ forall1 "a" (\a -> a --> a --> boolean),
|
||||
B "Universal.murmurHash" $ forall1 "a" (\a -> a --> nat),
|
||||
B "bug" $ forall1 "a" (\a -> forall1 "b" (\b -> a --> b)),
|
||||
B "todo" $ forall1 "a" (\a -> forall1 "b" (\b -> a --> b)),
|
||||
B "Any.Any" $ forall1 "a" (\a -> a --> anyt),
|
||||
|
@ -17,7 +17,7 @@ import qualified Data.Text as Text
|
||||
import Data.Void (Void)
|
||||
import qualified Text.Megaparsec as P
|
||||
import qualified Unison.ABT as ABT
|
||||
import Unison.Builtin.Decls (pattern TupleType', unitRef)
|
||||
import Unison.Builtin.Decls (unitRef, pattern TupleType')
|
||||
import qualified Unison.Codebase.Path as Path
|
||||
import Unison.ConstructorReference (ConstructorReference, GConstructorReference (..))
|
||||
import Unison.HashQualified (HashQualified)
|
||||
@ -400,17 +400,20 @@ renderTypeError e env src curPath = case e of
|
||||
],
|
||||
debugSummary note
|
||||
]
|
||||
where
|
||||
unitHintMsg =
|
||||
"\nHint: Actions within a block must have type " <>
|
||||
style Type2 (renderType' env expectedLeaf) <> ".\n" <>
|
||||
" Use " <> style Type1 "_ = <expr>" <> " to ignore a result."
|
||||
unitHint = if giveUnitHint then unitHintMsg else ""
|
||||
giveUnitHint = case expectedType of
|
||||
Type.Ref' u | u == unitRef -> case mismatchSite of
|
||||
Term.Let1Named' v _ _ -> Var.isAction v
|
||||
_ -> False
|
||||
where
|
||||
unitHintMsg =
|
||||
"\nHint: Actions within a block must have type "
|
||||
<> style Type2 (renderType' env expectedLeaf)
|
||||
<> ".\n"
|
||||
<> " Use "
|
||||
<> style Type1 "_ = <expr>"
|
||||
<> " to ignore a result."
|
||||
unitHint = if giveUnitHint then unitHintMsg else ""
|
||||
giveUnitHint = case expectedType of
|
||||
Type.Ref' u | u == unitRef -> case mismatchSite of
|
||||
Term.Let1Named' v _ _ -> Var.isAction v
|
||||
_ -> False
|
||||
_ -> False
|
||||
AbilityCheckFailure {..}
|
||||
| [tv@(Type.Var' ev)] <- ambient,
|
||||
ev `Set.member` foldMap Type.freeVars requested ->
|
||||
@ -1637,7 +1640,7 @@ renderParseErrors s = \case
|
||||
<> style ErrorSite "match"
|
||||
<> "/"
|
||||
<> style ErrorSite "with"
|
||||
<> " but I didn't find any."
|
||||
<> " or cases but I didn't find any."
|
||||
),
|
||||
"",
|
||||
tokenAsErrorSite s tok
|
||||
|
@ -36,6 +36,7 @@ import Control.Monad.Catch (MonadCatch)
|
||||
import qualified Control.Monad.Primitive as PA
|
||||
import Control.Monad.Reader (ReaderT (..), ask, runReaderT)
|
||||
import Control.Monad.State.Strict (State, execState, modify)
|
||||
import Data.Digest.Murmur64 (hash64, asWord64)
|
||||
import qualified Crypto.Hash as Hash
|
||||
import qualified Crypto.MAC.HMAC as HMAC
|
||||
import Data.Bits (shiftL, shiftR, (.|.))
|
||||
@ -1108,6 +1109,17 @@ crypto'hash instr =
|
||||
where
|
||||
(alg, x, vl) = fresh
|
||||
|
||||
murmur'hash :: ForeignOp
|
||||
murmur'hash instr =
|
||||
([BX],)
|
||||
. TAbss [x]
|
||||
. TLetD vl BX (TPrm VALU [x])
|
||||
. TLetD result UN (TFOp instr [vl])
|
||||
$ TCon Ty.natRef 0 [result]
|
||||
where
|
||||
(x, vl, result) = fresh
|
||||
|
||||
|
||||
crypto'hmac :: ForeignOp
|
||||
crypto'hmac instr =
|
||||
([BX, BX, BX],)
|
||||
@ -2627,6 +2639,9 @@ declareForeigns = do
|
||||
Left se -> Left (Util.Text.pack (show se))
|
||||
Right a -> Right a
|
||||
|
||||
declareForeign Untracked "Universal.murmurHash" murmur'hash . mkForeign $
|
||||
pure . asWord64 . hash64 . serializeValueLazy
|
||||
|
||||
declareForeign Untracked "Bytes.zlib.compress" boxDirect . mkForeign $ pure . Bytes.zlibCompress
|
||||
declareForeign Untracked "Bytes.gzip.compress" boxDirect . mkForeign $ pure . Bytes.gzipCompress
|
||||
declareForeign Untracked "Bytes.zlib.decompress" boxToEBoxBox . mkForeign $ \bs ->
|
||||
|
@ -143,7 +143,7 @@ match = do
|
||||
matchCases1 :: Var v => L.Token () -> P v (NonEmpty (Int, Term.MatchCase Ann (Term v Ann)))
|
||||
matchCases1 start = do
|
||||
cases <-
|
||||
sepBy1 semi matchCase
|
||||
(sepBy semi matchCase)
|
||||
<&> \cases -> [(n, c) | (n, cs) <- cases, c <- cs]
|
||||
case cases of
|
||||
[] -> P.customFailure (EmptyMatch start)
|
||||
@ -161,27 +161,33 @@ matchCases1 start = do
|
||||
-- (42, x) -> ...
|
||||
matchCase :: Var v => P v (Int, [Term.MatchCase Ann (Term v Ann)])
|
||||
matchCase = do
|
||||
pats <- sepBy1 (reserved ",") parsePattern
|
||||
pats <- sepBy1 (label "\",\"" $ reserved ",") parsePattern
|
||||
let boundVars' = [v | (_, vs) <- pats, (_ann, v) <- vs]
|
||||
pat = case fst <$> pats of
|
||||
[p] -> p
|
||||
pats -> foldr pair (unit (ann . last $ pats)) pats
|
||||
unit ann = Pattern.Constructor ann (ConstructorReference DD.unitRef 0) []
|
||||
pair p1 p2 = Pattern.Constructor (ann p1 <> ann p2) (ConstructorReference DD.pairRef 0) [p1, p2]
|
||||
guardsAndBlocks <- many $ do
|
||||
guard <-
|
||||
asum
|
||||
[ Nothing <$ P.try (reserved "|" *> quasikeyword "otherwise"),
|
||||
optional $ reserved "|" *> infixAppOrBooleanOp
|
||||
]
|
||||
t <- block "->"
|
||||
pure (guard, t)
|
||||
let guardedBlocks = label "pattern guard" . some $ do
|
||||
reserved "|"
|
||||
guard <-
|
||||
asum
|
||||
[ Nothing <$ P.try (quasikeyword "otherwise"),
|
||||
Just <$> infixAppOrBooleanOp
|
||||
]
|
||||
t <- block "->"
|
||||
pure (guard, t)
|
||||
let unguardedBlock = label "case match" $ do
|
||||
t <- block "->"
|
||||
pure (Nothing, t)
|
||||
-- a pattern's RHS is either one or more guards, or a single unguarded block.
|
||||
guardsAndBlocks <- guardedBlocks <|> (pure @[] <$> unguardedBlock)
|
||||
let absChain vs t = foldr (\v t -> ABT.abs' (ann t) v t) t vs
|
||||
let mk (guard, t) = Term.MatchCase pat (fmap (absChain boundVars') guard) (absChain boundVars' t)
|
||||
pure $ (length pats, mk <$> guardsAndBlocks)
|
||||
|
||||
parsePattern :: forall v. Var v => P v (Pattern Ann, [(Ann, v)])
|
||||
parsePattern = root
|
||||
parsePattern = label "pattern" root
|
||||
where
|
||||
root = chainl1 patternCandidates patternInfixApp
|
||||
patternCandidates = constructor <|> leaf
|
||||
|
@ -239,6 +239,7 @@ library
|
||||
, mmorph
|
||||
, monad-validate
|
||||
, mtl
|
||||
, murmur-hash
|
||||
, mutable-containers
|
||||
, mwc-random
|
||||
, natural-transformation
|
||||
@ -428,6 +429,7 @@ test-suite parser-typechecker-tests
|
||||
, mmorph
|
||||
, monad-validate
|
||||
, mtl
|
||||
, murmur-hash
|
||||
, mutable-containers
|
||||
, mwc-random
|
||||
, natural-transformation
|
||||
|
@ -7,7 +7,9 @@ module Unison.LSP where
|
||||
|
||||
import Colog.Core (LogAction (LogAction))
|
||||
import qualified Colog.Core as Colog
|
||||
import Compat (onWindows)
|
||||
import Control.Monad.Reader
|
||||
import Data.Char (toLower)
|
||||
import GHC.IO.Exception (ioe_errno)
|
||||
import qualified Ki
|
||||
import qualified Language.LSP.Logging as LSP
|
||||
@ -19,6 +21,7 @@ import Language.LSP.VFS
|
||||
import qualified Network.Simple.TCP as TCP
|
||||
import Network.Socket (socketToHandle)
|
||||
import System.Environment (lookupEnv)
|
||||
import System.IO (hPutStrLn)
|
||||
import Unison.Codebase
|
||||
import Unison.Codebase.Branch (Branch)
|
||||
import qualified Unison.Codebase.Path as Path
|
||||
@ -49,17 +52,18 @@ getLspPort = fromMaybe "5757" <$> lookupEnv "UNISON_LSP_PORT"
|
||||
|
||||
-- | Spawn an LSP server on the configured port.
|
||||
spawnLsp :: Codebase IO Symbol Ann -> Runtime Symbol -> STM (Branch IO) -> STM (Path.Absolute) -> IO ()
|
||||
spawnLsp codebase runtime latestBranch latestPath = TCP.withSocketsDo do
|
||||
lspPort <- getLspPort
|
||||
UnliftIO.handleIO (handleFailure lspPort) $ do
|
||||
TCP.serve (TCP.Host "127.0.0.1") lspPort $ \(sock, _sockaddr) -> do
|
||||
Ki.scoped \scope -> do
|
||||
sockHandle <- socketToHandle sock ReadWriteMode
|
||||
-- currently we have an independent VFS for each LSP client since each client might have
|
||||
-- different un-saved state for the same file.
|
||||
initVFS $ \vfs -> do
|
||||
vfsVar <- newMVar vfs
|
||||
void $ runServerWithHandles lspServerLogger lspClientLogger sockHandle sockHandle (serverDefinition vfsVar codebase runtime scope latestBranch latestPath)
|
||||
spawnLsp codebase runtime latestBranch latestPath =
|
||||
ifEnabled . TCP.withSocketsDo $ do
|
||||
lspPort <- getLspPort
|
||||
UnliftIO.handleIO (handleFailure lspPort) $ do
|
||||
TCP.serve (TCP.Host "127.0.0.1") lspPort $ \(sock, _sockaddr) -> do
|
||||
Ki.scoped \scope -> do
|
||||
sockHandle <- socketToHandle sock ReadWriteMode
|
||||
-- currently we have an independent VFS for each LSP client since each client might have
|
||||
-- different un-saved state for the same file.
|
||||
initVFS $ \vfs -> do
|
||||
vfsVar <- newMVar vfs
|
||||
void $ runServerWithHandles lspServerLogger lspClientLogger sockHandle sockHandle (serverDefinition vfsVar codebase runtime scope latestBranch latestPath)
|
||||
where
|
||||
handleFailure :: String -> IOException -> IO ()
|
||||
handleFailure lspPort ioerr =
|
||||
@ -75,6 +79,14 @@ spawnLsp codebase runtime latestBranch latestPath = TCP.withSocketsDo do
|
||||
lspServerLogger = Colog.filterBySeverity Colog.Error Colog.getSeverity $ Colog.cmap (fmap tShow) (LogAction print)
|
||||
-- Where to send logs that occur after a client connects
|
||||
lspClientLogger = Colog.cmap (fmap tShow) LSP.defaultClientLogger
|
||||
ifEnabled :: IO () -> IO ()
|
||||
ifEnabled runServer = do
|
||||
-- Default LSP to disabled on Windows unless explicitly enabled
|
||||
lookupEnv "UNISON_LSP_ENABLED" >>= \case
|
||||
Just (fmap toLower -> "false") -> pure ()
|
||||
Just (fmap toLower -> "true") -> runServer
|
||||
Just x -> hPutStrLn stderr $ "Invalid value for UNISON_LSP_ENABLED, expected 'true' or 'false' but found: " <> x
|
||||
Nothing -> when (not onWindows) runServer
|
||||
|
||||
serverDefinition ::
|
||||
MVar VFS ->
|
||||
|
@ -31,6 +31,7 @@ hoverHandler m respond =
|
||||
results <- MaybeT . fmap eitherToMaybe $ (lspBackend $ Backend.prettyDefinitionsForHQName Path.empty Nothing Nothing (Backend.Suffixify True) rt cb hqIdentifier)
|
||||
let termResults = formatTermDefinition <$> toList (Backend.termDefinitions results)
|
||||
let typeResults = formatTypeDefinition <$> toList (Backend.typeDefinitions results)
|
||||
guard (not . null $ termResults <> typeResults)
|
||||
let markup = Text.intercalate "\n\n---\n\n" $ termResults <> typeResults
|
||||
pure $
|
||||
Hover
|
||||
|
@ -22,7 +22,7 @@ import ArgParse
|
||||
UsageRenderer,
|
||||
parseCLIArgs,
|
||||
)
|
||||
import Compat (defaultInterruptHandler, onWindows, withInterruptHandler)
|
||||
import Compat (defaultInterruptHandler, withInterruptHandler)
|
||||
import Control.Concurrent (newEmptyMVar, runInUnboundThread, takeMVar)
|
||||
import Control.Concurrent.STM
|
||||
import Control.Error.Safe (rightMay)
|
||||
@ -264,7 +264,7 @@ main = withCP65001 . runInUnboundThread . Ki.scoped $ \scope -> do
|
||||
-- prevent UCM from shutting down properly. Hopefully we can re-enable LSP on
|
||||
-- Windows when we move to GHC 9.*
|
||||
-- https://gitlab.haskell.org/ghc/ghc/-/merge_requests/1224
|
||||
when (not onWindows) . void . Ki.fork scope $ LSP.spawnLsp theCodebase runtime (readTMVar rootVar) (readTVar pathVar)
|
||||
void . Ki.fork scope $ LSP.spawnLsp theCodebase runtime (readTMVar rootVar) (readTVar pathVar)
|
||||
Server.startServer (Backend.BackendEnv {Backend.useNamesIndex = False}) codebaseServerOpts sbRuntime theCodebase $ \baseUrl -> do
|
||||
case exitOption of
|
||||
DoNotExit -> do
|
||||
|
@ -2358,62 +2358,65 @@ This transcript is intended to make visible accidental changes to the hashing al
|
||||
672. -- ##Universal.compare
|
||||
builtin.Universal.compare : a -> a -> Int
|
||||
|
||||
673. -- ##unsafe.coerceAbilities
|
||||
673. -- ##Universal.murmurHash
|
||||
builtin.Universal.murmurHash : a -> Nat
|
||||
|
||||
674. -- ##unsafe.coerceAbilities
|
||||
builtin.unsafe.coerceAbilities : (a ->{e1} b)
|
||||
-> a
|
||||
->{e2} b
|
||||
|
||||
674. -- ##Value
|
||||
675. -- ##Value
|
||||
builtin type builtin.Value
|
||||
|
||||
675. -- ##Value.dependencies
|
||||
676. -- ##Value.dependencies
|
||||
builtin.Value.dependencies : Value -> [Link.Term]
|
||||
|
||||
676. -- ##Value.deserialize
|
||||
677. -- ##Value.deserialize
|
||||
builtin.Value.deserialize : Bytes -> Either Text Value
|
||||
|
||||
677. -- ##Value.load
|
||||
678. -- ##Value.load
|
||||
builtin.Value.load : Value ->{IO} Either [Link.Term] a
|
||||
|
||||
678. -- ##Value.serialize
|
||||
679. -- ##Value.serialize
|
||||
builtin.Value.serialize : Value -> Bytes
|
||||
|
||||
679. -- ##Value.value
|
||||
680. -- ##Value.value
|
||||
builtin.Value.value : a -> Value
|
||||
|
||||
680. -- #dem6aglnj8cppfrnq9qipl7geo5pim3auo9cmv1rhh5la9edalj19sspbpm1pd4vh0plokdh6qfo48gs034dqlg0s7j9fhr9p9ndtpo
|
||||
681. -- #dem6aglnj8cppfrnq9qipl7geo5pim3auo9cmv1rhh5la9edalj19sspbpm1pd4vh0plokdh6qfo48gs034dqlg0s7j9fhr9p9ndtpo
|
||||
unique type builtin.Year
|
||||
|
||||
681. -- #dem6aglnj8cppfrnq9qipl7geo5pim3auo9cmv1rhh5la9edalj19sspbpm1pd4vh0plokdh6qfo48gs034dqlg0s7j9fhr9p9ndtpo#0
|
||||
682. -- #dem6aglnj8cppfrnq9qipl7geo5pim3auo9cmv1rhh5la9edalj19sspbpm1pd4vh0plokdh6qfo48gs034dqlg0s7j9fhr9p9ndtpo#0
|
||||
builtin.Year.Year : Nat -> Year
|
||||
|
||||
682. -- #k0rcrut9836hr3sevkivq4n2o3t540hllesila69b16gr5fcqe0i6aepqhv2qmso6h22lbipbp3fto0oc8o73l1lvf6vpifi01gmhg8
|
||||
683. -- #k0rcrut9836hr3sevkivq4n2o3t540hllesila69b16gr5fcqe0i6aepqhv2qmso6h22lbipbp3fto0oc8o73l1lvf6vpifi01gmhg8
|
||||
cache : [(Link.Term, Code)] ->{IO, Exception} ()
|
||||
|
||||
683. -- #okolgrio28p1mbl1bfjfs9qtsr1m9upblcm3ul872gcir6epkcbq619vk5bdq1fnr371nelsof6jsp8469g4j6f0gg3007p79o4kf18
|
||||
684. -- #okolgrio28p1mbl1bfjfs9qtsr1m9upblcm3ul872gcir6epkcbq619vk5bdq1fnr371nelsof6jsp8469g4j6f0gg3007p79o4kf18
|
||||
check : Text -> Boolean ->{Stream Result} ()
|
||||
|
||||
684. -- #je42vk6rsefjlup01e1fmmdssf5i3ba9l6aka3bipggetfm8o4i8d1q5d7hddggu5jure1bu5ot8aq5in31to4788ctrtpb44ri83r8
|
||||
685. -- #je42vk6rsefjlup01e1fmmdssf5i3ba9l6aka3bipggetfm8o4i8d1q5d7hddggu5jure1bu5ot8aq5in31to4788ctrtpb44ri83r8
|
||||
checks : [Boolean] -> [Result]
|
||||
|
||||
685. -- #barg6v1n15ea1qhp80i77gjjq3vu1noc67q2jkv9n6n5v0c9djup70ltauujgpfe0kuo8ckd20gc9kutngdpb8d22rubtb5rjldrb3o
|
||||
686. -- #barg6v1n15ea1qhp80i77gjjq3vu1noc67q2jkv9n6n5v0c9djup70ltauujgpfe0kuo8ckd20gc9kutngdpb8d22rubtb5rjldrb3o
|
||||
clientSocket : Text -> Text ->{IO, Exception} Socket
|
||||
|
||||
686. -- #lg7i12ido0jr43ovdbhhv2enpk5ar869leouri5qhrivinde93nl86s2rgshubtfhlogbe310k3rluotscmus9moo1tvpn0nmp1efv8
|
||||
687. -- #lg7i12ido0jr43ovdbhhv2enpk5ar869leouri5qhrivinde93nl86s2rgshubtfhlogbe310k3rluotscmus9moo1tvpn0nmp1efv8
|
||||
closeFile : Handle ->{IO, Exception} ()
|
||||
|
||||
687. -- #4e6qn65v05l32n380lpf536u4llnp6f6tvvt13hvo0bhqeh3f3i8bquekc120c8h59gld1mf02ok0sje7037ipg1fsu97fqrm01oi00
|
||||
688. -- #4e6qn65v05l32n380lpf536u4llnp6f6tvvt13hvo0bhqeh3f3i8bquekc120c8h59gld1mf02ok0sje7037ipg1fsu97fqrm01oi00
|
||||
closeSocket : Socket ->{IO, Exception} ()
|
||||
|
||||
688. -- #7o1e77u808vpg8i6k1mvutg8h6tdr14hegfad23e9sjou1ft10kvfr95goo0kv2ldqlsaa4pmvdl8d7jd6h252i3jija05b4vpqbg5g
|
||||
689. -- #7o1e77u808vpg8i6k1mvutg8h6tdr14hegfad23e9sjou1ft10kvfr95goo0kv2ldqlsaa4pmvdl8d7jd6h252i3jija05b4vpqbg5g
|
||||
Code.transitiveDeps : Link.Term
|
||||
->{IO} [(Link.Term, Code)]
|
||||
|
||||
689. -- #sfud7h76up0cofgk61b7tf8rhdlugfmg44lksnpglfes1b8po26si7betka39r9j8dpgueorjdrb1i7v4g62m5bci1e971eqi8dblmo
|
||||
690. -- #sfud7h76up0cofgk61b7tf8rhdlugfmg44lksnpglfes1b8po26si7betka39r9j8dpgueorjdrb1i7v4g62m5bci1e971eqi8dblmo
|
||||
compose : ∀ o g1 i1 g i.
|
||||
(i1 ->{g1} o) -> (i ->{g} i1) -> i ->{g1, g} o
|
||||
|
||||
690. -- #b0tsob9a3fegn5dkb57jh15smd7ho2qo78st6qngpa7a8hc88mccl7vhido41o4otokv5l8hjdj3nabtkmpni5ikeatd44agmqbhano
|
||||
691. -- #b0tsob9a3fegn5dkb57jh15smd7ho2qo78st6qngpa7a8hc88mccl7vhido41o4otokv5l8hjdj3nabtkmpni5ikeatd44agmqbhano
|
||||
compose2 : ∀ o g2 i2 g1 g i i1.
|
||||
(i2 ->{g2} o)
|
||||
-> (i1 ->{g1} i ->{g} i2)
|
||||
@ -2421,7 +2424,7 @@ This transcript is intended to make visible accidental changes to the hashing al
|
||||
-> i
|
||||
->{g2, g1, g} o
|
||||
|
||||
691. -- #m632ocgh2rougfejkddsso3vfpf4dmg1f8bhf0k6sha4g4aqfmbeuct3eo0je6dv9utterfvotjdu32p0kojuo9fj4qkp2g1bt464eg
|
||||
692. -- #m632ocgh2rougfejkddsso3vfpf4dmg1f8bhf0k6sha4g4aqfmbeuct3eo0je6dv9utterfvotjdu32p0kojuo9fj4qkp2g1bt464eg
|
||||
compose3 : ∀ o g3 i3 g2 g1 g i i1 i2.
|
||||
(i3 ->{g3} o)
|
||||
-> (i2 ->{g2} i1 ->{g1} i ->{g} i3)
|
||||
@ -2430,318 +2433,318 @@ This transcript is intended to make visible accidental changes to the hashing al
|
||||
-> i
|
||||
->{g3, g2, g1, g} o
|
||||
|
||||
692. -- #ilkeid6l866bmq90d2v1ilqp9dsjo6ucmf8udgrokq3nr3mo9skl2vao2mo7ish136as52rsf19u9v3jkmd85bl08gnmamo4e5v2fqo
|
||||
693. -- #ilkeid6l866bmq90d2v1ilqp9dsjo6ucmf8udgrokq3nr3mo9skl2vao2mo7ish136as52rsf19u9v3jkmd85bl08gnmamo4e5v2fqo
|
||||
contains : Text -> Text -> Boolean
|
||||
|
||||
693. -- #tgvna0i8ea98jvnd2oka85cdtas1prcbq3snvc4qfns6082mlckps2cspk8jln11mklg19bna025tog5m9sb671o27ujsa90lfrbnkg
|
||||
694. -- #tgvna0i8ea98jvnd2oka85cdtas1prcbq3snvc4qfns6082mlckps2cspk8jln11mklg19bna025tog5m9sb671o27ujsa90lfrbnkg
|
||||
crawl : [(Link.Term, Code)]
|
||||
-> [Link.Term]
|
||||
->{IO} [(Link.Term, Code)]
|
||||
|
||||
694. -- #o0qn048fk7tjb8e7d54vq5mg9egr5kophb9pcm0to4aj0kf39mv76c6olsm27vj309d7nhjh4nps7098fpvqe8j5cfg01ghf3bnju90
|
||||
695. -- #o0qn048fk7tjb8e7d54vq5mg9egr5kophb9pcm0to4aj0kf39mv76c6olsm27vj309d7nhjh4nps7098fpvqe8j5cfg01ghf3bnju90
|
||||
createTempDirectory : Text ->{IO, Exception} Text
|
||||
|
||||
695. -- #4858f4krb9l4ot1hml21j48lp3bcvbo8b9unlk33b9a3ovu1jrbr1k56pnfhffkiu1bht2ovh0i82nn5jnoc5s5ru85qvua0m2ol43g
|
||||
696. -- #4858f4krb9l4ot1hml21j48lp3bcvbo8b9unlk33b9a3ovu1jrbr1k56pnfhffkiu1bht2ovh0i82nn5jnoc5s5ru85qvua0m2ol43g
|
||||
decodeCert : Bytes ->{Exception} SignedCert
|
||||
|
||||
696. -- #ihbmfc4r7o3391jocjm6v4mojpp3hvt84ivqigrmp34vb5l3d7mmdlvh3hkrtebi812npso7rqo203a59pbs7r2g78ig6jvsv0nva38
|
||||
697. -- #ihbmfc4r7o3391jocjm6v4mojpp3hvt84ivqigrmp34vb5l3d7mmdlvh3hkrtebi812npso7rqo203a59pbs7r2g78ig6jvsv0nva38
|
||||
delay : Nat ->{IO, Exception} ()
|
||||
|
||||
697. -- #dsen29k7605pkfquesnaphhmlm3pjkfgm7m2oc90m53gqvob4l39p4g3id3pirl8emg5tcdmr81ctl3lk1enm52mldlfmlh1i85rjbg
|
||||
698. -- #dsen29k7605pkfquesnaphhmlm3pjkfgm7m2oc90m53gqvob4l39p4g3id3pirl8emg5tcdmr81ctl3lk1enm52mldlfmlh1i85rjbg
|
||||
directoryContents : Text ->{IO, Exception} [Text]
|
||||
|
||||
698. -- #b22tpqhkq6kvt27dcsddnbfci2bcqutvhmumdven9c5psiilboq2mb8v9ekihtkl6mkartd5ml5u75u84v850n29l91de63lkg3ud38
|
||||
699. -- #b22tpqhkq6kvt27dcsddnbfci2bcqutvhmumdven9c5psiilboq2mb8v9ekihtkl6mkartd5ml5u75u84v850n29l91de63lkg3ud38
|
||||
Either.isLeft : Either a b -> Boolean
|
||||
|
||||
699. -- #i1ec3csomb1pegm9r7ppabunabb7cq1t6bb6cvqtt72nd01jot7gde2mak288cbml910abbtho0smsbq17b2r33j599b0vuv7je04j8
|
||||
700. -- #i1ec3csomb1pegm9r7ppabunabb7cq1t6bb6cvqtt72nd01jot7gde2mak288cbml910abbtho0smsbq17b2r33j599b0vuv7je04j8
|
||||
Either.mapLeft : (i ->{g} o)
|
||||
-> Either i b
|
||||
->{g} Either o b
|
||||
|
||||
700. -- #f765l0pa2tb9ieciivum76s7bp8rdjr8j7i635jjenj9tacgba9eeomur4vv3uuh4kem1pggpmrn61a1e3im9g90okcm13r192f7alg
|
||||
701. -- #f765l0pa2tb9ieciivum76s7bp8rdjr8j7i635jjenj9tacgba9eeomur4vv3uuh4kem1pggpmrn61a1e3im9g90okcm13r192f7alg
|
||||
Either.raiseMessage : v -> Either Text b ->{Exception} b
|
||||
|
||||
701. -- #9hifem8o2e1g7tdh4om9kfo98ifr60gfmdp8ci58djn17epm1b4m6idli8b373bsrg487n87n4l50ksq76avlrbh9q2jpobkk18ucvg
|
||||
702. -- #9hifem8o2e1g7tdh4om9kfo98ifr60gfmdp8ci58djn17epm1b4m6idli8b373bsrg487n87n4l50ksq76avlrbh9q2jpobkk18ucvg
|
||||
evalTest : '{IO, TempDirs, Exception, Stream Result} a
|
||||
->{IO, Exception} ([Result], a)
|
||||
|
||||
702. -- #4n0fgs00hpsj3paqnm9bfm4nbt9cbrin3hl88i992m9tjiq1ik7eq72asu4hcg885uti36tbnj5rudt56eahhnut1nobofg86pk1bng
|
||||
703. -- #4n0fgs00hpsj3paqnm9bfm4nbt9cbrin3hl88i992m9tjiq1ik7eq72asu4hcg885uti36tbnj5rudt56eahhnut1nobofg86pk1bng
|
||||
structural ability Exception
|
||||
structural ability builtin.Exception
|
||||
|
||||
703. -- #t20uuuiil07o22les8gv4sji7ju5esevloamnja3bjkrh2f250lgitv6595l6hlc2q64c1om0hhjqgter28dtnibb0dkr2j7e3ss530
|
||||
704. -- #t20uuuiil07o22les8gv4sji7ju5esevloamnja3bjkrh2f250lgitv6595l6hlc2q64c1om0hhjqgter28dtnibb0dkr2j7e3ss530
|
||||
Exception.catch : '{g, Exception} a
|
||||
->{g} Either Failure a
|
||||
|
||||
704. -- #hbhvk2e00l6o7qhn8e7p6dc36bjl7ljm0gn2df5clidlrdoufsig1gt5pjhg72kl67folgg2b892kh9jc1oh0l79h4p8dqhcf1tkde0
|
||||
705. -- #hbhvk2e00l6o7qhn8e7p6dc36bjl7ljm0gn2df5clidlrdoufsig1gt5pjhg72kl67folgg2b892kh9jc1oh0l79h4p8dqhcf1tkde0
|
||||
Exception.failure : Text -> a -> Failure
|
||||
|
||||
705. -- #4n0fgs00hpsj3paqnm9bfm4nbt9cbrin3hl88i992m9tjiq1ik7eq72asu4hcg885uti36tbnj5rudt56eahhnut1nobofg86pk1bng#0
|
||||
706. -- #4n0fgs00hpsj3paqnm9bfm4nbt9cbrin3hl88i992m9tjiq1ik7eq72asu4hcg885uti36tbnj5rudt56eahhnut1nobofg86pk1bng#0
|
||||
Exception.raise,
|
||||
builtin.Exception.raise : Failure
|
||||
->{Exception} x
|
||||
|
||||
706. -- #5mqjoauctm02dlqdc10cc66relu40997d6o1u8fj7vv7g0i2mtacjc83afqhuekll1gkqr9vv4lq7aenanq4kf53kcce4l1srr6ip08
|
||||
707. -- #5mqjoauctm02dlqdc10cc66relu40997d6o1u8fj7vv7g0i2mtacjc83afqhuekll1gkqr9vv4lq7aenanq4kf53kcce4l1srr6ip08
|
||||
Exception.reraise : Either Failure a ->{Exception} a
|
||||
|
||||
707. -- #1f774ia7im9i0cfp7l5a1g9tkvnd4m2940ga3buaf4ekd43dr1289vknghjjvi4qtevh7s61p5s573gpli51qh7e0i5pj9ggmeb69d0
|
||||
708. -- #1f774ia7im9i0cfp7l5a1g9tkvnd4m2940ga3buaf4ekd43dr1289vknghjjvi4qtevh7s61p5s573gpli51qh7e0i5pj9ggmeb69d0
|
||||
Exception.toEither : '{ε, Exception} a
|
||||
->{ε} Either Failure a
|
||||
|
||||
708. -- #li2h4hncbgmfi5scuah06rtdt8rjcipiv2t95hos15ol63usv78ti3vng7o9862a70906rum7nrrs9qd9q8iqu1rdcfe292r0al7n38
|
||||
709. -- #li2h4hncbgmfi5scuah06rtdt8rjcipiv2t95hos15ol63usv78ti3vng7o9862a70906rum7nrrs9qd9q8iqu1rdcfe292r0al7n38
|
||||
Exception.toEither.handler : Request {Exception} a
|
||||
-> Either Failure a
|
||||
|
||||
709. -- #5fi0ep8mufag822f18ukaffakrmm3ddg8a83dkj4gh2ks4e2c60sk9s8pmk92p69bvkcflql3rgoalp8ruth7fapqrks3kbmdl61b00
|
||||
710. -- #5fi0ep8mufag822f18ukaffakrmm3ddg8a83dkj4gh2ks4e2c60sk9s8pmk92p69bvkcflql3rgoalp8ruth7fapqrks3kbmdl61b00
|
||||
Exception.unsafeRun! : '{g, Exception} a ->{g} a
|
||||
|
||||
710. -- #qdcih6h4dmf9a2tn2ndvn0br9ef41ubhcniadou1m6ro641gm2tn79m6boh5sr4q271oiui6ehbdqe53r0gobdeagotkjr67kieq3ro
|
||||
711. -- #qdcih6h4dmf9a2tn2ndvn0br9ef41ubhcniadou1m6ro641gm2tn79m6boh5sr4q271oiui6ehbdqe53r0gobdeagotkjr67kieq3ro
|
||||
expect : Text
|
||||
-> (a -> a -> Boolean)
|
||||
-> a
|
||||
-> a
|
||||
->{Stream Result} ()
|
||||
|
||||
711. -- #ngmnbge6f7nkehkkhj6rkit60rp3qlt0vij33itch1el3ta2ukrit4gvpn2n0j0s43sj9af53kphgs0h2n65bnqcr9pmasud2r7klsg
|
||||
712. -- #ngmnbge6f7nkehkkhj6rkit60rp3qlt0vij33itch1el3ta2ukrit4gvpn2n0j0s43sj9af53kphgs0h2n65bnqcr9pmasud2r7klsg
|
||||
expectU : Text -> a -> a ->{Stream Result} ()
|
||||
|
||||
712. -- #f54plhut9f6mg77r1f033vubik89irq1eri79d5pd6mqi03rq9em99mc90plurvjnmvho73ssof5fvndgmcg4fgrpvuuil7hb5qmebo
|
||||
713. -- #f54plhut9f6mg77r1f033vubik89irq1eri79d5pd6mqi03rq9em99mc90plurvjnmvho73ssof5fvndgmcg4fgrpvuuil7hb5qmebo
|
||||
fail : Text -> b ->{Exception} c
|
||||
|
||||
713. -- #mpe805fs330vqp5l5mg73deahken20dub4hrfvmuutfo97dikgagvimncfr6mfp1l24bjqes1m1dp11a3hop92u49b1fb45j8qs9hoo
|
||||
714. -- #mpe805fs330vqp5l5mg73deahken20dub4hrfvmuutfo97dikgagvimncfr6mfp1l24bjqes1m1dp11a3hop92u49b1fb45j8qs9hoo
|
||||
fileExists : Text ->{IO, Exception} Boolean
|
||||
|
||||
714. -- #cft2pjc05jljtlefm4osg96k5t2look2ujq1tgg5hoc5i3fkkatt9pf79g2ka461kq8nbmsggrvo2675ocl599to9e8nre5oef4scdo
|
||||
715. -- #cft2pjc05jljtlefm4osg96k5t2look2ujq1tgg5hoc5i3fkkatt9pf79g2ka461kq8nbmsggrvo2675ocl599to9e8nre5oef4scdo
|
||||
fromB32 : Bytes ->{Exception} Bytes
|
||||
|
||||
715. -- #13fpchr37ua0pr38ssr7j22pudmseuedf490aok18upagh0f00kg40guj9pgl916v9qurqrvu53f3lpsvi0s82hg3dtjacanrpjvs38
|
||||
716. -- #13fpchr37ua0pr38ssr7j22pudmseuedf490aok18upagh0f00kg40guj9pgl916v9qurqrvu53f3lpsvi0s82hg3dtjacanrpjvs38
|
||||
fromHex : Text -> Bytes
|
||||
|
||||
716. -- #b36oslvh534s82lda0ghc5ql7p7nir0tknsluigulmpso22tjh62uiiq4lq9s3m97a2grkso0qofpb423p06olkkikrt4mfn15vpkug
|
||||
717. -- #b36oslvh534s82lda0ghc5ql7p7nir0tknsluigulmpso22tjh62uiiq4lq9s3m97a2grkso0qofpb423p06olkkikrt4mfn15vpkug
|
||||
getBuffering : Handle ->{IO, Exception} BufferMode
|
||||
|
||||
717. -- #9vijttgmba0ui9cshmhmmvgn6ve2e95t168766h2n6pkviddebiimgipic5dbg5lmiht12g6np8a7e06jpk03rnue3ln5mbo4prde0g
|
||||
718. -- #9vijttgmba0ui9cshmhmmvgn6ve2e95t168766h2n6pkviddebiimgipic5dbg5lmiht12g6np8a7e06jpk03rnue3ln5mbo4prde0g
|
||||
getBytes : Handle -> Nat ->{IO, Exception} Bytes
|
||||
|
||||
718. -- #c5oeqqglf28ungtq1im4fjdh317eeoba4537l1ntq3ob22v07rpgj9307udscbghlrior398hqm1ci099qmriim8cs975kocacsd9r0
|
||||
719. -- #c5oeqqglf28ungtq1im4fjdh317eeoba4537l1ntq3ob22v07rpgj9307udscbghlrior398hqm1ci099qmriim8cs975kocacsd9r0
|
||||
getChar : Handle ->{IO, Exception} Char
|
||||
|
||||
719. -- #j9jdo2pqvi4aktcfsb0n4ns1tk2be7dtckqdeedqp7n52oghsq82cgc1tv562rj1sf1abq2h0vta4uo6873cdbgrtrvd5cvollu3ovo
|
||||
720. -- #j9jdo2pqvi4aktcfsb0n4ns1tk2be7dtckqdeedqp7n52oghsq82cgc1tv562rj1sf1abq2h0vta4uo6873cdbgrtrvd5cvollu3ovo
|
||||
getEcho : Handle ->{IO, Exception} Boolean
|
||||
|
||||
720. -- #0hj09gufk8fs2hvr6qij6pie8bp0h6hmm6hpsi8d5fvl1fp1dbk6u8c9p6h4eu2hle6ctgpdbepo9vit5atllkodogn6r0csar9fn1g
|
||||
721. -- #0hj09gufk8fs2hvr6qij6pie8bp0h6hmm6hpsi8d5fvl1fp1dbk6u8c9p6h4eu2hle6ctgpdbepo9vit5atllkodogn6r0csar9fn1g
|
||||
getLine : Handle ->{IO, Exception} Text
|
||||
|
||||
721. -- #ck1nfg5fainelng0694jkdf9e06pmn60h7kvble1ff7hkc6jdgqtf7g5o3qevr7ic1bdhfn5n2rc3gde5bh6o9fpbit3ocs0av0scdg
|
||||
722. -- #ck1nfg5fainelng0694jkdf9e06pmn60h7kvble1ff7hkc6jdgqtf7g5o3qevr7ic1bdhfn5n2rc3gde5bh6o9fpbit3ocs0av0scdg
|
||||
getSomeBytes : Handle -> Nat ->{IO, Exception} Bytes
|
||||
|
||||
722. -- #bk29bjnrcuh55usf3vocm4j1aml161p6ila7t82cpr3ub9vu0g9lsg2mspmfuefc4ig0qtdqk7nds4t3f68jp6o77e0h4ltbitqjpno
|
||||
723. -- #bk29bjnrcuh55usf3vocm4j1aml161p6ila7t82cpr3ub9vu0g9lsg2mspmfuefc4ig0qtdqk7nds4t3f68jp6o77e0h4ltbitqjpno
|
||||
getTempDirectory : '{IO, Exception} Text
|
||||
|
||||
723. -- #j8i534slc2rvakvmqcb6j28iatrh3d7btajai9qndutr0edi5aaoi2p5noditaococ4l104hdhhvjc5vr0rbcjoqrbng46fdeqtnf98
|
||||
724. -- #j8i534slc2rvakvmqcb6j28iatrh3d7btajai9qndutr0edi5aaoi2p5noditaococ4l104hdhhvjc5vr0rbcjoqrbng46fdeqtnf98
|
||||
handlePosition : Handle ->{IO, Exception} Nat
|
||||
|
||||
724. -- #bgf7sqs0h0p8bhm3t2ei8006oj1gjonvtkdejv2g9kar0kmvob9e88ceevdfh99jom9rs0hbalf1gut5juanudfcb8tpb1e9ta0vrm8
|
||||
725. -- #bgf7sqs0h0p8bhm3t2ei8006oj1gjonvtkdejv2g9kar0kmvob9e88ceevdfh99jom9rs0hbalf1gut5juanudfcb8tpb1e9ta0vrm8
|
||||
handshake : Tls ->{IO, Exception} ()
|
||||
|
||||
725. -- #128490j1tmitiu3vesv97sqspmefobg1am38vos9p0vt4s1bhki87l7kj4cctquffkp40eanmr9ummfglj9i7s25jrpb32ob5sf2tio
|
||||
726. -- #128490j1tmitiu3vesv97sqspmefobg1am38vos9p0vt4s1bhki87l7kj4cctquffkp40eanmr9ummfglj9i7s25jrpb32ob5sf2tio
|
||||
hex : Bytes -> Text
|
||||
|
||||
726. -- #ttjui80dbufvf3vgaddmcr065dpgl0rtp68i5cdht6tq4t2vk3i2vg60hi77rug368qijgijf8oui27te7o5oq0t0osm6dg65c080i0
|
||||
727. -- #ttjui80dbufvf3vgaddmcr065dpgl0rtp68i5cdht6tq4t2vk3i2vg60hi77rug368qijgijf8oui27te7o5oq0t0osm6dg65c080i0
|
||||
id : a -> a
|
||||
|
||||
727. -- #9qnapjbbdhcc2mjf1b0slm7mefu0idnj1bs4c5bckq42ruodftolnd193uehr31lc01air6d6b3j4ihurnks13n85h3r8rs16nqvj2g
|
||||
728. -- #9qnapjbbdhcc2mjf1b0slm7mefu0idnj1bs4c5bckq42ruodftolnd193uehr31lc01air6d6b3j4ihurnks13n85h3r8rs16nqvj2g
|
||||
isDirectory : Text ->{IO, Exception} Boolean
|
||||
|
||||
728. -- #vb1e252fqt0q63hpmtkq2bkg5is2n6thejofnev96040thle5o1ia8dtq7dc6v359gtoqugbqg5tb340aqovrfticb63jgei4ncq3j8
|
||||
729. -- #vb1e252fqt0q63hpmtkq2bkg5is2n6thejofnev96040thle5o1ia8dtq7dc6v359gtoqugbqg5tb340aqovrfticb63jgei4ncq3j8
|
||||
isFileEOF : Handle ->{IO, Exception} Boolean
|
||||
|
||||
729. -- #ahkhlm9sd7arpevos99sqc90g7k5nn9bj5n0lhh82c1uva52ltv0295ugc123l17vd1orkng061e11knqjnmk087qjg3vug3rs6mv60
|
||||
730. -- #ahkhlm9sd7arpevos99sqc90g7k5nn9bj5n0lhh82c1uva52ltv0295ugc123l17vd1orkng061e11knqjnmk087qjg3vug3rs6mv60
|
||||
isFileOpen : Handle ->{IO, Exception} Boolean
|
||||
|
||||
730. -- #2a11371klrv2i8726knma0l3g14on4m2ucihpg65cjj9k930aefg65ovvg0ak4uv3i9evtnu0a5249q3i8ugheqd65cnmgquc1a88n0
|
||||
731. -- #2a11371klrv2i8726knma0l3g14on4m2ucihpg65cjj9k930aefg65ovvg0ak4uv3i9evtnu0a5249q3i8ugheqd65cnmgquc1a88n0
|
||||
isNone : Optional a -> Boolean
|
||||
|
||||
731. -- #ln4avnqpdk7813vsrrr414hg0smcmufrl1c7b87nb7nb0h9cogp6arqa7fbgd7rgolffmgue698ovvefo18j1k8g30t4hbp23onm3l8
|
||||
732. -- #ln4avnqpdk7813vsrrr414hg0smcmufrl1c7b87nb7nb0h9cogp6arqa7fbgd7rgolffmgue698ovvefo18j1k8g30t4hbp23onm3l8
|
||||
isSeekable : Handle ->{IO, Exception} Boolean
|
||||
|
||||
732. -- #gop2v9s6l24ii1v6bf1nks2h0h18pato0vbsf4u3el18s7mp1jfnp4c7fesdf9sunnlv5f5a9fjr1s952pte87mf63l1iqki9bp0mio
|
||||
733. -- #gop2v9s6l24ii1v6bf1nks2h0h18pato0vbsf4u3el18s7mp1jfnp4c7fesdf9sunnlv5f5a9fjr1s952pte87mf63l1iqki9bp0mio
|
||||
List.all : (a ->{ε} Boolean) -> [a] ->{ε} Boolean
|
||||
|
||||
733. -- #m2g5korqq5etr0qk1qrgjbaqktj4ks4bu9m3c4v3j9g8ktsd2e218nml6q8vo45bi3meb53csack40mle6clfrfep073e313b3jagt0
|
||||
734. -- #m2g5korqq5etr0qk1qrgjbaqktj4ks4bu9m3c4v3j9g8ktsd2e218nml6q8vo45bi3meb53csack40mle6clfrfep073e313b3jagt0
|
||||
List.filter : (a ->{g} Boolean) -> [a] ->{g} [a]
|
||||
|
||||
734. -- #8s836vq5jggucs6bj3bear30uhe6h9cskudjrdc772ghiec6ce2jqft09l1n05kd1n6chekrbgt0h8mkc9drgscjvgghacojm9e8c5o
|
||||
735. -- #8s836vq5jggucs6bj3bear30uhe6h9cskudjrdc772ghiec6ce2jqft09l1n05kd1n6chekrbgt0h8mkc9drgscjvgghacojm9e8c5o
|
||||
List.foldLeft : (b ->{g} a ->{g} b) -> b -> [a] ->{g} b
|
||||
|
||||
735. -- #m5tlb5a0m4kp5b4m9oq9vhda9d7nhu2obn2lpmosal0ebij9gon4gkd1aq0b3b61jtsc1go0hi7b2sm2memtil55ijq32b2n0k39vko
|
||||
736. -- #m5tlb5a0m4kp5b4m9oq9vhda9d7nhu2obn2lpmosal0ebij9gon4gkd1aq0b3b61jtsc1go0hi7b2sm2memtil55ijq32b2n0k39vko
|
||||
List.forEach : [a] -> (a ->{e} ()) ->{e} ()
|
||||
|
||||
736. -- #j9ve4ionu2sn7f814t0t4gc75objke2drgnfvvvb50v2f57ss0hlsa3ai5g5jsk2t4b8s37ocrtmte7nktfb2vjf8508ksvrc6llu30
|
||||
737. -- #j9ve4ionu2sn7f814t0t4gc75objke2drgnfvvvb50v2f57ss0hlsa3ai5g5jsk2t4b8s37ocrtmte7nktfb2vjf8508ksvrc6llu30
|
||||
listen : Socket ->{IO, Exception} ()
|
||||
|
||||
737. -- #s0f4et1o1ns8cmmvp3i0cm6cmmv5qaf99qm2q4jmgpciof6ntmuh3mpr4epns3ocskn8raacbvm30ovvj2b6arv0ff7iks31rannbf0
|
||||
738. -- #s0f4et1o1ns8cmmvp3i0cm6cmmv5qaf99qm2q4jmgpciof6ntmuh3mpr4epns3ocskn8raacbvm30ovvj2b6arv0ff7iks31rannbf0
|
||||
loadCodeBytes : Bytes ->{Exception} Code
|
||||
|
||||
738. -- #gvaed1m07qihc9c216125sur1q9a7i5ita44qnevongg4jrbd8k2plsqhdur45nn6h3drn6lc3iidp1b208ht8s73fg2711l76c7j4g
|
||||
739. -- #gvaed1m07qihc9c216125sur1q9a7i5ita44qnevongg4jrbd8k2plsqhdur45nn6h3drn6lc3iidp1b208ht8s73fg2711l76c7j4g
|
||||
loadSelfContained : Text ->{IO, Exception} a
|
||||
|
||||
739. -- #g1hqlq27e3stamnnfp6q178pleeml9sbo2d6scj2ikubocane5cvf8ctausoqrgj9co9h56ttgt179sgktc0bei2r37dmtj51jg0ou8
|
||||
740. -- #g1hqlq27e3stamnnfp6q178pleeml9sbo2d6scj2ikubocane5cvf8ctausoqrgj9co9h56ttgt179sgktc0bei2r37dmtj51jg0ou8
|
||||
loadValueBytes : Bytes
|
||||
->{IO, Exception} ([(Link.Term, Code)], Value)
|
||||
|
||||
740. -- #tlllu51stumo77vi2e5m0e8m05qletfbr3nea3d84dcgh66dq4s3bt7kdbf8mpdqh16mmnoh11kr3n43m8b5g4pf95l9gfbhhok1h20
|
||||
741. -- #tlllu51stumo77vi2e5m0e8m05qletfbr3nea3d84dcgh66dq4s3bt7kdbf8mpdqh16mmnoh11kr3n43m8b5g4pf95l9gfbhhok1h20
|
||||
MVar.put : MVar i -> i ->{IO, Exception} ()
|
||||
|
||||
741. -- #3b7lp7s9m31mcvh73nh4gfj1kal6onrmppf35esvmma4jsg7bbm7a8tsrfcb4te88f03r97dkf7n1f2kcc6o7ng4vurp95svfj2fg7o
|
||||
742. -- #3b7lp7s9m31mcvh73nh4gfj1kal6onrmppf35esvmma4jsg7bbm7a8tsrfcb4te88f03r97dkf7n1f2kcc6o7ng4vurp95svfj2fg7o
|
||||
MVar.read : MVar o ->{IO, Exception} o
|
||||
|
||||
742. -- #be8m7lsjnf31u87pt5rvn04c9ellhbm3p56jgapbp8k7qp0v3mm7beh81luoifp17681l0ldjj46gthmmu32lkn0jnejr3tedjotntg
|
||||
743. -- #be8m7lsjnf31u87pt5rvn04c9ellhbm3p56jgapbp8k7qp0v3mm7beh81luoifp17681l0ldjj46gthmmu32lkn0jnejr3tedjotntg
|
||||
MVar.swap : MVar o -> o ->{IO, Exception} o
|
||||
|
||||
743. -- #c2qb0ca2dj3rronbp4slj3ph56p0iopaos7ib37hjunpkl1rcl1gp820dpg8qflhvt9cm2l1bfm40rkdslce2sr6f0oru5lr5cl5nu0
|
||||
744. -- #c2qb0ca2dj3rronbp4slj3ph56p0iopaos7ib37hjunpkl1rcl1gp820dpg8qflhvt9cm2l1bfm40rkdslce2sr6f0oru5lr5cl5nu0
|
||||
MVar.take : MVar o ->{IO, Exception} o
|
||||
|
||||
744. -- #ht0k9hb3k1cnjsgmtu9klivo074a2uro4csh63m1sqr2483rkojlj7abcf0jfmssbfig98i6is1osr2djoqubg3bp6articvq9o8090
|
||||
745. -- #ht0k9hb3k1cnjsgmtu9klivo074a2uro4csh63m1sqr2483rkojlj7abcf0jfmssbfig98i6is1osr2djoqubg3bp6articvq9o8090
|
||||
newClient : ClientConfig -> Socket ->{IO, Exception} Tls
|
||||
|
||||
745. -- #coeloqmjin6lais8u6j0plh5f1601lpcue4ejfcute46opams4vsbkplqj6jg6af0uecjie3mbclv40b3jumghsf09aavvucrc0d148
|
||||
746. -- #coeloqmjin6lais8u6j0plh5f1601lpcue4ejfcute46opams4vsbkplqj6jg6af0uecjie3mbclv40b3jumghsf09aavvucrc0d148
|
||||
newServer : ServerConfig -> Socket ->{IO, Exception} Tls
|
||||
|
||||
746. -- #ocvo5mvs8fghsf715tt4mhpj1pu8e8r7pq9nue63ut0ol2vnv70k7t6tavtsljlmdib9lo3bt669qac94dk53ldcgtukvotvrlfkan0
|
||||
747. -- #ocvo5mvs8fghsf715tt4mhpj1pu8e8r7pq9nue63ut0ol2vnv70k7t6tavtsljlmdib9lo3bt669qac94dk53ldcgtukvotvrlfkan0
|
||||
openFile : Text -> FileMode ->{IO, Exception} Handle
|
||||
|
||||
747. -- #c58qbcgd90d965dokk7bu82uehegkbe8jttm7lv4j0ohgi2qm3e3p4v1qfr8vc2dlsmsl9tv0v71kco8c18mneule0ntrhte4ks1090
|
||||
748. -- #c58qbcgd90d965dokk7bu82uehegkbe8jttm7lv4j0ohgi2qm3e3p4v1qfr8vc2dlsmsl9tv0v71kco8c18mneule0ntrhte4ks1090
|
||||
printLine : Text ->{IO, Exception} ()
|
||||
|
||||
748. -- #dck7pb7qv05ol3b0o76l88a22bc7enl781ton5qbs2umvgsua3p16n22il02m29592oohsnbt3cr7hnlumpdhv2ibjp6iji9te4iot0
|
||||
749. -- #dck7pb7qv05ol3b0o76l88a22bc7enl781ton5qbs2umvgsua3p16n22il02m29592oohsnbt3cr7hnlumpdhv2ibjp6iji9te4iot0
|
||||
printText : Text ->{IO} Either Failure ()
|
||||
|
||||
749. -- #i9lm1g1j0p4qtakg164jdlgac409sgj1cb91k86k0c44ssajbluovuu7ptm5uc20sjgedjbak3iji8o859ek871ul51b8l30s4uf978
|
||||
750. -- #i9lm1g1j0p4qtakg164jdlgac409sgj1cb91k86k0c44ssajbluovuu7ptm5uc20sjgedjbak3iji8o859ek871ul51b8l30s4uf978
|
||||
putBytes : Handle -> Bytes ->{IO, Exception} ()
|
||||
|
||||
750. -- #84j6ua3924v85vh2a581de7sd8pee1lqbp1ibvatvjtui9hvk36sv2riabu0v2r0s25p62ipnvv4aeadpg0u8m5ffqrc202i71caopg
|
||||
751. -- #84j6ua3924v85vh2a581de7sd8pee1lqbp1ibvatvjtui9hvk36sv2riabu0v2r0s25p62ipnvv4aeadpg0u8m5ffqrc202i71caopg
|
||||
readFile : Text ->{IO, Exception} Bytes
|
||||
|
||||
751. -- #pk003cv7lvidkbmsnne4mpt20254gh4hd7vvretnbk8na8bhr9fg9776rp8pt9srhiucrd1c7sjl006vmil9e78p40gdcir81ujil2o
|
||||
752. -- #pk003cv7lvidkbmsnne4mpt20254gh4hd7vvretnbk8na8bhr9fg9776rp8pt9srhiucrd1c7sjl006vmil9e78p40gdcir81ujil2o
|
||||
ready : Handle ->{IO, Exception} Boolean
|
||||
|
||||
752. -- #unn7qak4qe0nbbpf62uesu0fe8i68o83l4o7f6jcblefbla53fef7a63ts28fh6ql81o5c04j44g7m5rq9aouo73dpeprbl5lka8170
|
||||
753. -- #unn7qak4qe0nbbpf62uesu0fe8i68o83l4o7f6jcblefbla53fef7a63ts28fh6ql81o5c04j44g7m5rq9aouo73dpeprbl5lka8170
|
||||
receive : Tls ->{IO, Exception} Bytes
|
||||
|
||||
753. -- #ugs4208vpm97jr2ecmr7l9h4e22r1ije6v379m4v6229c8o7hk669ba63bor4pe6n1bm24il87iq2d99sj78lt6n5eqa1fre0grn93g
|
||||
754. -- #ugs4208vpm97jr2ecmr7l9h4e22r1ije6v379m4v6229c8o7hk669ba63bor4pe6n1bm24il87iq2d99sj78lt6n5eqa1fre0grn93g
|
||||
removeDirectory : Text ->{IO, Exception} ()
|
||||
|
||||
754. -- #6pia69u5u5rja1jk04v3i9ke24gf4b1t7vnaj0noogord6ekiqhf72qfkc1n08rd11f2cbkofni5rd5u7t1qkgslbi40hut35pfi1v0
|
||||
755. -- #6pia69u5u5rja1jk04v3i9ke24gf4b1t7vnaj0noogord6ekiqhf72qfkc1n08rd11f2cbkofni5rd5u7t1qkgslbi40hut35pfi1v0
|
||||
renameDirectory : Text -> Text ->{IO, Exception} ()
|
||||
|
||||
755. -- #amtsq2jq1k75r309esfp800a8slelm4d3q9i1pq1qqs3pil13at916958sf9ucb4607kpktbnup7nc58ecoq8mcs01e2a03d08agn18
|
||||
756. -- #amtsq2jq1k75r309esfp800a8slelm4d3q9i1pq1qqs3pil13at916958sf9ucb4607kpktbnup7nc58ecoq8mcs01e2a03d08agn18
|
||||
runTest : '{IO, TempDirs, Exception, Stream Result} a
|
||||
->{IO} [Result]
|
||||
|
||||
756. -- #va4fcp72qog4dvo8dn4gipr2i1big1lqgpcqfuv9kc98ut8le1bj23s68df7svam7b5sg01s4uf95o458f4rs90mtp71nj84t90ra1o
|
||||
757. -- #va4fcp72qog4dvo8dn4gipr2i1big1lqgpcqfuv9kc98ut8le1bj23s68df7svam7b5sg01s4uf95o458f4rs90mtp71nj84t90ra1o
|
||||
saveSelfContained : a -> Text ->{IO, Exception} ()
|
||||
|
||||
757. -- #5hbn4gflbo8l4jq0s9l1r0fpee6ie44fbbl6j6km67l25inaaq5avg18g7j6mig2m6eaod04smif7el34tcclvvf8oll39rfonupt2o
|
||||
758. -- #5hbn4gflbo8l4jq0s9l1r0fpee6ie44fbbl6j6km67l25inaaq5avg18g7j6mig2m6eaod04smif7el34tcclvvf8oll39rfonupt2o
|
||||
saveTestCase : Text
|
||||
-> (a -> Text)
|
||||
-> a
|
||||
->{IO, Exception} ()
|
||||
|
||||
758. -- #v2otbk1e0e81d6ea9i3j1kivnfam6rk6earsjbjljv4mmrk1mgfals6jhfd74evor6al9mkb5gv8hf15f02807f0aa0hnsg9fas1qco
|
||||
759. -- #v2otbk1e0e81d6ea9i3j1kivnfam6rk6earsjbjljv4mmrk1mgfals6jhfd74evor6al9mkb5gv8hf15f02807f0aa0hnsg9fas1qco
|
||||
seekHandle : Handle
|
||||
-> SeekMode
|
||||
-> Int
|
||||
->{IO, Exception} ()
|
||||
|
||||
759. -- #a98jlos4rj2um55iksdin9p5djo6j70qmuitoe2ff3uvkefb8pqensorln5flr3pm8hkc0lqkchbd63cf9tl0kqnqu3i17kvqnm35g0
|
||||
760. -- #a98jlos4rj2um55iksdin9p5djo6j70qmuitoe2ff3uvkefb8pqensorln5flr3pm8hkc0lqkchbd63cf9tl0kqnqu3i17kvqnm35g0
|
||||
send : Tls -> Bytes ->{IO, Exception} ()
|
||||
|
||||
760. -- #qrdia2sc9vuoi7u3a4ukjk8lv0rlhn2i2bbin1adbhcuj79jn366dv3a8t52hpil0jtgkhhuiavibmdev63j5ndriod33rkktjekqv8
|
||||
761. -- #qrdia2sc9vuoi7u3a4ukjk8lv0rlhn2i2bbin1adbhcuj79jn366dv3a8t52hpil0jtgkhhuiavibmdev63j5ndriod33rkktjekqv8
|
||||
serverSocket : Optional Text
|
||||
-> Text
|
||||
->{IO, Exception} Socket
|
||||
|
||||
761. -- #3vft70875p42eao55rhb61siobuei4h0e9vlu4bbgucjo296c2vfjpucacovnu9538tvup5c7lo9123se8v4fe7m8q9aiqbkjpumkao
|
||||
762. -- #3vft70875p42eao55rhb61siobuei4h0e9vlu4bbgucjo296c2vfjpucacovnu9538tvup5c7lo9123se8v4fe7m8q9aiqbkjpumkao
|
||||
setBuffering : Handle -> BufferMode ->{IO, Exception} ()
|
||||
|
||||
762. -- #erqshamlurgahpd4rroild36cc5e4rk56r38r53vcbg8cblr82c6gfji3um8f09ffgjlg58g7r32mtsbvjlcq4c65v0jn3va9888mao
|
||||
763. -- #erqshamlurgahpd4rroild36cc5e4rk56r38r53vcbg8cblr82c6gfji3um8f09ffgjlg58g7r32mtsbvjlcq4c65v0jn3va9888mao
|
||||
setEcho : Handle -> Boolean ->{IO, Exception} ()
|
||||
|
||||
763. -- #ugar51qqij4ur24frdi84eqdkvqa0fbsi4v6e2586hi3tai52ovtpm3f2dc9crnfv8pk0ppq6b5tv3utl4sl49n5aecorgkqddr7i38
|
||||
764. -- #ugar51qqij4ur24frdi84eqdkvqa0fbsi4v6e2586hi3tai52ovtpm3f2dc9crnfv8pk0ppq6b5tv3utl4sl49n5aecorgkqddr7i38
|
||||
snd : ∀ a a1. (a1, a) -> a
|
||||
|
||||
764. -- #leoq6smeq8to5ej3314uuujmh6rfbcsdb9q8ah8h3ohg9jq5kftc93mq671o0qh2he9vqgd288k0ecea3h7eerpbgjt6a8p843tmon8
|
||||
765. -- #leoq6smeq8to5ej3314uuujmh6rfbcsdb9q8ah8h3ohg9jq5kftc93mq671o0qh2he9vqgd288k0ecea3h7eerpbgjt6a8p843tmon8
|
||||
socketAccept : Socket ->{IO, Exception} Socket
|
||||
|
||||
765. -- #s43jbp19k91qq704tidpue2vs2re1lh4mtv46rdmdnurkdndst7u0k712entcvip160vh9cilmpamikmflbprg5up0k6cl15b8tr5l0
|
||||
766. -- #s43jbp19k91qq704tidpue2vs2re1lh4mtv46rdmdnurkdndst7u0k712entcvip160vh9cilmpamikmflbprg5up0k6cl15b8tr5l0
|
||||
socketPort : Socket ->{IO, Exception} Nat
|
||||
|
||||
766. -- #3rp8h0dt7g60nrjdehuhqga9dmomti5rdqho7r1rm5rg5moet7kt3ieempo7c9urur752njachq6k48ggbic4ugbbv75jl2mfbk57a0
|
||||
767. -- #3rp8h0dt7g60nrjdehuhqga9dmomti5rdqho7r1rm5rg5moet7kt3ieempo7c9urur752njachq6k48ggbic4ugbbv75jl2mfbk57a0
|
||||
startsWith : Text -> Text -> Boolean
|
||||
|
||||
767. -- #elsab3sc7p4c6bj73pgvklv0j7qu268rn5isv6micfp7ib8grjoustpqdq0pkd4a379mr5ijb8duu2q0n040osfurppp8pt8vaue2fo
|
||||
768. -- #elsab3sc7p4c6bj73pgvklv0j7qu268rn5isv6micfp7ib8grjoustpqdq0pkd4a379mr5ijb8duu2q0n040osfurppp8pt8vaue2fo
|
||||
stdout : Handle
|
||||
|
||||
768. -- #rfi1v9429f9qluv533l2iba77aadttilrpmnhljfapfnfa6sru2nr8ibpqvib9nc4s4nb9s1as45upsfqfqe6ivqi2p82b2vd866it8
|
||||
769. -- #rfi1v9429f9qluv533l2iba77aadttilrpmnhljfapfnfa6sru2nr8ibpqvib9nc4s4nb9s1as45upsfqfqe6ivqi2p82b2vd866it8
|
||||
structural ability Stream a
|
||||
|
||||
769. -- #2jl99er43tnksj8r8oveap5ger9uqlvj0u0ghfs0uqa7i6m45jk976n7a726jb7rtusjdu2p8hbbcgmoacvke7k5o3kdgoj57c3v2v8
|
||||
770. -- #2jl99er43tnksj8r8oveap5ger9uqlvj0u0ghfs0uqa7i6m45jk976n7a726jb7rtusjdu2p8hbbcgmoacvke7k5o3kdgoj57c3v2v8
|
||||
Stream.collect : '{e, Stream a} r ->{e} ([a], r)
|
||||
|
||||
770. -- #rnuje46fvuqa4a8sdgl9e250a2gcmhtsscr8bdonj2bduhrst38ur7dorv3ahr2ghf9cufkfit7ndh9qb9gspbfapcnn3sol0l2moqg
|
||||
771. -- #rnuje46fvuqa4a8sdgl9e250a2gcmhtsscr8bdonj2bduhrst38ur7dorv3ahr2ghf9cufkfit7ndh9qb9gspbfapcnn3sol0l2moqg
|
||||
Stream.collect.handler : Request {Stream a} r -> ([a], r)
|
||||
|
||||
771. -- #rfi1v9429f9qluv533l2iba77aadttilrpmnhljfapfnfa6sru2nr8ibpqvib9nc4s4nb9s1as45upsfqfqe6ivqi2p82b2vd866it8#0
|
||||
772. -- #rfi1v9429f9qluv533l2iba77aadttilrpmnhljfapfnfa6sru2nr8ibpqvib9nc4s4nb9s1as45upsfqfqe6ivqi2p82b2vd866it8#0
|
||||
Stream.emit : a ->{Stream a} ()
|
||||
|
||||
772. -- #c70gf5m1blvh8tg4kvt1taee036fr7r22bbtqcupac5r5igs102nj077vdl0nimef94u951kfcl9a5hcevo01j04v9o6v3cpndq41bo
|
||||
773. -- #c70gf5m1blvh8tg4kvt1taee036fr7r22bbtqcupac5r5igs102nj077vdl0nimef94u951kfcl9a5hcevo01j04v9o6v3cpndq41bo
|
||||
Stream.toList : '{Stream a} r -> [a]
|
||||
|
||||
773. -- #ul69cgsrsspjni8b0hqnt4kt4bk7sjtp6jvlhhofom7bemu9nb2kimm6tt1raigr7j86afgmnjnrfabn6a5l5v1t219uidiu22ueiv0
|
||||
774. -- #ul69cgsrsspjni8b0hqnt4kt4bk7sjtp6jvlhhofom7bemu9nb2kimm6tt1raigr7j86afgmnjnrfabn6a5l5v1t219uidiu22ueiv0
|
||||
Stream.toList.handler : Request {Stream a} r -> [a]
|
||||
|
||||
774. -- #58d8kfuq8sqbipa1aaijjhm28pa6a844h19mgg5s4a1h160etbulig21cm0pcnfla8fisqvrp80840g9luid5u8amvcc8sf46pd25h8
|
||||
775. -- #58d8kfuq8sqbipa1aaijjhm28pa6a844h19mgg5s4a1h160etbulig21cm0pcnfla8fisqvrp80840g9luid5u8amvcc8sf46pd25h8
|
||||
systemTime : '{IO, Exception} Nat
|
||||
|
||||
775. -- #11mhfqj6rts8lm3im7saf44tn3km5bboqtu1td0udnaiit4qqg6ar1ecmccosl6gufsnp6sug3vcmgapsc58sgj7dh7rg8msq2qkj18
|
||||
776. -- #11mhfqj6rts8lm3im7saf44tn3km5bboqtu1td0udnaiit4qqg6ar1ecmccosl6gufsnp6sug3vcmgapsc58sgj7dh7rg8msq2qkj18
|
||||
structural ability TempDirs
|
||||
|
||||
776. -- #11mhfqj6rts8lm3im7saf44tn3km5bboqtu1td0udnaiit4qqg6ar1ecmccosl6gufsnp6sug3vcmgapsc58sgj7dh7rg8msq2qkj18#0
|
||||
777. -- #11mhfqj6rts8lm3im7saf44tn3km5bboqtu1td0udnaiit4qqg6ar1ecmccosl6gufsnp6sug3vcmgapsc58sgj7dh7rg8msq2qkj18#0
|
||||
TempDirs.newTempDir : Text ->{TempDirs} Text
|
||||
|
||||
777. -- #11mhfqj6rts8lm3im7saf44tn3km5bboqtu1td0udnaiit4qqg6ar1ecmccosl6gufsnp6sug3vcmgapsc58sgj7dh7rg8msq2qkj18#1
|
||||
778. -- #11mhfqj6rts8lm3im7saf44tn3km5bboqtu1td0udnaiit4qqg6ar1ecmccosl6gufsnp6sug3vcmgapsc58sgj7dh7rg8msq2qkj18#1
|
||||
TempDirs.removeDir : Text ->{TempDirs} ()
|
||||
|
||||
778. -- #natgur73q6b4c3tp5jcor0v1cdnplh0n3fhm4qvhg4v74u3e3ff1352shs1lveot83lj82qqbl78n40qi9a132fhkmaa6g5s1ja91go
|
||||
779. -- #natgur73q6b4c3tp5jcor0v1cdnplh0n3fhm4qvhg4v74u3e3ff1352shs1lveot83lj82qqbl78n40qi9a132fhkmaa6g5s1ja91go
|
||||
terminate : Tls ->{IO, Exception} ()
|
||||
|
||||
779. -- #i3pbnc98rbfug5dnnvpd4uahm2e5fld2fu0re9r305isffr1r43048h7ql6ojdbjcsvjr6h91s6i026na046ltg5ff59klla6e7vq98
|
||||
780. -- #i3pbnc98rbfug5dnnvpd4uahm2e5fld2fu0re9r305isffr1r43048h7ql6ojdbjcsvjr6h91s6i026na046ltg5ff59klla6e7vq98
|
||||
testAutoClean : '{IO} [Result]
|
||||
|
||||
780. -- #spepthutvs3p6je794h520665rh8abl36qg43i7ipvj0mtg5sb0sbemjp2vpu9j3feithk2ae0sdtcmb8afoglo9rnvl350380t21h0
|
||||
781. -- #spepthutvs3p6je794h520665rh8abl36qg43i7ipvj0mtg5sb0sbemjp2vpu9j3feithk2ae0sdtcmb8afoglo9rnvl350380t21h0
|
||||
Text.fromUtf8 : Bytes ->{Exception} Text
|
||||
|
||||
781. -- #32q9jqhmi8f08pec3hj0je4u7k52f9f1hdfsmn9ncg2kpki5da9dabigplvdcot3a00k7s5npc4n78psd6ojaumqjla259e9pqd4ov8
|
||||
782. -- #32q9jqhmi8f08pec3hj0je4u7k52f9f1hdfsmn9ncg2kpki5da9dabigplvdcot3a00k7s5npc4n78psd6ojaumqjla259e9pqd4ov8
|
||||
structural ability Throw e
|
||||
|
||||
782. -- #32q9jqhmi8f08pec3hj0je4u7k52f9f1hdfsmn9ncg2kpki5da9dabigplvdcot3a00k7s5npc4n78psd6ojaumqjla259e9pqd4ov8#0
|
||||
783. -- #32q9jqhmi8f08pec3hj0je4u7k52f9f1hdfsmn9ncg2kpki5da9dabigplvdcot3a00k7s5npc4n78psd6ojaumqjla259e9pqd4ov8#0
|
||||
Throw.throw : e ->{Throw e} a
|
||||
|
||||
783. -- #vri6fsnl704n6aqs346p6ijcbkcsv9875edr6b74enumrhbjiuon94ir4ufmrrn84k9b2jka4f05o16mcvsjrjav6gpskpiu4sknd1g
|
||||
784. -- #vri6fsnl704n6aqs346p6ijcbkcsv9875edr6b74enumrhbjiuon94ir4ufmrrn84k9b2jka4f05o16mcvsjrjav6gpskpiu4sknd1g
|
||||
uncurry : ∀ o g1 i g i1.
|
||||
(i1 ->{g} i ->{g1} o) -> (i1, i) ->{g1, g} o
|
||||
|
||||
784. -- #u2j1bektndcqdo1m13fvu6apt9td96s4tqonelg23tauklak2pqnbisf41v632fmlrcc6f9orqo3iu9757q36ue5ol1khe0hh8pktro
|
||||
785. -- #u2j1bektndcqdo1m13fvu6apt9td96s4tqonelg23tauklak2pqnbisf41v632fmlrcc6f9orqo3iu9757q36ue5ol1khe0hh8pktro
|
||||
Value.transitiveDeps : Value ->{IO} [(Link.Term, Code)]
|
||||
|
||||
785. -- #o5bg5el7ckak28ib98j5b6rt26bqbprpddd1brrg3s18qahhbbe3uohufjjnt5eenvtjg0hrvnvpra95jmdppqrovvmcfm1ih2k7guo
|
||||
786. -- #o5bg5el7ckak28ib98j5b6rt26bqbprpddd1brrg3s18qahhbbe3uohufjjnt5eenvtjg0hrvnvpra95jmdppqrovvmcfm1ih2k7guo
|
||||
void : x -> ()
|
||||
|
||||
786. -- #8ugamqlp7a4g0dmbcvipqfi8gnuuj23pjbdfbof11naiun1qf8otjcap80epaom2kl9fv5rhjaudt4558n38dovrc0lhipubqjgm8mg
|
||||
787. -- #8ugamqlp7a4g0dmbcvipqfi8gnuuj23pjbdfbof11naiun1qf8otjcap80epaom2kl9fv5rhjaudt4558n38dovrc0lhipubqjgm8mg
|
||||
writeFile : Text -> Bytes ->{IO, Exception} ()
|
||||
|
||||
787. -- #lcmj2envm11lrflvvcl290lplhvbccv82utoej0lg0eomhmsf2vrv8af17k6if7ff98fp1b13rkseng3fng4stlr495c8dn3gn4k400
|
||||
788. -- #lcmj2envm11lrflvvcl290lplhvbccv82utoej0lg0eomhmsf2vrv8af17k6if7ff98fp1b13rkseng3fng4stlr495c8dn3gn4k400
|
||||
|> : a -> (a ->{g} t) ->{g} t
|
||||
|
||||
|
||||
|
@ -658,13 +658,14 @@ Let's try it!
|
||||
474. Universal.> : a -> a -> Boolean
|
||||
475. Universal.>= : a -> a -> Boolean
|
||||
476. Universal.compare : a -> a -> Int
|
||||
477. unsafe.coerceAbilities : (a ->{e1} b) -> a ->{e2} b
|
||||
478. builtin type Value
|
||||
479. Value.dependencies : Value -> [Term]
|
||||
480. Value.deserialize : Bytes -> Either Text Value
|
||||
481. Value.load : Value ->{IO} Either [Term] a
|
||||
482. Value.serialize : Value -> Bytes
|
||||
483. Value.value : a -> Value
|
||||
477. Universal.murmurHash : a -> Nat
|
||||
478. unsafe.coerceAbilities : (a ->{e1} b) -> a ->{e2} b
|
||||
479. builtin type Value
|
||||
480. Value.dependencies : Value -> [Term]
|
||||
481. Value.deserialize : Bytes -> Either Text Value
|
||||
482. Value.load : Value ->{IO} Either [Term] a
|
||||
483. Value.serialize : Value -> Bytes
|
||||
484. Value.value : a -> Value
|
||||
|
||||
|
||||
.builtin> alias.many 94-104 .mylib
|
||||
|
@ -69,7 +69,7 @@ The `builtins.merge` command adds the known builtins to a `builtin` subnamespace
|
||||
58. Tuple/ (1 term)
|
||||
59. Unit (type)
|
||||
60. Unit/ (1 term)
|
||||
61. Universal/ (6 terms)
|
||||
61. Universal/ (7 terms)
|
||||
62. Value (builtin type)
|
||||
63. Value/ (5 terms)
|
||||
64. bug (a -> b)
|
||||
|
@ -360,6 +360,19 @@ openFile]
|
||||
.> add
|
||||
```
|
||||
|
||||
## Universal hash functions
|
||||
|
||||
Just exercises the function
|
||||
|
||||
```unison
|
||||
> Universal.murmurHash 1
|
||||
test> Universal.murmurHash.tests = checks [Universal.murmurHash [1,2,3] == Universal.murmurHash [1,2,3]]
|
||||
```
|
||||
|
||||
```ucm:hide
|
||||
.> add
|
||||
```
|
||||
|
||||
## Run the tests
|
||||
|
||||
Now that all the tests have been added to the codebase, let's view the test report. This will fail the transcript (with a nice message) if any of the tests are failing.
|
||||
|
@ -378,6 +378,37 @@ openFile]
|
||||
|
||||
✅ Passed Passed
|
||||
|
||||
```
|
||||
## Universal hash functions
|
||||
|
||||
Just exercises the function
|
||||
|
||||
```unison
|
||||
> Universal.murmurHash 1
|
||||
test> Universal.murmurHash.tests = checks [Universal.murmurHash [1,2,3] == Universal.murmurHash [1,2,3]]
|
||||
```
|
||||
|
||||
```ucm
|
||||
|
||||
I found and typechecked these definitions in scratch.u. If you
|
||||
do an `add` or `update`, here's how your codebase would
|
||||
change:
|
||||
|
||||
⍟ These new definitions are ok to `add`:
|
||||
|
||||
Universal.murmurHash.tests : [Result]
|
||||
|
||||
Now evaluating any watch expressions (lines starting with
|
||||
`>`)... Ctrl+C cancels.
|
||||
|
||||
1 | > Universal.murmurHash 1
|
||||
⧩
|
||||
5006114823290027883
|
||||
|
||||
2 | test> Universal.murmurHash.tests = checks [Universal.murmurHash [1,2,3] == Universal.murmurHash [1,2,3]]
|
||||
|
||||
✅ Passed Passed
|
||||
|
||||
```
|
||||
## Run the tests
|
||||
|
||||
@ -411,8 +442,9 @@ Now that all the tests have been added to the codebase, let's view the test repo
|
||||
◉ Text.tests.patterns Passed
|
||||
◉ Text.tests.repeat Passed
|
||||
◉ Text.tests.takeDropAppend Passed
|
||||
◉ Universal.murmurHash.tests Passed
|
||||
|
||||
✅ 23 test(s) passing
|
||||
✅ 24 test(s) passing
|
||||
|
||||
Tip: Use view Any.test1 to view the source of a test.
|
||||
|
||||
|
@ -23,7 +23,7 @@ Technically, the definitions all exist, but they have no names. `builtins.merge`
|
||||
|
||||
.foo> ls
|
||||
|
||||
1. builtin/ (419 terms, 64 types)
|
||||
1. builtin/ (420 terms, 64 types)
|
||||
|
||||
```
|
||||
And for a limited time, you can get even more builtin goodies:
|
||||
@ -35,7 +35,7 @@ And for a limited time, you can get even more builtin goodies:
|
||||
|
||||
.foo> ls
|
||||
|
||||
1. builtin/ (591 terms, 82 types)
|
||||
1. builtin/ (592 terms, 82 types)
|
||||
|
||||
```
|
||||
More typically, you'd start out by pulling `base.
|
||||
|
@ -61,6 +61,11 @@ foo = with -- unclosed
|
||||
|
||||
### Matching
|
||||
|
||||
```unison:error
|
||||
-- No cases
|
||||
foo = match 1 with
|
||||
```
|
||||
|
||||
```unison:error
|
||||
foo = match 1 with
|
||||
2 -- no right-hand-side
|
||||
@ -73,6 +78,29 @@ foo = cases
|
||||
3 -> ()
|
||||
```
|
||||
|
||||
```unison:error
|
||||
-- Missing a '->'
|
||||
x = match Some a with
|
||||
None ->
|
||||
1
|
||||
Some _
|
||||
2
|
||||
```
|
||||
|
||||
```unison:error
|
||||
-- Missing patterns
|
||||
x = match Some a with
|
||||
None -> 1
|
||||
-> 2
|
||||
-> 3
|
||||
```
|
||||
|
||||
```unison:error
|
||||
-- Guards following an unguarded case
|
||||
x = match Some a with
|
||||
None -> 1
|
||||
| true -> 2
|
||||
```
|
||||
|
||||
### Watches
|
||||
|
||||
|
@ -162,20 +162,33 @@ foo = with -- unclosed
|
||||
### Matching
|
||||
|
||||
```unison
|
||||
-- No cases
|
||||
foo = match 1 with
|
||||
2 -- no right-hand-side
|
||||
```
|
||||
|
||||
```ucm
|
||||
|
||||
😶
|
||||
|
||||
I expected some patterns after a match / with but I didn't
|
||||
find any.
|
||||
I expected some patterns after a match / with or cases but I
|
||||
didn't find any.
|
||||
|
||||
1 | foo = match 1 with
|
||||
2 | foo = match 1 with
|
||||
|
||||
|
||||
```
|
||||
```unison
|
||||
foo = match 1 with
|
||||
2 -- no right-hand-side
|
||||
```
|
||||
|
||||
```ucm
|
||||
|
||||
offset=8:
|
||||
unexpected <outdent>
|
||||
expecting ",", case match, or pattern guard
|
||||
3 |
|
||||
|
||||
```
|
||||
```unison
|
||||
-- Mismatched arities
|
||||
@ -195,6 +208,56 @@ foo = cases
|
||||
4 | 3 -> ()
|
||||
|
||||
|
||||
```
|
||||
```unison
|
||||
-- Missing a '->'
|
||||
x = match Some a with
|
||||
None ->
|
||||
1
|
||||
Some _
|
||||
2
|
||||
```
|
||||
|
||||
```ucm
|
||||
|
||||
offset=16:
|
||||
unexpected <outdent>
|
||||
expecting ",", blank, case match, false, pattern guard, or true
|
||||
7 |
|
||||
|
||||
```
|
||||
```unison
|
||||
-- Missing patterns
|
||||
x = match Some a with
|
||||
None -> 1
|
||||
-> 2
|
||||
-> 3
|
||||
```
|
||||
|
||||
```ucm
|
||||
|
||||
offset=12:
|
||||
unexpected ->
|
||||
expecting newline or semicolon
|
||||
4 | -> 2
|
||||
|
||||
|
||||
```
|
||||
```unison
|
||||
-- Guards following an unguarded case
|
||||
x = match Some a with
|
||||
None -> 1
|
||||
| true -> 2
|
||||
```
|
||||
|
||||
```ucm
|
||||
|
||||
offset=12:
|
||||
unexpected |
|
||||
expecting newline or semicolon
|
||||
4 | | true -> 2
|
||||
|
||||
|
||||
```
|
||||
### Watches
|
||||
|
||||
|
@ -121,13 +121,13 @@ We can also delete the fork if we're done with it. (Don't worry, it's still in t
|
||||
Note: The most recent namespace hash is immediately below this
|
||||
message.
|
||||
|
||||
⊙ 1. #ss5rfipsc9
|
||||
⊙ 1. #1487pemruj
|
||||
|
||||
- Deletes:
|
||||
|
||||
feature1.y
|
||||
|
||||
⊙ 2. #pbsfditts0
|
||||
⊙ 2. #qdsgea37fc
|
||||
|
||||
+ Adds / updates:
|
||||
|
||||
@ -138,26 +138,26 @@ We can also delete the fork if we're done with it. (Don't worry, it's still in t
|
||||
Original name New name(s)
|
||||
feature1.y master.y
|
||||
|
||||
⊙ 3. #6vsh9eatk2
|
||||
⊙ 3. #ppkkh269f7
|
||||
|
||||
+ Adds / updates:
|
||||
|
||||
feature1.y
|
||||
|
||||
⊙ 4. #8q0ijp9unj
|
||||
⊙ 4. #u8aiheqfug
|
||||
|
||||
> Moves:
|
||||
|
||||
Original name New name
|
||||
x master.x
|
||||
|
||||
⊙ 5. #5ultfinuna
|
||||
⊙ 5. #es9cmc7kok
|
||||
|
||||
+ Adds / updates:
|
||||
|
||||
x
|
||||
|
||||
□ 6. #hsdh3pm9ua (start of history)
|
||||
□ 6. #jo7t8m4dft (start of history)
|
||||
|
||||
```
|
||||
To resurrect an old version of a namespace, you can learn its hash via the `history` command, then use `fork #namespacehash .newname`.
|
||||
|
@ -267,7 +267,7 @@ I should be able to move the root into a sub-namespace
|
||||
|
||||
.> ls
|
||||
|
||||
1. root/ (596 terms, 83 types)
|
||||
1. root/ (597 terms, 83 types)
|
||||
|
||||
.> history
|
||||
|
||||
@ -276,13 +276,13 @@ I should be able to move the root into a sub-namespace
|
||||
|
||||
|
||||
|
||||
□ 1. #trup0d2160 (start of history)
|
||||
□ 1. #eur72kuror (start of history)
|
||||
|
||||
```
|
||||
```ucm
|
||||
.> ls .root.at.path
|
||||
|
||||
1. builtin/ (591 terms, 82 types)
|
||||
1. builtin/ (592 terms, 82 types)
|
||||
2. existing/ (1 term)
|
||||
3. happy/ (3 terms, 1 type)
|
||||
4. history/ (1 term)
|
||||
@ -292,7 +292,7 @@ I should be able to move the root into a sub-namespace
|
||||
Note: The most recent namespace hash is immediately below this
|
||||
message.
|
||||
|
||||
⊙ 1. #dd8n885fue
|
||||
⊙ 1. #uu7qrred6m
|
||||
|
||||
- Deletes:
|
||||
|
||||
@ -303,7 +303,7 @@ I should be able to move the root into a sub-namespace
|
||||
Original name New name
|
||||
existing.a.termInA existing.b.termInA
|
||||
|
||||
⊙ 2. #k5g4ehotlf
|
||||
⊙ 2. #91mc5pd4t0
|
||||
|
||||
+ Adds / updates:
|
||||
|
||||
@ -315,26 +315,26 @@ I should be able to move the root into a sub-namespace
|
||||
happy.b.termInA existing.a.termInA
|
||||
history.b.termInA existing.a.termInA
|
||||
|
||||
⊙ 3. #aqijafrrrj
|
||||
⊙ 3. #ndr3vmlmv7
|
||||
|
||||
+ Adds / updates:
|
||||
|
||||
existing.a.termInA existing.b.termInB
|
||||
|
||||
⊙ 4. #el3jo3o2n3
|
||||
⊙ 4. #2jqg9n2e8u
|
||||
|
||||
> Moves:
|
||||
|
||||
Original name New name
|
||||
history.a.termInA history.b.termInA
|
||||
|
||||
⊙ 5. #io04ududm1
|
||||
⊙ 5. #dsj92ppiqi
|
||||
|
||||
- Deletes:
|
||||
|
||||
history.b.termInB
|
||||
|
||||
⊙ 6. #7u417uihfu
|
||||
⊙ 6. #n0a5seofan
|
||||
|
||||
+ Adds / updates:
|
||||
|
||||
@ -345,13 +345,13 @@ I should be able to move the root into a sub-namespace
|
||||
Original name New name(s)
|
||||
happy.b.termInA history.a.termInA
|
||||
|
||||
⊙ 7. #09p85hi2gq
|
||||
⊙ 7. #i3nsbtl7kc
|
||||
|
||||
+ Adds / updates:
|
||||
|
||||
history.a.termInA history.b.termInB
|
||||
|
||||
⊙ 8. #rqjb9hgqfn
|
||||
⊙ 8. #a2u0kep087
|
||||
|
||||
> Moves:
|
||||
|
||||
@ -361,7 +361,7 @@ I should be able to move the root into a sub-namespace
|
||||
happy.a.T.T2 happy.b.T.T2
|
||||
happy.a.termInA happy.b.termInA
|
||||
|
||||
⊙ 9. #11fgfgp2m2
|
||||
⊙ 9. #g18uf760mb
|
||||
|
||||
+ Adds / updates:
|
||||
|
||||
@ -371,7 +371,7 @@ I should be able to move the root into a sub-namespace
|
||||
|
||||
happy.a.T.T
|
||||
|
||||
⊙ 10. #627cdfv199
|
||||
⊙ 10. #2edl4803r1
|
||||
|
||||
+ Adds / updates:
|
||||
|
||||
@ -383,7 +383,7 @@ I should be able to move the root into a sub-namespace
|
||||
|
||||
⠇
|
||||
|
||||
⊙ 11. #5o3ve5br4l
|
||||
⊙ 11. #qcd5obbuv8
|
||||
|
||||
|
||||
```
|
||||
|
@ -1012,406 +1012,408 @@ d = c + 10
|
||||
354. builtin.io2.Clock.internals.monotonic : '{IO} Either
|
||||
Failure
|
||||
TimeSpec
|
||||
355. builtin.Int.negate : Int
|
||||
355. builtin.Universal.murmurHash : a
|
||||
-> Nat
|
||||
356. builtin.Int.negate : Int
|
||||
-> Int
|
||||
356. builtin.io2.MVar.new : a
|
||||
357. builtin.io2.MVar.new : a
|
||||
->{IO} MVar
|
||||
a
|
||||
357. builtin.io2.Promise.new : '{IO} Promise
|
||||
358. builtin.io2.Promise.new : '{IO} Promise
|
||||
a
|
||||
358. builtin.io2.TVar.new : a
|
||||
359. builtin.io2.TVar.new : a
|
||||
->{STM} TVar
|
||||
a
|
||||
359. builtin.io2.MVar.newEmpty : '{IO} MVar
|
||||
360. builtin.io2.MVar.newEmpty : '{IO} MVar
|
||||
a
|
||||
360. builtin.io2.TVar.newIO : a
|
||||
361. builtin.io2.TVar.newIO : a
|
||||
->{IO} TVar
|
||||
a
|
||||
361. builtin.Boolean.not : Boolean
|
||||
362. builtin.Boolean.not : Boolean
|
||||
-> Boolean
|
||||
362. builtin.Text.patterns.notCharIn : [Char]
|
||||
363. builtin.Text.patterns.notCharIn : [Char]
|
||||
-> Pattern
|
||||
Text
|
||||
363. builtin.Text.patterns.notCharRange : Char
|
||||
364. builtin.Text.patterns.notCharRange : Char
|
||||
-> Char
|
||||
-> Pattern
|
||||
Text
|
||||
364. builtin.io2.Clock.internals.nsec : TimeSpec
|
||||
365. builtin.io2.Clock.internals.nsec : TimeSpec
|
||||
-> Nat
|
||||
365. builtin.Int.or : Int
|
||||
366. builtin.Int.or : Int
|
||||
-> Int
|
||||
-> Int
|
||||
366. builtin.Nat.or : Nat
|
||||
367. builtin.Nat.or : Nat
|
||||
-> Nat
|
||||
-> Nat
|
||||
367. builtin.Pattern.or : Pattern
|
||||
368. builtin.Pattern.or : Pattern
|
||||
a
|
||||
-> Pattern
|
||||
a
|
||||
-> Pattern
|
||||
a
|
||||
368. builtin.Int.popCount : Int
|
||||
369. builtin.Int.popCount : Int
|
||||
-> Nat
|
||||
369. builtin.Nat.popCount : Nat
|
||||
370. builtin.Nat.popCount : Nat
|
||||
-> Nat
|
||||
370. builtin.Float.pow : Float
|
||||
371. builtin.Float.pow : Float
|
||||
-> Float
|
||||
-> Float
|
||||
371. builtin.Int.pow : Int
|
||||
372. builtin.Int.pow : Int
|
||||
-> Nat
|
||||
-> Int
|
||||
372. builtin.Nat.pow : Nat
|
||||
373. builtin.Nat.pow : Nat
|
||||
-> Nat
|
||||
-> Nat
|
||||
373. builtin.io2.Clock.internals.processCPUTime : '{IO} Either
|
||||
374. builtin.io2.Clock.internals.processCPUTime : '{IO} Either
|
||||
Failure
|
||||
TimeSpec
|
||||
374. builtin.Text.patterns.punctuation : Pattern
|
||||
375. builtin.Text.patterns.punctuation : Pattern
|
||||
Text
|
||||
375. builtin.ImmutableArray.read : ImmutableArray
|
||||
376. builtin.ImmutableArray.read : ImmutableArray
|
||||
a
|
||||
-> Nat
|
||||
->{Exception} a
|
||||
376. builtin.MutableArray.read : MutableArray
|
||||
377. builtin.MutableArray.read : MutableArray
|
||||
g a
|
||||
-> Nat
|
||||
->{g,
|
||||
Exception} a
|
||||
377. builtin.io2.Promise.read : Promise
|
||||
378. builtin.io2.Promise.read : Promise
|
||||
a
|
||||
->{IO} a
|
||||
378. builtin.Ref.read : Ref g a
|
||||
379. builtin.Ref.read : Ref g a
|
||||
->{g} a
|
||||
379. builtin.io2.TVar.read : TVar a
|
||||
380. builtin.io2.TVar.read : TVar a
|
||||
->{STM} a
|
||||
380. builtin.io2.Ref.Ticket.read : Ticket
|
||||
381. builtin.io2.Ref.Ticket.read : Ticket
|
||||
a
|
||||
-> a
|
||||
381. builtin.ImmutableByteArray.read16be : ImmutableByteArray
|
||||
382. builtin.ImmutableByteArray.read16be : ImmutableByteArray
|
||||
-> Nat
|
||||
->{Exception} Nat
|
||||
382. builtin.MutableByteArray.read16be : MutableByteArray
|
||||
383. builtin.MutableByteArray.read16be : MutableByteArray
|
||||
g
|
||||
-> Nat
|
||||
->{g,
|
||||
Exception} Nat
|
||||
383. builtin.ImmutableByteArray.read24be : ImmutableByteArray
|
||||
384. builtin.ImmutableByteArray.read24be : ImmutableByteArray
|
||||
-> Nat
|
||||
->{Exception} Nat
|
||||
384. builtin.MutableByteArray.read24be : MutableByteArray
|
||||
385. builtin.MutableByteArray.read24be : MutableByteArray
|
||||
g
|
||||
-> Nat
|
||||
->{g,
|
||||
Exception} Nat
|
||||
385. builtin.ImmutableByteArray.read32be : ImmutableByteArray
|
||||
386. builtin.ImmutableByteArray.read32be : ImmutableByteArray
|
||||
-> Nat
|
||||
->{Exception} Nat
|
||||
386. builtin.MutableByteArray.read32be : MutableByteArray
|
||||
387. builtin.MutableByteArray.read32be : MutableByteArray
|
||||
g
|
||||
-> Nat
|
||||
->{g,
|
||||
Exception} Nat
|
||||
387. builtin.ImmutableByteArray.read40be : ImmutableByteArray
|
||||
388. builtin.ImmutableByteArray.read40be : ImmutableByteArray
|
||||
-> Nat
|
||||
->{Exception} Nat
|
||||
388. builtin.MutableByteArray.read40be : MutableByteArray
|
||||
389. builtin.MutableByteArray.read40be : MutableByteArray
|
||||
g
|
||||
-> Nat
|
||||
->{g,
|
||||
Exception} Nat
|
||||
389. builtin.ImmutableByteArray.read64be : ImmutableByteArray
|
||||
390. builtin.ImmutableByteArray.read64be : ImmutableByteArray
|
||||
-> Nat
|
||||
->{Exception} Nat
|
||||
390. builtin.MutableByteArray.read64be : MutableByteArray
|
||||
391. builtin.MutableByteArray.read64be : MutableByteArray
|
||||
g
|
||||
-> Nat
|
||||
->{g,
|
||||
Exception} Nat
|
||||
391. builtin.ImmutableByteArray.read8 : ImmutableByteArray
|
||||
392. builtin.ImmutableByteArray.read8 : ImmutableByteArray
|
||||
-> Nat
|
||||
->{Exception} Nat
|
||||
392. builtin.MutableByteArray.read8 : MutableByteArray
|
||||
393. builtin.MutableByteArray.read8 : MutableByteArray
|
||||
g
|
||||
-> Nat
|
||||
->{g,
|
||||
Exception} Nat
|
||||
393. builtin.io2.Ref.readForCas : Ref
|
||||
394. builtin.io2.Ref.readForCas : Ref
|
||||
{IO} a
|
||||
->{IO} Ticket
|
||||
a
|
||||
394. builtin.io2.TVar.readIO : TVar a
|
||||
395. builtin.io2.TVar.readIO : TVar a
|
||||
->{IO} a
|
||||
395. builtin.io2.Clock.internals.realtime : '{IO} Either
|
||||
396. builtin.io2.Clock.internals.realtime : '{IO} Either
|
||||
Failure
|
||||
TimeSpec
|
||||
396. builtin.io2.IO.ref : a
|
||||
397. builtin.io2.IO.ref : a
|
||||
->{IO} Ref
|
||||
{IO} a
|
||||
397. builtin.Scope.ref : a
|
||||
398. builtin.Scope.ref : a
|
||||
->{Scope
|
||||
s} Ref
|
||||
{Scope
|
||||
s}
|
||||
a
|
||||
398. builtin.Text.repeat : Nat
|
||||
399. builtin.Text.repeat : Nat
|
||||
-> Text
|
||||
-> Text
|
||||
399. builtin.Pattern.replicate : Nat
|
||||
400. builtin.Pattern.replicate : Nat
|
||||
-> Nat
|
||||
-> Pattern
|
||||
a
|
||||
-> Pattern
|
||||
a
|
||||
400. builtin.io2.STM.retry : '{STM} a
|
||||
401. builtin.Text.reverse : Text
|
||||
401. builtin.io2.STM.retry : '{STM} a
|
||||
402. builtin.Text.reverse : Text
|
||||
-> Text
|
||||
402. builtin.Float.round : Float
|
||||
403. builtin.Float.round : Float
|
||||
-> Int
|
||||
403. builtin.Pattern.run : Pattern
|
||||
404. builtin.Pattern.run : Pattern
|
||||
a
|
||||
-> a
|
||||
-> Optional
|
||||
( [a],
|
||||
a)
|
||||
404. builtin.Scope.run : (∀ s.
|
||||
405. builtin.Scope.run : (∀ s.
|
||||
'{g,
|
||||
Scope s} r)
|
||||
->{g} r
|
||||
405. builtin.io2.Clock.internals.sec : TimeSpec
|
||||
406. builtin.io2.Clock.internals.sec : TimeSpec
|
||||
-> Int
|
||||
406. builtin.Code.serialize : Code
|
||||
407. builtin.Code.serialize : Code
|
||||
-> Bytes
|
||||
407. builtin.Value.serialize : Value
|
||||
408. builtin.Value.serialize : Value
|
||||
-> Bytes
|
||||
408. builtin.io2.Tls.ClientConfig.certificates.set : [SignedCert]
|
||||
409. builtin.io2.Tls.ClientConfig.certificates.set : [SignedCert]
|
||||
-> ClientConfig
|
||||
-> ClientConfig
|
||||
409. builtin.io2.Tls.ServerConfig.certificates.set : [SignedCert]
|
||||
410. builtin.io2.Tls.ServerConfig.certificates.set : [SignedCert]
|
||||
-> ServerConfig
|
||||
-> ServerConfig
|
||||
410. builtin.io2.TLS.ClientConfig.ciphers.set : [Cipher]
|
||||
411. builtin.io2.TLS.ClientConfig.ciphers.set : [Cipher]
|
||||
-> ClientConfig
|
||||
-> ClientConfig
|
||||
411. builtin.io2.Tls.ServerConfig.ciphers.set : [Cipher]
|
||||
412. builtin.io2.Tls.ServerConfig.ciphers.set : [Cipher]
|
||||
-> ServerConfig
|
||||
-> ServerConfig
|
||||
412. builtin.io2.Tls.ClientConfig.versions.set : [Version]
|
||||
413. builtin.io2.Tls.ClientConfig.versions.set : [Version]
|
||||
-> ClientConfig
|
||||
-> ClientConfig
|
||||
413. builtin.io2.Tls.ServerConfig.versions.set : [Version]
|
||||
414. builtin.io2.Tls.ServerConfig.versions.set : [Version]
|
||||
-> ServerConfig
|
||||
-> ServerConfig
|
||||
414. builtin.Int.shiftLeft : Int
|
||||
415. builtin.Int.shiftLeft : Int
|
||||
-> Nat
|
||||
-> Int
|
||||
415. builtin.Nat.shiftLeft : Nat
|
||||
416. builtin.Nat.shiftLeft : Nat
|
||||
-> Nat
|
||||
-> Nat
|
||||
416. builtin.Int.shiftRight : Int
|
||||
417. builtin.Int.shiftRight : Int
|
||||
-> Nat
|
||||
-> Int
|
||||
417. builtin.Nat.shiftRight : Nat
|
||||
418. builtin.Nat.shiftRight : Nat
|
||||
-> Nat
|
||||
-> Nat
|
||||
418. builtin.Int.signum : Int
|
||||
419. builtin.Int.signum : Int
|
||||
-> Int
|
||||
419. builtin.Float.sin : Float
|
||||
420. builtin.Float.sin : Float
|
||||
-> Float
|
||||
420. builtin.Float.sinh : Float
|
||||
421. builtin.Float.sinh : Float
|
||||
-> Float
|
||||
421. builtin.Bytes.size : Bytes
|
||||
422. builtin.Bytes.size : Bytes
|
||||
-> Nat
|
||||
422. builtin.ImmutableArray.size : ImmutableArray
|
||||
423. builtin.ImmutableArray.size : ImmutableArray
|
||||
a
|
||||
-> Nat
|
||||
423. builtin.ImmutableByteArray.size : ImmutableByteArray
|
||||
424. builtin.ImmutableByteArray.size : ImmutableByteArray
|
||||
-> Nat
|
||||
424. builtin.List.size : [a]
|
||||
425. builtin.List.size : [a]
|
||||
-> Nat
|
||||
425. builtin.MutableArray.size : MutableArray
|
||||
426. builtin.MutableArray.size : MutableArray
|
||||
g a
|
||||
-> Nat
|
||||
426. builtin.MutableByteArray.size : MutableByteArray
|
||||
427. builtin.MutableByteArray.size : MutableByteArray
|
||||
g
|
||||
-> Nat
|
||||
427. builtin.Text.size : Text
|
||||
428. builtin.Text.size : Text
|
||||
-> Nat
|
||||
428. builtin.Text.patterns.space : Pattern
|
||||
429. builtin.Text.patterns.space : Pattern
|
||||
Text
|
||||
429. builtin.Float.sqrt : Float
|
||||
430. builtin.Float.sqrt : Float
|
||||
-> Float
|
||||
430. builtin.io2.IO.process.start : Text
|
||||
431. builtin.io2.IO.process.start : Text
|
||||
-> [Text]
|
||||
->{IO} ( Handle,
|
||||
Handle,
|
||||
Handle,
|
||||
ProcessHandle)
|
||||
431. builtin.io2.IO.stdHandle : StdHandle
|
||||
432. builtin.io2.IO.stdHandle : StdHandle
|
||||
-> Handle
|
||||
432. builtin.Nat.sub : Nat
|
||||
433. builtin.Nat.sub : Nat
|
||||
-> Nat
|
||||
-> Int
|
||||
433. builtin.io2.TVar.swap : TVar a
|
||||
434. builtin.io2.TVar.swap : TVar a
|
||||
-> a
|
||||
->{STM} a
|
||||
434. builtin.io2.IO.systemTimeMicroseconds : '{IO} Int
|
||||
435. builtin.Bytes.take : Nat
|
||||
435. builtin.io2.IO.systemTimeMicroseconds : '{IO} Int
|
||||
436. builtin.Bytes.take : Nat
|
||||
-> Bytes
|
||||
-> Bytes
|
||||
436. builtin.List.take : Nat
|
||||
437. builtin.List.take : Nat
|
||||
-> [a]
|
||||
-> [a]
|
||||
437. builtin.Text.take : Nat
|
||||
438. builtin.Text.take : Nat
|
||||
-> Text
|
||||
-> Text
|
||||
438. builtin.Float.tan : Float
|
||||
439. builtin.Float.tan : Float
|
||||
-> Float
|
||||
439. builtin.Float.tanh : Float
|
||||
440. builtin.Float.tanh : Float
|
||||
-> Float
|
||||
440. builtin.io2.Clock.internals.threadCPUTime : '{IO} Either
|
||||
441. builtin.io2.Clock.internals.threadCPUTime : '{IO} Either
|
||||
Failure
|
||||
TimeSpec
|
||||
441. builtin.Bytes.toBase16 : Bytes
|
||||
442. builtin.Bytes.toBase16 : Bytes
|
||||
-> Bytes
|
||||
442. builtin.Bytes.toBase32 : Bytes
|
||||
443. builtin.Bytes.toBase32 : Bytes
|
||||
-> Bytes
|
||||
443. builtin.Bytes.toBase64 : Bytes
|
||||
444. builtin.Bytes.toBase64 : Bytes
|
||||
-> Bytes
|
||||
444. builtin.Bytes.toBase64UrlUnpadded : Bytes
|
||||
445. builtin.Bytes.toBase64UrlUnpadded : Bytes
|
||||
-> Bytes
|
||||
445. builtin.Text.toCharList : Text
|
||||
446. builtin.Text.toCharList : Text
|
||||
-> [Char]
|
||||
446. builtin.Int.toFloat : Int
|
||||
447. builtin.Int.toFloat : Int
|
||||
-> Float
|
||||
447. builtin.Nat.toFloat : Nat
|
||||
448. builtin.Nat.toFloat : Nat
|
||||
-> Float
|
||||
448. builtin.Nat.toInt : Nat
|
||||
449. builtin.Nat.toInt : Nat
|
||||
-> Int
|
||||
449. builtin.Bytes.toList : Bytes
|
||||
450. builtin.Bytes.toList : Bytes
|
||||
-> [Nat]
|
||||
450. builtin.Text.toLowercase : Text
|
||||
451. builtin.Text.toLowercase : Text
|
||||
-> Text
|
||||
451. builtin.Char.toNat : Char
|
||||
452. builtin.Char.toNat : Char
|
||||
-> Nat
|
||||
452. builtin.Float.toRepresentation : Float
|
||||
453. builtin.Float.toRepresentation : Float
|
||||
-> Nat
|
||||
453. builtin.Int.toRepresentation : Int
|
||||
454. builtin.Int.toRepresentation : Int
|
||||
-> Nat
|
||||
454. builtin.Char.toText : Char
|
||||
455. builtin.Char.toText : Char
|
||||
-> Text
|
||||
455. builtin.Debug.toText : a
|
||||
456. builtin.Debug.toText : a
|
||||
-> Optional
|
||||
(Either
|
||||
Text
|
||||
Text)
|
||||
456. builtin.Float.toText : Float
|
||||
457. builtin.Float.toText : Float
|
||||
-> Text
|
||||
457. builtin.Handle.toText : Handle
|
||||
458. builtin.Handle.toText : Handle
|
||||
-> Text
|
||||
458. builtin.Int.toText : Int
|
||||
459. builtin.Int.toText : Int
|
||||
-> Text
|
||||
459. builtin.Nat.toText : Nat
|
||||
460. builtin.Nat.toText : Nat
|
||||
-> Text
|
||||
460. builtin.Socket.toText : Socket
|
||||
461. builtin.Socket.toText : Socket
|
||||
-> Text
|
||||
461. builtin.Link.Term.toText : Term
|
||||
462. builtin.Link.Term.toText : Term
|
||||
-> Text
|
||||
462. builtin.ThreadId.toText : ThreadId
|
||||
463. builtin.ThreadId.toText : ThreadId
|
||||
-> Text
|
||||
463. builtin.Text.toUppercase : Text
|
||||
464. builtin.Text.toUppercase : Text
|
||||
-> Text
|
||||
464. builtin.Text.toUtf8 : Text
|
||||
465. builtin.Text.toUtf8 : Text
|
||||
-> Bytes
|
||||
465. builtin.todo : a -> b
|
||||
466. builtin.Debug.trace : Text
|
||||
466. builtin.todo : a -> b
|
||||
467. builtin.Debug.trace : Text
|
||||
-> a
|
||||
-> ()
|
||||
467. builtin.Int.trailingZeros : Int
|
||||
468. builtin.Int.trailingZeros : Int
|
||||
-> Nat
|
||||
468. builtin.Nat.trailingZeros : Nat
|
||||
469. builtin.Nat.trailingZeros : Nat
|
||||
-> Nat
|
||||
469. builtin.Float.truncate : Float
|
||||
470. builtin.Float.truncate : Float
|
||||
-> Int
|
||||
470. builtin.Int.truncate0 : Int
|
||||
471. builtin.Int.truncate0 : Int
|
||||
-> Nat
|
||||
471. builtin.io2.IO.tryEval : '{IO} a
|
||||
472. builtin.io2.IO.tryEval : '{IO} a
|
||||
->{IO,
|
||||
Exception} a
|
||||
472. builtin.io2.Promise.tryRead : Promise
|
||||
473. builtin.io2.Promise.tryRead : Promise
|
||||
a
|
||||
->{IO} Optional
|
||||
a
|
||||
473. builtin.io2.MVar.tryTake : MVar a
|
||||
474. builtin.io2.MVar.tryTake : MVar a
|
||||
->{IO} Optional
|
||||
a
|
||||
474. builtin.Text.uncons : Text
|
||||
475. builtin.Text.uncons : Text
|
||||
-> Optional
|
||||
( Char,
|
||||
Text)
|
||||
475. builtin.Any.unsafeExtract : Any
|
||||
476. builtin.Any.unsafeExtract : Any
|
||||
-> a
|
||||
476. builtin.Text.unsnoc : Text
|
||||
477. builtin.Text.unsnoc : Text
|
||||
-> Optional
|
||||
( Text,
|
||||
Char)
|
||||
477. builtin.Code.validate : [( Term,
|
||||
478. builtin.Code.validate : [( Term,
|
||||
Code)]
|
||||
->{IO} Optional
|
||||
Failure
|
||||
478. builtin.io2.validateSandboxed : [Term]
|
||||
479. builtin.io2.validateSandboxed : [Term]
|
||||
-> a
|
||||
-> Boolean
|
||||
479. builtin.Value.value : a
|
||||
480. builtin.Value.value : a
|
||||
-> Value
|
||||
480. builtin.io2.IO.process.wait : ProcessHandle
|
||||
481. builtin.io2.IO.process.wait : ProcessHandle
|
||||
->{IO} Nat
|
||||
481. builtin.Debug.watch : Text
|
||||
482. builtin.Debug.watch : Text
|
||||
-> a
|
||||
-> a
|
||||
482. builtin.MutableArray.write : MutableArray
|
||||
483. builtin.MutableArray.write : MutableArray
|
||||
g a
|
||||
-> Nat
|
||||
-> a
|
||||
->{g,
|
||||
Exception} ()
|
||||
483. builtin.io2.Promise.write : Promise
|
||||
484. builtin.io2.Promise.write : Promise
|
||||
a
|
||||
-> a
|
||||
->{IO} Boolean
|
||||
484. builtin.Ref.write : Ref g a
|
||||
485. builtin.Ref.write : Ref g a
|
||||
-> a
|
||||
->{g} ()
|
||||
485. builtin.io2.TVar.write : TVar a
|
||||
486. builtin.io2.TVar.write : TVar a
|
||||
-> a
|
||||
->{STM} ()
|
||||
486. builtin.MutableByteArray.write16be : MutableByteArray
|
||||
487. builtin.MutableByteArray.write16be : MutableByteArray
|
||||
g
|
||||
-> Nat
|
||||
-> Nat
|
||||
->{g,
|
||||
Exception} ()
|
||||
487. builtin.MutableByteArray.write32be : MutableByteArray
|
||||
488. builtin.MutableByteArray.write32be : MutableByteArray
|
||||
g
|
||||
-> Nat
|
||||
-> Nat
|
||||
->{g,
|
||||
Exception} ()
|
||||
488. builtin.MutableByteArray.write64be : MutableByteArray
|
||||
489. builtin.MutableByteArray.write64be : MutableByteArray
|
||||
g
|
||||
-> Nat
|
||||
-> Nat
|
||||
->{g,
|
||||
Exception} ()
|
||||
489. builtin.MutableByteArray.write8 : MutableByteArray
|
||||
490. builtin.MutableByteArray.write8 : MutableByteArray
|
||||
g
|
||||
-> Nat
|
||||
-> Nat
|
||||
->{g,
|
||||
Exception} ()
|
||||
490. builtin.Int.xor : Int
|
||||
491. builtin.Int.xor : Int
|
||||
-> Int
|
||||
-> Int
|
||||
491. builtin.Nat.xor : Nat
|
||||
492. builtin.Nat.xor : Nat
|
||||
-> Nat
|
||||
-> Nat
|
||||
|
||||
|
@ -59,17 +59,17 @@ y = 2
|
||||
most recent, along with the command that got us there. Try:
|
||||
|
||||
`fork 2 .old`
|
||||
`fork #bu6c7lmbfc .old` to make an old namespace
|
||||
`fork #2b8npf0tu2 .old` to make an old namespace
|
||||
accessible again,
|
||||
|
||||
`reset-root #bu6c7lmbfc` to reset the root namespace and
|
||||
`reset-root #2b8npf0tu2` to reset the root namespace and
|
||||
its history to that of the
|
||||
specified namespace.
|
||||
|
||||
When Root Hash Action
|
||||
1. now #cl7pneoh0i add
|
||||
2. now #bu6c7lmbfc add
|
||||
3. now #s0g21i3u0g builtins.merge
|
||||
1. now #j967usn5hk add
|
||||
2. now #2b8npf0tu2 add
|
||||
3. now #lv9og66mct builtins.merge
|
||||
4. #sg60bvjo91 history starts here
|
||||
|
||||
Tip: Use `diff.namespace 1 7` to compare namespaces between
|
||||
|
@ -13,7 +13,7 @@ Let's look at some examples. We'll start with a namespace with just the builtins
|
||||
|
||||
|
||||
|
||||
□ 1. #d8s9u1138r (start of history)
|
||||
□ 1. #a2uij441jg (start of history)
|
||||
|
||||
.> fork builtin builtin2
|
||||
|
||||
@ -42,21 +42,21 @@ Now suppose we `fork` a copy of builtin, then rename `Nat.+` to `frobnicate`, th
|
||||
Note: The most recent namespace hash is immediately below this
|
||||
message.
|
||||
|
||||
⊙ 1. #lb60fofgfp
|
||||
⊙ 1. #2orc0vqqcv
|
||||
|
||||
> Moves:
|
||||
|
||||
Original name New name
|
||||
Nat.frobnicate Nat.+
|
||||
|
||||
⊙ 2. #vn8dtrgv6r
|
||||
⊙ 2. #fk0nmiqqgk
|
||||
|
||||
> Moves:
|
||||
|
||||
Original name New name
|
||||
Nat.+ Nat.frobnicate
|
||||
|
||||
□ 3. #d8s9u1138r (start of history)
|
||||
□ 3. #a2uij441jg (start of history)
|
||||
|
||||
```
|
||||
If we merge that back into `builtin`, we get that same chain of history:
|
||||
@ -71,21 +71,21 @@ If we merge that back into `builtin`, we get that same chain of history:
|
||||
Note: The most recent namespace hash is immediately below this
|
||||
message.
|
||||
|
||||
⊙ 1. #lb60fofgfp
|
||||
⊙ 1. #2orc0vqqcv
|
||||
|
||||
> Moves:
|
||||
|
||||
Original name New name
|
||||
Nat.frobnicate Nat.+
|
||||
|
||||
⊙ 2. #vn8dtrgv6r
|
||||
⊙ 2. #fk0nmiqqgk
|
||||
|
||||
> Moves:
|
||||
|
||||
Original name New name
|
||||
Nat.+ Nat.frobnicate
|
||||
|
||||
□ 3. #d8s9u1138r (start of history)
|
||||
□ 3. #a2uij441jg (start of history)
|
||||
|
||||
```
|
||||
Let's try again, but using a `merge.squash` (or just `squash`) instead. The history will be unchanged:
|
||||
@ -106,7 +106,7 @@ Let's try again, but using a `merge.squash` (or just `squash`) instead. The hist
|
||||
|
||||
|
||||
|
||||
□ 1. #d8s9u1138r (start of history)
|
||||
□ 1. #a2uij441jg (start of history)
|
||||
|
||||
```
|
||||
The churn that happened in `mybuiltin` namespace ended up back in the same spot, so the squash merge of that namespace with our original namespace had no effect.
|
||||
@ -485,13 +485,13 @@ This checks to see that squashing correctly preserves deletions:
|
||||
Note: The most recent namespace hash is immediately below this
|
||||
message.
|
||||
|
||||
⊙ 1. #8i72q7ac2u
|
||||
⊙ 1. #9ijnd9ip7o
|
||||
|
||||
- Deletes:
|
||||
|
||||
Nat.* Nat.+
|
||||
|
||||
□ 2. #d8s9u1138r (start of history)
|
||||
□ 2. #a2uij441jg (start of history)
|
||||
|
||||
```
|
||||
Notice that `Nat.+` and `Nat.*` are deleted by the squash, and we see them deleted in one atomic step in the history.
|
||||
|
@ -108,7 +108,8 @@ data Error v
|
||||
| UnknownType (L.Token (HQ.HashQualified Name)) (Set Reference)
|
||||
| UnknownId (L.Token (HQ.HashQualified Name)) (Set Referent) (Set Reference)
|
||||
| ExpectedBlockOpen String (L.Token L.Lexeme)
|
||||
| EmptyMatch (L.Token ())
|
||||
| -- Indicates a cases or match/with which doesn't have any patterns
|
||||
EmptyMatch (L.Token ())
|
||||
| EmptyWatch Ann
|
||||
| UseInvalidPrefixSuffix (Either (L.Token Name) (L.Token Name)) (Maybe [L.Token Name])
|
||||
| UseEmpty (L.Token String) -- an empty `use` statement
|
||||
@ -238,7 +239,7 @@ importDotId = queryToken go
|
||||
|
||||
-- Consume a virtual semicolon
|
||||
semi :: Ord v => P v (L.Token ())
|
||||
semi = queryToken go
|
||||
semi = label "newline or semicolon" $ queryToken go
|
||||
where
|
||||
go (L.Semi _) = Just ()
|
||||
go _ = Nothing
|
||||
|
Loading…
Reference in New Issue
Block a user