2021/03/13

2021-03-13 00:01:57 +0100kiweun(~kiweun@2607:fea8:2a62:9600:b401:41f7:a4d0:94d7) (Remote host closed the connection)
2021-03-13 00:03:13 +0100jjess
2021-03-13 00:03:48 +0100myShoggoth(~myShoggot@75.164.81.55) (Ping timeout: 245 seconds)
2021-03-13 00:04:44 +0100 <dmj`> wz1000: maybe GHC has savant syndrome
2021-03-13 00:04:45 +0100bergey`(~user@107.181.19.30) (Ping timeout: 264 seconds)
2021-03-13 00:06:34 +0100pera(~pera@unaffiliated/pera) (Ping timeout: 276 seconds)
2021-03-13 00:06:51 +0100pera(~pera@unaffiliated/pera)
2021-03-13 00:06:54 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-03-13 00:07:15 +0100 <infinisil> monochrom: That worked really well in fact!
2021-03-13 00:07:40 +0100 <monochrom> :)
2021-03-13 00:07:41 +0100 <infinisil> Other than passing the recursion depth around, I only needed to change the K1 implementation
2021-03-13 00:09:19 +0100forgottenone(~forgotten@176.42.24.172) (Quit: Konversation terminated!)
2021-03-13 00:09:31 +0100 <monochrom> Gurkenglas: I think I know how to prove it. E.g., "4 : (5 : [])" is a tree of 5 nodes. Do structural induction on such trees, or natural number strong induction on the number of nodes.
2021-03-13 00:09:38 +0100kiweun(~kiweun@2607:fea8:2a62:9600:5883:2b2b:203d:3c57)
2021-03-13 00:10:07 +0100 <Gurkenglas> monochrom, function types can have inf nodes
2021-03-13 00:11:03 +0100 <infinisil> Actually infinite lists can't be printed yet, those need special handling
2021-03-13 00:11:33 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl)
2021-03-13 00:11:33 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
2021-03-13 00:11:33 +0100mouseghost(~draco@wikipedia/desperek)
2021-03-13 00:11:42 +0100 <Gurkenglas> (function
2021-03-13 00:11:48 +0100 <Gurkenglas> s can have inf nodes, i should say)
2021-03-13 00:11:55 +0100 <hololeap> :t take
2021-03-13 00:11:57 +0100 <lambdabot> Int -> [a] -> [a]
2021-03-13 00:12:25 +0100 <hololeap> @hoogle Foldable t => Int -> t a -> t a
2021-03-13 00:12:27 +0100 <lambdabot> Data.Vector.Generic take :: Vector v a => Int -> v a -> v a
2021-03-13 00:12:27 +0100 <lambdabot> Data.Vector.Generic drop :: Vector v a => Int -> v a -> v a
2021-03-13 00:12:27 +0100 <lambdabot> Data.Vector.Generic unsafeTake :: Vector v a => Int -> v a -> v a
2021-03-13 00:12:55 +0100 <infinisil> hololeap: Where I'm going I don't need take :P
2021-03-13 00:13:23 +0100 <infinisil> Limiting recursion depth while printing using Generic's
2021-03-13 00:14:11 +0100 <Gurkenglas> (where "number of nodes" is the length of each chain from bottom, of course :) )
2021-03-13 00:14:25 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:9d6d:f5b3:4e2:6d89)
2021-03-13 00:14:36 +0100 <hololeap> ok, but if the data structure supports some cutoff to lazy evaluation, then you could just use Show, or am i missing something?
2021-03-13 00:14:54 +0100 <monochrom> OK, infinitely many nodes may be infinite height or infinite breadth or both.
2021-03-13 00:15:25 +0100 <monochrom> For finite height, do induction on height. For infinite height, oo = oo done.
2021-03-13 00:15:32 +0100hololeapfeels the impending poke of a thorn
2021-03-13 00:15:45 +0100 <infinisil> hololeap: How would that work? How would Show know it should not print further?
2021-03-13 00:16:12 +0100 <Gurkenglas> i doubt that the shape of the values ought to be relevant. i agree that the proof should proceed by some sort of induction
2021-03-13 00:16:35 +0100 <hololeap> it wouldn't because that responsibility would be pushed onto something that passes to show
2021-03-13 00:16:42 +0100 <monochrom> And the tree just has to be y in tree form, which can still has a few bottoms and that's why it can still be finite height. We are just evolving x towards y, not towards normal form.
2021-03-13 00:16:58 +0100joebobjoe(~joebobjoe@unaffiliated/joebobjoe) (Ping timeout: 276 seconds)
2021-03-13 00:17:20 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:9d6d:f5b3:4e2:6d89) (Client Quit)
2021-03-13 00:17:23 +0100heatsink(~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947)
2021-03-13 00:17:23 +0100 <Gurkenglas> i'd be interested whether the proof depends on some other statements that are true for haskell types but not every pointed algebraic domain with arbitrary meets
2021-03-13 00:17:26 +0100mouseghost(~draco@wikipedia/desperek) (Quit: mew wew)
2021-03-13 00:18:02 +0100usr25_tm(~usr25@unaffiliated/usr25)
2021-03-13 00:18:28 +0100 <infinisil> hololeap: Ah yeah but I don't want to do that in my case
2021-03-13 00:18:45 +0100 <monochrom> I think you need computability-related assumptions, such as "no continuum between two values, ever".
2021-03-13 00:18:53 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2021-03-13 00:18:59 +0100 <monochrom> In fact, no Zeno paradox either.
2021-03-13 00:19:08 +0100 <infinisil> hololeap: I have like 100 data types that I want to log, and some of them can get arbitrarily large in size. Using show would print arbitrarily long log lines
2021-03-13 00:19:29 +0100 <infinisil> I'm creating a class like Show, but which allows limiting the recursion depth generically
2021-03-13 00:19:30 +0100elliott__(~elliott@pool-108-51-101-42.washdc.fios.verizon.net)
2021-03-13 00:20:17 +0100borne(~fritjof@200116b86456970065fd8eaafdc5f06e.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2021-03-13 00:21:04 +0100elliott__(~elliott@pool-108-51-101-42.washdc.fios.verizon.net) (Client Quit)
2021-03-13 00:21:08 +0100 <hololeap> i wonder if there is a typeclass for any recursive data structure that can count its depth
2021-03-13 00:21:37 +0100 <hololeap> that sounds more useful than a specialized Show, IMO
2021-03-13 00:21:43 +0100usr25(~usr25@unaffiliated/usr25) (Ping timeout: 245 seconds)
2021-03-13 00:21:54 +0100 <infinisil> Hmm yeah it does
2021-03-13 00:22:03 +0100 <Gurkenglas> (huh i didnt even notice till now but there exist infinite descending chains, such as iterate (bottom:) (repeat ()))
2021-03-13 00:22:06 +0100 <monochrom> I think this is a requirement you need and it's a well-established extra condition in domain theory to acknowledge that we're talking about computing.
2021-03-13 00:22:11 +0100 <infinisil> hololeap: Though that wouldn't work, because `countDepth [1..] = \infty`
2021-03-13 00:22:39 +0100dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 3.0)
2021-03-13 00:22:54 +0100martin02_martin02
2021-03-13 00:23:02 +0100blueonyx(b9d4ab4b@unaffiliated/blueonyx) (Ping timeout: 240 seconds)
2021-03-13 00:23:03 +0100 <monochrom> There is a definition of "finite element". It's very technical, but the idea is that, e.g., 4 : 4 : bottom is finite, 4 : 4 : 4 : ... (to no end) is not finite.
2021-03-13 00:23:06 +0100DataComputist(~lumeng@50.43.26.251) (Ping timeout: 246 seconds)
2021-03-13 00:23:38 +0100 <monochrom> And the extra requirement is this: Every x equals the lub of all finite elements below x.
2021-03-13 00:23:57 +0100__minoru__shirae(~shiraeesh@109.166.56.60) (Ping timeout: 264 seconds)
2021-03-13 00:24:09 +0100DataComputist(~lumeng@50.43.26.251)
2021-03-13 00:24:27 +0100 <hololeap> i'm thinking something along the lines of `takeR :: Recursive t => Int -> r a -> r a` and `showUntil :: (Show1 t, Recursive t) => Int -> r a -> String`
2021-03-13 00:24:48 +0100 <hololeap> oops s/t/r/
2021-03-13 00:25:46 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-03-13 00:26:21 +0100 <hololeap> infinisil: i'm not saying it's better than your idea, just a bit more general perhaps
2021-03-13 00:26:40 +0100 <Gurkenglas> finite x are exactly compact x, yes? aka every chain with lub x includes x
2021-03-13 00:27:09 +0100 <Gurkenglas> then "every x equals the lub of all finite elements below x" is exactly "algebraic"
2021-03-13 00:27:10 +0100borne(~fritjof@200116b86456970065fd8eaafdc5f06e.dip.versatel-1u1.de)
2021-03-13 00:27:18 +0100 <infinisil> hololeap: Hmm yeah that does sound interesting
2021-03-13 00:27:52 +0100rj(~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds)
2021-03-13 00:28:09 +0100 <infinisil> hololeap: Though what would it replace the values that it cuts off with?
2021-03-13 00:28:10 +0100 <Gurkenglas> (assuming meets, i think)
2021-03-13 00:28:39 +0100xsperry(~as@unaffiliated/xsperry) (Remote host closed the connection)
2021-03-13 00:29:04 +0100 <Gurkenglas> (nevermind should work without meets)
2021-03-13 00:29:25 +0100 <hololeap> i know that someone here has refered to recursion-schemes as "a joke." not sure why; probably something to do with performance
2021-03-13 00:29:53 +0100 <hololeap> i've always thought that abstracting out the recursive part of recursive data types was a neat idea
2021-03-13 00:30:06 +0100infinisilagrees
2021-03-13 00:30:35 +0100 <infinisil> Would it maybe be something like `takeR :: Recursive r => Int -> r a -> r (Maybe a)`?
2021-03-13 00:31:17 +0100usr256(~usr25@unaffiliated/usr25)
2021-03-13 00:31:18 +0100rj(~x@gateway/tor-sasl/rj)
2021-03-13 00:31:34 +0100pera(~pera@unaffiliated/pera) (Read error: Connection reset by peer)
2021-03-13 00:32:35 +0100 <infinisil> hololeap: monochrom: Oh the Data class kind of looks very relevant: https://hackage.haskell.org/package/base-4.11.0.0/docs/Data-Data.html#t:Data
2021-03-13 00:32:43 +0100 <hololeap> that depends on if the functor you're recursing over has some sort of "nullary constructor"
2021-03-13 00:32:46 +0100 <infinisil> I have a feeling such a recursion-limiting print could be implemented with this
2021-03-13 00:32:47 +0100 <Gurkenglas> https://hackage.haskell.org/package/free-5.1.6/docs/Control-Monad-Free.html#v:cutoff :)
2021-03-13 00:33:13 +0100 <infinisil> Gurkenglas: Oh nice!
2021-03-13 00:33:33 +0100notzmv(~zmv@unaffiliated/zmv) (Ping timeout: 264 seconds)
2021-03-13 00:33:40 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2021-03-13 00:33:48 +0100 <Gurkenglas> ekmett got there a decade ago
2021-03-13 00:33:49 +0100 <monochrom> compact and finite coincide for complete lattices. But I'm afraid compactness doesn't make sense for most domains. Most domains refuse to be complete lattices.
2021-03-13 00:34:16 +0100 <hololeap> some subset of Recursive woudld be data types that recurse over a functor that can short circuit the recursion
2021-03-13 00:35:07 +0100myShoggoth(~myShoggot@75.164.81.55)
2021-03-13 00:35:21 +0100usr25_tm(~usr25@unaffiliated/usr25) (Ping timeout: 264 seconds)
2021-03-13 00:35:44 +0100 <Gurkenglas> monochrom, lemme guess finite will end up being "the length of each finest chain from bottom to x is finite"
2021-03-13 00:36:54 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 256 seconds)
2021-03-13 00:37:11 +0100 <Gurkenglas> (aka the most defined [()] -> () wouldn't be finite)
2021-03-13 00:37:51 +0100 <hololeap> so, Fix (a,) is isomorphic to an infinite stream and the recursion will go on as long as we are willing to consume it, but Fix (Compose Maybe (a,)) is isomorphic to a list (did i get that right?) and it could end at any moment
2021-03-13 00:38:02 +0100 <monochrom> I hope it's true. But the definition I know doesn't say it directly (pun intended, just you wait), and I don't have any idea what it means except when applied to ADTs for example it does come out as "finite tree height".
2021-03-13 00:39:13 +0100 <monochrom> Here is the definition: k is finite iff for every directed set D, if k is below the join of D, then k is below someone in D.
2021-03-13 00:40:08 +0100 <Gurkenglas> yep thats compact. is my version different?
2021-03-13 00:41:21 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 264 seconds)
2021-03-13 00:41:42 +0100 <monochrom> compactness removes "directed". and it s/someone in D/some finite subset of D/
2021-03-13 00:41:43 +0100 <hololeap> infinisil: actually, no, you don't need to return `r (Maybe a)`, even if your recursive type may be finite, just like `take` doesn't return [Maybe a]
2021-03-13 00:41:51 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-03-13 00:41:58 +0100 <monochrom> err, s/someone in D/join of some finite subset of D/
2021-03-13 00:42:11 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-03-13 00:42:21 +0100 <hololeap> it either returns the structure up to the depth you specified, or up to the end of the structure. whichever is shortest.
2021-03-13 00:43:23 +0100 <monochrom> I would play safe and not use compactness per se because it presumes arbitrary joins exist, which is false for the actually useful domains.
2021-03-13 00:43:33 +0100 <hololeap> infinisil: but how would you handle rose trees, for instance, where the possible inifinty is in two dimensions?
2021-03-13 00:43:33 +0100 <Gurkenglas> oh man i really hope im just confused and everyone doesnt actually override the same terminology
2021-03-13 00:43:37 +0100bergey`(~user@pool-74-108-99-127.nycmny.fios.verizon.net)
2021-03-13 00:43:43 +0100 <monochrom> In terms of intuition it's OK to analogize them of course.
2021-03-13 00:43:45 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-13 00:44:23 +0100 <infinisil> hololeap: Not sure
2021-03-13 00:44:31 +0100 <infinisil> But the Generic approach works well :)
2021-03-13 00:44:35 +0100blueonyx(b9d4ab4b@unaffiliated/blueonyx)
2021-03-13 00:44:49 +0100 <hololeap> i'm not sure it would in the case of rose trees, would it?
2021-03-13 00:45:32 +0100 <Logio> Gurkenglas: coming from math, people always seem to use the least general definition of compactness that happens to work in their problem domain
2021-03-13 00:46:14 +0100 <hololeap> didn't there used to be a Data.Tree in base?
2021-03-13 00:46:54 +0100 <Gurkenglas> now i get why this guy linked me a book as old as me, he wanted me to learn the same flavor of terminology he did
2021-03-13 00:46:59 +0100 <hololeap> nvm, it's in containers
2021-03-13 00:47:21 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 264 seconds)
2021-03-13 00:47:39 +0100 <hololeap> infinisil: you can test your implementation on this: https://hackage.haskell.org/package/containers/docs/Data-Tree.html
2021-03-13 00:48:22 +0100 <hololeap> that has two dimensions of possibly infinite recursion
2021-03-13 00:49:39 +0100myShoggoth(~myShoggot@75.164.81.55) (Ping timeout: 245 seconds)
2021-03-13 00:50:28 +0100 <hololeap> so every level may need to be stopped at some level of recursion, and there can be infinite levels
2021-03-13 00:50:32 +0100myShoggoth(~myShoggot@75.164.81.55)
2021-03-13 00:51:12 +0100 <hololeap> or maybe that's a corner case that you don't want to touch... understandably :)
2021-03-13 00:51:31 +0100 <infinisil> hololeap: I've already tested it with my own tree type (data MyTree = Leaf Int | Node MyTree MyTree)
2021-03-13 00:51:37 +0100 <infinisil> recursiveTree = Node recursiveTree recursiveTree
2021-03-13 00:51:53 +0100 <infinisil> gshow 1 recursiveTree gives `Node {left = Node {left = ..., right = ...}, right = Node {left = ..., right = ...}}`
2021-03-13 00:51:58 +0100notzmv(~zmv@unaffiliated/zmv)
2021-03-13 00:52:12 +0100 <hololeap> i get that, but your tree has one dimension of recursion and Data.Tree, aka rose trees, have two
2021-03-13 00:52:44 +0100 <infinisil> It does?
2021-03-13 00:52:54 +0100 <hololeap> since each level of the tree is a (possibly infinite) list of more subtrees
2021-03-13 00:53:02 +0100 <infinisil> Ahh
2021-03-13 00:53:06 +0100 <infinisil> lemme try
2021-03-13 00:53:40 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 00:54:10 +0100 <infinisil> data MyTree = Leaf | Node [MyTree]
2021-03-13 00:54:14 +0100 <infinisil> recursiveTree = Node (repeat recursiveTree)
2021-03-13 00:54:30 +0100 <infinisil> `gshow 4 recursiveTree` => `Node [Node [Node [Node [...],...],Node [...],...],Node [Node [...],...],Node [...],...]`
2021-03-13 00:54:52 +0100 <infinisil> Works great :D
2021-03-13 00:55:55 +0100 <hololeap> fair, although was that the result you were expecting?
2021-03-13 00:55:55 +0100Narinas(~Narinas@187-178-93-112.dynamic.axtel.net) (Read error: Connection reset by peer)
2021-03-13 00:56:10 +0100bergey`(~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 256 seconds)
2021-03-13 00:56:13 +0100xsperry(~as@unaffiliated/xsperry)
2021-03-13 00:56:15 +0100 <infinisil> Yea
2021-03-13 00:56:30 +0100Narinas(~Narinas@187-178-93-112.dynamic.axtel.net)
2021-03-13 00:56:48 +0100 <infinisil> I should probably share the implementation
2021-03-13 00:57:04 +0100 <hololeap> i'm just trying to point out possible corner cases
2021-03-13 00:57:33 +0100 <hololeap> if it works the way you want, then great
2021-03-13 00:58:45 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 264 seconds)
2021-03-13 01:05:29 +0100 <infinisil> hololeap: https://gist.github.com/ccdf467c657950b4c5fa1139df246fb2
2021-03-13 01:05:58 +0100Jd007(~Jd007@162.156.11.151) (Quit: Jd007)
2021-03-13 01:06:25 +0100heatsink(~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) (Remote host closed the connection)
2021-03-13 01:07:58 +0100ezrakilty(~ezrakilty@75-172-115-167.tukw.qwest.net)
2021-03-13 01:08:04 +0100notzmv(~zmv@unaffiliated/zmv) (Ping timeout: 256 seconds)
2021-03-13 01:08:31 +0100sz0(uid110435@gateway/web/irccloud.com/x-iwavjdaunpjxrjlx)
2021-03-13 01:08:57 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 264 seconds)
2021-03-13 01:09:02 +0100Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2021-03-13 01:09:25 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
2021-03-13 01:09:45 +0100ketas1(~ketas@37.120.211.188) (Remote host closed the connection)
2021-03-13 01:10:55 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 276 seconds)
2021-03-13 01:11:43 +0100qih(~pi@210-54-120-166.adsl.xtra.co.nz)
2021-03-13 01:12:06 +0100ezrakilty(~ezrakilty@75-172-115-167.tukw.qwest.net) (Ping timeout: 246 seconds)
2021-03-13 01:12:53 +0100rj(~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds)
2021-03-13 01:12:58 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 245 seconds)
2021-03-13 01:13:25 +0100ezrakilty(~ezrakilty@75-172-115-167.tukw.qwest.net)
2021-03-13 01:15:32 +0100rj(~x@gateway/tor-sasl/rj)
2021-03-13 01:16:48 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
2021-03-13 01:18:33 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-03-13 01:18:45 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 246 seconds)
2021-03-13 01:18:47 +0100joebobjoe(~joebobjoe@unaffiliated/joebobjoe)
2021-03-13 01:19:04 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-03-13 01:19:27 +0100stree(~stree@68.36.8.116) (Ping timeout: 246 seconds)
2021-03-13 01:21:13 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 01:21:18 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-03-13 01:23:48 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 245 seconds)
2021-03-13 01:24:07 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2021-03-13 01:24:09 +0100kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2021-03-13 01:25:31 +0100bennofs_(~quassel@dslb-188-106-240-148.188.106.pools.vodafone-ip.de)
2021-03-13 01:25:45 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2021-03-13 01:25:49 +0100kensanata(~kensanata@195.140.213.38)
2021-03-13 01:26:12 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds)
2021-03-13 01:27:15 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2021-03-13 01:27:20 +0100curiousgay(~gay@178.217.208.8) (Ping timeout: 256 seconds)
2021-03-13 01:28:54 +0100bennofs__(~quassel@dslb-188-106-247-127.188.106.pools.vodafone-ip.de) (Ping timeout: 246 seconds)
2021-03-13 01:31:27 +0100curiousgay(~gay@178.217.208.8)
2021-03-13 01:31:42 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 246 seconds)
2021-03-13 01:32:58 +0100stree(~stree@68.36.8.116)
2021-03-13 01:36:02 +0100ezrakilty(~ezrakilty@75-172-115-167.tukw.qwest.net) (Remote host closed the connection)
2021-03-13 01:36:09 +0100sayola(~vekto@dslb-002-201-085-157.002.201.pools.vodafone-ip.de) (Read error: Connection reset by peer)
2021-03-13 01:45:32 +0100conal(~conal@184.170.243.131) (Quit: Computer has gone to sleep.)
2021-03-13 01:47:21 +0100hexo(~hexo@gateway/tor-sasl/hexo) (Remote host closed the connection)
2021-03-13 01:47:21 +0100srk(~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection)
2021-03-13 01:47:36 +0100hexo(~hexo@gateway/tor-sasl/hexo)
2021-03-13 01:47:41 +0100srk(~sorki@gateway/tor-sasl/sorki)
2021-03-13 01:47:52 +0100heatsink(~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947)
2021-03-13 01:49:12 +0100blueonyx(b9d4ab4b@unaffiliated/blueonyx) (Quit: Connection closed)
2021-03-13 01:49:55 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-03-13 01:52:27 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds)
2021-03-13 01:55:51 +0100conal(~conal@184.170.243.131)
2021-03-13 01:57:24 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-03-13 01:57:50 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Max SendQ exceeded)
2021-03-13 01:58:43 +0100rajivr(uid269651@gateway/web/irccloud.com/x-qhbpzrlqpyrqpcwa)
2021-03-13 01:59:57 +0100hexfive(~hexfive@50.35.83.177)
2021-03-13 02:00:22 +0100rj(~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds)
2021-03-13 02:03:57 +0100rj(~x@gateway/tor-sasl/rj)
2021-03-13 02:04:50 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2021-03-13 02:07:08 +0100gitgoood(~gitgood@82-132-219-163.dab.02.net)
2021-03-13 02:08:10 +0100 <hololeap> infinisil: don't know what to say apart from my previous statement :)
2021-03-13 02:08:31 +0100conal(~conal@184.170.243.131) (Quit: Computer has gone to sleep.)
2021-03-13 02:08:39 +0100ezrakilty(~ezrakilty@75-172-115-167.tukw.qwest.net)
2021-03-13 02:09:52 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser)
2021-03-13 02:10:10 +0100gitgood(~gitgood@82-132-218-210.dab.02.net) (Read error: Connection reset by peer)
2021-03-13 02:10:11 +0100conal(~conal@64.71.133.70)
2021-03-13 02:10:50 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 264 seconds)
2021-03-13 02:11:14 +0100nbloomf(~nbloomf@70.182.116.249)
2021-03-13 02:11:45 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-03-13 02:13:09 +0100ezrakilty(~ezrakilty@75-172-115-167.tukw.qwest.net) (Ping timeout: 264 seconds)
2021-03-13 02:15:19 +0100jamm_(~jamm@unaffiliated/jamm)
2021-03-13 02:15:29 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2021-03-13 02:16:50 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 264 seconds)
2021-03-13 02:19:50 +0100jamm_(~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds)
2021-03-13 02:20:22 +0100kam1(~kam1@83.123.154.198)
2021-03-13 02:20:51 +0100howdoi(uid224@gateway/web/irccloud.com/x-fbxhtxpvbmlflnip) (Quit: Connection closed for inactivity)
2021-03-13 02:24:00 +0100CoconutCrab(~Cua@unaffiliated/coconutcrab)
2021-03-13 02:26:18 +0100myShoggoth(~myShoggot@75.164.81.55) (Ping timeout: 245 seconds)
2021-03-13 02:27:57 +0100 <infinisil> hololeap: I've realized that I don't even need it lol
2021-03-13 02:28:42 +0100 <infinisil> Because in my case, I'm gonna want to turn all types into json Value's anyways
2021-03-13 02:28:51 +0100 <infinisil> And then I can just `limitRecursion :: Int -> Value -> Value`
2021-03-13 02:29:08 +0100 <infinisil> No need to mess with Generics and typeclasses
2021-03-13 02:29:10 +0100cfvnhtsp^(cfvnhtsp@ip98-184-89-2.mc.at.cox.net) ()
2021-03-13 02:29:44 +0100 <infinisil> But, this was an interesting experiment regardless :)
2021-03-13 02:30:37 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-03-13 02:31:52 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser)
2021-03-13 02:31:57 +0100kam1(~kam1@83.123.154.198) (Read error: Connection reset by peer)
2021-03-13 02:33:48 +0100joebobjoe(~joebobjoe@unaffiliated/joebobjoe) (Ping timeout: 245 seconds)
2021-03-13 02:34:57 +0100joebobjoe(~joebobjoe@unaffiliated/joebobjoe)
2021-03-13 02:38:01 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 276 seconds)
2021-03-13 02:39:38 +0100joebobjoe(~joebobjoe@unaffiliated/joebobjoe) (Ping timeout: 245 seconds)
2021-03-13 02:40:01 +0100joebobjoe(~joebobjoe@unaffiliated/joebobjoe)
2021-03-13 02:41:10 +0100usr256(~usr25@unaffiliated/usr25) (Quit: Leaving)
2021-03-13 02:41:17 +0100 <koz_> Does ByteString's take and drop cause allocations?
2021-03-13 02:42:07 +0100user5023(~user5023@79-100-188-22.ip.btc-net.bg)
2021-03-13 02:43:00 +0100ezrakilty(~ezrakilty@75-172-115-167.tukw.qwest.net)
2021-03-13 02:43:32 +0100rj(~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds)
2021-03-13 02:44:57 +0100joebobjoe(~joebobjoe@unaffiliated/joebobjoe) (Ping timeout: 264 seconds)
2021-03-13 02:46:09 +0100rj(~x@gateway/tor-sasl/rj)
2021-03-13 02:48:28 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2021-03-13 02:49:50 +0100kam1(~kam1@83.123.154.198)
2021-03-13 02:51:58 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser) (Read error: Connection reset by peer)
2021-03-13 02:52:40 +0100user5023(~user5023@79-100-188-22.ip.btc-net.bg) (Quit: Leaving)
2021-03-13 02:54:51 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-03-13 02:55:03 +0100kiweun(~kiweun@2607:fea8:2a62:9600:5883:2b2b:203d:3c57) (Remote host closed the connection)
2021-03-13 02:55:21 +0100vchlup_(~vchlup@nat.brnet.cz) (Ping timeout: 246 seconds)
2021-03-13 02:55:33 +0100kiweun(~kiweun@2607:fea8:2a62:9600:5883:2b2b:203d:3c57)
2021-03-13 02:55:37 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection)
2021-03-13 02:56:11 +0100 <infinisil> koz_: https://hackage.haskell.org/package/bytestring-0.11.1.0/docs/src/Data.ByteString.html#take
2021-03-13 02:56:36 +0100 <koz_> Based on this, I assume it's 'yes', because it has to 're-wrap'?
2021-03-13 02:57:15 +0100vchlup_(~vchlup@nat.brnet.cz)
2021-03-13 02:58:21 +0100 <infinisil> koz_: Oh, you mean whether it even allocates a single byte?
2021-03-13 02:58:26 +0100 <koz_> infinisil: Yes.
2021-03-13 02:58:48 +0100kam1(~kam1@83.123.154.198) (Read error: Connection reset by peer)
2021-03-13 02:59:51 +0100 <infinisil> koz_: Hmm I guess in general it can, but with rewrite rules and inlining I wouldn't be surprised for it not to in many cases
2021-03-13 03:00:14 +0100 <koz_> infinisil: Hmm. I might have to think about this some more.
2021-03-13 03:00:25 +0100 <infinisil> koz_: What's the motivation?
2021-03-13 03:00:26 +0100nbloomf(~nbloomf@70.182.116.249) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-03-13 03:00:30 +0100joebobjoe(~joebobjoe@unaffiliated/joebobjoe)
2021-03-13 03:00:48 +0100 <koz_> I'm tweaking the matching implementation for text-ascii to speed it up. I currently race text pretty well, but I allocate more than text does.
2021-03-13 03:02:00 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 246 seconds)
2021-03-13 03:03:12 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2021-03-13 03:03:25 +0100 <infinisil> Hmm well text's take actually doesn't even appear to be O(n)
2021-03-13 03:03:37 +0100 <infinisil> sorry, it _is_ O(n)
2021-03-13 03:03:39 +0100 <koz_> infinisil: The 'take' part isn't what I'm optimizing.
2021-03-13 03:03:51 +0100 <koz_> I'm posting something to bytestring's issue tracker, that may clear it up.
2021-03-13 03:04:47 +0100notzmv(~zmv@unaffiliated/zmv)
2021-03-13 03:05:43 +0100 <koz_> infinisil: https://github.com/haskell/bytestring/issues/307#issuecomment-797847849
2021-03-13 03:06:55 +0100 <koz_> You can scroll to the bottom to see the code, and the benchmarks show the unwanted allocs.
2021-03-13 03:07:04 +0100 <koz_> If you have better ideas on why this is happening, I'm definitely all ears.
2021-03-13 03:08:51 +0100 <infinisil> koz_: Ah you're referring to the -O0 results where text-ascii sometimes allocates where text doesn't?
2021-03-13 03:09:03 +0100 <koz_> Yes.
2021-03-13 03:09:06 +0100 <koz_> This also happens on -O1.
2021-03-13 03:09:20 +0100 <koz_> At -O2 text drives off the cliff, but the allocs are still there.
2021-03-13 03:09:26 +0100 <koz_> And I'd rather they weren't if possible.
2021-03-13 03:09:43 +0100 <koz_> My only candidate for why this is happening is the 'let fragment = ...' computation.
2021-03-13 03:10:03 +0100Rudd0(~Rudd0@185.189.115.108) (Ping timeout: 245 seconds)
2021-03-13 03:10:06 +0100 <infinisil> Once in -O2, ascii-text doesn't allocate but text does
2021-03-13 03:10:15 +0100 <koz_> It still does.
2021-03-13 03:10:18 +0100 <infinisil> Are these benchmarks repeatable with the same results?
2021-03-13 03:10:22 +0100 <ntkr> hello all, I'm trying to write a websockets application with RIO and am getting hung up on how to extend the RIO monad to the functions that the websockets library needs. Any help here is much appreciated: https://paste.tomsmeding.com/bbXsCmh5
2021-03-13 03:10:27 +0100 <koz_> infinisil: Very consistently.
2021-03-13 03:10:42 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser)
2021-03-13 03:11:12 +0100thc202(~thc202@unaffiliated/thc202) (Ping timeout: 260 seconds)
2021-03-13 03:11:20 +0100 <koz_> The allocations done by text-ascii don't go away irrespective of -O level.
2021-03-13 03:11:31 +0100 <koz_> Check the 'No match' lines in both blocks, for example.
2021-03-13 03:11:43 +0100 <koz_> (text just allocates hilariously more)
2021-03-13 03:11:46 +0100 <infinisil> koz_: I'd try memory profiling to figure out where exactly the allocs happen
2021-03-13 03:12:02 +0100 <infinisil> I've been wanting to try out https://well-typed.com/blog/2021/01/first-look-at-hi-profiling-mode/
2021-03-13 03:12:04 +0100 <koz_> infinisil: What's the option to pass to 'cabal bench' to have it profile memory?
2021-03-13 03:12:35 +0100 <koz_> Ah, this.
2021-03-13 03:13:12 +0100 <koz_> So compile with -eventlog, then run with -hT?
2021-03-13 03:13:43 +0100 <infinisil> Haven't tried it out myself, I'd check the blog post :)
2021-03-13 03:14:15 +0100 <koz_> I'm not completely clear from it, because they use raw GHC.
2021-03-13 03:14:22 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-13 03:14:28 +0100 <koz_> I'll try adding -eventlog and -hT and see wat happen.
2021-03-13 03:14:37 +0100gitgoood(~gitgood@82-132-219-163.dab.02.net) (Read error: Connection reset by peer)
2021-03-13 03:14:42 +0100 <koz_> How recent a GHC do I need?
2021-03-13 03:14:51 +0100 <infinisil> It should be in 8.10.2 (the blog mentions that too)
2021-03-13 03:14:58 +0100 <koz_> OK, cool.
2021-03-13 03:14:59 +0100rj(~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds)
2021-03-13 03:15:29 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-03-13 03:15:41 +0100 <infinisil> actually it mentions that there's a backport for 8.10.2, not sure if it's merged (I'd think so though)
2021-03-13 03:15:51 +0100 <koz_> I have 8.10.4 so it should be there?
2021-03-13 03:15:53 +0100dcoutts__(~duncan@85.186.125.91.dyn.plus.net) (Remote host closed the connection)
2021-03-13 03:16:04 +0100dcoutts_(~dcoutts@unaffiliated/dcoutts)
2021-03-13 03:16:07 +0100 <infinisil> Probably
2021-03-13 03:16:13 +0100 <koz_> OK, let's see then.
2021-03-13 03:16:17 +0100dcoutts__(~duncan@85.186.125.91.dyn.plus.net)
2021-03-13 03:18:17 +0100dcoutts(~dcoutts@unaffiliated/dcoutts) (Ping timeout: 246 seconds)
2021-03-13 03:19:14 +0100 <koz_> How do I pass args to the executable in 'cabal bench'?
2021-03-13 03:19:43 +0100 <infinisil> Oh actually it might not be in yet, it looks like it was merged 1 week ago..?
2021-03-13 03:19:48 +0100 <koz_> Oh rofl.
2021-03-13 03:19:51 +0100 <infinisil> Checking https://gitlab.haskell.org/ghc/ghc/-/merge_requests/3469
2021-03-13 03:19:53 +0100 <koz_> So just regular heap profile?
2021-03-13 03:19:58 +0100 <infinisil> Yeah
2021-03-13 03:20:04 +0100 <koz_> What's the arg for that?
2021-03-13 03:20:10 +0100 <infinisil> No idea too :)
2021-03-13 03:20:54 +0100 <koz_> -h apparently.
2021-03-13 03:21:55 +0100 <infinisil> I'd do some research on profiling, it's not straightforward iirc
2021-03-13 03:22:04 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 03:22:54 +0100 <koz_> http://hackage.haskell.org/package/hp2pretty seems useful
2021-03-13 03:23:52 +0100 <koz_> Yeah... it's not terribly informative.
2021-03-13 03:25:02 +0100 <koz_> I'll see if this gets bodigrim's attention.
2021-03-13 03:25:12 +0100tmontoya(~tmontoya@ip70-191-3-73.lv.lv.cox.net)
2021-03-13 03:25:19 +0100carlomagno(~cararell@148.87.23.12) (Quit: Leaving.)
2021-03-13 03:25:30 +0100 <infinisil> koz_: https://github.com/mpickering/eventlog2html
2021-03-13 03:25:33 +0100 <infinisil> How about that
2021-03-13 03:25:33 +0100 <joebobjoe> is there a functional alternative to sh?
2021-03-13 03:25:37 +0100 <koz_> infinisil: Yeah, I saw that.
2021-03-13 03:25:42 +0100 <koz_> joebobjoe: As in, the shell?
2021-03-13 03:25:49 +0100 <joebobjoe> like I just want to glue some commands together but I don't want to learn zsh/sh
2021-03-13 03:25:55 +0100 <joebobjoe> koz_: yea
2021-03-13 03:26:16 +0100 <koz_> There's shh, but I dunno how good it is.
2021-03-13 03:26:51 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 246 seconds)
2021-03-13 03:26:51 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
2021-03-13 03:27:54 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2021-03-13 03:28:23 +0100drbean(~drbean@TC210-63-209-78.static.apol.com.tw)
2021-03-13 03:29:46 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-ruqfhmrhwkcudnys) (Quit: Connection closed for inactivity)
2021-03-13 03:30:03 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Client Quit)
2021-03-13 03:30:08 +0100 <joebobjoe> ok thanks
2021-03-13 03:30:34 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-03-13 03:31:02 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2021-03-13 03:33:41 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Client Quit)
2021-03-13 03:34:43 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2021-03-13 03:35:15 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 246 seconds)
2021-03-13 03:35:32 +0100 <VarikValefor[m]> To anyone who has not read the language report: READ THE LANGUAGE REPORT!!!
2021-03-13 03:35:53 +0100 <koz_> VarikValefor[m]: Why the emphatic presentation?
2021-03-13 03:36:12 +0100 <monochrom> Are you OK?
2021-03-13 03:36:21 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
2021-03-13 03:36:31 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Client Quit)
2021-03-13 03:36:39 +0100Jd007(~Jd007@162.156.11.151)
2021-03-13 03:37:12 +0100myShoggoth(~myShoggot@75.164.81.55)
2021-03-13 03:37:33 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2021-03-13 03:39:24 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser)
2021-03-13 03:41:29 +0100 <VarikValefor[m]> koz_: The emphasis is placed onto the suggestion to convey the mild annoyances which have accumulated after questions which are best answered with "RTFM" have been repeatedly encountered.
2021-03-13 03:41:29 +0100 <VarikValefor[m]> monochrom: Everything seems to be in order.
2021-03-13 03:41:43 +0100stree(~stree@68.36.8.116) (Ping timeout: 276 seconds)
2021-03-13 03:45:22 +0100 <ntkr> hello all, I'm trying to write a websockets application with RIO and am getting hung up on how to extend the RIO monad to the functions that the websockets library needs. Any help here is much appreciated: https://paste.tomsmeding.com/bbXsCmh5 [repost]
2021-03-13 03:45:31 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 03:45:49 +0100 <koz_> ntkr: You may have to wait a while.
2021-03-13 03:46:01 +0100 <koz_> I saw your query, but the channel's quiet, and I don't feel qualified to assist.
2021-03-13 03:46:29 +0100xff0x(~xff0x@2001:1a81:520c:1100:a1d8:2af1:7428:6b99) (Ping timeout: 272 seconds)
2021-03-13 03:46:34 +0100 <ntkr> oh thats fine, i appreciate you acknowledging the ask
2021-03-13 03:46:49 +0100mixfix41(~user@unaffiliated/mixfix41)
2021-03-13 03:47:08 +0100 <infinisil> ntkr: You'll want to use https://hackage.haskell.org/package/unliftio-core-0.2.0.1/docs/Control-Monad-IO-Unlift.html#t:Mona…
2021-03-13 03:47:18 +0100 <infinisil> The RIO monad is an instance of that
2021-03-13 03:47:42 +0100xff0x(~xff0x@2001:1a81:5243:ae00:c201:8f39:a8f8:4489)
2021-03-13 03:48:14 +0100 <ntkr> infinisil: i appreciate the direction, i'll read up
2021-03-13 03:48:48 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 245 seconds)
2021-03-13 03:48:52 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
2021-03-13 03:49:15 +0100tmontoya(~tmontoya@ip70-191-3-73.lv.lv.cox.net) ()
2021-03-13 03:50:49 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 276 seconds)
2021-03-13 03:51:16 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
2021-03-13 03:51:19 +0100 <infinisil> ntkr: I think this is actually the better thing to read: https://github.com/fpco/unliftio/tree/master/unliftio#unlifting-in-2-minutes
2021-03-13 03:51:37 +0100elliott_(~elliott_@172.58.187.170)
2021-03-13 03:52:20 +0100 <ntkr> infinisil: its definitely a little more dummy-friendly and that suits me
2021-03-13 03:54:16 +0100stree(~stree@68.36.8.116)
2021-03-13 03:54:43 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
2021-03-13 03:55:05 +0100 <infinisil> I think it should be `withRunInIO $ \runInIO -> libFunc (runInIO . myFunc)` in your run function
2021-03-13 03:55:29 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 03:55:59 +0100jud(~jud@unaffiliated/jud) (Quit: Leaving)
2021-03-13 03:56:04 +0100elliott_(~elliott_@172.58.187.170) (Read error: Connection reset by peer)
2021-03-13 03:56:18 +0100ezrakilty(~ezrakilty@75-172-115-167.tukw.qwest.net) (Ping timeout: 245 seconds)
2021-03-13 03:56:49 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362)
2021-03-13 03:57:52 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
2021-03-13 03:58:09 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 264 seconds)
2021-03-13 03:58:50 +0100ezrakilty(~ezrakilty@75-172-115-167.tukw.qwest.net)
2021-03-13 03:59:57 +0100 <infinisil> Alternatively you could actually just use the ReaderT approach mentioned in that page
2021-03-13 04:00:33 +0100curiousgay(~gay@178.217.208.8) (Ping timeout: 264 seconds)
2021-03-13 04:01:28 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds)
2021-03-13 04:01:30 +0100 <infinisil> That should be `ReaderT $ \env -> libFunc (\a -> runReaderT (myFunc a) env)`
2021-03-13 04:01:35 +0100curiousgay(~gay@178.217.208.8)
2021-03-13 04:01:46 +0100 <infinisil> And it's equivalent to what unliftio does with `withRunInIO`
2021-03-13 04:01:50 +0100 <infinisil> ntkr: ^
2021-03-13 04:03:28 +0100CrazyPython(~crazypyth@98.122.164.118) (Read error: Connection reset by peer)
2021-03-13 04:04:03 +0100 <ntkr> i'm grateful and impressed that you solved my problem so quickly. I'll need several cycles to figure out why this works
2021-03-13 04:04:18 +0100DataComputist(~lumeng@50.43.26.251) (Ping timeout: 256 seconds)
2021-03-13 04:04:47 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 04:05:35 +0100 <koz_> ntkr: It'll become second nature to you eventually.
2021-03-13 04:05:55 +0100 <ntkr> i'm looking forward to it :D
2021-03-13 04:06:09 +0100ddellacosta(~ddellacos@86.106.143.187)
2021-03-13 04:07:08 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 256 seconds)
2021-03-13 04:08:41 +0100FinnElija(~finn_elij@gateway/tor-sasl/finnelija/x-67402716)
2021-03-13 04:08:41 +0100finn_elijaGuest75344
2021-03-13 04:08:41 +0100FinnElijafinn_elija
2021-03-13 04:09:50 +0100ezrakilty(~ezrakilty@75-172-115-167.tukw.qwest.net) (Remote host closed the connection)
2021-03-13 04:09:56 +0100DataComputist(~lumeng@50.43.26.251)
2021-03-13 04:10:02 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser)
2021-03-13 04:10:28 +0100ddellacosta(~ddellacos@86.106.143.187) (Ping timeout: 245 seconds)
2021-03-13 04:12:08 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 245 seconds)
2021-03-13 04:12:20 +0100Guest75344(~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Ping timeout: 268 seconds)
2021-03-13 04:14:00 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
2021-03-13 04:20:13 +0100 <ntkr> this all just clicked for me and i have become a little smarter, thanks all! it is now apparent to me that i will need to do this kind of monadic impedence-matching for many of the functions exported by the websockets library.
2021-03-13 04:23:51 +0100 <infinisil> ntkr: If you're feeling adventurous, you could make a PR for the library to use unliftio :)
2021-03-13 04:24:06 +0100alx741(~alx741@181.196.69.27) (Quit: alx741)
2021-03-13 04:25:16 +0100Kaiepi(~Kaiepi@47.54.252.148)
2021-03-13 04:25:23 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 04:27:58 +0100myShoggoth(~myShoggot@75.164.81.55) (Ping timeout: 245 seconds)
2021-03-13 04:30:22 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds)
2021-03-13 04:31:53 +0100ddellacosta(~ddellacos@86.106.143.122)
2021-03-13 04:34:06 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 04:34:27 +0100 <ntkr> seems like just the right mix of doable and challenging, thanks for the homework!
2021-03-13 04:34:38 +0100theDon(~td@muedsl-82-207-238-185.citykom.de) (Ping timeout: 260 seconds)
2021-03-13 04:35:27 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
2021-03-13 04:36:25 +0100theDon(~td@muedsl-82-207-238-134.citykom.de)
2021-03-13 04:36:36 +0100ddellacosta(~ddellacos@86.106.143.122) (Ping timeout: 256 seconds)
2021-03-13 04:38:19 +0100 <infinisil> :D
2021-03-13 04:42:13 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Ping timeout: 272 seconds)
2021-03-13 04:43:28 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 276 seconds)
2021-03-13 04:51:53 +0100kam1(~kam1@83.123.154.198)
2021-03-13 04:53:24 +0100kam1(~kam1@83.123.154.198) (Read error: Connection reset by peer)
2021-03-13 04:53:35 +0100myShoggoth(~myShoggot@75.164.81.55)
2021-03-13 04:57:38 +0100CrazyPython(~crazypyth@98.122.164.118)
2021-03-13 05:04:50 +0100CrazyPython(~crazypyth@98.122.164.118) (Read error: Connection reset by peer)
2021-03-13 05:05:07 +0100kam1(~kam1@83.123.154.198)
2021-03-13 05:08:01 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 05:08:11 +0100Rudd0(~Rudd0@185.189.115.108)
2021-03-13 05:09:07 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-lslonovgjxgqvcfu) ()
2021-03-13 05:09:28 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-03-13 05:09:55 +0100kam1(~kam1@83.123.154.198) (Read error: Connection reset by peer)
2021-03-13 05:12:58 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 245 seconds)
2021-03-13 05:13:57 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 246 seconds)
2021-03-13 05:21:22 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2021-03-13 05:22:42 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-03-13 05:23:58 +0100kam1(~kam1@83.123.154.198)
2021-03-13 05:24:01 +0100kam1(~kam1@83.123.154.198) (Read error: Connection reset by peer)
2021-03-13 05:26:40 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 05:31:45 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 264 seconds)
2021-03-13 05:32:54 +0100CodeAlways(uid272474@gateway/web/irccloud.com/x-joqrqepywiyvdqbk) (Quit: Connection closed for inactivity)
2021-03-13 05:32:59 +0100toorevitimirp(~tooreviti@117.182.180.50)
2021-03-13 05:34:45 +0100stree(~stree@68.36.8.116) (Quit: Caught exception)
2021-03-13 05:34:57 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2021-03-13 05:35:09 +0100stree(~stree@68.36.8.116)
2021-03-13 05:36:47 +0100rdivyanshu(uid322626@gateway/web/irccloud.com/x-ilslhqpdgnemujjo)
2021-03-13 05:36:50 +0100CaptainIRS(9d31f23d@157.49.242.61)
2021-03-13 05:37:09 +0100kiweun(~kiweun@2607:fea8:2a62:9600:5883:2b2b:203d:3c57) ()
2021-03-13 05:39:39 +0100Wuzzy(~Wuzzy@p57a2ecf2.dip0.t-ipconnect.de)
2021-03-13 05:42:23 +0100ddellacosta(~ddellacos@86.106.143.10)
2021-03-13 05:43:09 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 05:43:34 +0100__minoru__shirae(~shiraeesh@109.166.56.60)
2021-03-13 05:43:48 +0100Techcable(~Techcable@168.235.93.147) (Quit: ZNC - https://znc.in)
2021-03-13 05:44:52 +0100Techcable(~Techcable@168.235.93.147)
2021-03-13 05:44:58 +0100bdixat(~AdminUser@pool-173-76-103-124.bstnma.fios.verizon.net)
2021-03-13 05:44:59 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-13 05:45:06 +0100joebobjoe(~joebobjoe@unaffiliated/joebobjoe) (Ping timeout: 246 seconds)
2021-03-13 05:45:33 +0100joebobjoe(~joebobjoe@unaffiliated/joebobjoe)
2021-03-13 05:46:20 +0100zebrag(~inkbottle@aaubervilliers-654-1-101-29.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-03-13 05:46:30 +0100ddellacosta(~ddellacos@86.106.143.10) (Ping timeout: 246 seconds)
2021-03-13 05:46:31 +0100 <curiousgay> gentle introduction to haskell tutorial has a broken example at 7.4 (page 36)
2021-03-13 05:46:51 +0100jophish(~jophish@li1766-207.members.linode.com) (Ping timeout: 246 seconds)
2021-03-13 05:47:52 +0100 <curiousgay> I don't know how to make putStr work before taking input and I had to replace catch function with catchIOError
2021-03-13 05:49:53 +0100 <monochrom> The issue with putStr is line buffering. If you don't mind s/putStr/putStrLn/ , it's a quick fix and you can move on without going down a rabbit hole.
2021-03-13 05:50:16 +0100joebobjoe(~joebobjoe@unaffiliated/joebobjoe) (Ping timeout: 256 seconds)
2021-03-13 05:50:56 +0100 <curiousgay> monochrom: what about catch function? I tried using the one from Control.Exception and got a type error
2021-03-13 05:51:02 +0100 <monochrom> The issue with catch is an overhaul of Haskell exception system.
2021-03-13 05:51:48 +0100 <curiousgay> ah, so you mean backwards compatibility is broken
2021-03-13 05:51:54 +0100 <monochrom> Yes.
2021-03-13 05:57:00 +0100__minoru__shirae(~shiraeesh@109.166.56.60) (Ping timeout: 246 seconds)
2021-03-13 05:57:18 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-03-13 05:57:36 +0100Tario(~Tario@201.192.165.173)
2021-03-13 06:02:07 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 276 seconds)
2021-03-13 06:02:10 +0100dfeuer(~dfeuer@pool-173-79-253-62.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
2021-03-13 06:04:49 +0100Wuzzy(~Wuzzy@p57a2ecf2.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-03-13 06:10:05 +0100 <infinisil> monochrom: Oh when did that happen?
2021-03-13 06:11:12 +0100joebobjoe(~joebobjoe@unaffiliated/joebobjoe)
2021-03-13 06:11:41 +0100 <monochrom> A long time ago. But basically when Control.Exception was incorporated.
2021-03-13 06:12:10 +0100 <monochrom> which basically around the time of the "async exception" paper
2021-03-13 06:12:44 +0100 <monochrom> or "imprecise exception" or both.
2021-03-13 06:15:02 +0100borne(~fritjof@200116b86456970065fd8eaafdc5f06e.dip.versatel-1u1.de) (Ping timeout: 264 seconds)
2021-03-13 06:15:09 +0100Lycurgus(~niemand@98.4.114.199)
2021-03-13 06:15:25 +0100 <hololeap> is safe-exceptions the answer?
2021-03-13 06:15:46 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-03-13 06:15:46 +0100 <monochrom> Not in this conversation.
2021-03-13 06:16:15 +0100 <monochrom> Have you read the conversation?
2021-03-13 06:16:21 +0100 <Lycurgus> is it a fp malapropism?
2021-03-13 06:16:22 +0100borne(~fritjof@200116b86494d2006eea3fb954ab8361.dip.versatel-1u1.de)
2021-03-13 06:16:27 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Client Quit)
2021-03-13 06:18:36 +0100toorevitimirp(~tooreviti@117.182.180.50) (Ping timeout: 256 seconds)
2021-03-13 06:18:59 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-03-13 06:19:45 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-03-13 06:20:39 +0100toorevitimirp(~tooreviti@117.182.180.50)
2021-03-13 06:20:49 +0100 <hololeap> apparently. i read the conversation but i admit i don't understand the underlying issue
2021-03-13 06:22:52 +0100 <monochrom> There were two questions. First one was about old code from The Gentle Introduction not compiling today. Second was a history question.
2021-03-13 06:23:00 +0100 <glguy> hololeap, Long ago we just had IOError. You could throw IO error, you could catch them, That was the type of exceptions. Want to make your own exception? userError :: String -> IOError
2021-03-13 06:23:33 +0100 <glguy> A simpler time when nothing went wrong and there weren't any interesting errors to speak about
2021-03-13 06:23:42 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 256 seconds)
2021-03-13 06:24:22 +0100 <glguy> ioError :: IOError -> IO a
2021-03-13 06:24:23 +0100 <glguy> catch :: IO a -> (IOError -> IO a) -> IO a
2021-03-13 06:24:26 +0100 <infinisil> But then everything changed when the fir.. functions wanted to throw their own exceptions
2021-03-13 06:24:27 +0100 <c_wraith> it was sad when we invented a flaky external world
2021-03-13 06:25:03 +0100 <glguy> and then people started writing programs that could fail in elaborate ways and they wanted elaborate, new exception types to throw and catch
2021-03-13 06:25:42 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 246 seconds)
2021-03-13 06:26:32 +0100 <Lycurgus> let a hundred fleurs de mal blossom!
2021-03-13 06:28:13 +0100 <infinisil> I'm kind of hoping for some open-union Either way of throwing errors is getting adopted
2021-03-13 06:29:25 +0100CMCDragonkai2(~Thunderbi@60-242-118-130.tpgi.com.au)
2021-03-13 06:30:37 +0100 <Lycurgus> in soviet FP, safe-exceptions is a sacred profanity
2021-03-13 06:30:45 +0100Lycurgus(~niemand@98.4.114.199) (Quit: Exeunt)
2021-03-13 06:32:31 +0100 <monochrom> First you have to get open unions. :)
2021-03-13 06:32:52 +0100 <curiousgay> monochrom: btw, have you tried declarative programming languages that are not functional (for example, logic, dataflow)? I want the picture of declarative programming as a whole
2021-03-13 06:34:18 +0100 <hololeap> so, i take it that the "async exception" paper has nothing to do with AsyncException that safe-exceptions tries to handle?
2021-03-13 06:35:56 +0100 <c_wraith> no, that's what it's about. but that isn't the problem being discussed
2021-03-13 06:37:06 +0100 <monochrom> safe-exceptions is way after both the paper and the type existed.
2021-03-13 06:39:30 +0100 <hololeap> i just read the relevant part of the tutorial mentioned and i think i understand now.
2021-03-13 06:39:44 +0100 <monochrom> I did some Prolog homework a long time ago. Recently I realized that logic programming would be great for writing down type inference algorithms. You just transcribe the type rules, then the computer will fill in unification for you, no need to call "unify" explicitly and manually thread metavariables.
2021-03-13 06:41:35 +0100 <hololeap> i didn't expect it to have a definition of `catch` that is so different from the current version
2021-03-13 06:41:40 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se)
2021-03-13 06:41:59 +0100 <hololeap> s/definition/type signature/
2021-03-13 06:43:14 +0100 <curiousgay> haha, I'll need to adjust to current standard after I finish reading this tutorial
2021-03-13 06:43:15 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net) (Read error: Connection reset by peer)
2021-03-13 06:43:38 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-03-13 06:44:57 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2021-03-13 06:47:33 +0100poscat1(~poscat@123.116.89.28) (Ping timeout: 245 seconds)
2021-03-13 06:48:36 +0100poscat(~poscat@123.112.148.153)
2021-03-13 06:51:37 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2021-03-13 06:53:00 +0100myShoggoth(~myShoggot@75.164.81.55) (Ping timeout: 246 seconds)
2021-03-13 06:54:03 +0100ddellacosta(~ddellacos@86.106.143.10)
2021-03-13 06:55:26 +0100kensanata(~kensanata@195.140.213.38) (Remote host closed the connection)
2021-03-13 06:56:00 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-03-13 06:59:19 +0100ddellacosta(~ddellacos@86.106.143.10) (Ping timeout: 276 seconds)
2021-03-13 07:00:36 +0100poscat(~poscat@123.112.148.153) (Remote host closed the connection)
2021-03-13 07:01:03 +0100Jd007(~Jd007@162.156.11.151) (Quit: Jd007)
2021-03-13 07:01:09 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2021-03-13 07:02:54 +0100poscat(~poscat@123.112.148.153)
2021-03-13 07:08:09 +0100bahamas(~lucian@unaffiliated/bahamas)
2021-03-13 07:09:01 +0100yalm(~yalm@unaffiliated/yalm)
2021-03-13 07:09:38 +0100frozenErebus(~frozenEre@94.128.82.20)
2021-03-13 07:14:23 +0100jeremybennett(~jeremyben@37.120.211.188)
2021-03-13 07:16:52 +0100joebobjoe(~joebobjoe@unaffiliated/joebobjoe) (Ping timeout: 276 seconds)
2021-03-13 07:17:26 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-skqtalghxubvhphg) (Quit: Connection closed for inactivity)
2021-03-13 07:18:47 +0100slack1256(~slack1256@dvc-186-186-101-190.movil.vtr.net)
2021-03-13 07:22:30 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2021-03-13 07:23:58 +0100kam1(~kam1@83.123.154.198)
2021-03-13 07:25:09 +0100xsperry(~as@unaffiliated/xsperry) (Ping timeout: 264 seconds)
2021-03-13 07:26:57 +0100kam1(~kam1@83.123.154.198) (Read error: Connection reset by peer)
2021-03-13 07:27:21 +0100urodna(~urodna@unaffiliated/urodna) (Quit: urodna)
2021-03-13 07:27:44 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-03-13 07:29:07 +0100xsperry(~as@unaffiliated/xsperry)
2021-03-13 07:29:26 +0100spoonm(~spoonm@tokyo.spoonm.org) (Ping timeout: 264 seconds)
2021-03-13 07:30:23 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-03-13 07:33:48 +0100azure1(~azure@103.154.230.130) (Ping timeout: 245 seconds)
2021-03-13 07:34:45 +0100azure1(~azure@103.154.230.130)
2021-03-13 07:35:03 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 245 seconds)
2021-03-13 07:43:36 +0100stree(~stree@68.36.8.116) (Ping timeout: 256 seconds)
2021-03-13 07:45:25 +0100mmohammadi9812(~mmohammad@2.178.240.243)
2021-03-13 07:46:11 +0100Varis(~Tadas@unaffiliated/varis)
2021-03-13 07:46:46 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 276 seconds)
2021-03-13 07:49:34 +0100v75-AsSeNtE(~Raul@host-87-18-109-234.retail.telecomitalia.it)
2021-03-13 07:49:47 +0100 <v75-AsSeNtE> hello
2021-03-13 07:49:54 +0100 <v75-AsSeNtE> !info
2021-03-13 07:50:25 +0100 <v75-AsSeNtE> !request
2021-03-13 07:50:56 +0100 <glguy> v75-AsSeNtE, are you looking for something Haskell related?
2021-03-13 07:53:56 +0100raym(~ray@45.64.220.113)
2021-03-13 07:55:11 +0100bahamas(~lucian@unaffiliated/bahamas) (Quit: leaving)
2021-03-13 07:55:39 +0100stree(~stree@68.36.8.116)
2021-03-13 07:56:30 +0100v75-AsSeNtE(~Raul@host-87-18-109-234.retail.telecomitalia.it) (Quit: over35 la mia scelta! http://chatover35.altervista.org/)
2021-03-13 07:58:31 +0100 <dmwit> infinisil: Hm. Is the current exception mechanism not essentially an open union-alike?
2021-03-13 07:59:23 +0100slack1256(~slack1256@dvc-186-186-101-190.movil.vtr.net) (Read error: Connection reset by peer)
2021-03-13 07:59:31 +0100slac36247(~slack1256@dvc-186-186-101-190.movil.vtr.net)
2021-03-13 08:00:23 +0100kam1(~kam1@83.123.154.198)
2021-03-13 08:00:42 +0100 <infinisil> dmwit: Hm yeah, though untyped
2021-03-13 08:01:00 +0100 <dmwit> err, untyped?
2021-03-13 08:01:59 +0100ddellacosta(~ddellacos@86.106.143.70)
2021-03-13 08:02:15 +0100 <infinisil> dmwit: Well, functions don't tell you what they throw
2021-03-13 08:02:19 +0100 <infinisil> from the type signature
2021-03-13 08:02:27 +0100 <dmwit> Ah, yeah, that is true.
2021-03-13 08:02:32 +0100 <dmwit> It's an interesting tradeoff.
2021-03-13 08:02:46 +0100toorevitimirp(~tooreviti@117.182.180.50) (Remote host closed the connection)
2021-03-13 08:03:22 +0100 <dmwit> For industrial-strength stuff you obviously want that, and the attending annoyance is just enforcing good practices.
2021-03-13 08:03:24 +0100kam1(~kam1@83.123.154.198) (Read error: Connection reset by peer)
2021-03-13 08:03:46 +0100 <dmwit> For your one-off weekend projects, you usually don't want that because it gets in the way of throwing together an MVP.
2021-03-13 08:04:20 +0100 <infinisil> I'm not sure if that has to be the case
2021-03-13 08:05:08 +0100 <infinisil> What if an open union for errors was part of base, and all libraries used it
2021-03-13 08:05:29 +0100 <dmwit> I expect most IO-y type signatures would be littered with extra stuff, and most numerical calculations, too.
2021-03-13 08:05:31 +0100rdivyanshu(uid322626@gateway/web/irccloud.com/x-ilslhqpdgnemujjo) (Quit: Connection closed for inactivity)
2021-03-13 08:05:47 +0100 <dmwit> Do you think they wouldn't?
2021-03-13 08:06:21 +0100 <infinisil> Yeah they might, but that sounds better in the long term
2021-03-13 08:06:25 +0100 <dmwit> (And the closer you get to `main` the larger the collection of litter.)
2021-03-13 08:06:41 +0100 <dmwit> Right. Long-term projects definitely want that, I agree.
2021-03-13 08:07:09 +0100ddellacosta(~ddellacos@86.106.143.70) (Ping timeout: 264 seconds)
2021-03-13 08:07:26 +0100 <dmwit> Mmm, well. Projects where you care about doing things right want that. ^_^
2021-03-13 08:07:49 +0100 <dmwit> A lot of hobby programming is just sort of fine with exceptional behavior just being exceptional and crashing.
2021-03-13 08:07:56 +0100 <infinisil> I'm actually not sure how an interface for easily bubbling up errors from arbitrary functions would look like
2021-03-13 08:08:47 +0100 <dmwit> (i.e. there are plenty of long-term but low-impact projects that don't want it)
2021-03-13 08:09:24 +0100 <infinisil> dmwit: I think it could still be explicit then, like using a partial `ignoreError :: Either e a -> a`
2021-03-13 08:10:35 +0100 <dmwit> So you would want some blessed collection of exceptions which did not have to appear in the type signature?
2021-03-13 08:11:04 +0100 <infinisil> Hm no?
2021-03-13 08:11:06 +0100 <dmwit> (Or what choice of "partial" do you make here, if not "throws an exception"? "loops"?)
2021-03-13 08:11:36 +0100 <infinisil> Imagine a hackage where every library returns an Either in case of an error (or something equivalent)
2021-03-13 08:11:49 +0100 <infinisil> Exceptions don't exist
2021-03-13 08:12:09 +0100 <dmwit> So, operationally, what does your ignoreError do, if not throw an exception?
2021-03-13 08:12:32 +0100 <infinisil> `error`'s out, uncatchable, panics
2021-03-13 08:12:48 +0100 <dmwit> That's... what an exception is.
2021-03-13 08:12:55 +0100 <infinisil> exceptions are catchable
2021-03-13 08:13:03 +0100dmwitshrugs
2021-03-13 08:13:06 +0100 <dmwit> If you say so.
2021-03-13 08:13:16 +0100juri_(~juri@178.63.35.222) (Ping timeout: 240 seconds)
2021-03-13 08:13:21 +0100 <infinisil> Well I guess technically it might still be an exception in the rts
2021-03-13 08:13:31 +0100 <infinisil> But it's not exposed in Haskell
2021-03-13 08:13:44 +0100 <infinisil> Calling `error` just stops the program
2021-03-13 08:14:17 +0100 <infinisil> But anyways, `ignoreError` would just be a way to ignore the errors if somebody doesn't want to care about them in a quick and dirty project
2021-03-13 08:15:17 +0100 <infinisil> Nothing I'd encourage using of course, the focus should be on Either (or something equivalent/better) handling and bubbling up
2021-03-13 08:15:35 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-13 08:15:51 +0100 <dmwit> I suspect if you did that you'd just replay the history we've already gone through. Some libraries would cheat and use it when they shouldn't, and then people would demand a way to catch these things so they could deal with cheating libraries, and then we'd find out we wanted structured exceptions and not just (), and then we'd be back where we are now.
2021-03-13 08:16:41 +0100 <dmwit> There's also a separate line about interrupting other threads and stuff.
2021-03-13 08:17:11 +0100 <infinisil> Would history repeat itself if there was a very convenient way to bubble up errors though?
2021-03-13 08:18:44 +0100 <dmwit> Probably. There's plenty of libraries on Hackage that go out of their way to cheat with the mechanisms for cheating we already have, even though the non-cheating version is more convenient.
2021-03-13 08:19:18 +0100 <infinisil> What if there was a GHC extension
2021-03-13 08:20:11 +0100 <dmwit> What does the extension do, and what problem is that solving?
2021-03-13 08:20:17 +0100 <infinisil> Something like "automatically open union all errors in do notation"
2021-03-13 08:20:29 +0100juri_(~juri@178.63.35.222)
2021-03-13 08:20:37 +0100 <infinisil> Or idk, infer the type of a function based on that
2021-03-13 08:20:50 +0100 <infinisil> Without the user having to annotate it
2021-03-13 08:20:51 +0100 <infinisil> Idk
2021-03-13 08:21:31 +0100 <infinisil> But I have hope that there's *something* that could be done to have nice ergonomics, whether it be a library or a change in GHC itself
2021-03-13 08:21:46 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 08:21:50 +0100waleee-cl(uid373333@gateway/web/irccloud.com/x-ztluuxltoyaaemrx) (Quit: Connection closed for inactivity)
2021-03-13 08:21:53 +0100 <infinisil> I shall now read https://www.fpcomplete.com/blog/error-handling-is-hard/
2021-03-13 08:22:00 +0100 <dmwit> heh
2021-03-13 08:27:04 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 276 seconds)
2021-03-13 08:27:59 +0100arrowsvc_(~arr@2.93.163.35)
2021-03-13 08:30:59 +0100infinisilnow reads https://www.parsonsmatt.org/2020/01/03/plucking_constraints.html
2021-03-13 08:38:16 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-03-13 08:39:45 +0100slac36247slack1256
2021-03-13 08:40:18 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 08:43:19 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 276 seconds)
2021-03-13 08:43:57 +0100kam1(~kam1@83.123.154.198)
2021-03-13 08:45:22 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds)
2021-03-13 08:45:24 +0100slack1256(~slack1256@dvc-186-186-101-190.movil.vtr.net) (Remote host closed the connection)
2021-03-13 08:48:13 +0100mmohammadi9812(~mmohammad@2.178.240.243) (Quit: Leaving)
2021-03-13 08:49:33 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-03-13 08:49:38 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-03-13 08:49:46 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-03-13 08:56:07 +0100forgottenone(~forgotten@176.42.24.172)
2021-03-13 08:57:38 +0100borne(~fritjof@200116b86494d2006eea3fb954ab8361.dip.versatel-1u1.de) (Ping timeout: 264 seconds)
2021-03-13 08:57:41 +0100plutoniix(~q@node-uj8.pool-125-24.dynamic.totinternet.net)
2021-03-13 08:58:53 +0100aggin(~ecm@103.88.87.21)
2021-03-13 09:00:01 +0100magnuscake(~magnuscak@87-121-92-61.dyn.launtel.net.au)
2021-03-13 09:02:04 +0100 <magnuscake> Hey peeps
2021-03-13 09:02:14 +0100 <magnuscake> Folds are giving me such a hard time :(
2021-03-13 09:02:16 +0100 <magnuscake> Anyways
2021-03-13 09:02:17 +0100 <magnuscake> https://paste.tomsmeding.com/SGdQKBdk
2021-03-13 09:02:19 +0100 <dmwit> o/
2021-03-13 09:02:46 +0100 <magnuscake> I am having a hard time understanding everything after the `where` part
2021-03-13 09:03:07 +0100 <magnuscake> I understand what its doing
2021-03-13 09:03:09 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Ping timeout: 272 seconds)
2021-03-13 09:03:24 +0100 <magnuscake> But I can't understand how
2021-03-13 09:03:58 +0100 <dmwit> Yikes, this code is... not good.
2021-03-13 09:04:07 +0100 <dmwit> Anyway we should be able to get you to where you understand it.
2021-03-13 09:04:23 +0100 <magnuscake> I saw a couple of instances of the same code from different people
2021-03-13 09:04:38 +0100frozenErebus(~frozenEre@94.128.82.20) (Ping timeout: 256 seconds)
2021-03-13 09:04:44 +0100 <magnuscake> So my question is
2021-03-13 09:04:54 +0100 <dmwit> FWIW I would filterDbDate items = [date | DbDate date <- items].
2021-03-13 09:05:12 +0100 <magnuscake> Yeah of course that makes a lot more sense
2021-03-13 09:05:20 +0100 <magnuscake> But in this case, we have to use folds
2021-03-13 09:05:30 +0100aggin(~ecm@103.88.87.21) (Quit: WeeChat 3.0.1)
2021-03-13 09:05:40 +0100 <magnuscake> How does that getDate thing work
2021-03-13 09:05:41 +0100 <dmwit> Even if you must use a fold this can be done in various better ways. But never mind.
2021-03-13 09:05:46 +0100 <magnuscake> I didn't know that was valid syntax
2021-03-13 09:05:57 +0100 <dmwit> Hm, which bit of syntax surprises you, exactly?
2021-03-13 09:06:29 +0100 <magnuscake> So I get `getDate` is the function to apply to the list values
2021-03-13 09:06:38 +0100 <dmwit> Right.
2021-03-13 09:06:41 +0100 <magnuscake> But how does the whole
2021-03-13 09:06:51 +0100kam1(~kam1@83.123.154.198) (Read error: Connection reset by peer)
2021-03-13 09:06:52 +0100 <magnuscake> getDate (DbDate date) xs =...
2021-03-13 09:06:59 +0100 <magnuscake> Work?
2021-03-13 09:07:03 +0100 <magnuscake> Sorry for being too general
2021-03-13 09:07:12 +0100 <dmwit> Is it the `(DbDate date)` bit that's surprising you?
2021-03-13 09:07:21 +0100 <dmwit> If so, it's called pattern matching.
2021-03-13 09:07:29 +0100jathan(~jathan@69.61.93.38) (Quit: WeeChat 2.3)
2021-03-13 09:07:36 +0100 <magnuscake> Oh yes I undertand that
2021-03-13 09:07:41 +0100 <dmwit> Hm, okay.
2021-03-13 09:07:58 +0100 <magnuscake> So taking the example of a case in Haskell
2021-03-13 09:08:08 +0100 <magnuscake> If a certain statement is true
2021-03-13 09:08:09 +0100 <dmwit> Well, there's... really not much more to `getDate (DbDate date) xs =` than that. `DbDate date` is a pattern match, `xs` is a pattern match. That's it.
2021-03-13 09:08:32 +0100 <magnuscake> So does it mean
2021-03-13 09:09:01 +0100 <magnuscake> foldr getDate (DbDate date) xs
2021-03-13 09:09:15 +0100 <magnuscake> As in when the function finds a valid pattern?
2021-03-13 09:09:36 +0100 <dmwit> Hm, no, this function is applied to every element of the list.
2021-03-13 09:09:46 +0100 <dmwit> If the `DbDate date` pattern doesn't match, it proceeds to the next line.
2021-03-13 09:09:51 +0100 <dmwit> (And the next line always matches.)
2021-03-13 09:09:57 +0100xff0x(~xff0x@2001:1a81:5243:ae00:c201:8f39:a8f8:4489) (Ping timeout: 260 seconds)
2021-03-13 09:10:30 +0100 <magnuscake> Ok. And what about the xs ++ [date] at the end
2021-03-13 09:10:36 +0100 <dmwit> Another way to write this that may be more comfortable for you, if you understand `case`, is `getDate v xs = case v of { DbDate date -> xs ++ [date]; _ -> xs ++ [] }`.
2021-03-13 09:10:37 +0100yalm(~yalm@unaffiliated/yalm) (Quit: WeeChat 3.0.1)
2021-03-13 09:10:54 +0100xff0x(~xff0x@2001:1a81:5243:ae00:7d99:4326:2dd6:91b3)
2021-03-13 09:10:59 +0100 <dmwit> `xs ++ [date]` appends two lists. The first is `xs`. The second is a list with a single item, namely, `date`.
2021-03-13 09:11:02 +0100 <dmwit> For example:
2021-03-13 09:11:04 +0100 <magnuscake> Ah yes that makes it easier
2021-03-13 09:11:08 +0100 <dmwit> > [5, 7, 100] ++ [3]
2021-03-13 09:11:10 +0100 <lambdabot> [5,7,100,3]
2021-03-13 09:11:17 +0100 <magnuscake> Ok
2021-03-13 09:11:34 +0100 <magnuscake> But isn't xs supposed to be the list that is passed to the function
2021-03-13 09:11:47 +0100 <magnuscake> Or rather the list the function is applied to
2021-03-13 09:11:51 +0100 <dmwit> Hm. You say "the function", but there are (at least) two functions here.
2021-03-13 09:12:13 +0100 <magnuscake> Sorry the main `filterDbDate`
2021-03-13 09:12:18 +0100 <dmwit> `xs` definitely is not the `[DatabaseItem]` that's supplied to `filterDbDate`.
2021-03-13 09:12:26 +0100 <magnuscake> I suppose that is where the xs is coming from?
2021-03-13 09:12:54 +0100 <dmwit> No. The first argument to `getDate` is a list element. The second is some value that's getting accumulated during the fold. It starts as `[]`, and is extended by calling `getDate`.
2021-03-13 09:13:32 +0100 <dmwit> (precision: the first argument to `getDate` is an element of the list that's supplied to `filterDbDate`)
2021-03-13 09:13:36 +0100 <magnuscake> Oh
2021-03-13 09:13:57 +0100 <magnuscake> Yes yes its more clear now
2021-03-13 09:14:08 +0100 <dmwit> \\o/
2021-03-13 09:14:21 +0100 <dmwit> heh, whoops. I grew an extra arm. I'm not very good at IRC
2021-03-13 09:14:51 +0100 <magnuscake> Lol. Anyways
2021-03-13 09:15:16 +0100 <magnuscake> Where does this whole pattern of writing the the function this way come from
2021-03-13 09:15:22 +0100 <magnuscake> As in
2021-03-13 09:15:31 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-03-13 09:15:41 +0100 <magnuscake> I don't think I have seen this sort of thing with folds
2021-03-13 09:16:07 +0100 <dmwit> Can you give a few examples of other things that you would consider to be "this sort of thing"?
2021-03-13 09:16:12 +0100 <dmwit> I don't really know what that means.
2021-03-13 09:16:23 +0100 <magnuscake> From what I have learnt, the arguments are all passed in one line, as in with a foldr
2021-03-13 09:16:30 +0100 <magnuscake> Oh yes just give me a sec
2021-03-13 09:16:33 +0100 <dmwit> (Maybe also a few negative examples -- i.e. of things that are "not this sort of thing".)
2021-03-13 09:18:42 +0100 <magnuscake> Maybe its due to my limited knowledge, but here is a simple one:
2021-03-13 09:18:45 +0100 <magnuscake> foldr const 0 "tacos"
2021-03-13 09:18:57 +0100 <magnuscake> Now this is easy to understand
2021-03-13 09:19:23 +0100 <magnuscake> Lets say, we replace const with something we define ourselves to fold the list eventually
2021-03-13 09:19:56 +0100CMCDragonkai2CMCDragonkai
2021-03-13 09:20:00 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 246 seconds)
2021-03-13 09:20:07 +0100 <magnuscake> Couldn't we, instead of defining the whole thing as a function instead of using the where ...
2021-03-13 09:20:16 +0100 <magnuscake> Or is that even possible?
2021-03-13 09:20:52 +0100 <magnuscake> I hope you get what I am saying
2021-03-13 09:21:04 +0100 <dmwit> You ask, "Couldn't we, instead of X...?". But usually such a question must go in the form "Couldn't we, instead of X, do Y?".
2021-03-13 09:21:38 +0100 <magnuscake> lol sorry I meant it that way
2021-03-13 09:22:00 +0100 <dmwit> ...meant it what way?
2021-03-13 09:22:17 +0100 <magnuscake> Couldn't we define the whole thing after the `where` in a single function that we pass as the argument to foldr?
2021-03-13 09:22:29 +0100 <dmwit> Isn't that what was done?
2021-03-13 09:22:45 +0100 <magnuscake> Is it?
2021-03-13 09:23:11 +0100 <magnuscake> Ok I guess I was overthinking it
2021-03-13 09:23:19 +0100 <dmwit> Yes. We defined "the whole thing" (getDate) after the `where` in a single function that we pass as the argument to foldr.
2021-03-13 09:23:42 +0100 <magnuscake> Oo ok
2021-03-13 09:24:09 +0100 <magnuscake> Btw what was the easier way you were talking about?
2021-03-13 09:24:22 +0100 <magnuscake> To write the above? If you don't mind sharing
2021-03-13 09:24:23 +0100 <dmwit> I don't believe I ever claimed "easier". Only "better".
2021-03-13 09:24:38 +0100 <magnuscake> Yes better
2021-03-13 09:25:10 +0100 <dmwit> This implementation is quadratic, because it repeatedly appends to the list.
2021-03-13 09:25:24 +0100 <dmwit> Additionally, it goes `xs ++ []`, which doesn't do anything, but spends a lot of time.
2021-03-13 09:26:03 +0100 <dmwit> You can fix those two things in various ways. One way would be `filterDbDate = reverse . foldr getDate [] where getDate (DbDate date) xs = date:xs; getDate _ xs = xs`.
2021-03-13 09:27:00 +0100 <dmwit> Another would be to use a so-called "difference list", as in `filterDbDate items = foldr getDate id items [] where getDate (DbDate date) f = f . (date:); getDate _ f = f`.
2021-03-13 09:27:51 +0100 <magnuscake> Hmmm yes that does look better
2021-03-13 09:28:33 +0100 <magnuscake> I'll def add those those to my notes
2021-03-13 09:28:50 +0100 <dmwit> I guess there's probably also something with a left fold? IDK.
2021-03-13 09:29:20 +0100 <dmwit> But my favorite way is still to not use a fold, because the non-fold implementation is so immediately clear to beginner and expert alike.
2021-03-13 09:29:43 +0100 <dmwit> (without sacrificing performance)
2021-03-13 09:29:49 +0100 <magnuscake> Hmmm yes but got to flex those foldr skills
2021-03-13 09:29:57 +0100dmwitnods
2021-03-13 09:29:58 +0100 <magnuscake> Its been challenging
2021-03-13 09:30:09 +0100 <magnuscake> Can't wait to get to monads lol
2021-03-13 09:30:17 +0100 <magnuscake> Anyways
2021-03-13 09:30:47 +0100 <magnuscake> That definitely clears it up. Thank you very much for your time dmwit
2021-03-13 09:31:18 +0100 <dmwit> 👍
2021-03-13 09:31:35 +0100magnuscake(~magnuscak@87-121-92-61.dyn.launtel.net.au) (Quit: Leaving)
2021-03-13 09:34:23 +0100CodeAlways(uid272474@gateway/web/irccloud.com/x-jbfyoygjgujgyaip)
2021-03-13 09:34:49 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-03-13 09:36:58 +0100pavonia(~user@unaffiliated/siracusa) (Quit: Bye!)
2021-03-13 09:39:05 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 09:45:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-13 09:45:10 +0100 <olligobber> @src (++)
2021-03-13 09:45:10 +0100 <lambdabot> [] ++ ys = ys
2021-03-13 09:45:11 +0100 <lambdabot> (x:xs) ++ ys = x : (xs ++ ys)
2021-03-13 09:45:11 +0100 <lambdabot> -- OR
2021-03-13 09:45:11 +0100 <lambdabot> xs ++ ys = foldr (:) ys xs
2021-03-13 09:45:33 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 264 seconds)
2021-03-13 09:48:56 +0100__monty__(~toonn@unaffiliated/toonn)
2021-03-13 09:51:15 +0100Unhammer(~Unhammer@gateway/tor-sasl/unhammer) (Remote host closed the connection)
2021-03-13 09:52:22 +0100Unhammer(~Unhammer@gateway/tor-sasl/unhammer)
2021-03-13 09:53:25 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-03-13 09:54:43 +0100drbean(~drbean@TC210-63-209-78.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in)
2021-03-13 09:56:14 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 09:57:58 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 245 seconds)
2021-03-13 09:58:43 +0100Benzi-Junior(~BenziJuni@dsl-149-64-40.hive.is) (Ping timeout: 276 seconds)
2021-03-13 10:00:15 +0100borne(~fritjof@200116b86494d20065fd8eaafdc5f06e.dip.versatel-1u1.de)
2021-03-13 10:00:36 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 246 seconds)
2021-03-13 10:04:08 +0100stree(~stree@68.36.8.116) (Ping timeout: 256 seconds)
2021-03-13 10:04:09 +0100juri_(~juri@178.63.35.222) (Ping timeout: 264 seconds)
2021-03-13 10:05:57 +0100borne(~fritjof@200116b86494d20065fd8eaafdc5f06e.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2021-03-13 10:06:27 +0100borne(~fritjof@2a06:8782:ffbb:1337:e811:68d9:a46:a27f)
2021-03-13 10:07:27 +0100jeremybennett(~jeremyben@37.120.211.188) (Remote host closed the connection)
2021-03-13 10:08:46 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
2021-03-13 10:13:11 +0100Benzi-Junior(~BenziJuni@88-149-64-40.du.xdsl.is)
2021-03-13 10:14:55 +0100magnuscake(~magnuscak@87-121-92-61.dyn.launtel.net.au)
2021-03-13 10:16:14 +0100stree(~stree@68.36.8.116)
2021-03-13 10:18:17 +0100pera(~pera@unaffiliated/pera)
2021-03-13 10:20:31 +0100jonatan(~nate@h77-53-70-163.cust.a3fiber.se) (Ping timeout: 256 seconds)
2021-03-13 10:22:13 +0100heatsink(~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) (Remote host closed the connection)
2021-03-13 10:22:27 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 10:27:15 +0100wilkie(~wilkie@217.146.82.202)
2021-03-13 10:27:22 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds)
2021-03-13 10:27:58 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 245 seconds)
2021-03-13 10:28:36 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 10:29:21 +0100CMCDragonkai(~Thunderbi@60-242-118-130.tpgi.com.au) (Ping timeout: 264 seconds)
2021-03-13 10:31:26 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-03-13 10:31:40 +0100jakalx(~jakalx@base.jakalx.net) ()
2021-03-13 10:32:12 +0100vicfred(vicfred@gateway/vpn/mullvad/vicfred) (Quit: Leaving)
2021-03-13 10:34:00 +0100Kaiepi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2021-03-13 10:35:21 +0100Waifod(~Waifod@91.106.123.186) (Ping timeout: 264 seconds)
2021-03-13 10:35:53 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 245 seconds)
2021-03-13 10:36:47 +0100Waifod(Waifod@gateway/vpn/protonvpn/waifod)
2021-03-13 10:40:48 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2021-03-13 10:42:19 +0100jonatan(~nate@h77-53-70-163.cust.a3fiber.se)
2021-03-13 10:45:37 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2021-03-13 10:45:53 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 245 seconds)
2021-03-13 10:48:27 +0100jakalx(~jakalx@base.jakalx.net)
2021-03-13 10:48:54 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-03-13 10:49:04 +0100CodeAlwaysSaitamaPlus
2021-03-13 10:49:53 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-03-13 10:52:04 +0100mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan)
2021-03-13 10:57:19 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 11:01:27 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Remote host closed the connection)
2021-03-13 11:01:32 +0100spoonm(~spoonm@tokyo.spoonm.org)
2021-03-13 11:01:46 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 11:03:59 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-03-13 11:04:34 +0100Kaiepi(~Kaiepi@47.54.252.148)
2021-03-13 11:04:52 +0100borne(~fritjof@2a06:8782:ffbb:1337:e811:68d9:a46:a27f) (Ping timeout: 260 seconds)
2021-03-13 11:05:28 +0100Tops2(~Tobias@dyndsl-095-033-094-082.ewe-ip-backbone.de)
2021-03-13 11:06:57 +0100__minoru__shirae(~shiraeesh@109.166.56.117)
2021-03-13 11:06:58 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 276 seconds)
2021-03-13 11:07:20 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 11:08:13 +0100borne(~fritjof@2a06:8782:ffbb:1337:e811:68d9:a46:a27f)
2021-03-13 11:08:30 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 246 seconds)
2021-03-13 11:08:48 +0100mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan) (Remote host closed the connection)
2021-03-13 11:09:11 +0100mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan)
2021-03-13 11:12:33 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 264 seconds)
2021-03-13 11:12:38 +0100borne(~fritjof@2a06:8782:ffbb:1337:e811:68d9:a46:a27f) (Ping timeout: 264 seconds)
2021-03-13 11:13:33 +0100borne(~fritjof@2a06:8782:ffbb:1337:e811:68d9:a46:a27f)
2021-03-13 11:17:47 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de)
2021-03-13 11:19:28 +0100SanchayanM(~Sanchayan@106.201.41.226)
2021-03-13 11:22:37 +0100heatsink(~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947)
2021-03-13 11:26:23 +0100 <gentauro> lambdabot: s/[] ++ ys = ys/[ ] ++ ys = ys/
2021-03-13 11:26:33 +0100 <gentauro> i mean
2021-03-13 11:26:39 +0100 <gentauro> lambdabot: s/[] ++ ys = ys/[ ] ++ ys = ys/
2021-03-13 11:26:41 +0100 <gentauro> :)
2021-03-13 11:27:38 +0100heatsink(~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) (Ping timeout: 264 seconds)
2021-03-13 11:28:17 +0100jespada(~jespada@90.254.243.187) (Quit: Leaving)
2021-03-13 11:28:20 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2021-03-13 11:28:36 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Client Quit)
2021-03-13 11:29:56 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2021-03-13 11:30:18 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Client Quit)
2021-03-13 11:35:12 +0100zaquest(~notzaques@5.128.210.178) (Quit: Leaving)
2021-03-13 11:36:27 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-03-13 11:36:34 +0100zaquest(~notzaques@5.128.210.178)
2021-03-13 11:41:02 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 256 seconds)
2021-03-13 11:42:30 +0100Varis(~Tadas@unaffiliated/varis)
2021-03-13 11:46:47 +0100Carlos_14(~Carlos_14@185.130.146.38)
2021-03-13 11:47:23 +0100Carlos_14(~Carlos_14@185.130.146.38) ()
2021-03-13 11:49:54 +0100Carlos_14(~Carlos_14@185.130.146.38)
2021-03-13 11:50:51 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 11:52:00 +0100Tops21(~Tobias@dyndsl-095-033-094-082.ewe-ip-backbone.de)
2021-03-13 11:53:43 +0100Carlos_14(~Carlos_14@185.130.146.38) (Remote host closed the connection)
2021-03-13 11:54:22 +0100Guest48052(~textual@2603-7000-3040-0000-b05d-e0a9-84ee-9eef.res6.spectrum.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-03-13 11:54:25 +0100pera(~pera@unaffiliated/pera) (Ping timeout: 276 seconds)
2021-03-13 11:55:08 +0100Tops22(~Tobias@dyndsl-095-033-094-082.ewe-ip-backbone.de)
2021-03-13 11:55:46 +0100Tops2(~Tobias@dyndsl-095-033-094-082.ewe-ip-backbone.de) (Ping timeout: 256 seconds)
2021-03-13 11:56:18 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 245 seconds)
2021-03-13 11:58:36 +0100Tops21(~Tobias@dyndsl-095-033-094-082.ewe-ip-backbone.de) (Ping timeout: 256 seconds)
2021-03-13 12:02:19 +0100son0p(~son0p@181.58.39.182)
2021-03-13 12:05:31 +0100juri_(~juri@178.63.35.222)
2021-03-13 12:09:21 +0100borne(~fritjof@2a06:8782:ffbb:1337:e811:68d9:a46:a27f) (Ping timeout: 272 seconds)
2021-03-13 12:10:23 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 12:11:08 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-03-13 12:14:34 +0100magnuscake(~magnuscak@87-121-92-61.dyn.launtel.net.au) (Ping timeout: 276 seconds)
2021-03-13 12:15:36 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds)
2021-03-13 12:16:09 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 264 seconds)
2021-03-13 12:24:40 +0100stree(~stree@68.36.8.116) (Ping timeout: 256 seconds)
2021-03-13 12:27:25 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 12:32:21 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 264 seconds)
2021-03-13 12:35:15 +0100idhugo(~idhugo@87-49-147-45-mobile.dk.customer.tdc.net)
2021-03-13 12:36:57 +0100stree(~stree@68.36.8.116)
2021-03-13 12:45:15 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-13 12:46:33 +0100Franciman(~francesco@host-82-49-79-189.retail.telecomitalia.it)
2021-03-13 12:49:07 +0100pera(~pera@unaffiliated/pera)
2021-03-13 12:51:02 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-03-13 12:51:51 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 12:53:22 +0100toorevitimirp(~tooreviti@117.182.180.50)
2021-03-13 12:56:10 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 276 seconds)
2021-03-13 12:59:07 +0100frozenErebus(~frozenEre@94.128.82.20)
2021-03-13 12:59:50 +0100Alleria(~textual@2603-7000-3040-0000-b05d-e0a9-84ee-9eef.res6.spectrum.com)
2021-03-13 13:00:13 +0100AlleriaGuest62405
2021-03-13 13:01:32 +0100jacks2(~bc8134e3@217.29.117.252)
2021-03-13 13:03:52 +0100asheshambasta(~user@ptr-e1lysax7wb2jvi3x8cp.18120a2.ip6.access.telenet.be)
2021-03-13 13:04:50 +0100Guest62405(~textual@2603-7000-3040-0000-b05d-e0a9-84ee-9eef.res6.spectrum.com) (Ping timeout: 264 seconds)
2021-03-13 13:06:34 +0100pera(~pera@unaffiliated/pera) (Ping timeout: 276 seconds)
2021-03-13 13:06:52 +0100pera(~pera@unaffiliated/pera)
2021-03-13 13:11:18 +0100frozenErebus(~frozenEre@94.128.82.20) (Ping timeout: 245 seconds)
2021-03-13 13:12:44 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2021-03-13 13:15:34 +0100Mrbuck(~Mrbuck@gateway/tor-sasl/mrbuck)
2021-03-13 13:18:41 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2021-03-13 13:19:13 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-03-13 13:24:03 +0100neiluj(~jco@91-167-203-101.subs.proxad.net)
2021-03-13 13:24:09 +0100heatsink(~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947)
2021-03-13 13:24:23 +0100jamm_(~jamm@unaffiliated/jamm)
2021-03-13 13:25:03 +0100neiluj(~jco@91-167-203-101.subs.proxad.net) (Changing host)
2021-03-13 13:25:03 +0100neiluj(~jco@unaffiliated/neiluj)
2021-03-13 13:25:03 +0100__minoru__shirae(~shiraeesh@109.166.56.117) (Ping timeout: 245 seconds)
2021-03-13 13:25:21 +0100xff0x(~xff0x@2001:1a81:5243:ae00:7d99:4326:2dd6:91b3) (Ping timeout: 272 seconds)
2021-03-13 13:26:07 +0100xff0x(~xff0x@2001:1a81:5243:ae00:5e7b:1781:48fd:8ee9)
2021-03-13 13:27:27 +0100idhugo(~idhugo@87-49-147-45-mobile.dk.customer.tdc.net) (Ping timeout: 246 seconds)
2021-03-13 13:28:01 +0100JokerAscensionEx(~egp_@2.95.74.168)
2021-03-13 13:28:08 +0100JokerAscensionEx(~egp_@2.95.74.168) (Remote host closed the connection)
2021-03-13 13:28:50 +0100jamm_(~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds)
2021-03-13 13:28:50 +0100heatsink(~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) (Ping timeout: 264 seconds)
2021-03-13 13:31:09 +0100ddellacosta(~ddellacos@86.106.143.213)
2021-03-13 13:31:16 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 276 seconds)
2021-03-13 13:32:18 +0100geekosaur(ac3a5746@172.58.87.70)
2021-03-13 13:34:27 +0100jamm_(~jamm@unaffiliated/jamm)
2021-03-13 13:35:10 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 276 seconds)
2021-03-13 13:35:20 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-03-13 13:35:42 +0100seanparsons(~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net) (Quit: ZNC 1.8.1 - https://znc.in)
2021-03-13 13:35:57 +0100ddellacosta(~ddellacos@86.106.143.213) (Ping timeout: 264 seconds)
2021-03-13 13:38:23 +0100raym(~ray@45.64.220.113) (Quit: leaving)
2021-03-13 13:38:55 +0100toorevitimirp(~tooreviti@117.182.180.50) (Quit: Konversation terminated!)
2021-03-13 13:45:21 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 13:46:53 +0100asheshambasta(~user@ptr-e1lysax7wb2jvi3x8cp.18120a2.ip6.access.telenet.be) (Ping timeout: 272 seconds)
2021-03-13 13:48:16 +0100drbean(~drbean@TC210-63-209-202.static.apol.com.tw)
2021-03-13 13:48:23 +0100pera(~pera@unaffiliated/pera) (Ping timeout: 245 seconds)
2021-03-13 13:49:57 +0100toorevitimirp(~tooreviti@117.182.180.50)
2021-03-13 13:50:03 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 245 seconds)
2021-03-13 13:50:34 +0100tfl^(tfl@ip98-184-89-2.mc.at.cox.net)
2021-03-13 13:54:26 +0100SanchayanM(~Sanchayan@106.201.41.226) (Quit: SanchayanM)
2021-03-13 13:55:18 +0100JokerAscensionEx(~egp_@2.95.74.168)
2021-03-13 13:55:26 +0100JokerAscensionEx(~egp_@2.95.74.168) (Remote host closed the connection)
2021-03-13 13:55:30 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-tmzskshpdqzcnhax)
2021-03-13 13:57:33 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 264 seconds)
2021-03-13 13:57:43 +0100Wuzzy(~Wuzzy@p57a2ecf2.dip0.t-ipconnect.de)
2021-03-13 14:00:46 +0100bergey`(~user@pool-74-108-99-127.nycmny.fios.verizon.net)
2021-03-13 14:01:34 +0100Alleria(~textual@zrcout.mskcc.org)
2021-03-13 14:01:57 +0100AlleriaGuest16306
2021-03-13 14:04:21 +0100_ashbreeze_(~mark@64.85.214.234.reverse.socket.net) (*.net *.split)
2021-03-13 14:04:21 +0100lawid(~quassel@dslb-090-186-208-048.090.186.pools.vodafone-ip.de) (*.net *.split)
2021-03-13 14:04:21 +0100e2(e2@sponsored.by.bnc4you.xyz) (*.net *.split)
2021-03-13 14:04:21 +0100cgfbee(~bot@oc1.itim-cj.ro) (*.net *.split)
2021-03-13 14:04:21 +0100tv(~tv@unaffiliated/tv) (*.net *.split)
2021-03-13 14:04:21 +0100mniip(mniip@freenode/staff/mniip) (*.net *.split)
2021-03-13 14:04:21 +0100andjjj23(~irc@107.170.228.47) (*.net *.split)
2021-03-13 14:04:21 +0100chirpsalot(~Chirps@pool-98-115-239-235.phlapa.fios.verizon.net) (*.net *.split)
2021-03-13 14:04:21 +0100thebnq(~bnq@herrokitty.com) (*.net *.split)
2021-03-13 14:04:21 +0100Chousuke(oranenj@coffee.modeemi.fi) (*.net *.split)
2021-03-13 14:04:21 +0100icebreaker(michalc@unaffiliated/icebreaker) (*.net *.split)
2021-03-13 14:04:21 +0100swater(bouhier200@perso.iiens.net) (*.net *.split)
2021-03-13 14:04:21 +0100oldsk00l(~znc@ec2-18-130-254-135.eu-west-2.compute.amazonaws.com) (*.net *.split)
2021-03-13 14:04:21 +0100toppler`(~user@mtop.default.momentoftop.uk0.bigv.io) (*.net *.split)
2021-03-13 14:04:21 +0100charukiewicz(~quassel@irouteince04.i.subnet.rcn.com) (*.net *.split)
2021-03-13 14:04:21 +0100bendo_(~bendo@130.61.122.121) (*.net *.split)
2021-03-13 14:04:21 +0100anoe(~anoe@delanoe.org) (*.net *.split)
2021-03-13 14:04:21 +0100ij(~ij@NixOS/user/siers) (*.net *.split)
2021-03-13 14:04:21 +0100orcus(~orcus@unaffiliated/orcus) (*.net *.split)
2021-03-13 14:04:21 +0100ymherklotz(~ymherklot@ee-ymh15.ee.ic.ac.uk) (*.net *.split)
2021-03-13 14:04:21 +0100sqrt2(~ben@unaffiliated/sqrt2) (*.net *.split)
2021-03-13 14:04:21 +0100cpape``(~user@static.180.18.203.116.clients.your-server.de) (*.net *.split)
2021-03-13 14:04:21 +0100pierrot(~pi@unaffiliated/pierrot) (*.net *.split)
2021-03-13 14:04:21 +0100leifm(~leifm@dawn.whatbox.ca) (*.net *.split)
2021-03-13 14:04:21 +0100electrostat(~dag@unaffiliated/electrostat) (*.net *.split)
2021-03-13 14:04:21 +0100codedmart(~codedmart@149.28.9.205) (*.net *.split)
2021-03-13 14:04:21 +0100filwisher_(~filwisher@78.141.201.45) (*.net *.split)
2021-03-13 14:04:21 +0100andi-(~andi-@NixOS/user/andi-) (*.net *.split)
2021-03-13 14:04:21 +0100tolt(~weechat-h@li219-154.members.linode.com) (*.net *.split)
2021-03-13 14:04:21 +0100Patternmaster(~georg@li1192-118.members.linode.com) (*.net *.split)
2021-03-13 14:04:21 +0100runawayfive(~nope@unaffiliated/runawayfive) (*.net *.split)
2021-03-13 14:04:21 +0100wagle(~wagle@quassel.wagle.io) (*.net *.split)
2021-03-13 14:04:21 +0100acro(~acro@unaffiliated/acro) (*.net *.split)
2021-03-13 14:04:21 +0100newsham_(~ubuntu@ec2-18-218-216-88.us-east-2.compute.amazonaws.com) (*.net *.split)
2021-03-13 14:04:21 +0100kumo(~kumo@139.180.144.166) (*.net *.split)
2021-03-13 14:04:21 +0100tchakka(~tchakkazu@static-47-180-28-65.lsan.ca.frontiernet.net) (*.net *.split)
2021-03-13 14:04:21 +0100vancz_(~vancz@unaffiliated/vancz) (*.net *.split)
2021-03-13 14:04:21 +0100pie_(~pie_bnc]@unaffiliated/pie-/x-0787662) (*.net *.split)
2021-03-13 14:04:21 +0100stiell(~stian@fsf/member/stiell) (*.net *.split)
2021-03-13 14:04:21 +0100qz(~quetzal@li272-85.members.linode.com) (*.net *.split)
2021-03-13 14:04:21 +0100cross(~cross@spitfire.i.gajendra.net) (*.net *.split)
2021-03-13 14:04:21 +0100fredcy(~fredcy@mail.yankowski.com) (*.net *.split)
2021-03-13 14:04:21 +0100Clint(~Clint@libre.fm/hacker/clint) (*.net *.split)
2021-03-13 14:04:21 +0100ibloom(sid350277@gateway/web/irccloud.com/x-teixkoeowtnjnhtx) (*.net *.split)
2021-03-13 14:04:21 +0100grfn(sid449115@gateway/web/irccloud.com/x-itpsiegdpgfcmhuq) (*.net *.split)
2021-03-13 14:04:21 +0100jhuizy(~jhuizy@static.241.188.216.95.clients.your-server.de) (*.net *.split)
2021-03-13 14:04:21 +0100adium(adium@unaffiliated/adium) (*.net *.split)
2021-03-13 14:04:21 +0100jtobin(~jtobin@li1555-212.members.linode.com) (*.net *.split)
2021-03-13 14:04:21 +0100Unode(~Unode@unaffiliated/unode) (*.net *.split)
2021-03-13 14:04:21 +0100Twey(~twey@unaffiliated/twey) (*.net *.split)
2021-03-13 14:04:21 +0100kaol(~kaol@178.62.241.234) (*.net *.split)
2021-03-13 14:04:21 +0100metadave(sid28102@gateway/web/irccloud.com/x-jepzsdjwnpmillkf) (*.net *.split)
2021-03-13 14:04:21 +0100teehemkay(sid14792@gateway/web/irccloud.com/x-xjeoshtnvicuunzo) (*.net *.split)
2021-03-13 14:04:21 +0100joel135(sid136450@gateway/web/irccloud.com/x-rryyobdkncseyrpe) (*.net *.split)
2021-03-13 14:04:21 +0100NemesisD(sid24071@gateway/web/irccloud.com/x-fyuwobsnbmjnxtac) (*.net *.split)
2021-03-13 14:04:21 +0100jassob(~jassob@korrob.vth.sgsnet.se) (*.net *.split)
2021-03-13 14:04:21 +0100exarkun(~exarkun@14.79.69.34.bc.googleusercontent.com) (*.net *.split)
2021-03-13 14:04:21 +0100whatisRT(~whatisRT@ip5b416a33.dynamic.kabel-deutschland.de) (*.net *.split)
2021-03-13 14:04:21 +0100PlasmaStar(plasma@unaffiliated/plasmastar) (*.net *.split)
2021-03-13 14:04:21 +0100glamas(~glamas@107.182.17.237) (*.net *.split)
2021-03-13 14:04:21 +0100kipras`away(~kipras@re199n846.sritis.lt) (*.net *.split)
2021-03-13 14:04:21 +0100relrod(~relrod@redhat/ansible.staff.relrod) (*.net *.split)
2021-03-13 14:04:21 +0100jvanbure(~jvanbure@159.65.233.183) (*.net *.split)
2021-03-13 14:04:21 +0100dredozubov(~dredozubo@37.139.21.214) (*.net *.split)
2021-03-13 14:04:22 +0100towel(~towel@unaffiliated/towel) (*.net *.split)
2021-03-13 14:04:22 +0100eagleflo(~aku@eagleflow.fi) (*.net *.split)
2021-03-13 14:04:22 +0100t36s(~t36s@138.68.90.188) (*.net *.split)
2021-03-13 14:04:22 +0100xts(~ts@46.101.20.9) (*.net *.split)
2021-03-13 14:04:27 +0100magicman(~tchakkazu@static-47-180-28-65.lsan.ca.frontiernet.net)
2021-03-13 14:04:27 +0100relrod(~relrod@origin.elrod.me)
2021-03-13 14:04:28 +0100icebreaker(michalc@freeshell.de)
2021-03-13 14:04:28 +0100lawid(~quassel@dslb-090-186-208-048.090.186.pools.vodafone-ip.de)
2021-03-13 14:04:28 +0100icebreaker(michalc@freeshell.de) (Changing host)
2021-03-13 14:04:28 +0100icebreaker(michalc@unaffiliated/icebreaker)
2021-03-13 14:04:28 +0100swater_(bouhier200@perso.iiens.net)
2021-03-13 14:04:29 +0100Chousuke_(oranenj@coffee.modeemi.fi)
2021-03-13 14:04:29 +0100thebnq(~bnq@herrokitty.com)
2021-03-13 14:04:29 +0100relrod(~relrod@origin.elrod.me) (Changing host)
2021-03-13 14:04:29 +0100relrod(~relrod@redhat/ansible.staff.relrod)
2021-03-13 14:04:30 +0100glamas(~glamas@107.182.17.237)
2021-03-13 14:04:30 +0100eagleflo(~aku@eagleflow.fi)
2021-03-13 14:04:32 +0100ymherklotz(~ymherklot@2a0c:5bc0:40:107b:fdfc:4d2d:898a:f9f5)
2021-03-13 14:04:32 +0100kipras`away(~kipras@re199n846.sritis.lt)
2021-03-13 14:04:32 +0100anoe(~anoe@delanoe.org)
2021-03-13 14:04:33 +0100wagle(~wagle@quassel.wagle.io)
2021-03-13 14:04:33 +0100Clint(~Clint@libre.fm/hacker/clint)
2021-03-13 14:04:34 +0100joel135(sid136450@gateway/web/irccloud.com/x-oaoaohovhhkrzuvg)
2021-03-13 14:04:34 +0100metadave(sid28102@gateway/web/irccloud.com/x-ojtbvqwfgtmjogse)
2021-03-13 14:04:34 +0100xts(~ts@46.101.20.9)
2021-03-13 14:04:34 +0100filwisher(~filwisher@78.141.201.45)
2021-03-13 14:04:36 +0100Patternmaster(~georg@li1192-118.members.linode.com)
2021-03-13 14:04:36 +0100towel_(~towel@unaffiliated/towel)
2021-03-13 14:04:36 +0100fredcy(~fredcy@mail.yankowski.com)
2021-03-13 14:04:36 +0100pie_(~pie_bnc]@unaffiliated/pie-/x-0787662)
2021-03-13 14:04:36 +0100vancz(~vancz@unaffiliated/vancz)
2021-03-13 14:04:36 +0100sqrt2_(~ben@unaffiliated/sqrt2)
2021-03-13 14:04:37 +0100pierrot(~pi@unaffiliated/pierrot)
2021-03-13 14:04:37 +0100toppler`(~user@mtop.default.momentoftop.uk0.bigv.io)
2021-03-13 14:04:37 +0100qz(~quetzal@li272-85.members.linode.com)
2021-03-13 14:04:38 +0100grfn(sid449115@gateway/web/irccloud.com/x-kcukqthhmxycekel)
2021-03-13 14:04:38 +0100bendo(~bendo@130.61.122.121)
2021-03-13 14:04:38 +0100teehemkay(sid14792@gateway/web/irccloud.com/x-hoggebnksvacugax)
2021-03-13 14:04:38 +0100jvanbure(~jvanbure@159.65.233.183)
2021-03-13 14:04:38 +0100ibloom(sid350277@gateway/web/irccloud.com/x-xmmzzmccpahpnuwt)
2021-03-13 14:04:38 +0100t36s(~t36s@2a03:b0c0:3:d0::1c23:5001)
2021-03-13 14:04:39 +0100cpape```(~user@static.180.18.203.116.clients.your-server.de)
2021-03-13 14:04:39 +0100NemesisD(sid24071@gateway/web/irccloud.com/x-mxvrvawysstqytii)
2021-03-13 14:04:39 +0100electrostat(~dag@unaffiliated/electrostat)
2021-03-13 14:04:39 +0100leifm(~leifm@dawn.whatbox.ca)
2021-03-13 14:04:39 +0100dredozubov(~dredozubo@37.139.21.214)
2021-03-13 14:04:39 +0100codedmart(~codedmart@149.28.9.205)
2021-03-13 14:04:39 +0100exarkun(~exarkun@14.79.69.34.bc.googleusercontent.com)
2021-03-13 14:04:39 +0100whatisRT(~whatisRT@ip5b416a33.dynamic.kabel-deutschland.de)
2021-03-13 14:04:40 +0100jtobin(~jtobin@li1555-212.members.linode.com)
2021-03-13 14:04:40 +0100newsham(~ubuntu@ec2-18-218-216-88.us-east-2.compute.amazonaws.com)
2021-03-13 14:04:41 +0100orcus(~orcus@unaffiliated/orcus)
2021-03-13 14:04:42 +0100_ashbreeze_(~mark@64.85.214.234.reverse.socket.net)
2021-03-13 14:04:42 +0100siers(~ij@2a03:b0c0:1:e0::366:f001)
2021-03-13 14:04:49 +0100cross(~cross@spitfire.i.gajendra.net)
2021-03-13 14:05:00 +0100jhuizy(~jhuizy@static.241.188.216.95.clients.your-server.de)
2021-03-13 14:05:00 +0100andjjj23(~irc@107.170.228.47)
2021-03-13 14:05:03 +0100Unode(~Unode@unaffiliated/unode)
2021-03-13 14:05:04 +0100kumo(~kumo@139.180.144.166)
2021-03-13 14:05:08 +0100tv(~tv@unaffiliated/tv)
2021-03-13 14:05:11 +0100oldsk00l(~znc@ec2-18-130-254-135.eu-west-2.compute.amazonaws.com)
2021-03-13 14:05:16 +0100Lycurgus(~niemand@98.4.114.199)
2021-03-13 14:05:31 +0100adium(adium@unaffiliated/adium)
2021-03-13 14:05:31 +0100mniip(mniip@freenode/staff/mniip)
2021-03-13 14:05:45 +0100jassob(~jassob@korrob.vth.sgsnet.se)
2021-03-13 14:06:08 +0100tolt(~weechat-h@li219-154.members.linode.com)
2021-03-13 14:06:11 +0100stiell(~stian@fsf/member/stiell)
2021-03-13 14:06:17 +0100cgfbee(~bot@oc1.itim-cj.ro)
2021-03-13 14:06:23 +0100charukiewicz(~quassel@irouteince04.i.subnet.rcn.com)
2021-03-13 14:06:27 +0100PlasmaStar(plasma@unaffiliated/plasmastar)
2021-03-13 14:06:32 +0100chirpsalot(~Chirps@pool-98-115-239-235.phlapa.fios.verizon.net)
2021-03-13 14:07:08 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-03-13 14:07:23 +0100forgottenone(~forgotten@176.42.24.172) (Remote host closed the connection)
2021-03-13 14:07:42 +0100e2(e2@sponsored.by.bnc4you.xyz)
2021-03-13 14:07:45 +0100notzmv(~zmv@unaffiliated/zmv) (Ping timeout: 264 seconds)
2021-03-13 14:08:03 +0100yahb(xsbot@haskell/bot/yahb) (Ping timeout: 246 seconds)
2021-03-13 14:08:43 +0100pera(~pera@unaffiliated/pera)
2021-03-13 14:08:47 +0100Twey(~twey@unaffiliated/twey)
2021-03-13 14:08:56 +0100andi-(~andi-@NixOS/user/andi-)
2021-03-13 14:09:27 +0100kaol(~kaol@178.62.241.234)
2021-03-13 14:10:01 +0100acro(~acro@188.166.31.185)
2021-03-13 14:10:01 +0100acro(~acro@188.166.31.185) (Changing host)
2021-03-13 14:10:01 +0100acro(~acro@unaffiliated/acro)
2021-03-13 14:10:01 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-03-13 14:10:45 +0100runawayfive(~nope@unaffiliated/runawayfive)
2021-03-13 14:13:02 +0100yahb(xsbot@haskell/bot/yahb)
2021-03-13 14:14:36 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 256 seconds)
2021-03-13 14:14:36 +0100pera(~pera@unaffiliated/pera) (Ping timeout: 256 seconds)
2021-03-13 14:16:34 +0100forgottenone(~forgotten@176.42.24.172)
2021-03-13 14:18:33 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Quit: jpds)
2021-03-13 14:23:45 +0100frozenErebus(~frozenEre@94.128.82.20)
2021-03-13 14:24:55 +0100RamZess(~osboxes@213.142.184.77)
2021-03-13 14:25:18 +0100 <RamZess> hello everyone
2021-03-13 14:25:28 +0100heatsink(~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947)
2021-03-13 14:27:58 +0100juri_(~juri@178.63.35.222) (Ping timeout: 245 seconds)
2021-03-13 14:30:02 +0100RamZess(~osboxes@213.142.184.77) (Quit: leaving)
2021-03-13 14:30:02 +0100heatsink(~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) (Ping timeout: 264 seconds)
2021-03-13 14:30:27 +0100wilkie(~wilkie@217.146.82.202) (Remote host closed the connection)
2021-03-13 14:31:21 +0100 <geekosaur> hello
2021-03-13 14:31:24 +0100RamZess(~osboxes@213.142.184.77)
2021-03-13 14:31:27 +0100 <geekosaur> oh, they left
2021-03-13 14:32:54 +0100bergey`(~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
2021-03-13 14:33:00 +0100 <RamZess> Is anybody here alive and ready to help? I have a couple of beginner questions about stack and ghci.
2021-03-13 14:33:28 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2021-03-13 14:33:29 +0100 <siraben> RamZess: don't ask to ask, just ask!
2021-03-13 14:35:06 +0100juri_(~juri@178.63.35.222)
2021-03-13 14:37:10 +0100forgottenone(~forgotten@176.42.24.172) (Remote host closed the connection)
2021-03-13 14:37:33 +0100 <Lycurgus> but it's OK that you already did
2021-03-13 14:37:59 +0100 <Lycurgus> it's just common IRC etiquette not to
2021-03-13 14:38:05 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-03-13 14:38:12 +0100 <gentauro> RamZess: as long as peeps don't reply: "You should just drop stack and use cabal" :P (happens from time to time, sadly)
2021-03-13 14:39:19 +0100forgottenone(~forgotten@176.42.24.172)
2021-03-13 14:39:41 +0100Tario(~Tario@201.192.165.173)
2021-03-13 14:39:50 +0100Lycurgusrecommends set .stack yaml to lts 8.6.5 and use stack repl
2021-03-13 14:40:00 +0100Hobbestigrou1(~Hobbestig@195.140.213.38)
2021-03-13 14:40:49 +0100 <geekosaur> the latter in particular, since stack wants to manage ghc itself so you can't just run ghci, you need to run it via stack
2021-03-13 14:41:18 +0100 <RamZess> Let say I wanna play with standalone hs file (~/dev/HelloWorld.has). There is no stack project there but I have stack installed. When I start "stack ghci -packages xzy" it says that I'm using "global-project" and install packages into ~/.stack/snapshots. I want to use permament for "global-project" some packages. I put them into "packages" ~/.stack/global-project/stack.yaml but it does not work. Any
2021-03-13 14:41:24 +0100 <RamZess> suggestions?
2021-03-13 14:41:27 +0100Jd007(~Jd007@162.156.11.151)
2021-03-13 14:42:58 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 245 seconds)
2021-03-13 14:44:50 +0100drbean(~drbean@TC210-63-209-202.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in)
2021-03-13 14:45:33 +0100stree(~stree@68.36.8.116) (Ping timeout: 264 seconds)
2021-03-13 14:46:07 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-03-13 14:47:25 +0100idhugo(~idhugo@87-49-147-45-mobile.dk.customer.tdc.net)
2021-03-13 14:50:01 +0100Jd007(~Jd007@162.156.11.151) (Quit: Jd007)
2021-03-13 14:50:07 +0100 <gentauro> RamZess: when I use `stack + ghci` for scripting I do something like this -> https://gitlab.com/spisemisu/pcx-utils/-/blob/master/src/pcf-v61-teams.hs#L1-9
2021-03-13 14:50:49 +0100 <gentauro> oh, that script doesn't have packages. W8 a second
2021-03-13 14:51:13 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 276 seconds)
2021-03-13 14:51:36 +0100 <gentauro> RamZess: there you go -> https://gitlab.com/spisemisu/remove-facebook-content/-/blob/master/RFC.hs#L1-13
2021-03-13 14:52:03 +0100 <gentauro> RamZess: the `trick` is to call add packages with double dash -> `--package aeson`
2021-03-13 14:52:06 +0100 <gentauro> ;)
2021-03-13 14:54:25 +0100 <RamZess> gentauro: I yep double dash, it was a mistake. I want to have kind of a standard set of packages that are already references (without --package ..) when I start stack gchi
2021-03-13 14:57:01 +0100 <RamZess> gentauro: when I use the .hs with script annotated packages would it be correct intepreted with "stack ghci"?
2021-03-13 14:57:20 +0100urodna(~urodna@unaffiliated/urodna)
2021-03-13 14:58:16 +0100stree(~stree@68.36.8.116)
2021-03-13 15:00:24 +0100Lycurgus(~niemand@98.4.114.199) (Quit: Exeunt)
2021-03-13 15:00:38 +0100aarvar(~foewfoiew@2601:602:a080:fa0:6cfb:c91f:3c9a:a8cb) (Ping timeout: 264 seconds)
2021-03-13 15:01:42 +0100zebrag(~inkbottle@aaubervilliers-654-1-101-29.w86-212.abo.wanadoo.fr)
2021-03-13 15:03:50 +0100seanparsons(~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net)
2021-03-13 15:07:54 +0100__minoru__shirae(~shiraeesh@109.166.56.41)
2021-03-13 15:09:34 +0100timCF(~i.tkachuk@m91-129-99-43.cust.tele2.ee)
2021-03-13 15:15:16 +0100fendor(~fendor@178.115.131.242.wireless.dyn.drei.com)
2021-03-13 15:15:20 +0100fendor(~fendor@178.115.131.242.wireless.dyn.drei.com) (Remote host closed the connection)
2021-03-13 15:15:51 +0100fendor(~fendor@178.115.131.242.wireless.dyn.drei.com)
2021-03-13 15:15:53 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-13 15:15:57 +0100 <timCF> Hello! Can anybody recommend elegent way to compose pipline of multiple `MonadIO m => prev -> m (Either Error next)` expressions without tons of `case` expressions? `next` type is used as `prev` in next expression in pipline
2021-03-13 15:17:23 +0100alx741(~alx741@181.196.69.27)
2021-03-13 15:22:09 +0100frozenErebus(~frozenEre@94.128.82.20) (Ping timeout: 264 seconds)
2021-03-13 15:22:52 +0100CrazyPython(~crazypyth@98.122.164.118)
2021-03-13 15:23:09 +0100 <absence> timCF: check out ExceptT in transformers
2021-03-13 15:24:28 +0100clog(~nef@bespin.org) (Ping timeout: 260 seconds)
2021-03-13 15:24:36 +0100 <absence> "MonadIO m => prev -> ExceptT Error m next" can be composed using normal monad operators, like =<<, <=<, etc
2021-03-13 15:25:41 +0100ddellacosta(~ddellacos@86.106.143.10)
2021-03-13 15:25:45 +0100Sornaensis(~kvirc@077213203030.dynamic.telenor.dk)
2021-03-13 15:26:12 +0100heatsink(~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947)
2021-03-13 15:26:28 +0100 <timCF> absence: thanks!
2021-03-13 15:27:25 +0100 <Philonous> Is there a tool that automatically generates / updates package version bounds in a cabal file?
2021-03-13 15:29:57 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-03-13 15:30:18 +0100ddellacosta(~ddellacos@86.106.143.10) (Ping timeout: 246 seconds)
2021-03-13 15:31:14 +0100heatsink(~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) (Ping timeout: 264 seconds)
2021-03-13 15:31:22 +0100 <absence> if i have an MVector, and a function that takes Vector, can i somehow make them talk to eachother without creating a copy?
2021-03-13 15:31:23 +0100usr25(~usr25@unaffiliated/usr25)
2021-03-13 15:32:35 +0100frozenErebus(~frozenEre@94.128.82.20)
2021-03-13 15:34:10 +0100 <sm[m]> Philonous: cabal-bounds, I'm thinking
2021-03-13 15:35:57 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2021-03-13 15:37:17 +0100 <sm[m]> RamZess, this works: in ~/.ghci add :set -package pretty-simple, etc.
2021-03-13 15:37:37 +0100 <timCF> absence: seems like ExceptT relies on throwing/catching runtime exceptions? This does not sounds good. Version of code with tons of `<-` and `case` expressions used to compose `IO Either a b` expressions is ugly, but at least error handling is pure
2021-03-13 15:38:08 +0100 <sm[m]> RamZess: but next time those packages aren't installed, eg after a global stackage resolver update, GHCI won't start
2021-03-13 15:38:13 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-03-13 15:39:15 +0100pera(~pera@unaffiliated/pera)
2021-03-13 15:41:33 +0100 <RamZess> sm[m] ! thax It works!
2021-03-13 15:42:17 +0100 <absence> timCF: it doesn't, it just sounds like it because of the names used for the functions and types. if you look at the source code, it's just does the pattern matching behing the scenes
2021-03-13 15:42:38 +0100bergey`(~user@pool-74-108-99-127.nycmny.fios.verizon.net)
2021-03-13 15:43:47 +0100 <absence> timCF: it's identical to MaybeT for Maybe in that regard, but due to an unfortunate historical incident, the name EitherT was already taken, so we're stuck with the somewhat misleading ExceptT
2021-03-13 15:43:53 +0100 <timCF> absence: hmm, I've just got confused of lots of `SomeException` handlers in this example http://www.mega-nerd.com/erikd/Blog/CodeHacking/Haskell/what_do_you_mean.html
2021-03-13 15:44:37 +0100 <sm[m]> np
2021-03-13 15:45:53 +0100 <absence> timCF: i don't think the ExceptT in that example is the same one
2021-03-13 15:46:11 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 15:47:13 +0100 <absence> timCF: https://hackage.haskell.org/package/transformers-0.5.6.2/docs/Control-Monad-Trans-Except.html#t:Ex…
2021-03-13 15:47:25 +0100geekosaur(ac3a5746@172.58.87.70) (Quit: Connection closed)
2021-03-13 15:47:30 +0100tfl^(tfl@ip98-184-89-2.mc.at.cox.net) (Read error: Connection reset by peer)
2021-03-13 15:47:49 +0100 <timCF> absence: thanks!
2021-03-13 15:50:03 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-03-13 15:54:17 +0100 <Philonous> absence, There's unsafeFreeze, but it's unsafe, as the name implies. In particular, if you change the MVector later you might get unexpected behaviour
2021-03-13 15:55:00 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-03-13 15:55:45 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 264 seconds)
2021-03-13 15:57:43 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-03-13 15:58:30 +0100zebrag(~inkbottle@aaubervilliers-654-1-101-29.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-03-13 15:58:40 +0100ddellacosta(~ddellacos@86.106.143.226)
2021-03-13 15:58:52 +0100zebrag(~inkbottle@aaubervilliers-654-1-101-29.w86-212.abo.wanadoo.fr)
2021-03-13 16:00:55 +0100ddellaco_(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-03-13 16:01:16 +0100RamZess(~osboxes@213.142.184.77) ()
2021-03-13 16:01:17 +0100 <absence> Philonous: thanks, guess i'll stick with freeze for now
2021-03-13 16:02:34 +0100 <loyon> oh dear, ormolu and servant typed apis don't go well together :-/
2021-03-13 16:02:58 +0100ddellacosta(~ddellacos@86.106.143.226) (Ping timeout: 245 seconds)
2021-03-13 16:04:41 +0100 <Mrbuck> any one here write haskell on windows?
2021-03-13 16:04:56 +0100 <absence> yes
2021-03-13 16:05:07 +0100CrazyPython(~crazypyth@98.122.164.118) (Ping timeout: 256 seconds)
2021-03-13 16:08:41 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-03-13 16:09:19 +0100 <Mrbuck> absence: ok
2021-03-13 16:09:51 +0100 <timCF> Are there any shortcuts for `((f <$>) <$>)` or `((bimap f g) <$>)`? I found that I'm often using these boilerplate expressions with `m (Either a b)`
2021-03-13 16:10:26 +0100hexfive(~hexfive@50.35.83.177) (Quit: i must go. my people need me.)
2021-03-13 16:11:13 +0100 <Philonous> What workflow do people have to come up with version bounds for dependencies?
2021-03-13 16:11:37 +0100 <Philonous> Try to guess each one manually by looking at hackage?
2021-03-13 16:11:43 +0100bergey`(~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 245 seconds)
2021-03-13 16:11:52 +0100berberman(~berberman@unaffiliated/berberman)
2021-03-13 16:11:56 +0100 <maerwald> just use ^>=
2021-03-13 16:12:08 +0100 <absence> timCF: if you wrap the "m (Either e a)" in ExceptT, you only need one fmap. unfortunately bimap doesn't work :/
2021-03-13 16:12:43 +0100 <absence> (but there's withExceptT for modifying the "e" value)
2021-03-13 16:13:14 +0100berberman_(~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds)
2021-03-13 16:13:58 +0100 <timCF> absence: yeah, this sounds reasonable. I was recommended many times to use `ExceptT`. Probably it's time to overcome fear of monad transformers and learn them)
2021-03-13 16:14:28 +0100 <Philonous> maerwald, I still need to know the version to match on
2021-03-13 16:14:39 +0100notzmv(~zmv@unaffiliated/zmv)
2021-03-13 16:14:41 +0100 <maerwald> timCF: `Excepts` is cooler
2021-03-13 16:15:00 +0100 <maerwald> Philonous: start with the one in your build plan
2021-03-13 16:15:04 +0100jamm_(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2021-03-13 16:15:10 +0100 <absence> timCF: they can be intimidating and confusing for sure, but you'll run into them all the time, so it's worth learning
2021-03-13 16:15:34 +0100 <maerwald> timCF: https://hackage.haskell.org/package/haskus-utils-variant-3.0/docs/Haskus-Utils-Variant-Excepts.html
2021-03-13 16:15:54 +0100 <maerwald> ExceptT is boring... if I use it, I just go with String for the error type, because otherwise it's too annoying
2021-03-13 16:16:21 +0100 <maerwald> constant back and forth translation or an app-wide error type
2021-03-13 16:16:25 +0100 <maerwald> those are your options
2021-03-13 16:16:59 +0100 <timCF> maerwald: why String? Why not to create custom sum type to represent differnt errors?
2021-03-13 16:17:12 +0100 <maerwald> timCF: because then you have to translate back and forth
2021-03-13 16:18:10 +0100 <absence> maerwald: perhaps let him walk before running :) sounds like he's new to monad transformers
2021-03-13 16:18:46 +0100 <timCF> haha, that's true
2021-03-13 16:21:09 +0100blueonyx(59cc8bbd@unaffiliated/blueonyx)
2021-03-13 16:26:17 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-03-13 16:27:13 +0100heatsink(~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947)
2021-03-13 16:29:05 +0100bgamari(~bgamari@72.65.101.184) (Quit: ZNC 1.8.1 - https://znc.in)
2021-03-13 16:29:31 +0100raiaq(~raiaq@2a02:120b:2c2d:2310:94ae:9dd9:49dc:99b2)
2021-03-13 16:30:36 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 256 seconds)
2021-03-13 16:31:50 +0100heatsink(~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) (Ping timeout: 264 seconds)
2021-03-13 16:32:21 +0100frozenErebus(~frozenEre@94.128.82.20) (Ping timeout: 264 seconds)
2021-03-13 16:32:33 +0100Waifod(Waifod@gateway/vpn/protonvpn/waifod) (Ping timeout: 245 seconds)
2021-03-13 16:33:15 +0100Sornaensis(~kvirc@077213203030.dynamic.telenor.dk) (Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/)
2021-03-13 16:33:53 +0100bgamari(~bgamari@72.65.101.101)
2021-03-13 16:39:29 +0100Stanley00(~stanley00@unaffiliated/stanley00) ()
2021-03-13 16:42:04 +0100pyx(~pyx@unaffiliated/pyx)
2021-03-13 16:42:28 +0100pyx(~pyx@unaffiliated/pyx) (Client Quit)
2021-03-13 16:44:58 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-03-13 16:50:48 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-03-13 16:50:59 +0100CrazyPython(~crazypyth@98.122.164.118)
2021-03-13 16:52:43 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Client Quit)
2021-03-13 16:53:21 +0100notzmv(~zmv@unaffiliated/zmv) (Ping timeout: 264 seconds)
2021-03-13 16:54:46 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-03-13 16:55:40 +0100jamm_(~jamm@unaffiliated/jamm)
2021-03-13 16:55:58 +0100VeeBoi(8077ca8d@natp-128-119-202-141.wireless.umass.edu)
2021-03-13 16:57:00 +0100teardown_(~user@gateway/tor-sasl/mrush) (Ping timeout: 268 seconds)
2021-03-13 16:57:16 +0100kritzefitz(~kritzefit@212.86.56.80)
2021-03-13 16:59:08 +0100puke(~vroom@217.138.252.202) (Quit: puke)
2021-03-13 17:00:19 +0100BenSima[m](bensimatim@gateway/shell/matrix.org/x-qkslyhndqfzvjpcd) (Quit: Idle for 30+ days)
2021-03-13 17:00:20 +0100utdemir[m](utdemirmat@gateway/shell/matrix.org/x-suedpldutimmauoc) (Quit: Idle for 30+ days)
2021-03-13 17:04:36 +0100ddellaco_(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 256 seconds)
2021-03-13 17:04:44 +0100supercoven(~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi)
2021-03-13 17:06:12 +0100CrazyPython(~crazypyth@98.122.164.118) (Ping timeout: 246 seconds)
2021-03-13 17:06:12 +0100stree(~stree@68.36.8.116) (Ping timeout: 246 seconds)
2021-03-13 17:07:37 +0100toorevitimirp(~tooreviti@117.182.180.50) (Remote host closed the connection)
2021-03-13 17:08:38 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de) (Quit: WeeChat 3.0.1)
2021-03-13 17:10:31 +0100puke(~vroom@217.138.252.202)
2021-03-13 17:11:03 +0100VeeBoi(8077ca8d@natp-128-119-202-141.wireless.umass.edu) (Ping timeout: 240 seconds)
2021-03-13 17:13:36 +0100carlomagno(~cararell@148.87.23.6)
2021-03-13 17:14:51 +0100usr25(~usr25@unaffiliated/usr25) (Quit: Leaving)
2021-03-13 17:15:22 +0100swarmcollective(~joseph@cpe-24-208-140-96.insight.res.rr.com) (Ping timeout: 256 seconds)
2021-03-13 17:15:27 +0100renzhi(~renzhi@2607:fa49:653f:eb00::296e)
2021-03-13 17:17:25 +0100swarmcollective(~joseph@cpe-24-208-140-96.insight.res.rr.com)
2021-03-13 17:19:29 +0100stree(~stree@68.36.8.116)
2021-03-13 17:19:58 +0100frozenErebus(~frozenEre@94.128.82.20)
2021-03-13 17:20:28 +0100jrqc(~rofl@96.78.87.197) (Ping timeout: 256 seconds)
2021-03-13 17:21:25 +0100notzmv(~zmv@unaffiliated/zmv)
2021-03-13 17:22:47 +0100Vra(8077caa7@natp-128-119-202-167.wireless.umass.edu)
2021-03-13 17:23:20 +0100jrqc(~rofl@96.78.87.197)
2021-03-13 17:26:08 +0100notzmv(~zmv@unaffiliated/zmv) (Ping timeout: 256 seconds)
2021-03-13 17:27:13 +0100 <__minoru__shirae> maerwald: "constant back and forth translation or an app-wide error type"
2021-03-13 17:27:53 +0100heatsink(~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947)
2021-03-13 17:28:00 +0100notzmv(~zmv@unaffiliated/zmv)
2021-03-13 17:28:17 +0100 <__minoru__shirae> how about wrapping?
2021-03-13 17:28:23 +0100Vrazomq
2021-03-13 17:28:34 +0100ezrakilty(~ezrakilty@97-113-58-224.tukw.qwest.net)
2021-03-13 17:28:50 +0100fendor(~fendor@178.115.131.242.wireless.dyn.drei.com) (Remote host closed the connection)
2021-03-13 17:29:09 +0100 <__minoru__shirae> you just wrap whatever error with your wrapper
2021-03-13 17:29:11 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2021-03-13 17:31:00 +0100fendor(~fendor@178.115.131.242.wireless.dyn.drei.com)
2021-03-13 17:32:26 +0100heatsink(~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) (Ping timeout: 264 seconds)
2021-03-13 17:34:33 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-03-13 17:36:30 +0100joebobjoe(~joebobjoe@unaffiliated/joebobjoe)
2021-03-13 17:37:51 +0100 <__minoru__shirae> if this were to work, you wouldn't even need a wrapper, because Either itself is a wrapper
2021-03-13 17:39:10 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 256 seconds)
2021-03-13 17:39:19 +0100 <__minoru__shirae> some problem with types? Don't all errors inherit from some class or something?
2021-03-13 17:39:38 +0100 <monochrom> Huh, there is only one translation direction, and it's from your own error type to string, and it's only at the UI boundary.
2021-03-13 17:40:33 +0100 <monochrom> You will want your own custom type, preferrably and ADT, if you want catch-and-conditionally-rethrow.
2021-03-13 17:40:50 +0100 <monochrom> Because your condition will have to examine the content of the error.
2021-03-13 17:41:39 +0100 <monochrom> I trust that this is not where you think you need the inverse translation, because that would reflect a dumb use of ExceptT.
2021-03-13 17:42:38 +0100dwt(~dwt@2601:2c6:8080:618:7090:bcee:c3c7:64ac) (Ping timeout: 264 seconds)
2021-03-13 17:43:13 +0100ezrakilty(~ezrakilty@97-113-58-224.tukw.qwest.net) (Remote host closed the connection)
2021-03-13 17:43:58 +0100borne(~fritjof@200116b86494d20065fd8eaafdc5f06e.dip.versatel-1u1.de)
2021-03-13 17:44:53 +0100raiaq(~raiaq@2a02:120b:2c2d:2310:94ae:9dd9:49dc:99b2) (Quit: WeeChat 3.0.1)
2021-03-13 17:45:03 +0100idhugo(~idhugo@87-49-147-45-mobile.dk.customer.tdc.net) (Ping timeout: 246 seconds)
2021-03-13 17:46:30 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-13 17:48:14 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2021-03-13 17:48:58 +0100 <maerwald> The problem is this: 1. either you have non-fine grained error sum type -> you never know what stuff your function may *really* gonna throw, so you just broke catching, 2. you have fine-grained error sum types (per module or even per functions), then you constantly have to translate erros to your other sum types (or convert to string and give up)
2021-03-13 17:49:44 +0100 <maerwald> open sum types fix this, but at other costs (e.g. type inference)
2021-03-13 17:50:56 +0100 <maerwald> whatever you do, ergonomics aren't too great
2021-03-13 17:51:41 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 17:53:08 +0100 <monochrom> I think if you s/non-fine-grained/has possibilities you don't actually produce/ , I understand.
2021-03-13 17:53:26 +0100HarveyPwca(~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06)
2021-03-13 17:53:30 +0100 <maerwald> yes
2021-03-13 17:54:29 +0100 <maerwald> in backend settings, you often don't really catch anything, but just translate the errors to a HTTP response, so an app-wide sum type can be feasible
2021-03-13 17:54:32 +0100 <maerwald> but not generally
2021-03-13 17:56:51 +0100joseph(~joseph@cpe-24-208-140-96.insight.res.rr.com)
2021-03-13 17:56:52 +0100Deide(~Deide@217.155.19.23)
2021-03-13 17:57:07 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 276 seconds)
2021-03-13 17:57:14 +0100josephGuest72818
2021-03-13 17:57:22 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-03-13 17:57:52 +0100 <maerwald> that's why I like IO exceptions + testing them in your unit tests
2021-03-13 17:58:15 +0100 <maerwald> not fool proof, but good enough for me
2021-03-13 17:58:22 +0100conal(~conal@64.71.133.70)
2021-03-13 17:59:38 +0100swarmcollective(~joseph@cpe-24-208-140-96.insight.res.rr.com) (Ping timeout: 245 seconds)
2021-03-13 18:02:19 +0100poscat(~poscat@123.112.148.153) (Ping timeout: 276 seconds)
2021-03-13 18:03:13 +0100poscat(~poscat@123.112.148.153)
2021-03-13 18:05:50 +0100jakalx(~jakalx@base.jakalx.net) ("Error from remote client")
2021-03-13 18:06:00 +0100geekosaur(82650c7a@130.101.12.122)
2021-03-13 18:08:29 +0100bergey`(~user@pool-74-108-99-127.nycmny.fios.verizon.net)
2021-03-13 18:14:33 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-03-13 18:15:42 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de)
2021-03-13 18:16:00 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-03-13 18:16:07 +0100CrazyPython(~crazypyth@98.122.164.118)
2021-03-13 18:17:01 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de) (Client Quit)
2021-03-13 18:17:15 +0100bergey`(~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
2021-03-13 18:19:00 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 246 seconds)
2021-03-13 18:19:59 +0100 <fendor> why doesnt lambdabot report about package uploads anymore?
2021-03-13 18:20:10 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de)
2021-03-13 18:21:06 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-03-13 18:21:28 +0100 <geekosaur> wasn't lambdabot, it was hackagebot. and I think it started when freenode started having netsplits, and the bot needs to be restarted
2021-03-13 18:22:01 +0100 <geekosaur> Last seen : Mar 02 10:08:40 2021 (1w 4d 7h ago)
2021-03-13 18:22:46 +0100 <geekosaur> mniip, around? can you kick the hackage bot?
2021-03-13 18:22:47 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de) (Client Quit)
2021-03-13 18:24:03 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de)
2021-03-13 18:25:27 +0100Paks(~paks@c-69-136-183-189.hsd1.il.comcast.net)
2021-03-13 18:25:29 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de) (Client Quit)
2021-03-13 18:28:30 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de)
2021-03-13 18:31:15 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de) (Client Quit)
2021-03-13 18:31:34 +0100Hobbestigrou1(~Hobbestig@195.140.213.38) (Remote host closed the connection)
2021-03-13 18:35:35 +0100jamm_(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2021-03-13 18:39:46 +0100elusive(~Jeanne-Ka@static-198-54-134-171.cust.tzulo.com)
2021-03-13 18:40:02 +0100 <geekosaur> @tell mniip the hackage bot is stuck, can you restart it?
2021-03-13 18:40:03 +0100 <lambdabot> Consider it noted.
2021-03-13 18:40:36 +0100Mrbuck(~Mrbuck@gateway/tor-sasl/mrbuck) (Ping timeout: 268 seconds)
2021-03-13 18:40:51 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de)
2021-03-13 18:42:45 +0100 <dmj`> monochrom: In avg xs = sum xs / length xs, If sum gets evaluated first, then it would be true that the entire list is forced into memory, not just the spine.
2021-03-13 18:43:22 +0100zomq(8077caa7@natp-128-119-202-167.wireless.umass.edu) (Ping timeout: 240 seconds)
2021-03-13 18:43:51 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de) (Client Quit)
2021-03-13 18:43:57 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-yuuljllgcbbnaiwc)
2021-03-13 18:45:19 +0100 <monochrom> Oh, heh, that.
2021-03-13 18:45:23 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de)
2021-03-13 18:46:02 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2021-03-13 18:47:35 +0100pehjota(~pehjota@37.120.211.188)
2021-03-13 18:48:21 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Ping timeout: 272 seconds)
2021-03-13 18:48:59 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-03-13 18:51:28 +0100mirrorbird(dwsjeid911@gateway/vpn/mullvad/dwsjeid911)
2021-03-13 18:51:51 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de) (Quit: WeeChat 3.1)
2021-03-13 18:52:23 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-03-13 18:53:16 +0100kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2021-03-13 18:53:37 +0100jakalx(~jakalx@base.jakalx.net)
2021-03-13 18:54:24 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-03-13 18:54:34 +0100conal(~conal@64.71.133.70)
2021-03-13 18:55:42 +0100blueonyx(59cc8bbd@unaffiliated/blueonyx) (Ping timeout: 240 seconds)
2021-03-13 18:55:45 +0100Benzi-Junior(~BenziJuni@88-149-64-40.du.xdsl.is) (Ping timeout: 246 seconds)
2021-03-13 18:56:03 +0100Benzi-Junior(~BenziJuni@88-149-67-143.du.xdsl.is)
2021-03-13 18:57:17 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-03-13 18:58:02 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de)
2021-03-13 18:59:15 +0100joebobjoe(~joebobjoe@unaffiliated/joebobjoe) (Ping timeout: 246 seconds)
2021-03-13 18:59:21 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 264 seconds)
2021-03-13 19:00:37 +0100 <dmj`> monochrom: it seems "sum" is always evaluated first ...
2021-03-13 19:01:42 +0100geekosaur(82650c7a@130.101.12.122) (Ping timeout: 240 seconds)
2021-03-13 19:01:54 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2021-03-13 19:01:58 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de) (Client Quit)
2021-03-13 19:02:15 +0100Mrbuck(~Mrbuck@gateway/tor-sasl/mrbuck)
2021-03-13 19:05:56 +0100rajivr(uid269651@gateway/web/irccloud.com/x-qhbpzrlqpyrqpcwa) (Quit: Connection closed for inactivity)
2021-03-13 19:06:25 +0100 <c_wraith> I wouldn't trust that observation. That's the sort of thing GHC is free to change whenever the optimizer feels like it
2021-03-13 19:06:36 +0100conal(~conal@64.71.133.70) (Ping timeout: 246 seconds)
2021-03-13 19:07:26 +0100Vra(8077cab5@natp-128-119-202-181.wireless.umass.edu)
2021-03-13 19:09:20 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de)
2021-03-13 19:10:06 +0100waleee-cl(uid373333@gateway/web/irccloud.com/x-eyjzukijciociqrd)
2021-03-13 19:10:36 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de) (Client Quit)
2021-03-13 19:11:02 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de)
2021-03-13 19:11:10 +0100jamm_(~jamm@unaffiliated/jamm)
2021-03-13 19:11:45 +0100conal(~conal@192.145.118.125)
2021-03-13 19:11:47 +0100dsrt^(dsrt@ip98-184-89-2.mc.at.cox.net)
2021-03-13 19:13:28 +0100 <dmj`> c_wraith: sure, I'd love to see an example
2021-03-13 19:15:27 +0100borne(~fritjof@200116b86494d20065fd8eaafdc5f06e.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2021-03-13 19:18:07 +0100geekosaur(82650c7a@130.101.12.122)
2021-03-13 19:18:54 +0100__minoru__shirae(~shiraeesh@109.166.56.41) (Ping timeout: 256 seconds)
2021-03-13 19:18:57 +0100 <int-e> dmj`: it doesn't even have to be the optimizer; imagine _ / 0 = error "divide by 0"; a / b = ...
2021-03-13 19:19:01 +0100minoru_shiraeesh(~shiraeesh@109.166.56.131)
2021-03-13 19:20:53 +0100conal(~conal@192.145.118.125) (Quit: Computer has gone to sleep.)
2021-03-13 19:21:49 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de) (Quit: WeeChat 3.1)
2021-03-13 19:22:04 +0100 <monochrom> I wonder if https://mail.haskell.org/pipermail/haskell-cafe/2011-April/091048.html counts >:)
2021-03-13 19:22:21 +0100joebobjoe(~joebobjoe@unaffiliated/joebobjoe)
2021-03-13 19:23:02 +0100carlomagno(~cararell@148.87.23.6) (Quit: Leaving.)
2021-03-13 19:23:02 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de)
2021-03-13 19:23:18 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de) (Client Quit)
2021-03-13 19:23:55 +0100 <monochrom> To be fair I could not reproduce it with any type that is not as boring as ().
2021-03-13 19:24:17 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de)
2021-03-13 19:24:39 +0100 <c_wraith> I bet you could get CSE to kick in if you had a separate use of length xs that had to be evaluated first
2021-03-13 19:26:46 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-03-13 19:27:58 +0100stree(~stree@68.36.8.116) (Ping timeout: 256 seconds)
2021-03-13 19:28:46 +0100 <dmj`> monochrom: also, another "gotcha", Divide-by-zero isn't thrown unless its a Rational, otherwise, just NaN is returned (Double / Float). So not identical behavior for all Fractional instances. The plot thickens.
2021-03-13 19:28:52 +0100jamm_(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2021-03-13 19:29:08 +0100ddellacosta(~ddellacos@86.106.143.83)
2021-03-13 19:29:18 +0100heatsink(~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947)
2021-03-13 19:30:21 +0100 <dmj`> int-e: sure that makes sense, unless 'a' had been evaluated elsewhere 'b' should be forced first because of the 0 check. I want to see where GHC is at liberty to choose. That example doesn't seem like GHC has a choice (assuming both 'a' and 'b' are thunks).
2021-03-13 19:32:04 +0100 <int-e> dmj`: well with the floating point version it gets a choice
2021-03-13 19:32:21 +0100 <int-e> as you just pointed out yourself
2021-03-13 19:32:26 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-03-13 19:32:43 +0100bobiusbillius(~bobiusbil@2a00:23c7:9909:5b01:9143:54d3:f1e8:156d)
2021-03-13 19:32:58 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-03-13 19:33:58 +0100ddellacosta(~ddellacos@86.106.143.83) (Ping timeout: 276 seconds)
2021-03-13 19:33:58 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Read error: Connection reset by peer)
2021-03-13 19:34:11 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de) (Quit: WeeChat 3.1)
2021-03-13 19:34:14 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-03-13 19:34:14 +0100heatsink(~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) (Ping timeout: 264 seconds)
2021-03-13 19:35:28 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2021-03-13 19:37:03 +0100 <dmj`> int-e: wouldn't it /not/ have a choice because it would evaluate the first case (_ / 0) -- thus forcing 'b' first. Order of the function definitions matters.
2021-03-13 19:37:16 +0100tromp_(~tromp@dhcp-077-249-230-040.chello.nl)
2021-03-13 19:37:31 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de)
2021-03-13 19:37:36 +0100 <dmj`> if a / b was defined before _ / 0 then I'd believe it has a choice
2021-03-13 19:37:39 +0100 <int-e> dmj`: there is no error case, division is just strict in both arguments.
2021-03-13 19:37:54 +0100CaptainIRS(9d31f23d@157.49.242.61) (Quit: Connection closed)
2021-03-13 19:38:09 +0100 <int-e> > undefined/0 :: Float
2021-03-13 19:38:11 +0100 <lambdabot> *Exception: Prelude.undefined
2021-03-13 19:38:34 +0100 <int-e> > 0/undefined :: Float
2021-03-13 19:38:36 +0100 <lambdabot> *Exception: Prelude.undefined
2021-03-13 19:38:47 +0100 <monochrom> > undefined/0 :: Rational
2021-03-13 19:38:49 +0100 <lambdabot> *Exception: Prelude.undefined
2021-03-13 19:38:57 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 264 seconds)
2021-03-13 19:39:51 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de) (Client Quit)
2021-03-13 19:40:09 +0100stree(~stree@68.36.8.116)
2021-03-13 19:40:16 +0100 <int-e> dmj`: in that imaginary example, yes, it would not get a choice
2021-03-13 19:40:58 +0100 <dmj`> sure, its strict in both arguments.
2021-03-13 19:41:07 +0100 <dmj`> > error "foo" / error "bar"
2021-03-13 19:41:09 +0100 <lambdabot> *Exception: foo
2021-03-13 19:41:21 +0100darjeeling_(~darjeelin@122.245.218.92) (Ping timeout: 264 seconds)
2021-03-13 19:41:51 +0100frozen_burnman(~frozen_bu@80-90-135-76.static.oxid.cz)
2021-03-13 19:41:56 +0100 <int-e> ghc tends to be careful with that extra freedom offered by exchanging one bottom for another
2021-03-13 19:42:23 +0100ADG1089__(~aditya@106.212.74.137)
2021-03-13 19:42:33 +0100 <int-e> I don't really know under what circumstances it does that.
2021-03-13 19:43:12 +0100 <tomsmeding> there is https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/bugs.html#expressions-and-patterns
2021-03-13 19:43:13 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de)
2021-03-13 19:43:25 +0100 <tomsmeding> though that's a bit more subtle than the discussion at hand, I think
2021-03-13 19:43:43 +0100jumper149(~jumper149@ip185225.wh.uni-hannover.de) (Client Quit)
2021-03-13 19:43:50 +0100frozenErebus(~frozenEre@94.128.82.20) (Ping timeout: 256 seconds)
2021-03-13 19:48:06 +0100marinelli(~marinelli@gateway/tor-sasl/marinelli)
2021-03-13 19:49:08 +0100tromp_(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-03-13 19:49:25 +0100 <dmj`> tomsmeding: yea, when it says, "This should call error, but it returns True", I don't agree with that statement. seq (f []) returns a partially applied function evaluated to whnf, but its not the application of the function. f [] :: b -> b, maybe it should say, "this seems like it should call error"
2021-03-13 19:50:00 +0100 <tomsmeding> dmj`: ah, but f [] is defined as error, isn't it?
2021-03-13 19:50:18 +0100 <tomsmeding> so evaluating f [] to WHNF using seq should technically speaking throw an error
2021-03-13 19:50:34 +0100 <tomsmeding> note that evaluating function types to WHNF does actually do something:
2021-03-13 19:50:41 +0100 <tomsmeding> > (undefined :: Int -> Int) `seq` ()
2021-03-13 19:50:42 +0100geekosaur(82650c7a@130.101.12.122) (Ping timeout: 240 seconds)
2021-03-13 19:50:43 +0100 <lambdabot> *Exception: Prelude.undefined
2021-03-13 19:51:49 +0100 <tomsmeding> an actual lambda object, or I guess a closure object in proper terminology, is the WHNF of a function type
2021-03-13 19:51:51 +0100 <dmj`> that's different, you're unboxing undefined here. f [] is not fully applied to produce the undefined, despite the fact the argument is unused, it seems one needs to be applied.
2021-03-13 19:52:12 +0100 <tomsmeding> dmj`: "f [] is not fully applied" -- isn't it?
2021-03-13 19:52:20 +0100 <dmj`> tomsmeding: what's the type of f ?
2021-03-13 19:52:28 +0100 <dmj`> tomsmeding: note the eta expansion
2021-03-13 19:52:28 +0100 <tomsmeding> well, [a] -> b -> b
2021-03-13 19:52:37 +0100 <dmj`> no 'b' was specified
2021-03-13 19:52:59 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 19:53:53 +0100 <tomsmeding> dmj`: would it be different if we had 'newtype Func b = Func (b -> b)', and 'f :: [a] -> Func b', where 'f [] = error "urk" ; f (x:xs) = Func (\x -> x)' ?
2021-03-13 19:54:28 +0100darjeeling_(~darjeelin@122.245.218.190)
2021-03-13 19:54:32 +0100 <tomsmeding> there 'f [] `seq` True' should certainly error, right?
2021-03-13 19:55:16 +0100 <tomsmeding> I guess same question if I wrote 'data' instead of 'newtype'
2021-03-13 19:55:43 +0100 <dmj`> @def newtype Func b = Func (b -> b)
2021-03-13 19:55:44 +0100 <lambdabot> Defined.
2021-03-13 19:56:48 +0100 <dmj`> @def func' :: [a] -> Func b; func' [] = error "urk"; func' (x:xs) = Func (\x -> x)
2021-03-13 19:56:50 +0100 <lambdabot> Defined.
2021-03-13 19:57:10 +0100 <dmj`> > func' [] `seq` True
2021-03-13 19:57:12 +0100 <lambdabot> *Exception: urk
2021-03-13 19:57:21 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 246 seconds)
2021-03-13 19:57:38 +0100 <c_wraith> dmj`: whether or not you like it, eta expansion can actually remove bottoms in Haskell. It's not 100% valid as an optimization
2021-03-13 19:57:44 +0100 <tomsmeding> because the WHNF of a Func is the constructor, which in this case evaluates to bottom
2021-03-13 19:58:30 +0100 <tomsmeding> if it was 'data Func', that would be correct; now that it's 'newtype Func' the field of Func is strict, so it's not only the Func constructor but also the function inside of it that needs to be evaluated to get the WHNF of Func
2021-03-13 19:58:34 +0100 <dmj`> tomsmeding: hmm, still don't think this is comparing apples to apples though, eta-expansion isn't happening in the same way with Func as it is with f :: [a] -> b -> b
2021-03-13 19:58:37 +0100 <tomsmeding> not that it matters in this particular example
2021-03-13 19:58:58 +0100 <tomsmeding> but then, how is the type (b -> b) any different from Func?
2021-03-13 19:59:05 +0100 <tomsmeding> it's still a type that can have values
2021-03-13 19:59:16 +0100 <c_wraith> It's different in how GHC optimizes it.
2021-03-13 19:59:33 +0100 <tomsmeding> true, which ghc declares as a bug in its user's guide :)
2021-03-13 19:59:36 +0100 <tomsmeding> though an intentional bug
2021-03-13 20:00:07 +0100 <dmj`> tomsmeding: its different because Func is wrapping it right
2021-03-13 20:00:09 +0100 <koz_> c_wraith: "eta expansion can actually remove bottoms" <-- Sir Mix-a-Lot is disappointed
2021-03-13 20:00:18 +0100 <tomsmeding> being able to evaluate function-typed values to WHNF is actually very useful
2021-03-13 20:01:07 +0100 <tomsmeding> to give a very concrete example: this function 'run1' takes a function in the Accelerate embedded language, and returns a Haskell function that evaluates it https://hackage.haskell.org/package/accelerate-llvm-native-1.3.0.0/docs/Data-Array-Accelerate-LLVM…
2021-03-13 20:01:18 +0100Guest16306(~textual@zrcout.mskcc.org) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-03-13 20:01:22 +0100 <siers> Are there any implementations of mutable sets in hackage?
2021-03-13 20:01:33 +0100 <koz_> siers: HashSet too slow for you?
2021-03-13 20:01:43 +0100 <koz_> Or rather, why is mutability important?
2021-03-13 20:01:47 +0100 <tomsmeding> the Accelerate compiler implementation is written in such a way that forcing that 'a -> b' function to WHNF evaluates the full compilation of the Accelerate function
2021-03-13 20:02:02 +0100Vra(8077cab5@natp-128-119-202-181.wireless.umass.edu) (Ping timeout: 240 seconds)
2021-03-13 20:02:11 +0100 <tomsmeding> which is useful to be able to do explicitly, e.g. for benchmarking purposes
2021-03-13 20:03:06 +0100 <siers> koz_, I'm just looking for it. I don't think I'll end up needing it.
2021-03-13 20:03:08 +0100 <int-e> dmj`: One case where ghc *will* exchange bottoms is when you have a complex function that is strict in its arguments but evaluates them in different orders depending on the precise inputs... and ghc decides to unbox the arguments. It seems hard to come up with a small, reliable example for that.
2021-03-13 20:03:27 +0100 <c_wraith> siers: it's hard to imagine one being better than IORef (Set a) or MVar (Set a)
2021-03-13 20:03:34 +0100berberman_(~berberman@unaffiliated/berberman)
2021-03-13 20:03:43 +0100ddellacosta(~ddellacos@86.106.143.213)
2021-03-13 20:03:44 +0100geekosaur(82650c7a@130.101.12.122)
2021-03-13 20:03:53 +0100 <c_wraith> siers: it *could* happen, but you'd need a ridiculous amount of concurrent access
2021-03-13 20:04:10 +0100jb55(~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection)
2021-03-13 20:04:21 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 272 seconds)
2021-03-13 20:04:32 +0100 <koz_> c_wraith: In all honesty, given how badly HashMap clocks anything in hashtables in practice? HashSet is probably fast enough for whatever you wanna do, zero mutability required.
2021-03-13 20:04:37 +0100jb55(~jb55@gateway/tor-sasl/jb55)
2021-03-13 20:04:53 +0100 <c_wraith> koz_: mutability matters for concurrent modifications, not performance
2021-03-13 20:05:00 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 20:05:51 +0100 <koz_> c_wraith: Fair point.
2021-03-13 20:08:21 +0100ddellacosta(~ddellacos@86.106.143.213) (Ping timeout: 264 seconds)
2021-03-13 20:08:40 +0100_jogo_(~jogo@ip5b42a696.dynamic.kabel-deutschland.de)
2021-03-13 20:08:55 +0100 <dmj`> tomsmeding: I don't disagree Func (b -> b) should be semantically equivalent to (b -> b), but I think they might desugar differently.
2021-03-13 20:09:41 +0100 <tomsmeding> dmj`: ghc very well might, but if the effect is observable, that's a deviation from the haskell standard
2021-03-13 20:09:47 +0100 <c_wraith> I remember some benchmarking of concurrent data structures a while back, and there was a note at the end saying just using a standard immutable data structure in an MVar trounced all of them for performance up until something like 12 cores were making frequent updates.
2021-03-13 20:10:09 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 264 seconds)
2021-03-13 20:10:50 +0100 <tomsmeding> dmj`: haskell isn't defined in terms of desugarings, it's defined in terms of how stuff should behave semantically
2021-03-13 20:11:13 +0100 <tomsmeding> ghc mostly adheres to the definitions, but sometimes deviates, for example with the eta-expansion I linked; but it doesn't always do that
2021-03-13 20:11:33 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-03-13 20:12:44 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2021-03-13 20:13:02 +0100son0p(~son0p@181.58.39.182) (Quit: Lost terminal)
2021-03-13 20:17:10 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-13 20:17:28 +0100Alleria(~textual@2603-7000-3040-0000-90f8-4e28-a385-635a.res6.spectrum.com)
2021-03-13 20:17:32 +0100 <dmj`> tomsmeding: it's pretty unintuitive behavior, I agree. Representation will change semantics though, the more you unbox, the stricter things have to be.
2021-03-13 20:17:51 +0100AlleriaGuest34685
2021-03-13 20:18:09 +0100 <tomsmeding> dmj`: that's certainly true: if you start unboxing, you change semantics
2021-03-13 20:18:39 +0100 <tomsmeding> I think we're arguing from different perspectives: you're seeing the implementation (ghc) as truth, I'm seeing the specification (the haskell report) as truth, and the implementation something that mostly adheres to spec
2021-03-13 20:19:05 +0100 <tomsmeding> so when I say that eta-expansion "should" not change semantics, you say "but it does" -- true, but that was not my point :p
2021-03-13 20:19:11 +0100fendor(~fendor@178.115.131.242.wireless.dyn.drei.com) (Remote host closed the connection)
2021-03-13 20:19:20 +0100 <tomsmeding> correction: eta-expansion of course changes semantics
2021-03-13 20:19:31 +0100_jogo_(~jogo@ip5b42a696.dynamic.kabel-deutschland.de) (Quit: _jogo_)
2021-03-13 20:19:35 +0100 <tomsmeding> I should have said: ghc should not eta-expand in an observable way
2021-03-13 20:20:04 +0100 <tomsmeding> two ways to reason about behaviour :)
2021-03-13 20:20:17 +0100 <int-e> tomsmeding: which is why they list this as a known bug or infelicity
2021-03-13 20:20:25 +0100 <tomsmeding> precisely
2021-03-13 20:20:32 +0100 <tomsmeding> :)
2021-03-13 20:20:36 +0100 <int-e> in contrast, exchanging one bottom for another is perfectly legitimate
2021-03-13 20:20:42 +0100 <tomsmeding> ghc developers are ever diligent
2021-03-13 20:21:05 +0100 <int-e> just very annoying (especially when a meaningful error gets replaced by another error or by nontermination)
2021-03-13 20:21:26 +0100joebobjoe(~joebobjoe@unaffiliated/joebobjoe) (Quit: Lost terminal)
2021-03-13 20:22:47 +0100jb55(~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection)
2021-03-13 20:23:08 +0100jb55(~jb55@gateway/tor-sasl/jb55)
2021-03-13 20:24:35 +0100 <dmj`> tomsmeding: maybe "desugaring" was the wrong word, but the representation of data types in GHC Haskell Core is different than functions (hence why this isn't an apples-to-apples comparison), I think data types could be desugared to lambdas in Core, but they're not (correct me if I'm wrong), so that might have something to do with the fact that Func (b->b) than b->b
2021-03-13 20:24:41 +0100 <dmj`> is different than*
2021-03-13 20:25:09 +0100makergrl(~ident@212.65.4.46.bc.googleusercontent.com)
2021-03-13 20:25:12 +0100 <dmj`> and its probably most definitely the reason eta-expansion isn't happening for Func
2021-03-13 20:26:01 +0100 <siers> How do I run an IO effect in "StateT IO a b"?
2021-03-13 20:26:17 +0100 <dmj`> liftIO
2021-03-13 20:26:46 +0100ddellacosta(~ddellacos@86.106.143.70)
2021-03-13 20:26:56 +0100 <siers> if it was some other monad, then could I not lift it?
2021-03-13 20:27:12 +0100 <dmj`> siers: can only liftIO if its an instance of MonadIO
2021-03-13 20:27:29 +0100 <dmj`> siers: true for all transformers, not true for all monads
2021-03-13 20:27:38 +0100 <enikar> there is also lift.
2021-03-13 20:27:42 +0100unyu(~pyon@unaffiliated/pyon)
2021-03-13 20:28:32 +0100 <siers> dmj`, "not true for all monads" ah
2021-03-13 20:28:50 +0100fendor(~fendor@178.115.131.242.wireless.dyn.drei.com)
2021-03-13 20:29:58 +0100 <tomsmeding> true for all transformers -- if, of course, the next monad (transformer) in the stack also implements MonadIO
2021-03-13 20:30:01 +0100heatsink(~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947)
2021-03-13 20:30:14 +0100 <tomsmeding> 'StateT Maybe a' does not implement MonadIO
2021-03-13 20:30:47 +0100 <siers> how do I write [] type unapplied?
2021-03-13 20:30:49 +0100 <siers> the*
2021-03-13 20:31:02 +0100 <siers> forall?
2021-03-13 20:31:14 +0100 <siers> I just wanted to plug it into StateT to see what that even would mean
2021-03-13 20:31:25 +0100 <hpc> it's just []
2021-03-13 20:31:42 +0100 <hpc> StateT m [] a
2021-03-13 20:31:43 +0100 <siers> > [1] :: [] Int
2021-03-13 20:31:45 +0100 <lambdabot> [1]
2021-03-13 20:31:54 +0100 <siers> hm, that did not work in ghci
2021-03-13 20:32:05 +0100 <siers> ah, never mind
2021-03-13 20:32:22 +0100 <unyu> “:k [] Int” works just fine in GHCi.
2021-03-13 20:32:29 +0100 <siers> yes, yes :)
2021-03-13 20:33:09 +0100 <unyu> Do sequences represented as finger trees efficiently support the following operation? Find an element x in the sequence AxB, and replace it with another sequence C, getting ACB. If so, is the intermediate state of the zipper focused at x the same as if were merely going to replace x with another element y?
2021-03-13 20:34:15 +0100heatsink(~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947) (Ping timeout: 240 seconds)
2021-03-13 20:34:18 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-03-13 20:35:38 +0100 <peutri> how many points per subquestion?
2021-03-13 20:35:48 +0100Mrbuck(~Mrbuck@gateway/tor-sasl/mrbuck) (Quit: WeeChat 1.9.1)
2021-03-13 20:36:09 +0100jamm_(~jamm@unaffiliated/jamm)
2021-03-13 20:36:48 +0100 <tomsmeding> unyu: the replacing can be implemented using splitAt and ><, both of which are logarithmic
2021-03-13 20:37:26 +0100 <tomsmeding> but they do restructure the tree
2021-03-13 20:37:43 +0100ddellacosta(~ddellacos@86.106.143.70) (Remote host closed the connection)
2021-03-13 20:39:39 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-03-13 20:43:12 +0100mirrorbird(dwsjeid911@gateway/vpn/mullvad/dwsjeid911) (Ping timeout: 246 seconds)
2021-03-13 20:44:03 +0100 <unyu> Thanks! I guess restructuring is inevitable for arbitrary C. But, for small enough C (say, 2 elements), it should be possible to insert C into the hole A_B, without splitting the latter into A and B first, right?
2021-03-13 20:45:02 +0100arrowsvc_(~arr@2.93.163.35) (Ping timeout: 256 seconds)
2021-03-13 20:46:46 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 276 seconds)
2021-03-13 20:47:04 +0100frozenErebus(~frozenEre@94.128.82.20)
2021-03-13 20:47:26 +0100 <tomsmeding> unyu: that depends on how the finger tree is currently structured; it might be true, but it might also not be
2021-03-13 20:48:00 +0100heatsink(~heatsink@2600:1700:bef1:5e10:c79:3d13:d977:c947)
2021-03-13 20:48:05 +0100 <tomsmeding> unyu: this paper explains quite nicely how the structure works: https://dl.acm.org/doi/10.1145/3406088.3409026
2021-03-13 20:48:31 +0100 <unyu> Thanks!
2021-03-13 20:49:20 +0100 <monochrom> That's a nice paper indeed.
2021-03-13 20:49:45 +0100 <monochrom> Very often "how you would reinvent it" is the best explanation.
2021-03-13 20:51:18 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-03-13 20:51:35 +0100 <dmj`> still waiting for "how you would reinvent GHC"
2021-03-13 20:52:09 +0100 <tomsmeding> lots of work
2021-03-13 20:52:34 +0100vicfred(vicfred@gateway/vpn/mullvad/vicfred)
2021-03-13 20:54:44 +0100srk(~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection)
2021-03-13 20:54:44 +0100hexo(~hexo@gateway/tor-sasl/hexo) (Remote host closed the connection)
2021-03-13 20:55:00 +0100srk(~sorki@gateway/tor-sasl/sorki)
2021-03-13 20:55:03 +0100hexo(~hexo@gateway/tor-sasl/hexo)
2021-03-13 20:56:27 +0100 <dmj`> tomsmeding: that's why I'm a fan of the cronokirby series https://github.com/cronokirby/haskell-in-haskell
2021-03-13 20:58:23 +0100kingmaker(2edfa3b9@HSI-KBW-46-223-163-185.hsi.kabel-badenwuerttemberg.de)
2021-03-13 20:58:34 +0100zebrag(~inkbottle@aaubervilliers-654-1-101-29.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-03-13 20:58:52 +0100zebrag(~inkbottle@aaubervilliers-654-1-101-29.w86-212.abo.wanadoo.fr)
2021-03-13 20:59:46 +0100aarvar(~foewfoiew@2601:602:a080:fa0:6cfb:c91f:3c9a:a8cb)
2021-03-13 21:02:34 +0100 <dmj`> "GHC for the rest of us"
2021-03-13 21:03:52 +0100DavidEichmann(~david@234.109.45.217.dyn.plus.net) (Remote host closed the connection)
2021-03-13 21:05:37 +0100petersen(~petersen@redhat/juhp) (Ping timeout: 276 seconds)
2021-03-13 21:05:54 +0100kritzefitz(~kritzefit@212.86.56.80)
2021-03-13 21:07:41 +0100petersen(~petersen@redhat/juhp)
2021-03-13 21:10:03 +0100jdt(~jdt@38.77.195.50) (Ping timeout: 245 seconds)
2021-03-13 21:10:31 +0100 <duairc> Is this use of `unsafeCoerce` incorrect: https://paste.tomsmeding.com/frUzLTeS
2021-03-13 21:10:49 +0100Rudd0(~Rudd0@185.189.115.108) (Ping timeout: 276 seconds)
2021-03-13 21:12:18 +0100joebobjoe(~joebobjoe@unaffiliated/joebobjoe)
2021-03-13 21:14:15 +0100 <joebobjoe> is there a tool that can mock a website? e.g., go to website in browser, log in, interact with it... then the mock server can play it all back to you so you can test the server for things like scraper scripts without actually hitting the server
2021-03-13 21:15:18 +0100machinedgod(~machinedg@24.105.81.50)
2021-03-13 21:17:03 +0100malumore(~malumore@151.62.123.0)
2021-03-13 21:18:15 +0100usr25(~usr25@unaffiliated/usr25)
2021-03-13 21:21:05 +0100myShoggoth(~myShoggot@75.164.81.55)
2021-03-13 21:21:09 +0100jacks2(~bc8134e3@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout))
2021-03-13 21:21:21 +0100jdt(~jdt@38.77.195.50)
2021-03-13 21:22:09 +0100fosterite(~fosterite@2600:6c46:7800:fecf:2d14:82db:e894:f28b)
2021-03-13 21:29:15 +0100slack1256(~slack1256@dvc-186-186-101-190.movil.vtr.net)
2021-03-13 21:29:54 +0100myShoggoth(~myShoggot@75.164.81.55) (Ping timeout: 260 seconds)
2021-03-13 21:31:13 +0100pavonia(~user@unaffiliated/siracusa)
2021-03-13 21:31:55 +0100 <juri_> joebobjoe: look up 'MockServer'. it's written in java, and i do that sortof stuff with it.
2021-03-13 21:32:22 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-03-13 21:33:22 +0100 <joebobjoe> ok thanks
2021-03-13 21:35:24 +0100kingmaker(2edfa3b9@HSI-KBW-46-223-163-185.hsi.kabel-badenwuerttemberg.de) (Quit: Connection closed)
2021-03-13 21:38:38 +0100jamm_(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2021-03-13 21:43:17 +0100gitgood(~gitgood@80-44-12-84.dynamic.dsl.as9105.com)
2021-03-13 21:43:33 +0100tinhatcat(~tsranso@108-91-101-161.lightspeed.gnvlsc.sbcglobal.net)
2021-03-13 21:45:58 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 260 seconds)
2021-03-13 21:48:19 +0100fuzzypixelz(2ec10464@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2021-03-13 21:48:30 +0100stree(~stree@68.36.8.116) (Ping timeout: 256 seconds)
2021-03-13 21:49:13 +0100 <fuzzypixelz> what would be a fairly large project I could build in Haskell? I want to get a sense of big programs that do "real world" tasks.
2021-03-13 21:49:32 +0100 <dmj`> fuzzypixelz: A compiler
2021-03-13 21:49:39 +0100mirrorbird(dwsjeid911@gateway/vpn/mullvad/dwsjeid911)
2021-03-13 21:49:50 +0100 <geekosaur> existing, or something you want to write?
2021-03-13 21:50:07 +0100 <fuzzypixelz> something I want to write
2021-03-13 21:50:15 +0100 <shapr> fuzzypixelz: duplicate file finder?
2021-03-13 21:50:17 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-03-13 21:50:38 +0100 <shapr> That could be a fairly small project if you know a bunch of Haskell
2021-03-13 21:50:45 +0100 <shapr> like, finish it in a day
2021-03-13 21:51:10 +0100 <fuzzypixelz> shapr: how about a fairly _large_ project? (:
2021-03-13 21:51:16 +0100 <shapr> fuzzypixelz: what do you want to write?
2021-03-13 21:51:42 +0100 <shapr> I wrote a few useful programs that I use everyday, like https://github.com/shapr/sandwatch and https://github.com/shapr/bloohm
2021-03-13 21:52:31 +0100 <shapr> fuzzypixelz: what scratches your own itch?
2021-03-13 21:52:59 +0100hackage(mniip@haskell/bot/hackage)
2021-03-13 21:53:07 +0100 <mniip> geekosaur, whoops it looks like the server was rebooted and it's one of those things that's just running in SCREEN
2021-03-13 21:53:27 +0100 <fuzzypixelz> shapr: I actually don't have any ideas for something "useful to me"
2021-03-13 21:53:32 +0100 <shapr> fuzzypixelz: I also spent three months writing https://github.com/shapr/fermatslastmargin
2021-03-13 21:53:38 +0100 <geekosaur> thanks
2021-03-13 21:54:16 +0100 <mniip> must've been a week, too
2021-03-13 21:54:30 +0100 <juri_> write real things. real problems are harder, you learn more. :D
2021-03-13 21:54:56 +0100 <fuzzypixelz> that's ... why I'm here, for inspiration (:
2021-03-13 21:55:05 +0100 <dmj`> fuzzypixelz: what do you find useful, reimplement some unix commands you use every day
2021-03-13 21:55:27 +0100 <dmj`> fuzzypixelz: if you play games, write solvers for the games you play, or tools to help you in the game.
2021-03-13 21:55:34 +0100 <fuzzypixelz> I usually just do with whatever tools I can put my hands on, which not the best mindset for this I'm afraid ):
2021-03-13 21:55:58 +0100 <shapr> Oh yeah, I was addicted to Endless Sky so I wrote a solver! https://shapr.github.io/posts/2019-07-10-smt-solvers.html
2021-03-13 21:56:01 +0100 <dmj`> fuzzypixelz: write a browser
2021-03-13 21:58:08 +0100 <fuzzypixelz> an internet broswe right?
2021-03-13 21:58:43 +0100 <shapr> you could even start with a Gemini browser if you want simpler?
2021-03-13 21:59:16 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-03-13 21:59:16 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2021-03-13 21:59:16 +0100sm2n(~sm2n@bras-base-hmtnon143hw-grc-15-70-54-78-219.dsl.bell.ca) (Ping timeout: 256 seconds)
2021-03-13 21:59:17 +0100 <dmj`> fuzzypixelz: yea, but could be text based like lynx
2021-03-13 21:59:47 +0100 <dmj`> fuzzypixelz: reimplement sqlite in Haskell
2021-03-13 22:00:20 +0100 <fuzzypixelz> thanks, both those sound interesting to me
2021-03-13 22:00:44 +0100stree(~stree@68.36.8.116)
2021-03-13 22:00:55 +0100 <hpc> shapr: funny, i just did a similar exercise for all the shields and engines that accounts for mass, heat, and energy
2021-03-13 22:01:21 +0100 <shapr> hpc: TELL ME MORE
2021-03-13 22:01:33 +0100 <shapr> cause I never got that far
2021-03-13 22:01:42 +0100 <shapr> hpc: did you start with my article?
2021-03-13 22:01:51 +0100 <MarcelineVQ> yes, do tell
2021-03-13 22:01:54 +0100 <hpc> so, i didn't go all the way to "solve for a target mass threshold"
2021-03-13 22:01:56 +0100 <shapr> I like to think someone gained some benefit from me writing that post and its followup
2021-03-13 22:02:08 +0100 <hpc> but i noticed that the whole system is linear
2021-03-13 22:02:08 +0100hexfive(~hexfive@50.35.83.177)
2021-03-13 22:02:16 +0100 <hpc> and that cooling modules have a very simple equation
2021-03-13 22:02:25 +0100 <hpc> and once you have that, energy has a really simple equation
2021-03-13 22:02:49 +0100 <hpc> so you can turn heat and energy into mass equivalence quite simply, and everything has a single effective mass value
2021-03-13 22:02:51 +0100 <shapr> hpc: you gonna write a blog post?
2021-03-13 22:02:58 +0100shaprthinks about that
2021-03-13 22:03:00 +0100 <hpc> i don't have a blog
2021-03-13 22:03:07 +0100 <shapr> hpc: want me to get you a blog? :-P
2021-03-13 22:03:11 +0100 <hpc> once you have that idea though, it's pretty simple
2021-03-13 22:03:16 +0100 <hpc> i did the whole thing in libreoffice
2021-03-13 22:03:21 +0100shaprblinks
2021-03-13 22:03:32 +0100 <geekosaur> spreadsheet?
2021-03-13 22:03:36 +0100 <hpc> yep
2021-03-13 22:04:02 +0100 <MarcelineVQ> it's funny to me that the best cooling module in the game is named "Cooling Module"
2021-03-13 22:04:18 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
2021-03-13 22:04:18 +0100 <shapr> hpc: write it up, I'll put a guest post on my blog :-P
2021-03-13 22:04:28 +0100 <hpc> hah
2021-03-13 22:05:27 +0100marinelli(~marinelli@gateway/tor-sasl/marinelli) (Quit: marinelli)
2021-03-13 22:06:03 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
2021-03-13 22:06:04 +0100plutoniix(~q@node-uj8.pool-125-24.dynamic.totinternet.net) (Ping timeout: 276 seconds)
2021-03-13 22:06:40 +0100bobiusbillius(~bobiusbil@2a00:23c7:9909:5b01:9143:54d3:f1e8:156d) (Quit: To the neversphere.)
2021-03-13 22:07:49 +0100fendor_(~fendor@91.141.1.110.wireless.dyn.drei.com)
2021-03-13 22:09:36 +0100tinhatcat(~tsranso@108-91-101-161.lightspeed.gnvlsc.sbcglobal.net) (Quit: Leaving)
2021-03-13 22:09:57 +0100sm2n(~sm2n@bras-base-hmtnon143hw-grc-15-70-54-78-219.dsl.bell.ca)
2021-03-13 22:09:59 +0100plutoniix(~q@node-uj8.pool-125-24.dynamic.totinternet.net)
2021-03-13 22:10:05 +0100hexfive(~hexfive@50.35.83.177) (Quit: i must go. my people need me.)
2021-03-13 22:10:17 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-03-13 22:11:15 +0100monadmatt(~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 265 seconds)
2021-03-13 22:11:15 +0100fendor(~fendor@178.115.131.242.wireless.dyn.drei.com) (Ping timeout: 265 seconds)
2021-03-13 22:15:00 +0100ADG1089__(~aditya@106.212.74.137) (Remote host closed the connection)
2021-03-13 22:15:08 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2021-03-13 22:15:10 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2021-03-13 22:15:14 +0100Vra(8077caad@natp-128-119-202-173.wireless.umass.edu)
2021-03-13 22:15:52 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Remote host closed the connection)
2021-03-13 22:19:47 +0100 <duairc> Does anyone know if this use of `unsafeCoerce` is "safe"? https://paste.tomsmeding.com/frUzLTeS
2021-03-13 22:19:56 +0100fuzzypixelz(2ec10464@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: Connection closed)
2021-03-13 22:20:01 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2021-03-13 22:20:37 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Remote host closed the connection)
2021-03-13 22:23:10 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2021-03-13 22:24:33 +0100 <edwardk> duairc looks sound to me
2021-03-13 22:25:58 +0100 <tapas> deploy it in production to test
2021-03-13 22:26:46 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Client Quit)
2021-03-13 22:27:11 +0100hackageory-kratos 0.0.5.5 - API bindings for Ory Kratos https://hackage.haskell.org/package/ory-kratos-0.0.5.5 (njaremko)
2021-03-13 22:27:50 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2021-03-13 22:27:58 +0100 <duairc> edwardk: Thanks!
2021-03-13 22:29:42 +0100 <edwardk> +1 for deploying directly to production
2021-03-13 22:30:20 +0100 <Rembane> If it typechecks, ship it!
2021-03-13 22:30:21 +0100 <edwardk> on the other hand i wrote not one but two illegal applicatives yesterday and plan to ship them in a library i expect all sorts of people to build atop.
2021-03-13 22:30:29 +0100 <edwardk> so maybe seek a second or third opinion
2021-03-13 22:31:26 +0100jathan(~jathan@69.61.93.38)
2021-03-13 22:31:40 +0100 <edwardk> https://github.com/ekmett/distributive/blob/2f58c1d5839c9c78b3ba0f82f52b09323b0fcb42/src/Data/Dist… <- yolo
2021-03-13 22:31:54 +0100 <geekosaur> you know you're doing it, though
2021-03-13 22:32:27 +0100 <edwardk> that isn't always the case. ;)
2021-03-13 22:32:31 +0100 <hugo> Using Network.Socket (from networ), is there a way to recvieve data if available, alterantively check if data is available and only recieve then?
2021-03-13 22:32:42 +0100 <hugo> Without some socket to file descriptor hack?
2021-03-13 22:33:33 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-03-13 22:33:51 +0100usr25(~usr25@unaffiliated/usr25) (Quit: Leaving)
2021-03-13 22:35:10 +0100neightchan(~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Quit: WeeChat 2.9)
2021-03-13 22:35:13 +0100 <geekosaur> hugo, usually we read in a separate thread
2021-03-13 22:36:21 +0100 <geekosaur> anyway, it's not really designed for that use case, so no
2021-03-13 22:37:03 +0100natechan(~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-03-13 22:40:28 +0100 <hugo> geekosaur: Sepparate threads would solve it. But it would require a major redesign. I'm getting synchronous and asyncronous messages over the same connection, and want to be able to check for eventual asynchrounous messages any time.
2021-03-13 22:41:11 +0100orion_orion
2021-03-13 22:41:40 +0100orionGuest25944
2021-03-13 22:42:20 +0100Guest25944orion
2021-03-13 22:42:23 +0100orion(~orion@c-76-19-236-20.hsd1.ct.comcast.net) (Changing host)
2021-03-13 22:42:23 +0100orion(~orion@unaffiliated/orion)
2021-03-13 22:42:27 +0100geekosaur(82650c7a@130.101.12.122) (Quit: Connection closed)
2021-03-13 22:43:34 +0100borne(~fritjof@200116b86494d20065fd8eaafdc5f06e.dip.versatel-1u1.de)
2021-03-13 22:47:32 +0100mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan) (Quit: mikoto-chan)
2021-03-13 22:47:43 +0100mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan)
2021-03-13 22:47:47 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-13 22:49:30 +0100fendor_fendor
2021-03-13 22:50:03 +0100CitizenSnips(~CitizenSn@irc.refl.club) (Quit: ZNC 1.8.2 - https://znc.in)
2021-03-13 22:50:06 +0100 <fendor> Just received a bug report that executable bits are missing for my hackage sdist... Can I fix that?
2021-03-13 22:50:53 +0100CitizenSnips(~CitizenSn@irc.refl.club)
2021-03-13 22:51:33 +0100supercoven(~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi) (Ping timeout: 264 seconds)
2021-03-13 22:53:41 +0100hackageory-kratos 0.0.5.6 - API bindings for Ory Kratos https://hackage.haskell.org/package/ory-kratos-0.0.5.6 (njaremko)
2021-03-13 22:56:00 +0100machinedgod(~machinedg@24.105.81.50)
2021-03-13 22:57:34 +0100 <minoru_shiraeesh> hugo: there are two modules: Network.Socket.ByteString and Network.Socket.ByteString.Lazy
2021-03-13 22:58:15 +0100 <minoru_shiraeesh> in ByteString one there is a recv function
2021-03-13 22:58:55 +0100 <minoru_shiraeesh> in ByteString.Lazy one there is a recv and getContents function
2021-03-13 22:59:58 +0100 <hugo> minoru_shiraeesh: I'm using the strict variant, since that's what attoparsec wanted
2021-03-13 23:00:19 +0100 <hugo> Both recv comes with the notice "This function may block until a message arrives.", which is exacly my problem
2021-03-13 23:00:26 +0100Rudd0(~Rudd0@185.189.115.103)
2021-03-13 23:00:40 +0100puffnfresh(~puffnfres@119-17-138-164.77118a.mel.static.aussiebb.net) (Ping timeout: 276 seconds)
2021-03-13 23:01:48 +0100puffnfresh(~puffnfres@119-17-138-164.77118a.mel.static.aussiebb.net)
2021-03-13 23:03:18 +0100 <minoru_shiraeesh> one of the options is to call recv in a loop and write to a channel
2021-03-13 23:03:30 +0100 <minoru_shiraeesh> and then read from that channel in another thread, right?
2021-03-13 23:03:53 +0100 <dmj`> yea, use synchronization primitives and threads liberally
2021-03-13 23:04:21 +0100ADG1089__(~aditya@106.212.74.137)
2021-03-13 23:04:41 +0100 <hugo> minoru_shiraeesh: That could work.
2021-03-13 23:05:21 +0100Franciman(~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving)
2021-03-13 23:05:34 +0100 <minoru_shiraeesh> iirc you can check a channel for a new message in a non-blocking way, in stm
2021-03-13 23:07:06 +0100 <minoru_shiraeesh> yes, there are tryReadTChan and tryPeekTChan functions
2021-03-13 23:07:37 +0100 <minoru_shiraeesh> and isEmptyTChan
2021-03-13 23:10:46 +0100 <minoru_shiraeesh> Control.Concurrent.Chan has getChanContents function that returns a lazy list, but I doubt that it's possible to check for a new message in a non-blocking way
2021-03-13 23:10:57 +0100 <koz_> For newArray, what is the tuple of indices argument meant to mean?
2021-03-13 23:11:02 +0100 <koz_> (rows, columns) or something else?
2021-03-13 23:11:21 +0100 <monochrom> Data.Array's newArray? lower and upper bounds.
2021-03-13 23:11:29 +0100 <koz_> Ah, thanks!
2021-03-13 23:11:33 +0100 <koz_> That makes worlds of sense.
2021-03-13 23:11:40 +0100plutoniix(~q@node-uj8.pool-125-24.dynamic.totinternet.net) (Ping timeout: 265 seconds)
2021-03-13 23:12:10 +0100 <monochrom> The Algol and Pascal days when arrays were programmer-based, not 0-based or 1-based.
2021-03-13 23:12:40 +0100 <monochrom> @quote monochrom pointless.debate
2021-03-13 23:12:40 +0100 <lambdabot> monochrom says: All pointless debates can be settled by going polymorphic.
2021-03-13 23:12:42 +0100plutoniix(~q@node-uj8.pool-125-24.dynamic.totinternet.net)
2021-03-13 23:13:21 +0100 <hpc> all pointless debates are pointful debates with variables omitted
2021-03-13 23:13:22 +0100 <monochrom> One more sanity that C killed.
2021-03-13 23:13:27 +0100 <monochrom> haha
2021-03-13 23:13:42 +0100 <hpc> (that one works in both meanings)
2021-03-13 23:14:04 +0100conal(~conal@64.71.133.70)
2021-03-13 23:14:28 +0100 <minoru_shiraeesh> I mean, if it was possible, Control.Concurrent.Chan would expose non-blocking functions, but that's just a guess
2021-03-13 23:14:41 +0100 <hugo> minoru_shiraeesh: Looks like I will go the route of TChan:s... I had just hoped that the same non-blocking alternatives would be available directly on scoket
2021-03-13 23:14:48 +0100 <hugo> s/scoket/sockets/
2021-03-13 23:14:58 +0100 <koz_> Suppose I have a where-binding which is only used in one branch of a conditional. I assume this will be lazy in the computation bound?
2021-03-13 23:15:46 +0100 <mpickering> How do I understand this error about a broken package from cabal?
2021-03-13 23:15:50 +0100 <mpickering> [__2] rejecting: directory-1.3.6.0/installed-1.3.6.0 (package is broken,
2021-03-13 23:15:50 +0100 <mpickering> missing depenedency unix-2.7.2.2)
2021-03-13 23:16:11 +0100hackageaeson-combinators 0.0.5.0 - Aeson combinators for dead simple JSON decoding https://hackage.haskell.org/package/aeson-combinators-0.0.5.0 (MarekFajkus)
2021-03-13 23:16:17 +0100 <monochrom> Yes koz_.
2021-03-13 23:16:27 +0100 <koz_> monochrom: Good to know my intuition led me right there.
2021-03-13 23:17:59 +0100 <monochrom> "f x = if x==0 then 10 else q where q = div 100 x" is an example.
2021-03-13 23:18:26 +0100 <monochrom> (div 100 0 doesn't happen)
2021-03-13 23:18:47 +0100ericsagn1(~ericsagne@2405:6580:0:5100:985d:1221:bd5b:d5dd) (Ping timeout: 272 seconds)
2021-03-13 23:19:38 +0100conal_(~conal@66.115.157.13)
2021-03-13 23:20:42 +0100conal(~conal@64.71.133.70) (Ping timeout: 246 seconds)
2021-03-13 23:21:10 +0100fosterite(~fosterite@2600:6c46:7800:fecf:2d14:82db:e894:f28b) (Remote host closed the connection)
2021-03-13 23:21:32 +0100conal_(~conal@66.115.157.13) (Client Quit)
2021-03-13 23:21:48 +0100fosterite(~fosterite@2600:6c46:7800:fecf:2d14:82db:e894:f28b)
2021-03-13 23:22:14 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-03-13 23:23:16 +0100frozenErebus(~frozenEre@94.128.82.20) (Ping timeout: 265 seconds)
2021-03-13 23:23:49 +0100Neuromancer(~Neuromanc@unaffiliated/neuromancer)
2021-03-13 23:23:49 +0100ADG1089__(~aditya@106.212.74.137) (Remote host closed the connection)
2021-03-13 23:24:03 +0100frozenErebus(~frozenEre@94.128.82.20)
2021-03-13 23:24:41 +0100hackagehls-retrie-plugin 1.0.0.1 - Retrie integration plugin for Haskell Language Server https://hackage.haskell.org/package/hls-retrie-plugin-1.0.0.1 (PepeIborra)
2021-03-13 23:26:34 +0100fosterit_(~fosterite@2600:6c46:7800:fecf:690b:a72:cdb4:908c)
2021-03-13 23:29:22 +0100frozenErebus(~frozenEre@94.128.82.20) (Ping timeout: 256 seconds)
2021-03-13 23:30:38 +0100fosterite(~fosterite@2600:6c46:7800:fecf:2d14:82db:e894:f28b) (Ping timeout: 264 seconds)
2021-03-13 23:30:39 +0100ericsagn1(~ericsagne@2405:6580:0:5100:b44d:6014:67a8:1b64)
2021-03-13 23:31:38 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2021-03-13 23:35:21 +0100malumore(~malumore@151.62.123.0) (Ping timeout: 265 seconds)
2021-03-13 23:36:15 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Read error: Connection reset by peer)
2021-03-13 23:36:36 +0100mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan) (Ping timeout: 268 seconds)
2021-03-13 23:36:38 +0100fendor(~fendor@91.141.1.110.wireless.dyn.drei.com) (Read error: Connection reset by peer)
2021-03-13 23:39:10 +0100jamm_(~jamm@unaffiliated/jamm)
2021-03-13 23:39:18 +0100forgottenone(~forgotten@176.42.24.172) (Quit: Konversation terminated!)
2021-03-13 23:41:12 +0100ajc(~ajc@69.231.232.79)
2021-03-13 23:42:12 +0100usr25(~usr25@unaffiliated/usr25)
2021-03-13 23:42:16 +0100fosterit_(~fosterite@2600:6c46:7800:fecf:690b:a72:cdb4:908c) (Remote host closed the connection)
2021-03-13 23:43:50 +0100jamm_(~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds)
2021-03-13 23:44:07 +0100fuzzypixelz(2ec10464@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2021-03-13 23:45:28 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 245 seconds)
2021-03-13 23:46:14 +0100ajc(~ajc@69.231.232.79) (Quit: Leaving.)
2021-03-13 23:47:43 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-03-13 23:55:04 +0100frozenErebus(~frozenEre@94.128.82.20)
2021-03-13 23:57:45 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2021-03-13 23:58:04 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-03-13 23:58:31 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2021-03-13 23:58:33 +0100zebrag(~inkbottle@aaubervilliers-654-1-101-29.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-03-13 23:58:52 +0100zebrag(~inkbottle@aaubervilliers-654-1-101-29.w86-212.abo.wanadoo.fr)
2021-03-13 23:58:56 +0100kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2021-03-13 23:59:12 +0100plutoniix(~q@node-uj8.pool-125-24.dynamic.totinternet.net) (Ping timeout: 246 seconds)