2025/01/15

Newest at the top

2025-01-15 16:57:03 +0100 <tomsmeding> nobody said that the errors were _good_
2025-01-15 16:56:55 +0100 <yahb2> <interactive>:1:3: error: [GHC-18872] ; • Couldn't match type ‘Many’ with ‘One’ ; arising from multiplicity of ‘m’ ; • In the expression: (\ m -> return ()) :: IO () %1 -> IO ()
2025-01-15 16:56:55 +0100 <pounce> % :t (\m -> return ()) :: IO () %1-> IO ()
2025-01-15 16:56:45 +0100 <pounce> ty
2025-01-15 16:56:41 +0100 <tomsmeding> missing ::
2025-01-15 16:56:35 +0100 <yahb2> <interactive>:1:25: error: [GHC-58481] parse error on input ‘%’
2025-01-15 16:56:35 +0100 <pounce> % :t (\m -> return ()) IO () %1-> IO ()
2025-01-15 16:56:29 +0100 <pounce> oop
2025-01-15 16:56:29 +0100 <yahb2> <interactive>:37:28: error: [GHC-58481] parse error on input ‘%’
2025-01-15 16:56:29 +0100 <pounce> % t: (\m -> return ()) IO () %1-> IO ()
2025-01-15 16:55:40 +0100ystael(~ystael@user/ystael) ystael
2025-01-15 16:55:30 +0100 <int-e> every syntactic niche is occupied
2025-01-15 16:55:20 +0100 <tomsmeding> it has all the things
2025-01-15 16:55:20 +0100 <tomsmeding> Haskell is the new C++
2025-01-15 16:55:20 +0100ystael(~ystael@user/ystael) (Read error: Connection reset by peer)
2025-01-15 16:55:20 +0100 <yahb2> <interactive>:1:3: error: [GHC-18872] ; • Couldn't match type ‘Many’ with ‘One’ ; arising from multiplicity of ‘m’ ; • In the expression: (\ m -> m >> m) :: IO a %1 -> IO a
2025-01-15 16:55:20 +0100 <tomsmeding> % :t (\m -> m >> m) :: IO a %1-> IO a
2025-01-15 16:55:20 +0100 <yahb2> (\m -> m) :: IO a %1-> IO a :: forall a. IO a %1 -> IO a
2025-01-15 16:55:20 +0100 <tomsmeding> % :t (\m -> m) :: IO a %1-> IO a
2025-01-15 16:55:20 +0100 <yahb2> <interactive>:31:1: error: [GHC-39999] ; • No instance for ‘Show (IO a0 %1 -> IO a0)’ ; arising from a use of ‘Yahb2Defs.limitedPrint’ ; (maybe you haven't applied a function to...
2025-01-15 16:55:20 +0100 <tomsmeding> % (\m -> m) :: IO a %1-> IO a
2025-01-15 16:55:20 +0100 <pounce> yeah found those
2025-01-15 16:55:20 +0100 <yahb2> <no output>
2025-01-15 16:55:20 +0100 <tomsmeding> % :set -XLinearTypes
2025-01-15 16:54:13 +0100 <tomsmeding> https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/linear_types.html#extension-LinearT…
2025-01-15 16:54:13 +0100notzmv(~umar@user/notzmv) (Ping timeout: 265 seconds)
2025-01-15 16:54:00 +0100 <pounce> huh didn't know those existed
2025-01-15 16:53:31 +0100 <tomsmeding> pounce: M a %1-> M a
2025-01-15 16:53:11 +0100 <Leary> ... In any case, we have linear arrows; you can use them whenever you want to. Just try not to infect the rest of the typeverse.
2025-01-15 16:52:20 +0100 <tomsmeding> but no type system ever cared about that, did they
2025-01-15 16:51:55 +0100 <tomsmeding> and if we `m = take_money_out_of wallet >> put_money_back_in wallet`, then we can even `m >> m >> m` and the only thing that'll happen is that any spectators will be thinking "what's this person doing"
2025-01-15 16:50:52 +0100 <pounce> lol
2025-01-15 16:50:27 +0100 <tomsmeding> if your currency disappears the moment it leaves your wallet, I'm going to stay with mine that is more solid
2025-01-15 16:49:55 +0100 <tomsmeding> not if it's the same money you're putting back in
2025-01-15 16:49:49 +0100 <pounce> that would make money out of thin air
2025-01-15 16:48:11 +0100 <tomsmeding> pounce: no, but you can `take_money_out_of wallet >> put_money_back_in wallet`, and then you're still using the wallet twice. :)
2025-01-15 16:46:28 +0100 <pounce> tomsmeding: you think you can just `take_money_out_of_wallet >> take_money_out_of_wallet` hmm >_>
2025-01-15 16:43:18 +0100 <pounce> no it's probably right the continuation approach does seem useful at times
2025-01-15 16:43:09 +0100 <tomsmeding> then go wild!
2025-01-15 16:43:09 +0100 <tomsmeding> I think m >> m should be allowed :p
2025-01-15 16:42:39 +0100 <pounce> tomsmeding: original
2025-01-15 16:42:33 +0100 <pounce> i think type systems should be linear and m >> m shouldn't be allowed >_>
2025-01-15 16:42:16 +0100 <tomsmeding> of the original or of your fork?
2025-01-15 16:42:12 +0100swistak(~swistak@185.21.216.141)
2025-01-15 16:42:00 +0100pounceis now maintainer of this codebase
2025-01-15 16:41:42 +0100 <pounce> buh
2025-01-15 16:41:18 +0100 <Leary> s/In short,/E.g./
2025-01-15 16:40:08 +0100 <Leary> In short, `withAgda` could get cleanup code added to it later, and the change would only need to be made in the definition of `withAgda`, nowhere else.
2025-01-15 16:38:49 +0100 <Leary> It's more powerful. That's a bad thing in the sense that function signatures should be restrictive for ease of reasoning, but if you expect to actually need that power at some point, you can then use it without needing to refactor other code.
2025-01-15 16:38:38 +0100pavonia(~user@user/siracusa) (Quit: Bye!)