Home liberachat/#haskell: Logs Calendar

Logs on 2022-10-13 (liberachat/#haskell)

00:01:11 <EvanR> now I'm going to think about "somewhat late compilation"
00:01:47 <EvanR> better late than never might sound less snarky
00:07:35 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
00:09:16 × talismanick quits (~talismani@c-73-41-86-39.hsd1.ca.comcast.net) (Ping timeout: 268 seconds)
00:09:32 ec joins (~ec@gateway/tor-sasl/ec)
00:14:03 rockystone joins (~rocky@user/rockymarine)
00:18:33 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 268 seconds)
00:19:00 ryanbooker joins (uid4340@id-4340.hampstead.irccloud.com)
00:21:20 burnsidesLlama joins (~burnsides@client-8-86.eduroam.oxuni.org.uk)
00:23:28 × jmorris quits (uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
00:26:12 × burnsidesLlama quits (~burnsides@client-8-86.eduroam.oxuni.org.uk) (Ping timeout: 264 seconds)
00:27:52 × zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection)
00:28:46 perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
00:29:54 zaquest joins (~notzaques@5.130.79.72)
00:32:18 chymera joins (~chymera@ns1000526.ip-51-81-46.us)
00:35:25 rockystone joins (~rocky@user/rockymarine)
00:36:20 DDR joins (~DDR@2604:3d08:4c7f:8250:6d8e:9999:5eac:c5e)
00:36:21 × gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
00:39:56 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds)
00:40:17 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
00:40:18 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
00:41:00 Guest51 joins (~Guest51@205.175.106.233)
00:41:07 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
00:41:35 <chymera> hi guys, any idea how I can encode a url so that conduit can get stuff from it? http://dpaste.com/HYHY3FRV9
00:41:48 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
00:45:42 <Clint> chymera: what do you mean, "get stuff from it"
00:46:02 rockystone joins (~rocky@user/rockymarine)
00:46:28 <chymera> get the text which the URL returns
00:46:34 <chymera> Clint: ^
00:48:18 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:657b:163b:3e09:9614)
00:49:08 <Clint> chymera: so you want to do a GET request of https://wttr.in/?m&format=%t and get the response back as a lazy bytestring?
00:49:24 <chymera> Clint: yes :)
00:49:57 <Clint> so what happened with the code you commented out?
00:50:08 × Guest51 quits (~Guest51@205.175.106.233) (Quit: Client closed)
00:50:35 <jackdk> Oh, I thought we were streaming the URL itself ;-). Try `http-conduit` package, which gives you the response body as a conduit directly. `withResponse` seems like a good place to start. https://www.irccloud.com/pastebin/BsSUZulL/Foo.hs
00:51:52 <chymera> Clint: it doesn't like the method for some reason :( https://dpaste.com/7YLXQFHNF
00:52:21 <Clint> type mismatch
00:52:37 <Clint> the example code you're copying from probably uses OverloadedStrings
00:52:59 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:657b:163b:3e09:9614) (Ping timeout: 268 seconds)
00:54:03 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
00:54:43 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
00:54:59 <chymera> jackdk: right, but I don't just want to return the url string, I want to access the url and get the content of the page
00:55:10 burnsidesLlama joins (~burnsides@client-8-86.eduroam.oxuni.org.uk)
00:55:39 <jackdk> chymera: Yeah, the actually serious part of my response is the second half. Have a look at the `http-conduit` library
00:55:42 <chymera> Clint: so it wants a normal string, and for some reason `"GET"` in my code counts as a different variant of the string type which it doesn't like?
00:55:53 <jackdk> chymera: `{-# LANGUAGE OverloadedStrings #-}`
00:56:01 <jackdk> at the top of the file
00:56:40 <chymera> jackdk: I thought that's the package I was using when I was importing conduit
00:57:18 <jackdk> oh you are indeed. Yeah there are other functions in that Data.HTTP.Conduit module which give you the response body as an actual conduit
00:57:20 <chymera> oh, cool, thanks
00:57:32 <chymera> after adding `{-# LANGUAGE OverloadedStrings #-}` to the top of the file the error goes away
00:58:33 <jackdk> (I'm on a work call, so replies will be spotty from here on out)
00:59:03 _xor yawns and stretches
00:59:07 <_xor> All right, back to the grind.
00:59:09 <chymera> I now get the error I was initially encountering. This code http://dpaste.com/3H3WHZR5T gives me http://dpaste.com/BTJSEB6KL
00:59:37 <chymera> is there any way to auto-convert the link to the correct encoding?
00:59:46 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds)
01:00:03 <_xor> So what should I look into for vendoring dependencies for offline installation again? Someone mentioned 7.2 of the cabal docs. Looked at it earlier and I'm starting to get a better idea, but not fully clear.
01:01:23 × burnsidesLlama quits (~burnsides@client-8-86.eduroam.oxuni.org.uk) (Ping timeout: 252 seconds)
01:02:23 rockystone joins (~rocky@user/rockymarine)
01:02:44 <Axman6> chymera: does "https://wttr.in/?m" work?
01:04:17 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
01:04:17 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
01:04:17 wroathe joins (~wroathe@user/wroathe)
01:05:38 <Axman6> chymera: and what about "https://wttr.in/?m&format=%25t"?
01:06:10 ddellacosta joins (~ddellacos@143.244.47.69)
01:07:00 TonyStone joins (~TonyStone@cpe-74-76-51-197.nycap.res.rr.com)
01:15:59 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:657b:163b:3e09:9614)
01:19:04 <Axman6> anyone else ever wanted more succinct syntax for the `foo x y >>= \case ...` idiom?
01:19:48 <Axman6> I feel like I want something like `mcase foo x y of ...` but I also kinda hate that
01:21:49 <L29Ah> do you want an APL-like syntax for Haskell?
01:21:50 <geekosaur> funny, \case started out as that more succinct syntax
01:22:13 dsrt^ joins (~dsrt@c-76-17-6-165.hsd1.ga.comcast.net)
01:22:26 <EvanR> that form is nice, except that I use it once in a while and so I also have to scroll to the top of the file and put a language pragma
01:22:40 <EvanR> low thrust to weight ratio
01:26:04 <EvanR> imagine if C required you to put a pragma if you want to use break to break out of a loop, or you can use a goto + label to get the same effect
01:26:51 <EvanR> without a pragma
01:26:54 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 268 seconds)
01:27:25 frost joins (~frost@user/frost)
01:27:33 <Clint> i'd put the pragma
01:27:53 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Quit: Lost terminal)
01:29:59 <L29Ah> `#pragma bracket` plz
01:30:37 pragma- parts (~chaos@user/pragmatic-chaos) (Bye!)
01:32:16 <EvanR> editor macro to just put all the pragmas and includes you'll ever need... I guess I should have already done that
01:33:08 × xff0x quits (~xff0x@ai071162.d.east.v6connect.net) (Ping timeout: 268 seconds)
01:33:08 <Axman6> well, pragma just left
01:33:41 <EvanR> *pragma's not here*
01:35:09 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
01:36:07 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
01:37:01 burnsidesLlama joins (~burnsides@client-8-86.eduroam.oxuni.org.uk)
01:38:26 <chymera> Axman6: indeed, with those links I no longer get the error — but is there any way to get the percentage encoding done automatically?
01:39:11 frost20 joins (~frost@user/frost)
01:39:14 <chymera> also, the string I get and then print, actually doesn't contain what the page for that link would show 🤔 http://dpaste.com/GEWNW89CL
01:39:46 <chymera> any idea how I can actually “get” the string that appears in the page? i.e. what you would see in the browser or get with wget?
01:40:09 talismanick joins (~talismani@2601:200:c100:c9e0::1b0b)
01:41:46 × burnsidesLlama quits (~burnsides@client-8-86.eduroam.oxuni.org.uk) (Ping timeout: 268 seconds)
01:42:53 × frost quits (~frost@user/frost) (Ping timeout: 244 seconds)
01:43:06 <Axman6> that looks like logging to me
01:43:35 <Axman6> you're not actually fetching the data in https://dpaste.com/3H3WHZR5T
01:43:59 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Remote host closed the connection)
01:45:28 <Axman6> chymera: can you give some more clarity on what you actually want? your code is full of comments of several different ways to do things - I would lbs <- simpleHttp "https://wttr.in/?m&format=%t" to work, if you fix the encoding issues
01:45:28 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
01:45:29 nate1 joins (~nate@98.45.169.16)
01:45:44 <Axman6> do you want a Conduit? or do you want a Bytestring?
01:47:04 <chymera> I want a string, something like "+4°C" I'm not entirely sure what a condiut is
01:48:54 <chymera> Axman6: and re the “encoding issues”, is there any was for that to be done automatically? i.e. converting % to %25 or whatever else might be necesary?
01:51:41 × sudden quits (~cat@user/sudden) (Ping timeout: 260 seconds)
01:52:51 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds)
01:53:27 sudden joins (~cat@user/sudden)
01:54:33 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
01:54:39 × beteigeuze quits (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 268 seconds)
01:56:17 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
01:56:17 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
01:56:18 wroathe joins (~wroathe@user/wroathe)
01:57:13 rockystone joins (~rocky@user/rockymarine)
02:05:49 × thegeekinside quits (~thegeekin@189.180.7.159) (Ping timeout: 268 seconds)
02:09:28 burnsidesLlama joins (~burnsides@client-8-86.eduroam.oxuni.org.uk)
02:09:33 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 268 seconds)
02:12:34 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Remote host closed the connection)
02:13:32 <ski> EvanR : it does sound interesting. any pointers ?
02:13:46 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
02:15:04 × ddellacosta quits (~ddellacos@143.244.47.69) (Ping timeout: 268 seconds)
02:15:51 <ski> Axman6 : "anyone else ever wanted more succinct syntax for the `foo x y >>= \case ...` idiom?","I feel like I want something like `mcase foo x y of ...` but I also kinda hate that" -- yea, i believe my lexical/reflective effects syntax idea could help there
02:16:00 × burnsidesLlama quits (~burnsides@client-8-86.eduroam.oxuni.org.uk) (Ping timeout: 264 seconds)
02:17:31 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
02:18:02 <EvanR> on update frames? Not really... a random duck duck go reveals the sentence "The GC will remove indirections during copying, changing code that pointed to a indirection (evaluated thunk) to the actual value closure." on https://www.scs.stanford.edu/11au-cs240h/notes/ghc.html I feel like I should ask you for links to the secrets of ghc xD
02:18:27 <ski> well, where did you hear/read/learn about it ?
02:18:42 <EvanR> in here, from monochrom and dolio xD
02:18:57 <ski> ah, figures ;P
02:19:29 <EvanR> one day when I was trying to understand performance of something equivalent to the implementation of span
02:19:29 <ski> i know the GC can rewrite `fst (foo,bar)' to `foo'
02:20:09 <ski> (i forgot what this is called, but apparently that's one thing it can do, to try to avoid some kinds of space leaks)
02:22:14 jero98772 joins (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff)
02:22:17 <ski> (hm, looking at that sentence, i'm not sure if it's talking about the same thing i was recalling)
02:22:18 <EvanR> yeah and then elsewhere there is a snd (foo,bar)
02:22:23 <Clinton[m]> If I have:... (full message at <https://libera.ems.host/_matrix/media/r0/download/libera.chat/f57acdba2c4f0fd95e5d43b48a8ed0b96246242a>)
02:22:42 <monochrom> GC does both.
02:22:55 <EvanR> (I'm jumping to that conclusion because no there's no fst or snd, it looks like a pattern match to me)
02:23:27 <ski> @unmtl ReaderT r (EitherT e m) a -> ReaderT r m a
02:23:27 <lambdabot> ReaderT r (EitherT e m) a -> ReaderT r m a
02:23:29 <ski> @unmtl ReaderT r (EitherT e m) a
02:23:29 <lambdabot> r -> EitherT e m a
02:23:34 <ski> @unmtl ReaderT r m a
02:23:34 <lambdabot> r -> m a
02:23:36 <monochrom> They're also pretty orthogonal, I would think. Changing "fst (x,y)" to x does not require "fst (x,y)" to be evaluated.
02:24:20 <ski> so, effectively, you're asking about going from `f :: C e m => EitherT e m a -> m a' to `g :: C e m => (r -> EitherT e m a) -> (r -> m a)' .. can you see how to do this latter ?
02:24:31 <ski> Clinton[m] ^
02:24:36 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Remote host closed the connection)
02:25:36 <ski> EvanR : might work for all pattern-matches that merely select a field, i suppose
02:25:48 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
02:25:56 <Clinton[m]> ski: yes :) Silly me... I should really think of it like that shouldn't I. That's just `fmap` right?
02:27:01 <ski> well, technically yes .. but that reduces to something simpler, in the `r -> ...' case
02:27:46 ski idly wonders whether to decompose the problem more
02:27:53 <EvanR> the mysterious part is it seems like you have in one hand foo, and in the other hand bar. And the one evaluator is working on foo, seemingly works on bar with spooky action at a distance
02:28:13 <ski> "works" how, or in what sense ?
02:28:29 dr_merijn joins (~dr_merijn@86-86-29-250.fixed.kpn.net)
02:28:40 × td_ quits (~td@83.135.9.60) (Ping timeout: 268 seconds)
02:29:18 <EvanR> foo being the next thing to evaluate for the overall task, bar being based on the same list but starting later, will be needed after the foo
02:29:51 td_ joins (~td@83.135.9.55)
02:30:57 <EvanR> since they were created in the same tuple, can they be traversed together, allowing the list to be collected asap
02:31:19 <Clinton[m]> ski: `g = ReaderT . fmap f . runReaderT` yes? That is pretty.
02:31:50 <EvanR> s/can they/they can/
02:32:22 × raym quits (~aritra@user/raym) (Ping timeout: 268 seconds)
02:32:39 × jargon quits (~jargon@184.101.208.112) (Remote host closed the connection)
02:32:48 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
02:33:03 × dr_merijn quits (~dr_merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
02:33:13 Sgeo joins (~Sgeo@user/sgeo)
02:33:42 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:33:42 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
02:33:42 finn_elija is now known as FinnElija
02:35:31 <Axman6> ski: "lexical/reflective effects syntax"?
02:37:59 raym joins (~aritra@user/raym)
02:38:22 <EvanR> wow the asm code given for add x y = x + y + 2 on that page is... significant xD
02:38:35 <EvanR> where add :: Int -> Int -> Int
02:43:12 <Axman6> I feel like lexi-lambda's video released yesterday is a good companion to those slides
02:48:51 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds)
02:50:47 × terrorjack quits (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
02:52:09 terrorjack joins (~terrorjac@2a01:4f8:1c1e:509a::1)
02:55:11 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds)
03:00:08 rockystone joins (~rocky@user/rockymarine)
03:00:13 × jero98772 quits (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) (Remote host closed the connection)
03:00:54 <Clinton[m]> ski: I note I can write this helper function:... (full message at <https://libera.ems.host/_matrix/media/r0/download/libera.chat/6d251cfe1734ed0e5f870b5b0f9c6d9a87eb8624>)
03:01:18 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
03:02:05 razetime joins (~quassel@117.254.35.56)
03:02:47 Sgeo joins (~Sgeo@user/sgeo)
03:04:10 <Clinton[m]> Or something like this:
03:04:11 <Clinton[m]> ```
03:04:11 <Clinton[m]> (m a -> n a) -> (t m a -> t n a)
03:04:11 <Clinton[m]> ```
03:05:31 thegreek1 joins (~Zorba@2001:df2:c900:2411:31ff:ef5:2cc0:1cdd)
03:07:06 <jackdk> Clinton[m]: `mmorph:Control.Monad.Morph.hoist`?
03:07:15 jargon joins (~jargon@184.101.208.112)
03:09:52 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
03:12:36 <ski> Axman6 : i've talked about it in here before, on several occasions. last was slightly over two weeks ago, see <https://ircbrowse.tomsmeding.com/day/lchaskell/2022/09/28>. conversation with enoq ended up with me briefly summarizing it
03:13:02 <ski> Axman6 : video link ?
03:14:00 <ski> @type mapReaderT -- Clinton[m] ?
03:14:01 <lambdabot> (m a -> n b) -> ReaderT r m a -> ReaderT r n b
03:15:46 <ski> but yea, `hoist' is sorta similar, would (also) work for Clinton[m] original question, but not for the new helper in the paste above
03:16:03 <probie> Is there a way to have a newtype that's somewhat like a GADT? Something like `newtype Foo a where Foo :: Int -> Foo Bar`. The best I can come up with abusing pattern synonyms over `newtype Foo a = FooInternal Int`
03:16:54 <ski> i've wanted that, at times .. sometimes with more than one constructor (with non-overlapping indices)
03:18:05 <ski> i think currently, phantoms, enhanced by pattern synonyms, are probably your best bet
03:19:13 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 258 seconds)
03:19:17 <ski> (at one point, people did just phantoms, to try to simulate some of the effects of GADTs .. possibly together with some `unsafeCoerce's)
03:19:33 chexum joins (~quassel@gateway/tor-sasl/chexum)
03:20:05 × thegreek1 quits (~Zorba@2001:df2:c900:2411:31ff:ef5:2cc0:1cdd) (Quit: WeeChat 3.7)
03:23:30 <ski> (with a normal `data' GADT, you can learn the indices by matching on the data constructor. but what i was talking about is more like a variant where you're only allowed to math on a data constructor if the indices are already known to match. (cf. a pattern-matching function (perhaps recursive), returning a type, in a dependent language, as opposed to an indexed `data' family, the latter is more like GADTs).
03:23:36 <ski> then one could have a `newtype' variant of *that* alternative kind of data type with concrete indices, that allowed multiple alternatives, as long as there were no overlap)
03:24:58 × johnw quits (~johnw@2600:1700:cf00:db0:b1b8:33de:e15a:f4eb) (Quit: ZNC - http://znc.in)
03:26:01 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 268 seconds)
03:26:21 <ski> (sometimes i've wondered if there'sn't a similarity between GADTs / indexed families vs. these "look inside only if indices match" types, and predicates/relations in logic programming with output parameters (perhaps like bottom-up deductive database even) vs. input parameters ..)
03:26:44 <Clinton[m]> jackdk: hoist is what I was looking for! Thanks!
03:27:06 <ski> Clinton[m] : also see my suggestion
03:27:10 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds)
03:27:51 <ski> there's also `mapWriterT',`mapStateT',`mapContT',`mapRWST'
03:27:59 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
03:27:59 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
03:27:59 wroathe joins (~wroathe@user/wroathe)
03:28:54 <Clinton[m]> Ah, so `hoist` is just a typeclass that generalises `mapBlahT`?
03:29:06 rockystone joins (~rocky@user/rockymarine)
03:29:07 <ski> .. sortof, but not quite ?
03:29:14 <ski> note that `hoist' is rank-2
03:29:20 <ski> while the ones i mentioned aren't
03:29:34 <ski> @type mapWriterT
03:29:35 <lambdabot> (m (a, w) -> n (b, w')) -> WriterT w m a -> WriterT w' n b
03:29:39 <ski> @type mapStateT
03:29:40 <Clinton[m]> ski: I'm not sure I understand, but I think all I needed was `mapReaderT` or more generally, `hoist`?
03:29:41 <lambdabot> (m (a, s) -> n (b, s)) -> StateT s m a -> StateT s n b
03:30:04 <ski> note that these expose "implementation details" of the insides of these monad transformers
03:30:22 <ski> (well, they're considered pretty public .. but you get the idea, i hope)
03:30:41 <ski> rank-2 can be used for information hiding, hiding which particular type you're going to pick
03:31:25 <ski> so, `hoist' goes `(forall x. m x -> n x) -> ..m..n..' preventing you from seeing (and taking advantage of, messing with) which insides of `m' and `n' it'll use
03:32:19 <ski> Clinton[m] : in your specific case, `mapReaderT' would be the less powerful hammer to use. but it's good to be aware of `hoist', if you need it
03:32:41 <ski> and sometimes this encapsulation of implementation details thing is specifically what you'd like
03:33:01 <Axman6> ski: https://www.youtube.com/watch?v=fdyh3YQ-ZWI (also ping EvanR)
03:33:07 <ski> ty
03:34:42 <Clinton[m]> ski: ah, so I think in my question I need `hoist`. I'm confusing myself here. But I'm actually using `bmap` from barbies here, so yes, hoist is doing the job. I'm mapping over a rank2 type parameter.
03:35:49 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
03:36:17 <ski> Clinton[m] : also note that `hoist' is `(forall x. m x -> n x) -> (forall a. t m a -> t n a)', while the pattern of these `mapBlahT's are `(m (Something par0 .. a0) -> n (Something par1 .. a1)) -> (BlahT par0 .. m a0 -> BlahT par1 .. m a1)'
03:37:07 <ski> Clinton[m] : so, with `mapBlahT' you can change not only `m' to `n', but also `a0' to `a1', and also (in some cases), `par0',.. to `par1',..
03:37:48 <ski> Clinton[m] : while with `hoist', you can only change `m' to `n', can't change `a' (since the callback only sees an opaque `x', which it also isn't allowed to change)
03:38:31 <ski> (while this restriction in power of `hoist' also gives more guarantees. "can't mess around with the `x', nor with the `par',.. parts")
03:40:27 <Clinton[m]> ski: ah, good point. But in my case that's exactly what I want. I think I just confused myself between the rank1 and rank2 kinds.
03:40:27 <Clinton[m]> The current codebase I've got has things like `BlahService m`, where `m` is a Monad. So I want to transform the monad type to compose these services more easily. It's actually working nicely once I wrap my head around it.
03:40:47 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds)
03:41:43 <ski> (also, the obvious that `hoist' is a general pattern, that you can opt your transformer into, while `mapBlahT's are ad hoc)
03:41:48 elbear joins (~lucian@188.24.138.239)
03:41:59 × raym quits (~aritra@user/raym) (Ping timeout: 252 seconds)
03:46:16 × elbear quits (~lucian@188.24.138.239) (Ping timeout: 268 seconds)
03:46:17 × Vajb quits (~Vajb@85-76-75-28-nat.elisa-mobile.fi) (Read error: Connection reset by peer)
03:47:23 Vajb joins (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi)
03:48:53 raym joins (~aritra@user/raym)
03:54:20 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
03:56:44 × ryanbooker quits (uid4340@id-4340.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
04:03:18 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
04:06:39 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Remote host closed the connection)
04:08:41 <EvanR> Axman6, exitification transformation
04:09:27 <EvanR> learned about a new transformation thanks
04:11:18 elbear joins (~lucian@188.24.138.239)
04:13:39 WDAGUtilityAccou joins (~WDAGUtili@185.175.89.9)
04:16:05 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 252 seconds)
04:17:28 × WDAGUtilityAccou quits (~WDAGUtili@185.175.89.9) (Quit: Leaving)
04:18:24 × elbear quits (~lucian@188.24.138.239) (Ping timeout: 264 seconds)
04:22:17 <EvanR> some source of update frames, literally https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/rts/haskell-execution/updates
04:22:26 <EvanR> s/of/on/
04:28:15 mbuf joins (~Shakthi@49.205.80.14)
04:28:58 × Vajb quits (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer)
04:29:47 Vajb joins (~Vajb@2001:999:504:1841:9e47:1ec7:a52e:1d57)
04:33:13 elbear joins (~lucian@188.24.138.239)
04:45:47 nate1 joins (~nate@98.45.169.16)
04:50:11 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 252 seconds)
04:55:42 × forell quits (~forell@user/forell) (Quit: ZNC - https://znc.in)
04:56:59 forell joins (~forell@user/forell)
04:58:01 × phma quits (~phma@host-67-44-208-113.hnremote.net) (Read error: Connection reset by peer)
04:58:55 phma joins (phma@2001:5b0:211f:2d8:cb19:bdbc:6195:cb49)
04:59:45 × erisco quits (~erisco@d24-57-249-233.home.cgocable.net) (Ping timeout: 250 seconds)
05:01:19 erisco joins (~erisco@d24-57-249-233.home.cgocable.net)
05:04:36 × raym quits (~aritra@user/raym) (Ping timeout: 268 seconds)
05:13:49 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
05:19:55 raym joins (~aritra@user/raym)
05:25:47 chomwitt joins (~chomwitt@2a02:587:dc0c:c200:a0a8:ed7f:a699:91a5)
05:27:25 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds)
05:36:48 × dsrt^ quits (~dsrt@c-76-17-6-165.hsd1.ga.comcast.net) (Remote host closed the connection)
05:47:39 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
05:48:21 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
05:50:14 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds)
05:51:03 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 252 seconds)
05:52:09 rockystone joins (~rocky@user/rockymarine)
05:52:39 burnsidesLlama joins (~burnsides@client-8-86.eduroam.oxuni.org.uk)
06:05:33 kenran joins (~user@user/kenran)
06:08:10 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 268 seconds)
06:08:48 azimut joins (~azimut@gateway/tor-sasl/azimut)
06:11:04 rockystone joins (~rocky@user/rockymarine)
06:12:45 × burnsidesLlama quits (~burnsides@client-8-86.eduroam.oxuni.org.uk) (Remote host closed the connection)
06:16:00 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 264 seconds)
06:17:23 Sgeo joins (~Sgeo@user/sgeo)
06:19:46 rockystone joins (~rocky@user/rockymarine)
06:21:07 × elbear quits (~lucian@188.24.138.239) (Ping timeout: 268 seconds)
06:23:03 elbear joins (~lucian@188.24.138.239)
06:32:12 × raym quits (~aritra@user/raym) (Ping timeout: 264 seconds)
06:32:51 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 260 seconds)
06:32:53 raym joins (~aritra@user/raym)
06:37:55 cyphase joins (~cyphase@user/cyphase)
06:48:33 thegreek joins (~weechat@2001:df2:c900:2411:cd6e:df38:d95b:81df)
06:48:37 lortabac joins (~lortabac@2a01:e0a:541:b8f0:4590:bf86:dae:5953)
06:49:01 thegreek is now known as greek
06:51:21 chele joins (~chele@user/chele)
06:51:35 gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de)
06:52:32 mncheck joins (~mncheck@193.224.205.254)
06:52:49 × DDR quits (~DDR@2604:3d08:4c7f:8250:6d8e:9999:5eac:c5e) (Ping timeout: 246 seconds)
07:01:21 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:657b:163b:3e09:9614) (Remote host closed the connection)
07:04:38 acidjnk joins (~acidjnk@p200300d6e7137a05a9f86c9a51dbffe8.dip0.t-ipconnect.de)
07:10:11 × greek quits (~weechat@2001:df2:c900:2411:cd6e:df38:d95b:81df) (Ping timeout: 260 seconds)
07:17:20 MajorBiscuit joins (~MajorBisc@c-001-029-026.client.tudelft.eduvpn.nl)
07:20:19 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 268 seconds)
07:25:07 odnes joins (~odnes@5-203-132-149.pat.nym.cosmote.net)
07:25:30 × odnes quits (~odnes@5-203-132-149.pat.nym.cosmote.net) (Remote host closed the connection)
07:29:45 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
07:31:52 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
07:41:03 × loras quits (~loras@c-73-139-125-125.hsd1.fl.comcast.net) (Read error: Connection reset by peer)
07:50:21 yvan-sraka joins (~yvan-srak@2a01:c23:648c:6900:acbf:e677:c3f9:3dda)
07:50:24 × yvan-sraka quits (~yvan-srak@2a01:c23:648c:6900:acbf:e677:c3f9:3dda) (Remote host closed the connection)
07:51:51 yvan-sraka joins (~yvan-srak@2a01:c23:648c:6900:acbf:e677:c3f9:3dda)
07:53:10 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
07:56:26 × FragByte quits (~christian@user/fragbyte) (Quit: Quit)
07:58:02 burnsidesLlama joins (~burnsides@client-8-66.eduroam.oxuni.org.uk)
07:58:28 FragByte joins (~christian@user/fragbyte)
07:59:46 <dminuoso> Mmm. traverse produces an infinite loop, while traverse_ does not *scratches his head*
08:00:23 <dminuoso> Even with `traverse (\s -> pure ()) ms` it loops
08:01:01 <dminuoso> Is this potentially a faulty <*> implementation?
08:01:39 <dminuoso> Oh wow! I just did not define it haha.
08:01:50 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:657b:163b:3e09:9614)
08:01:56 fserucas joins (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
08:02:12 <dminuoso> Time to turn missing methods into an actual error.
08:04:58 × wagle quits (~wagle@quassel.wagle.io) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
08:05:28 wagle joins (~wagle@quassel.wagle.io)
08:06:46 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:657b:163b:3e09:9614) (Ping timeout: 260 seconds)
08:11:34 × razetime quits (~quassel@117.254.35.56) (Ping timeout: 246 seconds)
08:13:39 takuan joins (~takuan@178-116-218-225.access.telenet.be)
08:15:33 mastarija joins (~mastarija@2a05:4f46:e03:6000:2548:1250:b361:3427)
08:16:05 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
08:19:00 × talismanick quits (~talismani@2601:200:c100:c9e0::1b0b) (Ping timeout: 264 seconds)
08:19:40 freeside joins (~mengwong@202.161.55.11)
08:24:02 × yvan-sraka quits (~yvan-srak@2a01:c23:648c:6900:acbf:e677:c3f9:3dda) (Remote host closed the connection)
08:27:20 razetime joins (~quassel@117.254.35.56)
08:44:32 × ft quits (~ft@p3e9bc57b.dip0.t-ipconnect.de) (Quit: leaving)
08:47:00 nate1 joins (~nate@98.45.169.16)
08:52:00 michalz joins (~michalz@185.246.207.200)
08:52:18 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 264 seconds)
08:55:01 <tomsmeding> dminuoso: wait how did a missing method turn into anythin else than an error?
08:55:11 <tomsmeding> (a runtime error, I mean)
08:57:11 × burnsidesLlama quits (~burnsides@client-8-66.eduroam.oxuni.org.uk) (Remote host closed the connection)
08:58:43 × shriekingnoise quits (~shrieking@186.137.167.202) (Quit: Quit)
09:00:23 <dminuoso> tomsmeding: (<*>) = liftA2 id; liftA2 f x = (<*>) (fmap f x)
09:00:32 <tomsmeding> lol
09:00:58 <tomsmeding> surely violating MINIMAL yields a ghc warning
09:01:17 <dminuoso> Yeah, but Im doing a huge rewrite. There's warnings for unused things all over the place.
09:01:23 <tomsmeding> ah
09:04:30 burnsidesLlama joins (~burnsides@client-8-66.eduroam.oxuni.org.uk)
09:04:33 teo joins (~teo@user/teo)
09:11:35 mastarija_ joins (~mastarija@2a05:4f46:e03:6000:fd36:f5e5:8056:5d1a)
09:15:35 × mastarija quits (~mastarija@2a05:4f46:e03:6000:2548:1250:b361:3427) (Ping timeout: 268 seconds)
09:17:40 thyriaen joins (~thyriaen@2a01:aea0:dd4:4708:6245:cbff:fe9f:48b1)
09:17:58 × burnsidesLlama quits (~burnsides@client-8-66.eduroam.oxuni.org.uk) (Remote host closed the connection)
09:21:50 Midjak joins (~Midjak@82.66.147.146)
09:23:00 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 258 seconds)
09:23:18 burnsidesLlama joins (~burnsides@client-8-66.eduroam.oxuni.org.uk)
09:23:41 × elbear quits (~lucian@188.24.138.239) (Ping timeout: 268 seconds)
09:25:07 CiaoSen joins (~Jura@p200300c95700eb002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
09:25:24 jpds joins (~jpds@gateway/tor-sasl/jpds)
09:28:09 elbear joins (~lucian@188.24.138.239)
09:33:15 × freeside quits (~mengwong@202.161.55.11) (Ping timeout: 252 seconds)
09:36:58 wonko joins (~wjc@2a0e:1c80:2:0:45:15:19:130)
09:41:41 × _xor quits (~xor@74.215.182.83) (Ping timeout: 252 seconds)
09:43:14 _xor joins (~xor@74.215.182.83)
09:46:00 × _xor quits (~xor@74.215.182.83) (Read error: Connection reset by peer)
09:48:38 × frost20 quits (~frost@user/frost) (Quit: Client closed)
09:53:32 _xor joins (~xor@74.215.182.83)
09:53:43 beteigeuze joins (~Thunderbi@2001:8a0:61b5:6101:f0c:e4e3:bfdc:91df)
09:55:36 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 264 seconds)
09:55:57 nschoe joins (~q@141.101.51.197)
09:57:00 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
09:57:05 × gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
10:04:25 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds)
10:05:58 × ByronJohnson quits (~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (Ping timeout: 240 seconds)
10:06:05 ByronJohnson joins (~bairyn@50-250-232-19-static.hfc.comcastbusiness.net)
10:07:43 zeenk joins (~zeenk@2a02:2f04:a20a:3e00:5712:52b0:ca1d:bc63)
10:08:42 × elbear quits (~lucian@188.24.138.239) (Ping timeout: 268 seconds)
10:09:41 cfricke joins (~cfricke@user/cfricke)
10:10:57 × kenran quits (~user@user/kenran) (Remote host closed the connection)
10:12:28 × mncheck quits (~mncheck@193.224.205.254) (Read error: Connection reset by peer)
10:18:08 yuzhao joins (~yuzhao@36.112.45.73)
10:21:13 raehik1 joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
10:40:40 gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de)
10:41:21 × MajorBiscuit quits (~MajorBisc@c-001-029-026.client.tudelft.eduvpn.nl) (Ping timeout: 268 seconds)
10:53:23 × burnsidesLlama quits (~burnsides@client-8-66.eduroam.oxuni.org.uk) (Remote host closed the connection)
10:58:18 × acidjnk quits (~acidjnk@p200300d6e7137a05a9f86c9a51dbffe8.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
11:01:08 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
11:04:25 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:657b:163b:3e09:9614)
11:05:00 acidjnk joins (~acidjnk@p200300d6e7137a054134d491e24e739f.dip0.t-ipconnect.de)
11:05:26 × thyriaen quits (~thyriaen@2a01:aea0:dd4:4708:6245:cbff:fe9f:48b1) (Ping timeout: 268 seconds)
11:06:28 kenran joins (~user@user/kenran)
11:07:15 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
11:08:17 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
11:09:06 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:657b:163b:3e09:9614) (Ping timeout: 264 seconds)
11:09:08 MajorBiscuit joins (~MajorBisc@c-001-029-026.client.tudelft.eduvpn.nl)
11:12:56 <mastarija_> Why is it not possible to use partially applied type synonyms as arguments to other type synonyms / types?
11:12:56 × sagax quits (~sagax_nb@user/sagax) (Remote host closed the connection)
11:14:32 dr_merijn joins (~dr_merijn@eduroam.wifi.infracom.nl)
11:15:06 <mastarija_> To make a typelevel map more useful?
11:18:32 × ormaaj quits (~ormaaj@user/ormaaj) (Quit: Bridge terminating on SIGTERM)
11:18:32 × psydroid quits (~psydroid@user/psydroid) (Quit: Bridge terminating on SIGTERM)
11:18:32 × Guillaum[m] quits (~guiboumat@2001:470:69fc:105::1:72ac) (Quit: Bridge terminating on SIGTERM)
11:18:32 × ericson2314 quits (~ericson23@2001:470:69fc:105::70c) (Quit: Bridge terminating on SIGTERM)
11:18:32 × Matthew|m quits (~arathorn@2001:470:69fc:105::1f) (Quit: Bridge terminating on SIGTERM)
11:18:32 × fgaz quits (~fgaz@2001:470:69fc:105::842) (Quit: Bridge terminating on SIGTERM)
11:18:32 × mekeor[m] quits (~mekeormat@2001:470:69fc:105::17e4) (Quit: Bridge terminating on SIGTERM)
11:18:32 × famubu[m] quits (~famubumat@2001:470:69fc:105::1081) (Quit: Bridge terminating on SIGTERM)
11:18:32 × sm quits (~sm@plaintextaccounting/sm) (Quit: Bridge terminating on SIGTERM)
11:18:32 × maralorn quits (~maralorn@2001:470:69fc:105::251) (Quit: Bridge terminating on SIGTERM)
11:18:32 × aviladev[m] quits (~aviladevm@2001:470:69fc:105::1:cbc7) (Quit: Bridge terminating on SIGTERM)
11:18:32 × kadoban quits (~kadoban@user/kadoban) (Quit: Bridge terminating on SIGTERM)
11:18:32 × jean-paul[m] quits (~jean-paul@2001:470:69fc:105::d1ab) (Quit: Bridge terminating on SIGTERM)
11:18:32 × jinsun_ quits (~jinsun@user/jinsun) (Quit: Bridge terminating on SIGTERM)
11:18:32 × vladan[m] quits (~vladanmat@2001:470:69fc:105::2:24df) (Quit: Bridge terminating on SIGTERM)
11:18:33 × fendor[m] quits (~fendormat@2001:470:69fc:105::fcbd) (Quit: Bridge terminating on SIGTERM)
11:18:33 × Tisoxin quits (~ikosit@user/ikosit) (Quit: Bridge terminating on SIGTERM)
11:18:33 × ongy[m] quits (~ongymatri@2001:470:69fc:105::5018) (Quit: Bridge terminating on SIGTERM)
11:18:33 × geekosaur[m] quits (~geekosaur@xmonad/geekosaur) (Quit: Bridge terminating on SIGTERM)
11:18:33 × Killy quits (~killy@2001:470:69fc:105::2:6ec1) (Quit: Bridge terminating on SIGTERM)
11:18:33 × VarikValefor[m] quits (~varikvale@2001:470:69fc:105::a5d) (Quit: Bridge terminating on SIGTERM)
11:18:33 × nomagno quits (~nomagno@2001:470:69fc:105::c1f0) (Quit: Bridge terminating on SIGTERM)
11:18:33 × SeanKing[m] quits (~seankingm@2001:470:69fc:105::cf9c) (Quit: Bridge terminating on SIGTERM)
11:18:33 × smichel17[m] quits (~smichel17@2001:470:69fc:105::2d32) (Quit: Bridge terminating on SIGTERM)
11:18:33 × FurudeRika[m] quits (~chitandae@2001:470:69fc:105::1:6039) (Quit: Bridge terminating on SIGTERM)
11:18:33 × maerwald[m] quits (~maerwaldm@2001:470:69fc:105::1ee) (Quit: Bridge terminating on SIGTERM)
11:18:33 × unclechu quits (~unclechu@2001:470:69fc:105::354) (Quit: Bridge terminating on SIGTERM)
11:18:33 × Christoph[m] quits (~hpotsirhc@2001:470:69fc:105::2ff8) (Quit: Bridge terminating on SIGTERM)
11:18:33 × foghorn quits (~foghorn@user/foghorn) (Quit: Bridge terminating on SIGTERM)
11:18:33 × JensPetersen[m] quits (~juhp@2001:470:69fc:105::6e9) (Quit: Bridge terminating on SIGTERM)
11:18:34 × RowanG[m] quits (~rowang077@2001:470:69fc:105::1:ca9f) (Quit: Bridge terminating on SIGTERM)
11:18:34 × polykernel[m] quits (~polykerne@user/polykernel) (Quit: Bridge terminating on SIGTERM)
11:18:34 × xgpt[m] quits (~xgptmatri@2001:470:69fc:105::2:619a) (Quit: Bridge terminating on SIGTERM)
11:18:34 × MangoIV[m] quits (~mangoivma@2001:470:69fc:105::2:8417) (Quit: Bridge terminating on SIGTERM)
11:18:34 × aaronv quits (~aaronv@user/aaronv) (Quit: Bridge terminating on SIGTERM)
11:18:34 × jneira[m] quits (~jneiramat@2001:470:69fc:105::d729) (Quit: Bridge terminating on SIGTERM)
11:18:34 × chreekat quits (~chreekat@2001:470:69fc:105::16b5) (Quit: Bridge terminating on SIGTERM)
11:18:34 × Artem[m] quits (~artemtype@2001:470:69fc:105::75b) (Quit: Bridge terminating on SIGTERM)
11:18:34 × july541[m] quits (~july541ma@2001:470:69fc:105::1:e416) (Quit: Bridge terminating on SIGTERM)
11:18:34 × elvishjerricco quits (~elvishjer@2001:470:69fc:105::6172) (Quit: Bridge terminating on SIGTERM)
11:18:35 × jz99[m] quits (~jz99matri@2001:470:69fc:105::1:d5f1) (Quit: Bridge terminating on SIGTERM)
11:18:35 × drsooch[m] quits (~drsoochma@2001:470:69fc:105::1:c8a1) (Quit: Bridge terminating on SIGTERM)
11:18:35 × expipiplus1 quits (~expipiplu@2001:470:69fc:105::d713) (Quit: Bridge terminating on SIGTERM)
11:18:36 × Clinton[m] quits (~clintonme@2001:470:69fc:105::2:31d4) (Quit: Bridge terminating on SIGTERM)
11:18:36 × pareto-optimal-d quits (~pareto-op@2001:470:69fc:105::1:b61f) (Quit: Bridge terminating on SIGTERM)
11:18:36 × schuelermine[m] quits (~schuelerm@user/schuelermine) (Quit: Bridge terminating on SIGTERM)
11:18:36 × oak- quits (~oakuniver@2001:470:69fc:105::fcd) (Quit: Bridge terminating on SIGTERM)
11:18:36 × weeezes[m] quits (~weeezesma@2001:470:69fc:105::1:da65) (Quit: Bridge terminating on SIGTERM)
11:18:40 × sibnull[m] quits (~sibnullma@2001:470:69fc:105::1:1291) (Quit: Bridge terminating on SIGTERM)
11:18:41 × bb010g quits (~bb010g@2001:470:69fc:105::9a5) (Quit: Bridge terminating on SIGTERM)
11:18:41 × cp1313[m] quits (~cp1313mat@2001:470:69fc:105::2:9293) (Quit: Bridge terminating on SIGTERM)
11:18:41 × loosh[m] quits (~looshchat@2001:470:69fc:105::2:5ddd) (Quit: Bridge terminating on SIGTERM)
11:18:42 × nicmollel[m] quits (~nicmollel@2001:470:69fc:105::1:feeb) (Quit: Bridge terminating on SIGTERM)
11:18:42 × Morrow[m] quits (~morrowmma@2001:470:69fc:105::1d0) (Quit: Bridge terminating on SIGTERM)
11:18:42 × Neosake[m] quits (~neosakema@2001:470:69fc:105::2:989e) (Quit: Bridge terminating on SIGTERM)
11:18:42 × vaibhavsagar[m] quits (~vaibhavsa@2001:470:69fc:105::ffe) (Quit: Bridge terminating on SIGTERM)
11:18:42 × aidy quits (~aidy@2001:470:69fc:105::c7b4) (Quit: Bridge terminating on SIGTERM)
11:18:42 × jbggs[m] quits (~jbggsmatr@2001:470:69fc:105::2:995f) (Quit: Bridge terminating on SIGTERM)
11:18:42 × CeNiEi[m] quits (~cenieimat@2001:470:69fc:105::1:894c) (Quit: Bridge terminating on SIGTERM)
11:18:43 × disco-dave[m] quits (~disco-dav@2001:470:69fc:105::2:1892) (Quit: Bridge terminating on SIGTERM)
11:18:43 × ozkutuk[m] quits (~ozkutuk@2001:470:69fc:105::2:9af8) (Quit: Bridge terminating on SIGTERM)
11:18:43 × mimi1vx[m] quits (~osukupmat@2001:470:69fc:105::2:418d) (Quit: Bridge terminating on SIGTERM)
11:18:45 × ManofLetters[m] quits (~manoflett@2001:470:69fc:105::3be) (Quit: Bridge terminating on SIGTERM)
11:18:45 × olivermead[m] quits (~olivermea@2001:470:69fc:105::2:4289) (Quit: Bridge terminating on SIGTERM)
11:18:45 × TrueBlue[m] quits (~busterblu@2001:470:69fc:105::1:d7e8) (Quit: Bridge terminating on SIGTERM)
11:18:45 × kiri1606[m] quits (~kiri1606m@2001:470:69fc:105::2:8ec9) (Quit: Bridge terminating on SIGTERM)
11:18:45 × sektor[m] quits (~sektor@2001:470:69fc:105::2:3f60) (Quit: Bridge terminating on SIGTERM)
11:18:45 × lawt quits (~lawtonmat@2001:470:69fc:105::2:97b8) (Quit: Bridge terminating on SIGTERM)
11:18:45 × SridharRatnakuma quits (~sridmatri@2001:470:69fc:105::1c2) (Quit: Bridge terminating on SIGTERM)
11:18:45 × fr33domlover[m] quits (~fr33domlo@2001:470:69fc:105::1:3bb6) (Quit: Bridge terminating on SIGTERM)
11:18:45 × rockymarine[m] quits (~rockymari@2001:470:69fc:105::2:9a0c) (Quit: Bridge terminating on SIGTERM)
11:18:45 × Deide quits (~deide@user/deide) (Quit: Bridge terminating on SIGTERM)
11:18:45 × jmcantrell quits (~jmcantrel@user/jmcantrell) (Quit: Bridge terminating on SIGTERM)
11:18:45 × cafkafk[m] quits (~cafkafkma@2001:470:69fc:105::1:cea8) (Quit: Bridge terminating on SIGTERM)
11:18:45 × duckie quits (~duckie@user/duckie) (Quit: Bridge terminating on SIGTERM)
11:18:45 × silky[m] quits (~noonvande@2001:470:69fc:105::2:943c) (Quit: Bridge terminating on SIGTERM)
11:18:45 × M3g-mentok[m] quits (~M3g-mento@2001:470:69fc:105::2:9a49) (Quit: Bridge terminating on SIGTERM)
11:18:45 × Orbstheorem quits (~orbstheor@2001:470:69fc:105::a56) (Quit: Bridge terminating on SIGTERM)
11:18:46 × alexfmpe[m] quits (~alexfmpem@2001:470:69fc:105::38ba) (Quit: Bridge terminating on SIGTERM)
11:18:46 × siraben quits (~siraben@user/siraben) (Quit: Bridge terminating on SIGTERM)
11:18:46 × BB[m] quits (~cashmagem@2001:470:69fc:105::f6dc) (Quit: Bridge terminating on SIGTERM)
11:18:46 × RosarioPulella[m quits (~rosariopu@2001:470:69fc:105::a57) (Quit: Bridge terminating on SIGTERM)
11:18:46 × peddie quits (~peddie@2001:470:69fc:105::25d) (Quit: Bridge terminating on SIGTERM)
11:18:47 × baaash[m] quits (~baaashmat@2001:470:69fc:105::2:1e90) (Quit: Bridge terminating on SIGTERM)
11:18:47 × desophos[m] quits (~desophosm@2001:470:69fc:105::2:81d9) (Quit: Bridge terminating on SIGTERM)
11:18:47 × romes[m] quits (~romesmatr@2001:470:69fc:105::2:1660) (Quit: Bridge terminating on SIGTERM)
11:18:47 × zfnmxt quits (~zfnmxt@2001:470:69fc:105::2b32) (Quit: Bridge terminating on SIGTERM)
11:18:53 <hpc> mastarija_: you can
11:19:07 <hpc> % type Foo = Maybe
11:19:07 <yahb2> <no output>
11:19:14 <hpc> % type Bar f = [f Int]
11:19:14 <yahb2> <no output>
11:19:22 <hpc> % [Nothing] :: Bar Foo
11:19:22 <yahb2> [Nothing]
11:19:41 <hpc> what you can't do is partially apply "type Foo a = Maybe a"
11:20:00 <mastarija_> Yes, partial application is what I'm after.
11:20:19 <dr_merijn> mastarija_: You can't get it
11:20:21 <hpc> type aliases are basically just string replacement
11:20:37 <[Leary]> There's LiberalTypeSynonyms, but I'm not sure how far it gets you.
11:20:39 <hpc> if you did type Foo a = Something a B C
11:20:39 <mastarija_> What's this `LiberalTypeSynonyms` about then? I thought
11:20:39 <dr_merijn> Type level partial application is equivalent to type-level lambdas
11:20:44 <mastarija_> Ah...
11:20:48 <hpc> and then just used Foo somewhere
11:20:57 <hpc> how does it get reduced?
11:20:57 × Midjak quits (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
11:21:28 <mastarija_> Ah.. I get it.
11:21:32 <mastarija_> Thx
11:21:52 <mastarija_> Yes, type level lambda is what I'd like to have then :)
11:22:00 <hpc> what dr_merijn says is right too though, sort of
11:22:10 <hpc> type level lambdas let you do a LOT, more than ghc can currently handle
11:22:18 <hpc> maybe when dependent types happen?
11:22:20 <dr_merijn> hpc: I mean, that's a different way of phrasing your example ;)
11:23:01 <dr_merijn> mastarija_: Use Idris :p
11:23:16 <hpc> there's a lot of different other things that fake it in different ways
11:23:21 × wonko quits (~wjc@2a0e:1c80:2:0:45:15:19:130) (Ping timeout: 260 seconds)
11:23:33 <hpc> data definitions can be type-level lambbdas if you squint and accept having to do all the wrapping/unwrapping yourself
11:23:33 <dr_merijn> hpc: And all of them will make your life terrible :p
11:23:41 <hpc> or type families
11:23:48 × leah2 quits (~leah@vuxu.org) (Ping timeout: 264 seconds)
11:23:49 fgaz joins (~fgaz@2001:470:69fc:105::842)
11:24:09 <hpc> they all have their own limitations, and yep they'll make your life miserable :D
11:24:12 peddie joins (~peddie@2001:470:69fc:105::25d)
11:24:12 ericson2314 joins (~ericson23@2001:470:69fc:105::70c)
11:24:12 famubu[m] joins (~famubumat@2001:470:69fc:105::1081)
11:24:12 maralorn joins (~maralorn@2001:470:69fc:105::251)
11:24:15 <[Leary]> Defunctionalised type families aren't that bad to work with, they just aren't very clean.
11:24:26 zfnmxt joins (~zfnmxt@2001:470:69fc:105::2b32)
11:24:26 sm joins (~sm@plaintextaccounting/sm)
11:24:38 Christoph[m] joins (~hpotsirhc@2001:470:69fc:105::2ff8)
11:24:38 ongy[m] joins (~ongymatri@2001:470:69fc:105::5018)
11:24:50 SridharRatnakuma joins (~sridmatri@2001:470:69fc:105::1c2)
11:24:50 siraben joins (~siraben@user/siraben)
11:25:02 july541[m] joins (~july541ma@2001:470:69fc:105::1:e416)
11:25:03 smichel17[m] joins (~smichel17@2001:470:69fc:105::2d32)
11:25:03 <mastarija_> Hmm.. gonna try LiberalTypeSynonyms for fun
11:25:15 kiri1606[m] joins (~kiri1606m@2001:470:69fc:105::2:8ec9)
11:25:30 chreekat joins (~chreekat@2001:470:69fc:105::16b5)
11:25:45 expipiplus1 joins (~expipiplu@2001:470:69fc:105::d713)
11:25:53 <dminuoso> What's the price for that extension?
11:25:57 sibnull[m] joins (~sibnullma@2001:470:69fc:105::1:1291)
11:26:09 ManofLetters[m] joins (~manoflett@2001:470:69fc:105::3be)
11:26:10 fendor[m] joins (~fendormat@2001:470:69fc:105::fcbd)
11:26:14 <mastarija_> Price is that it doesn't work as I've intended :)
11:26:25 bb010g joins (~bb010g@2001:470:69fc:105::9a5)
11:26:25 oak- joins (~oakuniver@2001:470:69fc:105::fcd)
11:26:25 jmcantrell joins (~jmcantrel@user/jmcantrell)
11:26:25 maerwald[m] joins (~maerwaldm@2001:470:69fc:105::1ee)
11:26:25 jinsun_ joins (~jinsun@user/jinsun)
11:26:37 romes[m] joins (~romesmatr@2001:470:69fc:105::2:1660)
11:26:37 JensPetersen[m] joins (~juhp@2001:470:69fc:105::6e9)
11:26:38 ormaaj joins (~ormaaj@user/ormaaj)
11:26:38 cp1313[m] joins (~cp1313mat@2001:470:69fc:105::2:9293)
11:26:38 kadoban joins (~kadoban@user/kadoban)
11:26:38 BB[m] joins (~cashmagem@2001:470:69fc:105::f6dc)
11:26:50 Guillaum[m] joins (~guiboumat@2001:470:69fc:105::1:72ac)
11:27:02 silky[m] joins (~noonvande@2001:470:69fc:105::2:943c)
11:27:02 RosarioPulella[m joins (~rosariopu@2001:470:69fc:105::a57)
11:27:02 nicmollel[m] joins (~nicmollel@2001:470:69fc:105::1:feeb)
11:27:07 jneira[m] joins (~jneiramat@2001:470:69fc:105::d729)
11:27:07 alexfmpe[m] joins (~alexfmpem@2001:470:69fc:105::38ba)
11:27:08 Matthew|m joins (~arathorn@2001:470:69fc:105::1f)
11:27:08 lawt joins (~lawtonmat@2001:470:69fc:105::2:97b8)
11:27:08 RowanG[m] joins (~rowang077@2001:470:69fc:105::1:ca9f)
11:27:09 Morrow[m] joins (~morrowmma@2001:470:69fc:105::1d0)
11:27:14 <mastarija_> I was hoping this'll work somehow but nope `:k! Fmap (Const Int) RandList`
11:27:22 Neosake[m] joins (~neosakema@2001:470:69fc:105::2:989e)
11:27:35 drsooch[m] joins (~drsoochma@2001:470:69fc:105::1:c8a1)
11:27:35 olivermead[m] joins (~olivermea@2001:470:69fc:105::2:4289)
11:27:36 vaibhavsagar[m] joins (~vaibhavsa@2001:470:69fc:105::ffe)
11:27:49 aidy joins (~aidy@2001:470:69fc:105::c7b4)
11:28:01 jbggs[m] joins (~jbggsmatr@2001:470:69fc:105::2:995f)
11:28:15 CeNiEi[m] joins (~cenieimat@2001:470:69fc:105::1:894c)
11:28:26 rockymarine[m] joins (~rockymari@2001:470:69fc:105::2:9a0c)
11:28:26 loosh[m] joins (~looshchat@2001:470:69fc:105::2:5ddd)
11:28:40 M3g-mentok[m] joins (~M3g-mento@2001:470:69fc:105::2:9a49)
11:28:45 × gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
11:28:52 disco-dave[m] joins (~disco-dav@2001:470:69fc:105::2:1892)
11:28:53 Orbstheorem joins (~orbstheor@2001:470:69fc:105::a56)
11:28:53 Tisoxin joins (~ikosit@user/ikosit)
11:28:54 ozkutuk[m] joins (~ozkutuk@2001:470:69fc:105::2:9af8)
11:28:54 Artem[m] joins (~artemtype@2001:470:69fc:105::75b)
11:28:54 foghorn joins (~foghorn@user/foghorn)
11:28:54 unclechu joins (~unclechu@2001:470:69fc:105::354)
11:28:55 baaash[m] joins (~baaashmat@2001:470:69fc:105::2:1e90)
11:29:09 mimi1vx[m] joins (~osukupmat@2001:470:69fc:105::2:418d)
11:29:09 sektor[m] joins (~sektor@2001:470:69fc:105::2:3f60)
11:29:22 Clinton[m] joins (~clintonme@2001:470:69fc:105::2:31d4)
11:29:22 mekeor[m] joins (~mekeormat@2001:470:69fc:105::17e4)
11:29:22 elvishjerricco joins (~elvishjer@2001:470:69fc:105::6172)
11:29:22 vladan[m] joins (~vladanmat@2001:470:69fc:105::2:24df)
11:29:23 jz99[m] joins (~jz99matri@2001:470:69fc:105::1:d5f1)
11:29:23 geekosaur[m] joins (~geekosaur@xmonad/geekosaur)
11:29:23 VarikValefor[m] joins (~varikvale@2001:470:69fc:105::a5d)
11:29:24 duckie joins (~duckie@user/duckie)
11:29:25 nomagno joins (~nomagno@2001:470:69fc:105::c1f0)
11:29:25 jean-paul[m] joins (~jean-paul@2001:470:69fc:105::d1ab)
11:29:25 FurudeRika[m] joins (~chitandae@2001:470:69fc:105::1:6039)
11:29:25 aviladev[m] joins (~aviladevm@2001:470:69fc:105::1:cbc7)
11:29:26 Deide joins (~deide@user/deide)
11:29:26 fr33domlover[m] joins (~fr33domlo@2001:470:69fc:105::1:3bb6)
11:29:26 TrueBlue[m] joins (~busterblu@2001:470:69fc:105::1:d7e8)
11:29:38 desophos[m] joins (~desophosm@2001:470:69fc:105::2:81d9)
11:29:39 cafkafk[m] joins (~cafkafkma@2001:470:69fc:105::1:cea8)
11:29:40 Killy joins (~killy@2001:470:69fc:105::2:6ec1)
11:29:40 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
11:29:42 <dr_merijn> mastarija_: Why not Idris, though?
11:29:56 pareto-optimal-d joins (~pareto-op@2001:470:69fc:105::1:b61f)
11:29:56 SeanKing[m] joins (~seankingm@2001:470:69fc:105::cf9c)
11:29:56 aaronv joins (~aaronv@user/aaronv)
11:29:56 MangoIV[m] joins (~mangoivma@2001:470:69fc:105::2:8417)
11:29:58 psydroid joins (~psydroid@user/psydroid)
11:29:58 xgpt[m] joins (~xgptmatri@2001:470:69fc:105::2:619a)
11:29:58 schuelermine[m] joins (~schuelerm@user/schuelermine)
11:30:12 weeezes[m] joins (~weeezesma@2001:470:69fc:105::1:da65)
11:30:13 polykernel[m] joins (~polykerne@user/polykernel)
11:30:16 <mastarija_> I wanted to do something in Haskell and type-level lambdas seemed like a nice thing to have for that.
11:30:44 <dr_merijn> That's only relevant for Cursed Haskell, though
11:30:56 <dminuoso> {-# LANGUAGE Cursed #-}
11:30:58 <[exa]> mastarija_: any specific goal though? you might want just type families
11:31:40 <[exa]> oh wow that extension could rename our fav function to just performIO
11:31:42 <mastarija_> It's a bit hard to explain, but I just wanted a nice type level interface for my curvature library.
11:32:13 <dminuoso> [exa]: Heh. Ive finally understood why it was (text still does) called inlinePerformIO.
11:32:23 <dminuoso> It really inlines completely!
11:32:43 <[exa]> wow
11:33:10 <[exa]> mastarija_: for better typechecking or just for more verbose types for users?
11:33:44 <dminuoso> A `malloc 4096` in two separate parts? Let-float and share that buffer! That is why the simplifiers main job is inlining, to enable such opportunities.
11:33:45 <mastarija_> For cleaner types for the user
11:33:53 <mastarija_> And better type checking
11:34:00 <dminuoso> Memory saved, even! I wonder why people reported these crashes as bugs.
11:34:44 <dr_merijn> mastarija_: My expert advice: don't :p
11:34:50 <mastarija_> :P
11:34:56 <mastarija_> Try to stop me
11:35:10 <dr_merijn> One of the hardest lessons/lines to learn when doing Haskell is that "not everything should be in the type system" (at least, in Haskell)
11:35:27 <hpc> this is why i do everything in the kind system
11:36:12 <dr_merijn> mastarija_: I don't have to, if people want to hurt and torture themselves, that's on them, they're consenting adults :p
11:36:39 <dr_merijn> I'm just providing the warning label so I can point, laugh, and say "I told you so" in the future :D
11:37:01 <mastarija_> You'll see!!!!
11:37:12 <hpc> lol
11:38:33 <[exa]> mastarija_: the ones you have now ain't clean enough? :D
11:38:50 <mastarija_> I can always go for more!!!
11:38:55 <[exa]> pls paste
11:39:32 <[exa]> hpc: rofl @ kind system
11:42:34 <dminuoso> I prefer encoding my domain logic into the sort system.,
11:42:57 <dminuoso> Everything is just BOX. Very simple
11:45:46 <mastarija_> I guess I can always go with `(a n ~ f x y n) => ...`.
11:48:56 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
11:49:47 azimut joins (~azimut@gateway/tor-sasl/azimut)
11:57:40 wonko joins (~wjc@2a0e:1c80:2:0:45:15:19:130)
12:02:53 <zzz> > let 0 = 1 in succ 0
12:02:55 <lambdabot> 1
12:04:34 <zzz> why is this not illegal?
12:04:49 <dr_merijn> zzz: You're pattern matching on 0 and not using the result
12:04:55 <dr_merijn> So it's a no-op
12:05:11 <dr_merijn> > let x@0 = 1 in succ x
12:05:12 <lambdabot> *Exception: <interactive>:3:5-11: Non-exhaustive patterns in x@0
12:05:27 <dr_merijn> Your example is (to ghc) equivalent to
12:05:34 <dr_merijn> > let x = 1 in succ 0
12:05:35 <lambdabot> 1
12:05:54 <zzz> ah weird
12:06:19 <dr_merijn> zzz: The pattern match fails, but since we're a lazy language, the failure is never observed
12:06:25 <zzz> abd because let bindings are irrefutable
12:06:28 <zzz> right
12:06:34 <dr_merijn> (and you can't observe it, because it's not named)
12:07:01 leah2 joins (~leah@vuxu.org)
12:08:52 vn36 joins (~vn36@123.63.203.210)
12:09:32 × yuzhao quits (~yuzhao@36.112.45.73) (Ping timeout: 268 seconds)
12:11:04 <zzz> there's a "pattern binds no bariables" warning though
12:11:20 <zzz> *variables
12:11:40 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 258 seconds)
12:12:03 <dminuoso> zzz: No, its not because they are irrefutable.
12:12:23 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
12:13:07 <dminuoso> `let 0 = 1 in` is very refutable.
12:13:54 <dminuoso> Well. I guess if we took the word literally it is irrefutable because you cannot tractably refute it. But the term "irrefutable pattern" is a partigular standardese term from the Haskell Report.
12:14:09 <dminuoso> And let 0 = 1 ` is not an irrefutable pattern according to the haskell report.
12:15:57 <dminuoso> The irrefutable patterns are as follows: a variable, a wildcard, N apat where N is a constructor defined by newtype and apat is irrefutable (see Section 4.2.3), var @apat where apat is irrefutable, or of the form ̃apat (whether or not apat is irrefutable). All other patterns are refutable.
12:16:17 <dminuoso> So by this wording, `0` is a refutable pattern.
12:16:31 <dminuoso> And it does make sense if you think of this in another position, like `f 0 = ...`
12:16:58 elbear joins (~lucian@188.24.138.239)
12:18:48 <dminuoso> Refutable let patterns can occasionally be useful, especially non-simple patterns like `let (x1, x2) = ...` or maybe on a newtype/data type `let N a = ...`
12:19:38 <dminuoso> Fun fact, non-simple patterns are the reason why "adding a type signature" by itself is not generally enough around the MMR problem.
12:20:24 <dminuoso> That is, even with a type signature, if you bind using a non-simple pattern, the declaration group will be restricted.
12:21:24 × elbear quits (~lucian@188.24.138.239) (Ping timeout: 268 seconds)
12:21:32 <dminuoso> Or it can be, anyway
12:22:15 <dminuoso> tomsmeding: By the way, yahb2 appears to be broken somehow.
12:22:25 <dminuoso> % :set -XNoMonomorphismRestriction
12:22:25 <yahb2> <interactive>:1:1: error: Not in scope: ‘Yahb2Defs.limitedPrint’
12:27:36 thegeekinside joins (~thegeekin@189.180.7.159)
12:28:20 sagax joins (~sagax_nb@user/sagax)
12:33:07 × wonko quits (~wjc@2a0e:1c80:2:0:45:15:19:130) (Ping timeout: 248 seconds)
12:39:55 odnes joins (~odnes@5-203-132-149.pat.nym.cosmote.net)
12:40:36 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
12:44:23 × odnes quits (~odnes@5-203-132-149.pat.nym.cosmote.net) (Client Quit)
12:46:53 kuribas joins (~user@silversquare.silversquare.eu)
12:48:31 nate1 joins (~nate@98.45.169.16)
12:49:28 × CiaoSen quits (~Jura@p200300c95700eb002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
12:50:24 <kuribas> what is the reason people don't like conduit?
12:50:35 <kuribas> isn't it the easiest for beginners?
12:51:25 <dr_merijn> kuribas: WHo doesn't like it, besides maerwald?
12:52:07 <kuribas> right :)
12:54:00 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds)
12:55:00 × vn36 quits (~vn36@123.63.203.210) (Ping timeout: 264 seconds)
12:55:49 shriekingnoise joins (~shrieking@186.137.167.202)
12:55:50 <lortabac> as a streaming noob, I find the 'streaming' library easier to understand
12:56:22 <lortabac> I spent 10 minutes on each, and I opted for 'streaming' because it was the one I understood the best
12:56:41 <dminuoso> They are somewhat different though
12:56:46 <dminuoso> That is, they do different things
12:56:53 <lortabac> my needs are very simple though
12:58:18 <lortabac> dminuoso: possible, I was just answering to "isn't it the easiest for beginners"
12:58:45 <kuribas> lortabac: sure, if it fits your usecase well...
12:58:49 <lortabac> I'd say no, if by easy we mean it has a low learning curve
12:59:21 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
13:00:10 <kuribas> if you think of a stream as a unix pipe, it looks the easiest with conduit.
13:00:12 <dminuoso> Its interesting, because I always thought `streaming` looked strange and conduit seemed easier
13:00:34 <kuribas> you wait for some input, then yield some output.
13:00:44 <dminuoso> Especially since it has a good interface for regulating the chunks in the pipeline (waiting, coalescing, yielding more)
13:00:57 <dminuoso> Im sure `streaming` can do all those things too, but I find all the types to be very confusing
13:01:07 <dr_merijn> dminuoso: same
13:12:32 vn36 joins (~vn36@123.63.203.210)
13:12:57 acidjnk_new joins (~acidjnk@p200300d6e7137a05b92ccfa0afbc3219.dip0.t-ipconnect.de)
13:13:47 kuribas` joins (~user@silversquare.silversquare.eu)
13:14:13 × kuribas quits (~user@silversquare.silversquare.eu) (Read error: Connection reset by peer)
13:16:54 × acidjnk quits (~acidjnk@p200300d6e7137a054134d491e24e739f.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
13:18:32 × acidjnk_new quits (~acidjnk@p200300d6e7137a05b92ccfa0afbc3219.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
13:19:46 × kuribas` quits (~user@silversquare.silversquare.eu) (Ping timeout: 268 seconds)
13:20:21 elbear joins (~lucian@188.24.138.239)
13:21:56 yvan-sraka joins (~yvan-srak@46.183.103.8)
13:22:04 × Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Quit: o/)
13:23:25 × yvan-sraka quits (~yvan-srak@46.183.103.8) (Remote host closed the connection)
13:24:26 yvan-sraka joins (~yvan-srak@46.183.103.8)
13:30:01 Sgeo joins (~Sgeo@user/sgeo)
13:32:21 kuribas joins (~user@silversquare.silversquare.eu)
13:36:23 greek joins (~weechat@sp49-98-40-21.msd.spmode.ne.jp)
13:39:26 greek is now known as nikos_k
13:40:20 zzz is now known as _
13:40:43 _ is now known as zzz
13:41:29 × razetime quits (~quassel@117.254.35.56) (Ping timeout: 252 seconds)
13:43:33 Sciencentistguy joins (~sciencent@hacksoc/ordinary-member)
13:44:28 × nikos_k quits (~weechat@sp49-98-40-21.msd.spmode.ne.jp) (Quit: WeeChat 3.7)
13:45:03 nikos_k joins (~weechat@sp49-98-40-21.msd.spmode.ne.jp)
13:47:22 nikos_k is now known as nikos_kz
13:49:42 × Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Quit: o/)
13:50:07 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
13:50:07 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
13:50:07 wroathe joins (~wroathe@user/wroathe)
13:53:21 Sciencentistguy joins (~sciencent@hacksoc/ordinary-member)
13:54:33 × nikos_kz quits (~weechat@sp49-98-40-21.msd.spmode.ne.jp) (Quit: WeeChat 3.7)
13:54:51 thegreek joins (~weechat@sp49-98-40-21.msd.spmode.ne.jp)
13:55:02 × thegreek quits (~weechat@sp49-98-40-21.msd.spmode.ne.jp) (Client Quit)
13:55:20 thegreek joins (~weechat@sp49-98-40-21.msd.spmode.ne.jp)
13:56:19 × thegreek quits (~weechat@sp49-98-40-21.msd.spmode.ne.jp) (Client Quit)
13:57:22 nikos_kz joins (~weechat@sp49-98-40-21.msd.spmode.ne.jp)
13:57:34 tam-carre joins (~tam-carre@2a01cb088a83b300a322b3f387318318.ipv6.abo.wanadoo.fr)
14:01:41 × weeezes[m] quits (~weeezesma@2001:470:69fc:105::1:da65) (*.net *.split)
14:01:41 × CeNiEi[m] quits (~cenieimat@2001:470:69fc:105::1:894c) (*.net *.split)
14:01:41 × aaronv quits (~aaronv@user/aaronv) (*.net *.split)
14:01:41 × Morrow[m] quits (~morrowmma@2001:470:69fc:105::1d0) (*.net *.split)
14:01:41 × elvishjerricco quits (~elvishjer@2001:470:69fc:105::6172) (*.net *.split)
14:01:41 × RowanG[m] quits (~rowang077@2001:470:69fc:105::1:ca9f) (*.net *.split)
14:01:41 × expipiplus1 quits (~expipiplu@2001:470:69fc:105::d713) (*.net *.split)
14:01:41 × SeanKing[m] quits (~seankingm@2001:470:69fc:105::cf9c) (*.net *.split)
14:01:41 × peddie quits (~peddie@2001:470:69fc:105::25d) (*.net *.split)
14:01:41 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (*.net *.split)
14:01:41 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:4590:bf86:dae:5953) (*.net *.split)
14:01:41 × chomwitt quits (~chomwitt@2a02:587:dc0c:c200:a0a8:ed7f:a699:91a5) (*.net *.split)
14:01:41 × Vajb quits (~Vajb@2001:999:504:1841:9e47:1ec7:a52e:1d57) (*.net *.split)
14:01:41 × caryhartline quits (~caryhartl@2600:1700:2d0:8d30:c527:6c1:a00c:e1d4) (*.net *.split)
14:01:41 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (*.net *.split)
14:01:41 × mesaoptimizer quits (apotheosis@user/PapuaHardyNet) (*.net *.split)
14:01:41 × farn quits (~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505) (*.net *.split)
14:01:41 × Hafydd quits (~Hafydd@user/hafydd) (*.net *.split)
14:01:41 × img quits (~img@user/img) (*.net *.split)
14:01:41 × jespada quits (~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net) (*.net *.split)
14:01:41 × Taneb quits (~Taneb@runciman.hacksoc.org) (*.net *.split)
14:01:41 × mtjm quits (~mutantmel@2604:a880:2:d0::208b:d001) (*.net *.split)
14:01:41 × abrar quits (~abrar@static-108-2-152-54.phlapa.fios.verizon.net) (*.net *.split)
14:01:41 × lisq quits (~quassel@lis.moe) (*.net *.split)
14:01:41 × jackdk quits (sid373013@cssa/jackdk) (*.net *.split)
14:01:41 × megeve quits (sid523379@id-523379.hampstead.irccloud.com) (*.net *.split)
14:01:41 × jakesyl____ quits (sid56879@id-56879.hampstead.irccloud.com) (*.net *.split)
14:01:41 × tritlo quits (sid58727@user/tritlo) (*.net *.split)
14:01:41 × jmct quits (sid160793@id-160793.tinside.irccloud.com) (*.net *.split)
14:01:41 × hays quits (rootvegeta@fsf/member/hays) (*.net *.split)
14:01:41 × sm2n quits (ae95cb1267@user/sm2n) (*.net *.split)
14:01:41 × Arsen quits (arsen@managarm/dev/Arsen) (*.net *.split)
14:01:41 × shreyasminocha quits (51fdc93eda@user/shreyasminocha) (*.net *.split)
14:01:41 × remexre quits (~remexre@user/remexre) (*.net *.split)
14:01:41 × Me-me quits (~me-me@user/me-me) (*.net *.split)
14:01:41 × ghoulpine quits (xfnw@tilde.team) (*.net *.split)
14:01:41 × ssw quits (~ssw@user/ssw) (*.net *.split)
14:01:41 × dibblego quits (~dibblego@haskell/developer/dibblego) (*.net *.split)
14:01:41 × nshepperd quits (nshepperd@2600:3c03::f03c:92ff:fe28:92c9) (*.net *.split)
14:01:41 × rodental quits (~rodental@38.146.5.222) (*.net *.split)
14:01:41 × AkechiShiro quits (~licht@user/akechishiro) (*.net *.split)
14:01:41 × hnOsmium0001 quits (uid453710@user/hnOsmium0001) (*.net *.split)
14:01:53 img joins (~img@2405:6580:b1c0:2500:b1d0:6383:edaf:d54f)
14:01:53 Vajb joins (~Vajb@2001:999:504:1841:9e47:1ec7:a52e:1d57)
14:01:55 dibblego joins (~dibblego@122-199-1-30.ip4.superloop.com)
14:01:56 × img quits (~img@2405:6580:b1c0:2500:b1d0:6383:edaf:d54f) (Changing host)
14:01:56 img joins (~img@user/img)
14:01:57 Arsen joins (~arsen@managarm/dev/Arsen)
14:01:57 lisq joins (~quassel@lis.moe)
14:02:00 remexre joins (~remexre@user/remexre)
14:02:02 sm2n joins (ae95cb1267@user/sm2n)
14:02:03 lortabac joins (~lortabac@2a01:e0a:541:b8f0:4590:bf86:dae:5953)
14:02:04 shreyasminocha joins (51fdc93eda@user/shreyasminocha)
14:02:04 tritlo joins (sid58727@id-58727.hampstead.irccloud.com)
14:02:04 jmct joins (sid160793@id-160793.tinside.irccloud.com)
14:02:05 megeve joins (sid523379@id-523379.hampstead.irccloud.com)
14:02:09 × dibblego quits (~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
14:02:09 dibblego joins (~dibblego@haskell/developer/dibblego)
14:02:12 Hafydd joins (~Hafydd@2001:41d0:305:2100::31aa)
14:02:12 nshepperd joins (nshepperd@2600:3c03::f03c:92ff:fe28:92c9)
14:02:13 farn joins (~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505)
14:02:17 abrar joins (~abrar@static-108-2-152-54.phlapa.fios.verizon.net)
14:02:19 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
14:02:19 AkechiShiro joins (~licht@2a01:e0a:5f9:9681:1473:3dff:fe42:56a9)
14:02:24 × tritlo quits (sid58727@id-58727.hampstead.irccloud.com) (Changing host)
14:02:24 tritlo joins (sid58727@user/tritlo)
14:02:26 Me-me joins (~me-me@tunnel690570-pt.tunnel.tserv12.mia1.ipv6.he.net)
14:02:32 jakesyl____ joins (sid56879@id-56879.hampstead.irccloud.com)
14:02:34 × Hafydd quits (~Hafydd@2001:41d0:305:2100::31aa) (Signing in (Hafydd))
14:02:34 Hafydd joins (~Hafydd@user/hafydd)
14:02:34 SeanKing[m] joins (~seankingm@2001:470:69fc:105::cf9c)
14:02:40 jackdk joins (sid373013@id-373013.tinside.irccloud.com)
14:02:58 Morrow[m] joins (~morrowmma@2001:470:69fc:105::1d0)
14:03:01 × jackdk quits (sid373013@id-373013.tinside.irccloud.com) (Changing host)
14:03:01 jackdk joins (sid373013@cssa/jackdk)
14:03:04 hnOsmium0001 joins (uid453710@user/hnOsmium0001)
14:03:16 chomwitt joins (~chomwitt@2a02:587:dc0c:c200:a0a8:ed7f:a699:91a5)
14:03:23 mtjm joins (~mutantmel@2604:a880:2:d0::208b:d001)
14:03:26 Taneb joins (~Taneb@runciman.hacksoc.org)
14:03:32 aaronv joins (~aaronv@user/aaronv)
14:03:35 ssw joins (~ssw@user/ssw)
14:03:40 elvishjerricco joins (~elvishjer@2001:470:69fc:105::6172)
14:03:51 ghoulpine joins (xfnw@tilde.team)
14:03:52 peddie joins (~peddie@2001:470:69fc:105::25d)
14:03:59 expipiplus1 joins (~expipiplu@2001:470:69fc:105::d713)
14:04:06 CeNiEi[m] joins (~cenieimat@2001:470:69fc:105::1:894c)
14:04:14 weeezes[m] joins (~weeezesma@2001:470:69fc:105::1:da65)
14:04:41 RowanG[m] joins (~rowang077@2001:470:69fc:105::1:ca9f)
14:05:46 × nikos_kz quits (~weechat@sp49-98-40-21.msd.spmode.ne.jp) (Ping timeout: 246 seconds)
14:05:48 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 264 seconds)
14:05:55 × vn36 quits (~vn36@123.63.203.210) (Ping timeout: 248 seconds)
14:07:12 jespada joins (~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net)
14:09:19 × sagax quits (~sagax_nb@user/sagax) (Remote host closed the connection)
14:12:05 L29Ah joins (~L29Ah@wikipedia/L29Ah)
14:13:10 × Arsen quits (~arsen@managarm/dev/Arsen) (Quit: Quit.)
14:17:04 × causal quits (~user@50.35.83.177) (Quit: WeeChat 3.6)
14:19:51 Arsen joins (arsen@managarm/dev/Arsen)
14:22:47 CiaoSen joins (~Jura@p200300c95700eb002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
14:28:13 Feuermagier joins (~Feuermagi@user/feuermagier)
14:29:26 xff0x joins (~xff0x@ai071162.d.east.v6connect.net)
14:32:22 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 246 seconds)
14:37:20 wonko joins (~wjc@2a0e:1c80:2:0:45:15:19:130)
14:42:05 Midjak joins (~Midjak@82.66.147.146)
14:45:02 acidjnk_new joins (~acidjnk@p200300d6e7137a99955eeb096340e161.dip0.t-ipconnect.de)
14:46:45 burnsidesLlama joins (~burnsides@client-8-85.eduroam.oxuni.org.uk)
14:49:17 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
14:49:22 nate1 joins (~nate@98.45.169.16)
14:54:11 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds)
14:55:21 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 258 seconds)
14:57:10 ec joins (~ec@gateway/tor-sasl/ec)
14:58:01 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
15:00:06 × beteigeuze quits (~Thunderbi@2001:8a0:61b5:6101:f0c:e4e3:bfdc:91df) (Ping timeout: 264 seconds)
15:00:09 × burnsidesLlama quits (~burnsides@client-8-85.eduroam.oxuni.org.uk) (Remote host closed the connection)
15:01:04 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 246 seconds)
15:02:49 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds)
15:07:04 × mastarija_ quits (~mastarija@2a05:4f46:e03:6000:fd36:f5e5:8056:5d1a) (Quit: Leaving)
15:09:14 nikos_kz joins (~weechat@240a:61:1112:b9b3:123b:954c:fff7:8d0)
15:09:33 × nikos_kz quits (~weechat@240a:61:1112:b9b3:123b:954c:fff7:8d0) (Client Quit)
15:09:49 nikos_kz joins (~weechat@240a:61:1112:b9b3:123b:954c:fff7:8d0)
15:13:32 mesaoptimizer joins (apotheosis@user/PapuaHardyNet)
15:15:41 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
15:16:05 beteigeuze joins (~Thunderbi@2001:8a0:61b5:6101:f0c:e4e3:bfdc:91df)
15:20:07 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 252 seconds)
15:22:11 × nikos_kz quits (~weechat@240a:61:1112:b9b3:123b:954c:fff7:8d0) (Ping timeout: 248 seconds)
15:25:11 razetime joins (~quassel@117.254.35.56)
15:29:45 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:4590:bf86:dae:5953) (Quit: WeeChat 2.8)
15:33:34 vn36 joins (~vn36@123.63.203.210)
15:37:33 × tam-carre quits (~tam-carre@2a01cb088a83b300a322b3f387318318.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
15:37:50 tam-carre joins (~tam-carre@2a01cb088a83b300a322b3f387318318.ipv6.abo.wanadoo.fr)
15:38:05 × lagash quits (lagash@lagash.shelltalk.net) (Remote host closed the connection)
15:41:31 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
15:42:58 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:657b:163b:3e09:9614)
15:43:41 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
15:44:36 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.6)
15:46:11 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 248 seconds)
15:47:36 nikos_kz joins (~weechat@240a:61:1112:b9b3:123b:954c:fff7:8d0)
15:47:51 × nikos_kz quits (~weechat@240a:61:1112:b9b3:123b:954c:fff7:8d0) (Client Quit)
15:48:11 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 260 seconds)
15:51:01 nikos_kz joins (~weechat@240a:61:1112:b9b3:123b:954c:fff7:8d0)
15:51:38 titibandit joins (~titibandi@xdsl-78-34-208-230.nc.de)
15:53:43 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:657b:163b:3e09:9614) (Remote host closed the connection)
15:55:06 × nikos_kz quits (~weechat@240a:61:1112:b9b3:123b:954c:fff7:8d0) (Client Quit)
15:55:14 × dr_merijn quits (~dr_merijn@eduroam.wifi.infracom.nl) (Ping timeout: 268 seconds)
15:55:54 nikos_kz joins (~weechat@240a:61:1112:b9b3:123b:954c:fff7:8d0)
15:56:11 × nikos_kz quits (~weechat@240a:61:1112:b9b3:123b:954c:fff7:8d0) (Client Quit)
15:56:38 nikos_kz joins (~nikos_kz@sp27-230-96-33.tck01.spmode.ne.jp)
16:06:20 × nikos_kz quits (~nikos_kz@sp27-230-96-33.tck01.spmode.ne.jp) (Quit: leaving)
16:10:22 × yvan-sraka quits (~yvan-srak@46.183.103.8) (Ping timeout: 244 seconds)
16:10:47 lagash joins (lagash@lagash.shelltalk.net)
16:13:05 × Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Quit: o/)
16:14:54 Feuermagier_ joins (~Feuermagi@213.149.82.60)
16:15:12 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
16:17:49 × kuribas quits (~user@silversquare.silversquare.eu) (Remote host closed the connection)
16:18:03 × Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 268 seconds)
16:18:26 Sciencentistguy joins (~sciencent@hacksoc/ordinary-member)
16:19:28 × teo quits (~teo@user/teo) (Ping timeout: 246 seconds)
16:20:30 × MajorBiscuit quits (~MajorBisc@c-001-029-026.client.tudelft.eduvpn.nl) (Ping timeout: 264 seconds)
16:22:31 MajorBiscuit joins (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net)
16:27:15 × MajorBiscuit quits (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net) (Ping timeout: 248 seconds)
16:29:43 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Quit: ZNC 1.8.2 - https://znc.in)
16:30:02 jmdaemon joins (~jmdaemon@user/jmdaemon)
16:32:14 × titibandit quits (~titibandi@xdsl-78-34-208-230.nc.de) (Remote host closed the connection)
16:33:35 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:37:12 × elbear quits (~lucian@188.24.138.239) (Ping timeout: 268 seconds)
16:37:47 elbear joins (~lucian@188.24.138.239)
16:38:00 werneta joins (~werneta@137.78.30.207)
16:39:02 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:657b:163b:3e09:9614)
16:42:43 × elbear quits (~lucian@188.24.138.239) (Ping timeout: 268 seconds)
16:42:59 × jespada quits (~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net) (Quit: Textual IRC Client: www.textualapp.com)
16:43:07 loras joins (~loras@c-73-139-125-125.hsd1.fl.comcast.net)
16:44:34 × vn36 quits (~vn36@123.63.203.210) (Ping timeout: 268 seconds)
16:48:07 × nschoe quits (~q@141.101.51.197) (Ping timeout: 252 seconds)
16:55:50 econo joins (uid147250@user/econo)
16:57:21 × wonko quits (~wjc@2a0e:1c80:2:0:45:15:19:130) (Ping timeout: 250 seconds)
17:00:14 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
17:01:15 Tuplanolla joins (~Tuplanoll@91-159-69-34.elisa-laajakaista.fi)
17:03:37 elbear joins (~lucian@188.24.138.239)
17:04:19 rockystone joins (~rocky@user/rockymarine)
17:07:25 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
17:08:46 × elbear quits (~lucian@188.24.138.239) (Ping timeout: 268 seconds)
17:12:03 × zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 248 seconds)
17:12:08 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:657b:163b:3e09:9614) (Remote host closed the connection)
17:14:27 <monochrom> https://discourse.haskell.org/t/ann-hugs-for-macos-x86-via-nix-flakes/5171?u=taylorfausak
17:14:33 <monochrom> Hugs is not dead :)
17:19:34 vn36 joins (~vn36@123.63.203.210)
17:24:06 × chele quits (~chele@user/chele) (Remote host closed the connection)
17:27:32 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:657b:163b:3e09:9614)
17:27:55 <dolio> Only mostly dead.
17:33:45 × beteigeuze quits (~Thunderbi@2001:8a0:61b5:6101:f0c:e4e3:bfdc:91df) (Ping timeout: 250 seconds)
17:33:56 × fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Quit: Leaving)
17:35:34 <geekosaur> still gets used by intro haskell courses
17:35:57 <geekosaur> since it doesn't undergo changes like Num losing Eq and Show, much less FAM
17:36:08 <L29Ah> haskell is so badass it has a separate interpreter just for intro courses
17:36:16 <geekosaur> or FTP
17:36:39 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
17:37:06 wonko joins (~wjc@2a0e:1c80:2:0:45:15:19:130)
17:46:02 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
17:52:12 elbear joins (~lucian@188.24.138.239)
17:55:28 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
17:55:28 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
17:55:28 wroathe joins (~wroathe@user/wroathe)
17:55:35 × vn36 quits (~vn36@123.63.203.210) (Ping timeout: 252 seconds)
17:56:15 zxx7529 joins (~Thunderbi@user/zxx7529)
17:56:45 × elbear quits (~lucian@188.24.138.239) (Ping timeout: 268 seconds)
17:57:17 vn36 joins (~vn36@123.63.203.210)
17:57:41 wootehfoot joins (~wootehfoo@user/wootehfoot)
17:59:14 <EvanR> hell, why not a whole separate compiler for intro courses. And then we use that compiler
17:59:53 mixphix joins (~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
17:59:54 × zxx7529 quits (~Thunderbi@user/zxx7529) (Client Quit)
18:00:02 DDR joins (~DDR@2604:3d08:4c7f:8250:815e:1b43:3414:7c9c)
18:00:56 <monochrom> Racket has an IDE just for intro courses. >:)
18:01:18 <monochrom> And Python, I believe 2 or 3.
18:01:54 <L29Ah> python has a separate language version for intro courses
18:02:01 <EvanR> the intro tools have good error messages. When you graduate, you can upgrade to the one with worse error messages
18:02:06 × razetime quits (~quassel@117.254.35.56) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
18:02:33 <monochrom> I would s/worse/advanced/ but sure :)
18:02:42 <L29Ah> with `print` as a part of syntax to simplify education
18:02:47 <EvanR> yes we all speak compiler here
18:04:44 × raym quits (~aritra@user/raym) (Ping timeout: 268 seconds)
18:04:45 hays joins (rootvegeta@fsf/member/hays)
18:05:04 raym joins (~aritra@user/raym)
18:05:45 <EvanR> actually ghc is really good, rarely sending me on a wild goose chase due to missing brackets, or telling me overly specialized advice not pertaining in any way to the actual problem like some systems
18:09:05 × kenran quits (~user@user/kenran) (Quit: ERC 5.4.1 (IRC client for GNU Emacs 29.0.50))
18:12:27 × mixphix quits (~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Quit: Lost terminal)
18:13:20 <geekosaur> hm. don't we still have Helium somewhere?
18:13:22 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds)
18:14:39 × mbuf quits (~Shakthi@49.205.80.14) (Quit: Leaving)
18:15:11 × vn36 quits (~vn36@123.63.203.210) (Ping timeout: 260 seconds)
18:16:11 stackdroid18 joins (14094@user/stackdroid)
18:20:47 vn36 joins (~vn36@123.63.203.210)
18:22:12 zer0bitz joins (~zer0bitz@dsl-hkibng32-54fb48-32.dhcp.inet.fi)
18:22:28 ski . o O ( "“Well it just so happens that your friend here is only mostly dead. There’s a big difference between mostly dead and all dead… Now, mostly dead is slightly alive. Now, all dead — well, with all dead, there’s usually only one thing that you can do.”,“What’s that?”,“Go through his clothes and look for loose change!”" -- “The Princess Bride” )
18:23:17 elbear joins (~lucian@188.24.138.239)
18:24:13 byorgey was thinking of that scene too
18:24:56 <byorgey> https://github.com/Helium4Haskell/helium
18:25:44 yvan-sraka joins (~yvan-srak@46.183.103.17)
18:28:27 coot joins (~coot@213.134.171.3)
18:28:40 × coot quits (~coot@213.134.171.3) (Remote host closed the connection)
18:28:51 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
18:29:17 × stackdroid18 quits (14094@user/stackdroid) (Quit: hasta la vista... tchau!)
18:31:31 × vn36 quits (~vn36@123.63.203.210) (Ping timeout: 252 seconds)
18:31:38 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:657b:163b:3e09:9614) (Remote host closed the connection)
18:32:47 stackdroid18 joins (14094@user/stackdroid)
18:38:06 <ski> @where Helium
18:38:06 <lambdabot> http://www.cs.uu.nl/research/projects/helium/
18:38:17 <ski> @where+ Helium Haskell subset for beginners, improved diagnostics (incl. eDSLs). See <https://github.com/Helium4Haskell/helium>,<https://hackage.haskell.org/package/helium>,<https://web.archive.org/web/20160624222240/http://foswiki.cs.uu.nl/foswiki/Helium/WebHome>,<https://web.archive.org/web/20210907032911/http://www.cs.uu.nl/research/projects/helium/>,<https://www.open.ou.nl/bhr/HeliumCompiler.html>
18:38:17 <lambdabot> It is forever etched in my memory.
18:38:34 ft joins (~ft@p3e9bc57b.dip0.t-ipconnect.de)
18:39:59 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Quit: ZNC - https://znc.in)
18:40:30 azimut joins (~azimut@gateway/tor-sasl/azimut)
18:42:10 <EvanR> ski, here is what I managed for abstract Doc https://paste.tomsmeding.com/qbWG517C
18:43:46 × DDR quits (~DDR@2604:3d08:4c7f:8250:815e:1b43:3414:7c9c) (Ping timeout: 260 seconds)
18:44:36 <ski> (would it make sense to also parameterize `String' in `text' (for use with `Text' instead, e.g.) ?)
18:45:36 <ski> (i'd eta `nestStr', i think)
18:46:26 <EvanR> text :: String -> Doc, well I was wondering what the meaning of Doc even is xD
18:47:04 <EvanR> or do you mean just allow String, Text, ByteString instead of String. Which all have some kind of newline character
18:47:56 <EvanR> I didn't know if the out parameter was necessary actually
18:48:05 <EvanR> assuming String as in the paper
18:49:34 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
18:50:46 nate1 joins (~nate@98.45.169.16)
18:53:25 <ski> > unfoldr (\s -> do guard (not (null s)); Just (drop 1 <$> break ('\n' ==) s)) "foo\nbar\nbaz"
18:53:27 <lambdabot> ["foo","bar","baz"]
18:53:30 <ski> > (intercalate ('\n' : replicate 3 ' ') . lines) "foo\nbar\nbaz"
18:53:32 <lambdabot> "foo\n bar\n baz"
18:53:39 Cerins joins (~Cerins@balticom-142-106-43.balticom.lv)
18:53:53 × raym quits (~aritra@user/raym) (Ping timeout: 252 seconds)
18:54:41 raym joins (~aritra@user/raym)
18:55:13 <ski> well, seeing as you parameterized `out', i was wondering why not also the input to `text'
18:55:39 <EvanR> I thought out was required for some thing else... apparently not, I just removed it xD
18:55:54 <ski> @src intercalate
18:55:54 <lambdabot> intercalate xs xss = concat (intersperse xs xss)
18:55:58 <EvanR> https://paste.tomsmeding.com/k9UM5UI6
18:56:01 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds)
18:56:24 <EvanR> I finally remember the difference between intersperse and intercalate enough to get this code right, and it's the wrong one xD
18:58:02 zmt00 joins (~zmt00@user/zmt00)
18:58:07 ski . o O ( "Yet Another Tabs v. Spaces Debate" ("I mix tabs and spaces") <http://dmwit.com/tabs/> )
18:59:23 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 252 seconds)
18:59:50 <hpc> i mix vertical tabs and nonbreaking spaces
19:00:05 <ski> hehe
19:00:15 ski uses form feeds, sometimes
19:00:23 <hpc> ooh, that's a good one
19:00:28 lortabac joins (~lortabac@2a01:e0a:541:b8f0:7370:8686:6424:8f5a)
19:00:57 <hpc> i end all my lines with a bel character because typewriters ding when they reach the end
19:02:17 <EvanR> so in one sense Doc and operations seem like they could be abstract, but then line :: Doc seems to represent "a newline character"... and there is only one concatenation operator instead of horizontal and vertical concat of Doc. So the only meaning I can come up with is "this is basically a string"
19:02:28 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
19:02:35 <EvanR> and the abstraction is used by wadler just to get more performance than String
19:03:04 <EvanR> i.e. Doc is a faster String. Which is unsatisfying
19:03:06 <ski> (Emacs has `C-x [',`C-x ]',`C-x l' for handling (navigation and line count for) multiple pages. i've thought about trying to make an Emacs mode that will only displace the current page in the window. used with `M-x follow-mode' it would show a sequence of adjacent pages in the sequence of windows showing the buffer)
19:03:27 <ski> (s/mode/minor mode/)
19:03:36 × CiaoSen quits (~Jura@p200300c95700eb002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
19:04:30 <ski> (now i'm also wondering if `nest' would work with negative counts)
19:05:06 <EvanR> in the prior work section he mentions a system using negative indentation, and how it's not as elegant xD
19:05:26 <EvanR> at least they it was used in that previous paper, to unindent after accidentally indenting too much
19:05:40 <EvanR> the way*
19:07:00 ski . o O ( .. should files be terminated by an EOT ? )
19:07:45 <geekosaur[m]> back in the day, DOS files were terminated with CTRL-Z
19:07:51 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
19:08:11 <ski> text files, not binary ones ?
19:08:37 <ski> > '\^D'
19:08:39 <lambdabot> '\EOT'
19:08:43 <geekosaur[m]> I think only text, yeh. binary files had to be a multiple of the disk block size
19:09:14 <geekosaur[m]> (well, so did text files, so ^Z had to be used to mark the actual end of file)
19:09:34 <ski> EvanR : didn't Wadler have both vertical and horizontal ? (or am i thinking of another paper ?
19:09:45 <ski> )
19:09:45 <EvanR> that was the prior paper by...
19:10:03 <EvanR> Hughes
19:10:12 <ski> ah, ic
19:10:29 × tam-carre quits (~tam-carre@2a01cb088a83b300a322b3f387318318.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
19:10:45 <ski> "how it's not as elegant" -- in which sense ?
19:10:52 <ski> hm
19:11:37 <EvanR> it doesn't say that
19:11:39 <ski> there's also stuff like line continuation, "heredocs", &c.
19:11:46 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds)
19:11:48 <EvanR> but it does say Hughes version is more complex and at the end
19:11:54 <ski> > "\ \"
19:11:55 <lambdabot> ""
19:12:08 <EvanR> "One might say, the prettier printer hatched in Bird’s nest" (not Hughes')
19:13:16 CiaoSen joins (~Jura@p200300c95700eb002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
19:13:52 <ski> > read "\"\\ \\\"" :: String
19:13:53 <lambdabot> ""
19:13:58 <ski> > read "\"\\ \n \\\"" :: String
19:14:00 <lambdabot> ""
19:14:07 <EvanR> what in the heck
19:15:33 <ski> you can insert a backslash, followed by whitespace (e.g. including a newline, and spaces and tabs), followed by another backslash, and it'll get elided
19:15:59 <ski> > "\&" -- other quirk thing
19:16:01 <lambdabot> ""
19:16:22 × yvan-sraka quits (~yvan-srak@46.183.103.17) (Ping timeout: 244 seconds)
19:16:52 <ski> > "\SOH\SO\&H\x0041\x00\&41"
19:16:54 <lambdabot> "\SOH\SO\&HA\NUL41"
19:18:06 <EvanR> soh so ha nul
19:18:32 <ski> > read "\"\\ --\n \\\"" :: String
19:18:34 <lambdabot> "*Exception: Prelude.read: no parse
19:18:34 <ski> > read "\"\\ {--} \\\"" :: String
19:18:35 <lambdabot> "*Exception: Prelude.read: no parse
19:18:40 <EvanR> this is where the haskell ouroboros zip `ap` tail appears
19:18:52 <ski> hah
19:19:05 <hpc> @quote aztec
19:19:06 <lambdabot> alpounet says: map succ/pred is a scandinavian name generator or what? ... well, scandinavian and aztec
19:19:12 <hpc> :(
19:19:32 <ski> @quote aztec.god
19:19:32 <lambdabot> quicksilver says: zip`ap`tail - the Aztec god of consecutive numbers
19:20:04 <Vq> Must be aztec, I don't recognise it as scandinavian.
19:20:23 <Vq> Could be danish though...
19:20:31 <hpc> also just to answer "why even have this at all", read tries to follow things that are syntactically valid strings
19:20:45 <hpc> so if you want to write a multiline string in your source code, apparently that means read has to parse it too
19:21:53 <ski> EvanR : anyway, the `line' thing does feel a bit weird, yea
19:22:52 <ski> > read "'\\^D'" :: Char -- seems this works, too
19:22:53 <lambdabot> '\EOT'
19:22:59 <EvanR> the paper does pretty printing by choosing between different layouts of the same logical document, which is defined as flattening to the same line
19:23:03 <ski> @type readLitChar
19:23:04 <lambdabot> ReadS Char
19:23:17 <ski> > readLitChar "\\^D"
19:23:18 <lambdabot> [('\EOT',"")]
19:23:27 <EvanR> so choices include where to omit the newline and pile things onto the same line, I think
19:23:45 <EvanR> which works by just dropping the Line
19:23:52 <ski> it does allow the "hanging" style, i assume
19:24:03 <ski> (was years since i looked at these papers)
19:24:07 <EvanR> I mean, dropping or replacing with a text " "
19:25:10 <EvanR> hanging style?
19:25:33 <ski> would be nice if it could be configured to use spaces, or tabs, or both (as in the link above, say), in a way that would display (and be interpreted by implementations) consistently & predictably
19:25:38 <ski> foo = do
19:25:40 <ski> blah
19:26:25 <ski> body "hangs" from the end of the previous line
19:26:28 titibandit joins (~titibandi@xdsl-78-34-208-230.nc.de)
19:26:41 vorpuni joins (~pvorp@2001:861:3881:c690:ba0e:e680:831e:7c7b)
19:27:15 <EvanR> yes that's the 2nd example for rendering Tree, it uses a fixed indentation instead of checking the length of the node header, which my version does
19:27:34 vn36 joins (~vn36@123.63.203.210)
19:27:52 <ski> (also ekmett's remarks about wanting to eschew nested comments (at least in the present form), in the interest of being able to monoidally parse, in his video presentation of that, seems a bit relevant)
19:28:09 <EvanR> nested comments, too hard! don't need!
19:28:30 <EvanR> use your editor spam # everywhere
19:28:59 <EvanR> (he drops nested and multiline comments)
19:29:21 <ski> he had a perverse example like
19:29:24 <ski> {-
19:29:29 <ski> -- -} foo
19:30:02 <ski> if you remove the `{-' (or add `-- ' in front of it), the `foo' disappears into a comment
19:30:35 <ski> ("spooky action at a distance")
19:30:52 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
19:31:34 <EvanR> you are automatically thinking about that monoidal parsing talk after thinking about wadler's pretty printer too xD
19:31:57 <EvanR> notionally different subjects, seems similar
19:32:02 <monochrom> monoidal pretty printing and monoidal parsing...
19:32:39 <EvanR> I guess that's a good reason to keep the newline around
19:32:40 <geekosaur> except that bidirectional parsing is also a thing
19:33:23 <monochrom> Hey why was that not called bidirectional pretty printing heh
19:34:01 <EvanR> need a word that means parsing and unparsing
19:34:27 <geekosaur> or coparsing
19:34:27 rockystone joins (~rocky@user/rockymarine)
19:34:42 × Tuplanolla quits (~Tuplanoll@91-159-69-34.elisa-laajakaista.fi) (Quit: Leaving.)
19:34:46 ski . o O ( `isSOF :: Parser Bool',`lookBehind :: Parser a -> Parser a' )
19:34:46 × Cerins quits (~Cerins@balticom-142-106-43.balticom.lv) (Quit: Leaving)
19:34:56 codaraxis___ joins (~codaraxis@user/codaraxis)
19:34:59 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 248 seconds)
19:35:59 <ski> DCGs can do both from the same source. .. except that in practice (for various reasons), people typically use it for one, or the other
19:37:31 pavonia joins (~user@user/siracusa)
19:38:17 <ski> (also GF generates both linearization and parsing, between abstract syntax, and a given concrete syntax, from the same `lincat' declarations)
19:38:48 × codaraxis__ quits (~codaraxis@user/codaraxis) (Ping timeout: 264 seconds)
19:40:29 <EvanR> in the conversion from Tree to Doc (doc), I'm using named field puns to locally "import" the operations of the algebra. I can't tell if this is cool or terrible
19:41:13 kenran joins (~user@user/kenran)
19:41:19 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
19:41:41 <ski> one reason is that the grammar rules are sometimes not syntax-directed (in the AST sense used for static analysis, operational semantics, translations, ..), when parsing, specifically when handling left-factoring, left-recursion; while you do want syntax-directed for linearizing
19:41:43 <EvanR> it's certainly not as noisy as I expected
19:41:52 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
19:42:19 <ski> another reason is optional parts like extra whitespace, redundant brackets. possibly syntactic sugar/salt
19:43:24 <ski> EvanR : better than using `..'
19:43:53 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
19:44:51 × elbear quits (~lucian@188.24.138.239) (Ping timeout: 252 seconds)
19:44:53 <ski> anyway, record construction and update probably should allow declaration forms like `nest n d = nestStr n d' (with pattern-matching, multiple clauses, &c. ..) -- also probably `local'-`in'-`end'
19:45:27 <EvanR> also I was worried this kind of code would be brittle in that you aren't guaranteed all the subroutines use the same implementation
19:45:29 × zeenk quits (~zeenk@2a02:2f04:a20a:3e00:5712:52b0:ca1d:bc63) (Quit: Konversation terminated!)
19:45:51 <EvanR> or are you, because of the polymorphic doc
19:45:53 <ski> (and use `;' rather than `,' for separator .. but then, should there be a keyword after the data constructor for introducing the layout ?)
19:46:17 <ski> subroutines ?
19:46:33 <EvanR> showTree is based on 3 functions that take DocImpl doc
19:46:47 <EvanR> mixing different implementations in the code here would be bad
19:46:54 <EvanR> but is it even possible
19:47:34 ski idly imagines three-dimensional code layout, in a cuboid of glyph cells
19:48:17 <EvanR> 3D glyphs... that's beyond even the matrix
19:49:06 <darkling> Sounds like an extension of Mondrian. :)
19:50:09 <ski> (hmm, i guess i mean rectangular cuboid .. is there a shorter term ?)
19:50:23 × vn36 quits (~vn36@123.63.203.210) (Remote host closed the connection)
19:50:48 <EvanR> brick
19:50:51 <darkling> Cuboid.
19:51:03 <darkling> A rectilinear shape that isn't a cube.
19:51:26 <EvanR> a cube isn't also a cuboid then? That probably breaks OOP again
19:51:33 <ski> apparently cuboid includes anything that has six faces which are quadrilateral, with arbitrary angles
19:51:38 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:7370:8686:6424:8f5a) (Quit: WeeChat 2.8)
19:51:53 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
19:52:04 <EvanR> brick it is
19:52:24 <monochrom> I like brick. :)
19:52:51 <monochrom> Topology has open balls and open bricks >:)
19:54:02 <ski> (sure a cube is a cuboid .. but OO object types aren't really about subsets, but rather quotient sets (of records) .. and possibly pullbacks as well))
19:54:04 <monochrom> Hey does your 3D code layout have tensor strength? >:)
19:54:37 <EvanR> or are they above liskov substitution xD
19:54:40 <EvanR> about
19:55:27 <ski> well, i almost said "anything topologically equivalent to a cube" .. but that doesn't work, as a space where we don't keep track of flags
19:55:28 vn36 joins (~vn36@123.63.203.210)
19:55:29 <monochrom> Well it still has subtyping.
19:56:21 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds)
19:56:23 <ski> sure, subtyping can encompass both subsets and quotient sets
19:56:28 <EvanR> don't try to update one of the sides of a cuboid, it might be a cube
19:57:16 <ski> (hm, there's a term for when you have subtyping with `O(0)' coercions .. but i can't recall it atm)
19:59:05 <monochrom> upcasting?
20:01:00 <ski> (hm, my mind tells me i might've seen it in some Xavier Leroy paper/slides, but i can't recall which)
20:04:28 <ski> hm, i'm after the distinction between "inclusion" and "coercion", where the former is operationally a no-op, since it uses a representation which can be construed as being of the supertype. (i think the term may have started with "de")
20:05:20 <EvanR> like even int can be freely casted to int
20:06:51 jakalx joins (~jakalx@base.jakalx.net)
20:07:01 <ski> (similar to the distinction of implementing parametric polymorphism with type erasure (enabling reviewing a common representation), and a type-info-passing implementation. i'm also reminded of implicitly passing offsets / tags for record fields / variant alternatives, for light-weight records and variants, probably using rows)
20:07:27 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
20:07:58 <ski> yes (and more importantly), `Map Foo EvenInt' could be treated as `Map Foo Int' (as long as `Map Foo a' is covariant in `a')
20:09:58 <ski> (`EvenList' could be a refinement type of `List', declared something like `data EvenList a <: List a = Nil | Cons a (OddList a); data OddList a <: List a = Cons a (EvenList a)' .. this is a different version of "refinement types" that then subset types that e.g. LiquidHaskell uses)
20:10:23 <ski> (s/subset types/subset comprehension types/)
20:14:17 <ski> monochrom : remind me of what strength means in that context ?
20:16:02 ski . o O ( open bricks in the taxi-cab metric/norm )
20:16:26 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
20:19:11 × TonyStone quits (~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) (Ping timeout: 268 seconds)
20:20:23 <ski> hmm .. there should be a metric on an integral lattice space where the distance is always a natural number, defined in terms of integral diagonals with Pythagorean tuples ..
20:20:50 freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg)
20:21:46 × wonko quits (~wjc@2a0e:1c80:2:0:45:15:19:130) (Ping timeout: 260 seconds)
20:22:49 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
20:24:33 <EvanR> what the heck is going on in this screenshot (tabs vs spaces post) http://dmwit.com/tabs/vim.png in the lower half there's obvious tabs, then in the upper half there tabs not aligning with the ones below
20:25:04 <ski> .. every natural can be written as a sum of four squares. can every square be written nontrivially as a sum of two or three or four squares ?
20:25:38 <EvanR> ok the tabs align, but there's missing tabs
20:25:47 <geekosaur> EvanR, looks to me like it's aligning with spacing on the previous line. emacs text-mode does something similar although I don't think I've seen it in a programming mode
20:26:28 <ski> EvanR : "tabs are for indenting, spaces are for aligmnment"
20:26:43 <ski> EvanR : the spaces align with the "let "
20:26:45 <hpc> EvanR: tab, spaces aligning with let (, tab for case
20:27:11 <EvanR> but... where are the tabs, where are the spaces
20:27:27 <hpc> there are four spaces, directly below "let "
20:27:28 <ski> "\t \t..."
20:27:37 <hpc> the four columns before the second '>'
20:27:50 <EvanR> ok
20:28:04 <EvanR> and then another tab, for reasons?
20:28:13 <hpc> because there's a case it's indenting into
20:28:30 <hpc> case expr of\n\tpat -> expr
20:28:36 <hpc> but that whole thing indented by "\t "
20:29:43 <hpc> that is a very confusing way to write code, and that notation for tabs technically makes it visible what's what but not really imo
20:29:46 <ski> "Thirdly and hindmost: tabs and spaces are of incomparable width. A tab is not eight spaces. A tab is not four spaces. A tab is not two spaces. A tab does not jump to the next eight-character tabstop. There is not some number n such that tabs jump to the next column that is a multiple of n. .."
20:29:51 <ski> ".. Tabs are not at least one space wide. Tabs do not even necessarily move to the right! There is simply nothing you can do with spaces to correctly align yourself with a tab character^‡. If you want to align things on two separate lines, and one line has a tab character as the nth character in the line, well, the other line will simply have to have a tab character as the nth character in the line,
20:29:57 <ski> too."
20:30:06 <EvanR> yeah read all that
20:30:52 <EvanR> I'm almost inspired to use tabs xD
20:31:07 <EvanR> and now I see the relevance to wadler
20:31:30 <ski> they use spaces there to align with the `(w, h) = ...' declaration on the previous line (`let' starts layout. since this layout in this case starts after `let ', we have no choice but align with the `let ', before possibly indenting again)
20:31:38 <ski> Wadler's law ?
20:31:39 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
20:31:49 × freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 246 seconds)
20:32:07 <EvanR> the pretty printer paper
20:32:18 <hpc> ski: can't be, there's no comments :P
20:32:41 <EvanR> a lot pivots on the concept of indentation there, but there's no mention of tabs
20:33:16 <hpc> honestly, the way i read that whole section is that there's no correct way to render a tab either
20:33:26 <hpc> so putting one in your code is just asking for trouble
20:34:12 <ski> @wiki Wadler's Law
20:34:12 <lambdabot> https://wiki.haskell.org/Wadler's_Law
20:35:30 <ski> EvanR : the simpler version (just using tabs, not spaces) is to always break line after a layout-introducing keyword followed by a block spanning more than one line
20:36:41 <ski> EvanR : yea, hence i started thinking about a tabs-and-spaces aware/enabled pretty-printer, that gets this right (and is configurable to only spaces, only tabs, spaces-and-tabs)
20:38:01 <EvanR> I started by being suspicious of a 'word' in the algebra that is basically a newline, and now we devolved into tabs vs space xD
20:38:01 <ski> (anyway, regarding "brick" syntax, imagine being able to align your three-dimensional array both horizontally, vertically, and "depthly")
20:38:17 <EvanR> so much for abstract document
20:38:25 <geekosaur> at some point that becomes too much to track…
20:39:13 <ski> alignment seems to be about wanting to view the document not as a linear string, but as two-dimensional (iow with commuting paths), in places
20:40:13 <EvanR> I'd settle for something that solves in 2 dimensions if 3 is too much to ask
20:40:31 <EvanR> unless there's a one liner that works in N dimensions
20:40:52 <hpc> one-planer?
20:41:11 <ski> .. i recall in an RPG game i played, i could enter into a screen for each character, containing "parallel" sections (only one shown at a time) for different "properties" .. and finding it annoying that if i navigated to the next/previous character (with another two buttons), it'd reset the section to the first section, rather than moving to the parallel one (as if i moved in a grid)
20:41:14 <EvanR> if anyone says that there's a Z-tab I'm out
20:42:29 ski . o O ( direct product vs. maybe semi-direct product, wreath product, .. hmm )
20:42:49 <EvanR> what was the structure of this rpg screen again?
20:43:01 <ski> hm, structure ?
20:43:06 <EvanR> i can't visualize it
20:43:11 <ski> it was a dungeon crawler (on GameBoy)
20:43:24 <EvanR> it was a document? or
20:43:36 <ski> it had "properties" (for each character) like inventory, character stats, &c.
20:44:16 <ski> (well, GameBoy Advance, i think .. or maybe it was DS .. can't recall)
20:44:24 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:657b:163b:3e09:9614)
20:45:06 × CiaoSen quits (~Jura@p200300c95700eb002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
20:46:00 <ski> (idea of commuting paths also turns up if you want to `unfoldr' (or dynamically program) a double recurrence, like e.g. Pascal's triangle / binomial coefficients)
20:46:43 <ski> (ok, it ws GBA as i thought)
20:48:10 <ski> "The game received moderately negative reviews compared to the original computer game. It was given a 41% rating by NGC Magazine, criticizing it for its slow pace between exploration and combat, its bad interface and confusing menus, while highlighting only its variety of spells and character customization, that give the game some level of depth." (my emph.)
20:48:35 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:657b:163b:3e09:9614) (Ping timeout: 248 seconds)
20:48:53 <EvanR> so like you scroll down to the inventory page for character A, scroll right and it goes to not the inventory of character B?
20:49:02 <ski> yep, basically
20:50:12 <ski> like whenever you moved in a text editor to another line, it would move to the start of the line. or even just not restore the current column level when you moved down/up to a line of suffficient length
20:50:31 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
20:51:11 <hpc> sounds like notepad
20:51:24 <hpc> if you have word wrap on in older versions, sometimes when you save the cursor moves
20:51:26 <ski> (some older IDEs, like Commodore 64 screen editor (e.g. for BASIC), and Borland Turbo C simply allowed you to position yourself past "the end" of a line, making it more transparent, inserting spaces (or maybe configurable to tabs, for the latter), if you inserted any non-blank)
20:51:58 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
20:52:02 <ski> yea .. have done my share of editing in Notpad, loading in WinHugs :)
20:52:30 <EvanR> might as well allow going before the first line, and left of the beginning of line. Complete the plane
20:52:30 × vn36 quits (~vn36@123.63.203.210) (Ping timeout: 268 seconds)
20:53:01 <EvanR> I could use that space left of the line for all kind of things
20:53:12 × kenran quits (~user@user/kenran) (Remote host closed the connection)
20:53:33 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Read error: Connection reset by peer)
20:53:47 <ski> @where Vital
20:53:47 <lambdabot> "Vital is a document-centered implementation of Haskell","The Vital project (acronym: Visual Interactive Typed Applicative Language) is investigating a /document-centered/ approach to functional
20:53:47 <lambdabot> programming with an emphasis on the display and /direct manipulation/ of complex data structures." (cf. spreadsheets) <http://www.cs.kent.ac.uk/projects/vital/>,<https://web.archive.org/web/2009052901
20:53:47 <lambdabot> 0107/http://www.cs.kent.ac.uk:80/projects/vital/>
20:54:58 <EvanR> the link being broken, literally
20:55:39 <EvanR> we can rebuild it https://web.archive.org/web/20090529010107/http://www.cs.kent.ac.uk:80/projects/vital/
20:56:28 <ski> EvanR : would it be one-point/Alexandroff completion, or Stone–Čech ?
20:56:59 <EvanR> do those support unicode?
20:57:19 <ski> hm .. i dunno about completion of unicode plane
20:58:05 × jinsun quits (~jinsun@user/jinsun) (Read error: Connection reset by peer)
21:00:38 <ski> hpc : oh, and yea .. visual line move (like `line-move-visual' being on in Emacs) annoys me. if i move up or down, i want to move to corresponding column positions of logical (physical ?) lines, not to apparent corresponding positions on my current display with some long lines wrapped ..
21:00:56 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
21:02:03 <dolio> That's helpfully telling you to make your lines shorter. :)
21:02:38 <ski> yea i know .. but sometimes that's sadly not practical
21:03:06 <EvanR> if you need your long lines to fit on the screen, that calls for a hyberpolic plane
21:03:18 <EvanR> hyperbolic!
21:03:33 ski typically tries to keep lines at most `80' columns, and pages at most `66' lines
21:03:34 <hpc> ski: vim does it the way you want
21:03:56 <hpc> same with block moves, they remain rectangular as if you had an infinitely wide screen
21:04:09 <ski> yea, Emacs does as well, when i club it with `(setq line-move-visual nil)'
21:04:59 <ski> (i just happened to use a machine lately where i'd not added that to `$HOME/.emacs', is why i recalled it now)
21:05:59 <ski> EvanR : hmm ..
21:06:11 ski tries to imagine a hyperbolic plane code explorer
21:06:42 <EvanR> it would mess this up though https://i.imgur.com/ryt16xg.png
21:07:03 ski . o O ( zipper for graphs, possibly `n'-categories )
21:07:20 <EvanR> suddenly you can't rely on the finite screen area to limit the demand of infinite objects
21:07:41 jakalx joins (~jakalx@base.jakalx.net)
21:08:06 <ski> well, at some point you get low enough resolution that you can stop anyway ?
21:08:10 <EvanR> ok ok you can stop when it is determined there's not enough DPI at the edge to read anything, or not enough DPI in the user's vision, which ever fails first
21:09:39 ski . o O ( "Why program with continuous time?" by conal in 2010-01-02 at <http://conal.net/blog/posts/why-program-with-continuous-time> )
21:32:39 × euandreh quits (~euandreh@179.214.113.107) (Ping timeout: 252 seconds)
21:33:30 ski . o O ( zipper for graphs )
21:33:32 VictorLandevos joins (~VictorLan@cpc142034-slou6-2-0-cust488.17-4.cable.virginm.net)
21:33:42 causal joins (~user@2001:470:ea0f:3:329c:23ff:fe3f:1e0e)
21:33:49 × chomwitt quits (~chomwitt@2a02:587:dc0c:c200:a0a8:ed7f:a699:91a5) (Ping timeout: 268 seconds)
21:34:17 talismanick joins (~talismani@2601:200:c100:c9e0::1b0b)
21:34:34 euandreh joins (~euandreh@179.214.113.107)
21:36:43 elbear joins (~lucian@188.24.138.239)
21:38:01 burnsidesLlama joins (~burnsides@client-8-86.eduroam.oxuni.org.uk)
21:40:09 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 258 seconds)
21:41:11 × elbear quits (~lucian@188.24.138.239) (Ping timeout: 268 seconds)
21:42:11 × rockystone quits (~rocky@user/rockymarine) (Ping timeout: 252 seconds)
21:49:23 × acidjnk_new quits (~acidjnk@p200300d6e7137a99955eeb096340e161.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
21:51:46 bgamari_ joins (~bgamari@64.223.236.29)
21:53:45 × bgamari quits (~bgamari@64.223.130.138) (Ping timeout: 250 seconds)
21:58:34 ubert1 joins (~Thunderbi@178.165.199.63.wireless.dyn.drei.com)
21:59:24 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:00:11 LukeHoersten joins (~LukeHoers@user/lukehoersten)
22:00:24 × ubert quits (~Thunderbi@91.141.75.122.wireless.dyn.drei.com) (Ping timeout: 264 seconds)
22:00:24 ubert1 is now known as ubert
22:07:46 <monochrom> You know, hyperbolic geometry display goes well with hyperbolic time. For example, if you compute and print an infinite list, you throttle the computation so the nth item is put on hold for Theta(n) seconds.
22:09:00 acidjnk_new joins (~acidjnk@p200300d6e7137a99955eeb096340e161.dip0.t-ipconnect.de)
22:09:47 × stackdroid18 quits (14094@user/stackdroid) (Quit: hasta la vista... tchau!)
22:10:27 × phma quits (phma@2001:5b0:211f:2d8:cb19:bdbc:6195:cb49) (Read error: Connection reset by peer)
22:10:31 <monochrom> This is known as Anti-de Sitter space-time and enjoys the AdS/CFT holographic principle >:)
22:11:00 <EvanR> a clever and useful implementation of that would, as soon as you press enter, begin uniform acceleration of the user toward andromeda galaxy
22:11:25 phma joins (~phma@host-67-44-209-51.hnremote.net)
22:11:26 <EvanR> time dilation would fix the infinite list and travel time to the destination in one shot
22:11:52 × michalz quits (~michalz@185.246.207.200) (Remote host closed the connection)
22:14:26 wonko joins (~wjc@2a0e:1c80:2:0:45:15:19:130)
22:14:28 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:16:04 <EvanR> holographic graphics would be good though
22:24:35 × raehik1 quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 248 seconds)
22:25:48 Tuplanolla joins (~Tuplanoll@91-159-69-34.elisa-laajakaista.fi)
22:33:02 jespada joins (~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net)
22:34:41 Topsi joins (~Topsi@dyndsl-095-033-016-174.ewe-ip-backbone.de)
22:38:02 × burnsidesLlama quits (~burnsides@client-8-86.eduroam.oxuni.org.uk) (Remote host closed the connection)
22:38:25 × califax quits (~califax@user/califx) (Ping timeout: 258 seconds)
22:38:37 califax_ joins (~califax@user/califx)
22:39:51 califax_ is now known as califax
22:40:48 DDR joins (~DDR@2604:3d08:4c7f:8250:90d1:8621:421c:69c0)
22:45:55 × megaTherion quits (~therion@unix.io) (Ping timeout: 248 seconds)
22:50:12 × wonko quits (~wjc@2a0e:1c80:2:0:45:15:19:130) (Ping timeout: 264 seconds)
22:52:18 nate1 joins (~nate@98.45.169.16)
22:56:22 megaTherion joins (~therion@unix.io)
22:57:39 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds)
22:58:44 caryhartline joins (~caryhartl@2600:1700:2d0:8d30:85ce:60ba:541:2d5a)
23:06:49 justsomeguy joins (~justsomeg@user/justsomeguy)
23:08:30 jmorris joins (uid537181@id-537181.uxbridge.irccloud.com)
23:12:42 burnsidesLlama joins (~burnsides@client-8-86.eduroam.oxuni.org.uk)
23:14:32 × titibandit quits (~titibandi@xdsl-78-34-208-230.nc.de) (Remote host closed the connection)
23:15:56 gqplox joins (~textual@97e654ef.skybroadband.com)
23:16:11 elbear joins (~lucian@188.24.138.239)
23:18:37 × burnsidesLlama quits (~burnsides@client-8-86.eduroam.oxuni.org.uk) (Ping timeout: 268 seconds)
23:20:48 × elbear quits (~lucian@188.24.138.239) (Ping timeout: 264 seconds)
23:25:53 rockystone joins (~rocky@user/rockymarine)
23:38:11 × Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Ping timeout: 248 seconds)
23:43:33 × xff0x quits (~xff0x@ai071162.d.east.v6connect.net) (Ping timeout: 252 seconds)
23:44:18 × vorpuni quits (~pvorp@2001:861:3881:c690:ba0e:e680:831e:7c7b) (Quit: bye)
23:44:39 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
23:46:26 Sciencentistguy joins (~sciencent@hacksoc/ordinary-member)
23:46:56 xff0x joins (~xff0x@ai071162.d.east.v6connect.net)
23:48:43 <Clinton[m]> This is kinda a vague question, looking for a bit of guidance.... (full message at <https://libera.ems.host/_matrix/media/r0/download/libera.chat/4e1475f4ab3bf82a4ff1628027b957b8521a02d6>)
23:49:19 <EvanR> this ADT is found in GHC.Data.Bag https://paste.tomsmeding.com/KaoyLc6x I was wondering if there is any source literature on it somewhere
23:50:04 <Axman6> Clinton[m]: I'm not sure you want that instance, but aren't you basically looking at bmap . bmap?
23:50:15 gentauro joins (~gentauro@user/gentauro)
23:50:49 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Quit: leaving)
23:51:38 <ski> @kind ReaderT
23:51:38 <lambdabot> * -> (* -> *) -> * -> *
23:51:56 <ski> Clinton[m] : you have a kind error
23:51:58 <Axman6> hmm, yeah doesn't quite work
23:54:05 <Clinton[m]> Yeah, I know the instance doesn't work, as the `\x -> ...` syntax isn't valid.
23:55:14 <EvanR> what would the type of the thing be
23:55:29 <Clinton[m]> but the vibe is I think it does, if `x :: (Type -> Type) -> Type`.
23:55:30 <ski> ah, i'm sorry, i'm mistaken .. your `x' has kind `k -> Type' (well, `k' is forced to be `Type' by `ReaderT')
23:55:52 <ski> but yea, you can't use type-level lambdas
23:55:54 <Clinton[m]> s///, s/k/Type/, s///
23:56:38 <Clinton[m]> edited now for simplicity, I just copied it from the hackage package
23:57:00 <ski> you could try using `instance FunctorB t => FunctorB (Compose t (ReaderT r))'
23:57:52 <ski> hmm
23:57:58 <Clinton[m]> ski: oh that could work...
23:58:08 <ski> yea, but i'm not sure it's a that good idea
23:59:18 × tomboy64 quits (~tomboy64@user/tomboy64) (Quit: Off to see the wizard.)

All times are in UTC on 2022-10-13.