Home liberachat/#haskell: Logs Calendar

Logs on 2022-04-07 (liberachat/#haskell)

00:01:14 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
00:01:29 × califax quits (~califax@user/califx) (Remote host closed the connection)
00:03:34 califax joins (~califax@user/califx)
00:03:47 × theproffesor quits (~theproffe@2601:282:847f:7f00::87) (Quit: ¯\_(ツ)_/¯)
00:04:00 theproffesor joins (~theprofff@2601:282:847f:7f00::87)
00:04:11 × theproffesor quits (~theprofff@2601:282:847f:7f00::87) (Changing host)
00:04:11 theproffesor joins (~theprofff@user/theproffesor)
00:04:18 × Akiva quits (~Akiva@user/Akiva) (Ping timeout: 260 seconds)
00:07:07 × redb quits (~nmh@136.49.49.211) (Ping timeout: 268 seconds)
00:07:43 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
00:08:23 × bezmuth quits (~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7) (Ping timeout: 260 seconds)
00:11:15 × Guest89 quits (~Guest89@2a01:41e1:47ec:c500:e741:fb6e:5f12:6189) (Quit: Client closed)
00:11:43 geekosaur joins (~geekosaur@xmonad/geekosaur)
00:13:26 <abastro[m]> Morning
00:14:09 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
00:16:59 × Guest27 quits (~Guest27@2601:281:d47f:1590::e9d9) (Quit: Client closed)
00:17:12 Guest27 joins (~Guest27@2601:281:d47f:1590::e9d9)
00:18:24 bezmuth joins (~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7)
00:18:33 × Guest27 quits (~Guest27@2601:281:d47f:1590::e9d9) (Client Quit)
00:20:54 <Axman6> o/
00:23:21 redb joins (~nmh@136.49.49.211)
00:31:47 yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
00:36:14 × lbseale quits (~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer)
00:38:09 exilepilot joins (~exilepilo@2a00:23c4:ba88:fc01:d059:aa64:8c3f:a223)
00:38:23 × exilepilot quits (~exilepilo@2a00:23c4:ba88:fc01:d059:aa64:8c3f:a223) (Remote host closed the connection)
00:38:44 exilepilot joins (~exilepilo@2a00:23c4:ba88:fc01:d059:aa64:8c3f:a223)
00:39:33 <dons> its a ghc -j6 +RTS -A256m -n4m -RTS sort of day
00:39:48 Andrew is now known as LeetPeet
00:42:35 × LeetPeet quits (Andrew@user/AndrewYu) (Quit: Leaving)
00:42:48 AndrewYu joins (Andrew@user/AndrewYu)
00:45:01 × bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 250 seconds)
00:45:47 AndrewYu is now known as Andrew
00:48:20 <energizer> are there languages where an expression can have more than one type?
00:50:54 × xff0x quits (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) (Ping timeout: 268 seconds)
00:51:03 <dons> you mean like generics? or polymorphism?
00:51:07 <Axman6> the expression `1` in Haskell has many possible types
00:51:13 <Axman6> :t 1
00:51:14 <lambdabot> Num p => p
00:51:16 <Axman6> :t 1 : Int
00:51:17 <lambdabot> error:
00:51:17 <lambdabot> • Data constructor not in scope: Int :: [a]
00:51:17 <lambdabot> • Perhaps you meant variable ‘int’ (imported from Text.PrettyPrint.HughesPJ)
00:51:19 <Axman6> :t 1 : Integer
00:51:20 <lambdabot> error:
00:51:20 <lambdabot> • Data constructor not in scope: Integer :: [a]
00:51:20 <lambdabot> • Perhaps you meant one of these:
00:51:22 <Axman6> :t 1 :: Integer
00:51:23 <lambdabot> Integer
00:51:25 <Axman6> too much Daml
00:51:32 <Axman6> :t 1 :: Expr
00:51:33 <lambdabot> Expr
00:51:36 <dons> something like, C a => [a] , is a type that has more than one type of `a` , right? could be two more types, or infinite or ..
00:52:34 <dons> you sometimes see very specific versions of this in disjoint types, e.g. in the Flow language, you write something as type T = Int | Bool
00:53:12 <dons> but its just a form of polymorphism, similar to class-based in haskell ( class T a ;; instance T Int ; instance T Bool
00:53:34 <dons> or data T = TInt Int | TBool Bool is maybe closer to the Flow version
00:53:45 <energizer> is "Num p => p" a type?
00:54:35 <dons> I would say its a type signature, or type expression. it represent the type of some `p` where `p` is a member of the set of types in Class `p`
00:54:41 <dons> but yeah, its a type.
00:54:49 <dons> (what is a type ?!? is a big question)
00:56:00 <dons> "Num p => p"
00:56:28 <energizer> if i take what you said literally i get p is a type and "Num p => p" represents the type of that p?
00:56:36 <energizer> but i dont think that's what you meant
00:56:43 <dons> nope.
00:57:04 <dons> type systems let you specifify types for values in computer programs, right?
00:57:21 <energizer> i dunno they seem to be about expressions
00:57:29 <dons> well, expressions are values too
00:57:40 <energizer> an expression has exactly one type, iirc
00:58:05 <dons> so, v is a value. v :: Num p => p, says that the value `v` has a type, "Num p => p"
00:58:22 <dons> , and that type is a generic one, meaning the concrete type `p` is one of a member of the set Num
00:58:38 <dons> right. our type checkers go to a lot of lengths to ensure there's precisely one type
00:58:52 <cheater> o/ dons
00:58:58 <dons> but sometimes that type can be quite rich, e.g. a set of possible values, or universally quantified, or a disjoint limited set or something
00:59:22 <dons> you can write a lot of haskell programs without every writing down the type signatures, yeah?
00:59:43 <dons> the compiler just figures out a unique type to assign to everything, such that it is sound and there are no conflicts in assigning types
00:59:58 <dons> if it can't do that, you might a type error, or need to specify a type signature to help the compiler solve things
01:00:30 <dons> so "Num p => p" is such a signature. if attached to a value with ":: " it specifies the valid types for the value
01:01:50 <energizer> i think "v :: Num p => p" means "p is a type, Num p is true about p, and v is an expression of type p"
01:02:03 × alp_ quits (~alp@user/alp) (Ping timeout: 260 seconds)
01:02:10 <dons> this is a really really good book if you want to learn how this works. how the type system checks the possible types permitted for values in a program, and how to do all the fancy featuers like polymorphic types, https://www.cs.cmu.edu/~rwh/pfpl/2nded.pdf
01:02:19 × redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds)
01:02:56 <dons> `v` has type `p` where `p` is a member of the set of types in Num, something like that. `v` can be instantiated to any of those types, and the program will still work
01:03:14 <dons> more common types are things like, length :: [a] -> Int
01:03:36 <dons> e.g. the function that tells you the length of a list, regardless of what types the value are. It guarantees to work no matter what is in the list
01:04:31 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
01:05:45 mud joins (~mud@user/kadoban)
01:06:24 <energizer> how would you compare PFPL vs TAPL?
01:07:03 <dons> I found PFPL more foundational. it changed how I think about programming languages
01:12:06 seydar joins (~seydar@154-27-113-252.starry-inc.net)
01:14:02 <energizer> dons: i noticed you said value instead of expression
01:14:44 <dons> different languages distinguish values and expressions, but in a lazy language like haskell its less clear
01:14:53 redb joins (~nmh@136.49.49.211)
01:15:04 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
01:15:04 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
01:15:04 wroathe joins (~wroathe@user/wroathe)
01:16:05 <dons> let v = (\x -> x + 1) 2) :: Int or v :: Int , don't realy distinguish expressions and primitive values ? (you're thinking about literals or value that are reduced to a concrete, primitive type?)
01:16:05 <energizer> what is the difference between a value and expression in ocaml or nix or whatever?
01:16:26 <energizer> er, not nix
01:16:28 <dons> you might have some evaluation to do, to get the expression down to a value.
01:16:33 abastro joins (~abab9579@192.249.26.131)
01:16:39 <dons> and you can probably do different things with values than expressions
01:17:03 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
01:17:04 <dons> similarly with values that have unboxed types in haskell. they are a bit more restricted, can't be bottom
01:17:46 <dons> how languages distingush values in various evaluation strategies, lazy, by name, by need etc is a huge topic too. whether one thing can be substituted for the other without anyone noticing
01:18:34 <dons> at least more typed functional languages let you write some knid of type signature for expressions, or values, almost anywhere.
01:19:36 xff0x joins (~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp)
01:20:06 neurocyte8614492 joins (~neurocyte@IP-185238252073.dynamic.medianet-world.de)
01:20:06 × neurocyte8614492 quits (~neurocyte@IP-185238252073.dynamic.medianet-world.de) (Changing host)
01:20:06 neurocyte8614492 joins (~neurocyte@user/neurocyte)
01:22:21 × neurocyte861449 quits (~neurocyte@user/neurocyte) (Ping timeout: 268 seconds)
01:22:21 neurocyte8614492 is now known as neurocyte861449
01:23:16 frost joins (~frost@user/frost)
01:23:58 <dons> we don't really distinguish expressions and commands, but lots of languages do.
01:24:23 <dons> other than in the do-notation, which I guess does make syntactic sugar for a particular kind of expression (monadically-typed sones)
01:27:01 <dons> in haskell, you can generally use variables as placebolders for expressions. they can be substituted freely. that's not true of commands or statements (e.g. fire the missles). and we can't usually distinguish how a value is different from an expression. other than by evaluating it.
01:27:32 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
01:27:54 × kaph quits (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) (Ping timeout: 268 seconds)
01:28:24 vysn joins (~vysn@user/vysn)
01:30:02 × Chai-T-Rex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
01:30:28 Chai-T-Rex joins (~ChaiTRex@user/chaitrex)
01:35:11 × yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
01:36:32 seydar joins (~seydar@154-27-113-252.starry-inc.net)
01:38:01 × Kaipi quits (~Kaiepi@156.34.47.253) (Ping timeout: 248 seconds)
01:38:58 × exilepilot quits (~exilepilo@2a00:23c4:ba88:fc01:d059:aa64:8c3f:a223) (Quit: Leaving)
01:39:13 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
01:39:25 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
01:41:13 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds)
01:44:34 <Axman6> I think a useful things to remember when talking about monadic code being more expression like is the difference between f (g x) (g x) being the same as let y = g x in f y y being always true in Haskell, but do {a <- g x; b <- g x; f a b} not being the same as do {a <- g x; f a a}
01:44:51 bezmuth_ joins (~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7)
01:45:01 × bezmuth quits (~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7) (Ping timeout: 240 seconds)
01:45:27 <dons> yeah
01:45:27 bezmuth_ is now known as bezmuth
01:48:44 seydar joins (~seydar@154-27-113-252.starry-inc.net)
01:53:29 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds)
01:56:01 danso parts (~danso@danso.ca) ()
01:59:58 × redb quits (~nmh@136.49.49.211) (Ping timeout: 268 seconds)
02:00:57 seydar joins (~seydar@154-27-113-252.starry-inc.net)
02:01:26 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds)
02:01:34 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
02:05:47 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
02:12:59 × ubert quits (~Thunderbi@p200300ecdf15881ccd0eab025279bcac.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
02:13:09 seydar joins (~seydar@154-27-113-252.starry-inc.net)
02:13:16 ubert joins (~Thunderbi@p200300ecdf15885c99f35b3e45127b02.dip0.t-ipconnect.de)
02:17:32 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds)
02:18:52 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
02:19:07 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
02:19:14 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
02:19:29 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
02:19:36 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
02:21:26 redb joins (~nmh@136.49.49.211)
02:26:11 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
02:26:38 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Remote host closed the connection)
02:28:02 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
02:28:05 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
02:30:58 × redb quits (~nmh@136.49.49.211) (Ping timeout: 272 seconds)
02:31:11 × abastro quits (~abab9579@192.249.26.131) (Ping timeout: 246 seconds)
02:31:41 × liz quits (~liz@host109-151-125-217.range109-151.btcentralplus.com) (Quit: Lost terminal)
02:35:52 <jackdk> Axman6: https://github.com/system-f/fp-course#demonstrate-io-maintains-referential-transparency
02:36:40 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Remote host closed the connection)
02:37:39 seydar joins (~seydar@154-27-113-252.starry-inc.net)
02:37:41 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
02:37:45 × bezmuth quits (~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7) (Ping timeout: 248 seconds)
02:42:22 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds)
02:43:08 redb joins (~nmh@136.49.49.211)
02:43:34 <abastro[m]> Tho that is more relevant with pure sharing
02:43:37 <abastro[m]> Using pure let
02:48:04 × redb quits (~nmh@136.49.49.211) (Ping timeout: 268 seconds)
02:48:35 × terrorjack quits (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
02:49:50 terrorjack joins (~terrorjac@2a01:4f8:1c1e:509a::1)
02:49:52 seydar joins (~seydar@154-27-113-252.starry-inc.net)
02:54:31 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
02:56:36 <Axman6> dons: why do you need `Foreign.CPP.Dynamic.parseJSON line`?
02:57:45 <dons> that's the folly json parser, bytestring -> Value
02:58:01 <dons> tends to be 2-3x more efficient than aeson
02:58:06 <dons> though i should probably test that
03:00:00 <abastro[m]> Thin layer around C++ json parser?
03:00:15 <Axman6> definitely reckon you should look at Waargonaut, it avoids the need to parse via anm intermediate type, and it's possible to do things like fail early on a map that has unexpected keys
03:00:56 <dons> right, ideally here i would not build the intermediate Value from parseJSON, just to build a LSIF KeyFact
03:01:06 <dons> stream into the result, fusing the intermediate data away
03:02:05 seydar joins (~seydar@154-27-113-252.starry-inc.net)
03:02:35 <abastro[m]> C++ is faster than Haskell anyway
03:03:22 <Axman6> that isn't findamentally true
03:03:26 <zero> abastro[m]: can you really say a language is faster than another?
03:03:39 <Axman6> (In fact, dons has several blog posts showing that can be untrue)
03:03:57 <dons> haha
03:04:12 <abastro[m]> I mean, in average it is faster
03:04:27 <zero> abastro[m]: what do you mean by average?
03:04:31 <abastro[m]> With fastest library of C++ faster than fastest library of Haskell
03:04:32 <zero> and what do you mean by faster?
03:04:34 redb joins (~nmh@136.49.49.211)
03:05:21 <dons> its often slower if you factor in developer time fixing segfaults as a cost ;)
03:05:33 <zero> :) there we go
03:05:57 <zero> that is *one* good point
03:07:11 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds)
03:07:41 <sm> also for some problems it will be slower to express it in C++ (and for others, vice versa)
03:08:46 <abastro[m]> I mean in time taken in runtime
03:09:02 × redb quits (~nmh@136.49.49.211) (Ping timeout: 268 seconds)
03:09:35 redb joins (~nmh@136.49.49.211)
03:09:55 <sm> for simple problems that's typically true, for complicated ones, less so
03:10:12 <abastro[m]> So I mean, for simple problems like this, C++ is speedier
03:10:17 cdman joins (~dcm@27.2.216.134)
03:10:17 × cdman quits (~dcm@27.2.216.134) (Changing host)
03:10:17 cdman joins (~dcm@user/dmc/x-4369397)
03:10:46 <sm> you're not wrong, we're just point out the nuances
03:11:10 <dons> in this case I have a hyrid C++/Haskell project, and a C++ ffi to folly, and it just happens to be a bit convenient to call the folly C++ JSON parser. In other circumstances that wouldn't make sense.
03:11:12 <dibblego> red cars are faster than C++
03:11:27 <dons> i also wouldn't write the rest of it in C++ :} since its all symbolic manipulation stuff
03:11:48 <dons> also the service is sensitive to the performance of JSON ingestion
03:11:51 <dons> so worth spending a bit of effort
03:11:56 <dons> make sensible tradeoffs
03:12:00 <dons> be pragmatic
03:12:46 <dons> i suspect i could hand write a json parser that is faster than either aeson or the folly one, for the specific json i'm accepting, btu that's also nuts, as its better to switch to a typed binary format. yay programming
03:13:00 <dons> lesson here is: don't use json
03:13:13 <sm> programming! hurrah! 🎉
03:13:45 <dons> the first mistake was writing programs. that made things slower
03:13:58 × redb quits (~nmh@136.49.49.211) (Ping timeout: 268 seconds)
03:14:30 <abastro[m]> Ye I am just sharing opinion that for simple parts which need performance, thin wrapper around C++ libs would be the best
03:14:31 sm spent the last hour bulletproofing a stupid 50 line haskell script
03:14:50 seydar joins (~seydar@154-27-113-252.starry-inc.net)
03:14:59 <Henson> I benchmarked Haskell's Set libary against the C++ STL set objects, for some common set operations, and to my surprise, Haskell was faster by a few times.
03:15:42 <sm> hurrah!
03:17:17 <dons> nice
03:17:51 <abastro[m]> Nice exception
03:18:17 <Henson> has anyone done IPC in Haskell? I'm trying to communicate large protobufs of images (maybe 100 MB in size) from Haskell to Python. I'm thinking of trying to mash Haskell's interprocess library and Python's mmap library together to see if I can get shared-memory IPC to work.
03:19:14 <Henson> I could use Redis, which would be easier, but would it be higher performance? I wouldn't want Redis to try persisting several hundred MBs to disk when it only needs to be ephemeral
03:19:27 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
03:20:36 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
03:22:02 <abastro[m]> My dumb brain says to use TCP communication
03:24:22 <sm> FWIW: 0.50s to interpret a stack script with stack, 0.25s to interpret it with runghc, 0.02s to run the compiled version. 0.5s is ok, feels like python. I decided to keep interpreting it, it's nice to have only one file to think about.
03:24:39 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
03:26:36 <Henson> abastro[m]: I was considering that using the sockets library. But many years ago I tried rolling my own BSD socket communicate between two processes, and found out it was a bad idea because I had bugs all over the place. Using ZeroMQ was much better for the project as it handled all the bug-prone negotiation. Hmm, I'll take a look at ZeroMQ again to see if it'll work in my case.
03:27:49 <sm> do you need it to be fast ?
03:28:20 Dorkside62 joins (~dorkside@208.190.197.222)
03:28:35 deadmarshal_ joins (~deadmarsh@95.38.112.46)
03:28:41 × Dorkside6 quits (~dorkside@208.190.197.222) (Read error: Connection reset by peer)
03:28:41 Dorkside62 is now known as Dorkside6
03:31:29 <sm> I guess both haskell and python have FFI that can see the C-ish structures
03:31:38 <Henson> sm: preferably yes. Each thing being sent out will likely be around 100 MB in size, and I'd like it to take at most 0.5 seconds, preferably less. That gets into maybe the 500 MB/sec to 1 GB/sec write range.
03:33:46 <abastro[m]> Wait using TCP is buggy?
03:35:27 <abastro[m]> The rock bottom technology underlining the entire internet?
03:35:37 sm is shocked
03:35:40 <Henson> abastro[m]: no, trying to roll your own client-server communication using BSD sockets is buggy. Just a simple connect-send is not, but what I was trying to do was more complicated than that
03:36:59 <Henson> dealing with disconnects and timeouts, and reconnections was unpleasant.
03:38:17 <sm> I'm out of my depth here, but maybe it could be: use haskell FFI to allocate a pinned byte array (https://downloads.haskell.org/ghc/latest/docs/html/users_guide/exts/ffi.html#pinned-byte-arrays), then send python its address to read with https://cffi.readthedocs.io
03:38:52 seydar joins (~seydar@154-27-113-252.starry-inc.net)
03:41:04 awpr joins (uid446117@id-446117.lymington.irccloud.com)
03:43:06 redb joins (~nmh@136.49.49.211)
03:43:15 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
03:44:45 <Axman6> dons: "i suspect i could hand write a json parser that is faster than either aeson or the folly one" that's basically what Ambiata was doing, they were parsing CSV data, which could include embeded JSON of a known shape, and they'd output C specifically for that CSV schema. IIRC they were achieveing parsing more than one byte instruction
03:46:57 mbuf joins (~Shakthi@122.162.142.187)
03:47:46 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
03:48:14 × redb quits (~nmh@136.49.49.211) (Ping timeout: 272 seconds)
03:49:18 redb joins (~nmh@136.49.49.211)
03:49:57 <Axman6> Henson: make RAM disk, write files to disk, and notify other process of its path. other process deleted it, and bam, you're done!
03:51:08 seydar joins (~seydar@154-27-113-252.starry-inc.net)
03:51:28 <monochrom> Use invisible characters for filenames, too.
03:51:35 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 268 seconds)
03:52:04 <monochrom> open(" \n\n \n\n\n", ...)
03:52:07 <Henson> Axman6: yes, that is a good suggestion! I could just use temporary files in /dev/shm, and that eliminates any worry of synchronizing access if it were a shared memory resource that was being overwritten while the other one was reading it.
03:52:53 <Henson> monochrom: haha, that would be a nasty filename
03:53:52 <abastro[m]> Oh, so TCP was too low level for you
03:54:01 × redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds)
03:54:25 redb joins (~nmh@136.49.49.211)
03:54:58 <abastro[m]> Oh, making files is a briliant idea
03:55:07 <abastro[m]> Memory-mapped files good
03:55:37 <Henson> abastro[m]: well a TCP socket would be too low level. ZeroMQ might have been suitable, but writing to files is way simpler, and checks all of the boxes for what I need to do. file-based IPC shared memory is what I was going after, and this is pretty much the same thing but is simpler and solve the shared resource access problem
03:55:43 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
03:56:16 <Henson> Axman6++
03:57:05 <Henson> hmm, maybe I'm thinkin of the bot in the #nixos channel.
03:57:09 <Axman6> "Fark, did I call the final version "\t\n \t" or "\n\t \t"???"
03:57:20 <Axman6> @karma Axman6
03:57:20 <lambdabot> You have a karma of 2
03:57:24 <Henson> Axman6: thanks for the suggestion.
03:57:36 <Axman6> Honestyl it was a joke, but it would probably work
03:57:53 <Henson> Axman6: well, I think it would work, and it was a good suggestion, even if it was a joke.
03:58:17 <Axman6> I think it would work too, particularly if you don't need to persist the data
03:58:33 <Axman6> even allows you to have the reading side read data as soon as it's written
03:59:00 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
03:59:07 × redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds)
03:59:36 <jackdk> I have always wanted an excuse to use ZMQ beyond https://git.sr.ht/~jack/mudcore , and to write a typesafe wrapper for its sockets using linear types (Axman6 may recall an aborted attempt using indexed monads)
04:01:08 × Ram-Z quits (~Ram-Z@li1814-254.members.linode.com) (Ping timeout: 260 seconds)
04:02:59 <Axman6> no time like the present!
04:03:05 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 256 seconds)
04:03:47 <abastro[m]> Well tbh using web technology for everything is quite a meme
04:12:46 × abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Remote host closed the connection)
04:12:48 Ram-Z joins (~Ram-Z@li1814-254.members.linode.com)
04:15:37 seydar joins (~seydar@154-27-113-252.starry-inc.net)
04:18:03 <Axman6> web technology has also moved much more towards networking technology too though
04:18:38 × Henson quits (~kvirc@107-179-133-201.cpe.teksavvy.com) (Quit: thanks for the help!)
04:18:41 <Axman6> like WebSockets give you bidirectional sockets
04:20:09 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds)
04:20:44 × solrize quits (~solrize@user/solrize) (Remote host closed the connection)
04:22:23 <Axman6> @hoogle Optic s s a a -> s -> Maybe a -> s
04:22:23 <lambdabot> No results found
04:22:36 <Axman6> @hoogle Optic p s s a a -> s -> Maybe a -> s
04:22:37 <lambdabot> No results found
04:23:56 <abastro[m]> I should totally rename my secret folder into "\n"
04:24:53 <abastro[m]> That should make it hard to find
04:25:43 redb joins (~nmh@136.49.49.211)
04:27:52 seydar joins (~seydar@154-27-113-252.starry-inc.net)
04:29:04 <Axman6> @hoogle ASetter' s a -> Maybe a -> s -> s
04:29:05 <lambdabot> No results found
04:30:24 benin joins (~benin@183.82.204.110)
04:30:25 <Axman6> given how massive lens is, I'm surprised that doesn't exist!
04:30:27 × redb quits (~nmh@136.49.49.211) (Ping timeout: 260 seconds)
04:30:41 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
04:30:56 redb joins (~nmh@136.49.49.211)
04:31:59 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
04:32:25 <dibblego> write it
04:32:47 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
04:34:23 <Axman6> :t let l .~? m = maybe identity (set l) m in (.~?)
04:34:24 <lambdabot> error:
04:34:24 <lambdabot> • Variable not in scope: identity :: s1 -> t1
04:34:24 <lambdabot> • Perhaps you meant one of these:
04:34:31 <Axman6> :t let l .~? m = maybe id (set l) m in (.~?)
04:34:32 <lambdabot> ASetter a1 a1 a2 b -> Maybe b -> a1 -> a1
04:36:08 × redb quits (~nmh@136.49.49.211) (Ping timeout: 246 seconds)
04:36:43 <dibblego> let iWishThisExists = maybe mempty in iWishThisExists . set
04:38:14 redb joins (~nmh@136.49.49.211)
04:38:38 × cdman quits (~dcm@user/dmc/x-4369397) (Remote host closed the connection)
04:38:49 <jackdk> % :t \setter -> ala Endo foldMap . fmap (set setter) -- Axman6
04:38:50 <yahb> jackdk: (Foldable f, Functor f) => ASetter b b a1 a2 -> f a2 -> b -> b
04:39:35 cdman joins (~dcm@27.2.216.134)
04:39:35 × cdman quits (~dcm@27.2.216.134) (Changing host)
04:39:35 cdman joins (~dcm@user/dmc/x-4369397)
04:39:44 <abastro[m]> It feels like lens is huge with lots of utilities ppl crave for missing
04:39:54 <abastro[m]> But that's just my feeling
04:40:05 seydar joins (~seydar@154-27-113-252.starry-inc.net)
04:42:26 × redb quits (~nmh@136.49.49.211) (Ping timeout: 246 seconds)
04:44:23 bahamas joins (~lucian@84.232.140.158)
04:44:32 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds)
04:46:19 <Axman6> I remember the day that jackdk came to me with a function that was about five lines, and updated something in a state monad, and needed to return the old version. It worked fine, but I said "... I'm pretty sure there's a lens operator for that", and sure enough, it not only was, but it had the name we expected it to have: (<<%=)
04:48:17 <jackdk> and _this_ is why we allow custom operators - the power of a consistent visual language
04:50:10 <abastro[m]> But instead you get the bloat
04:50:20 <Axman6> <X = Return the value that was the focus after applying the function, <<X return the value befoere the change, X%Y apply a function, passing in the focus, X~ set a field "purely", X= = set a field statefully
04:51:15 Guest|85 joins (~Guest|85@103.57.84.94)
04:51:27 yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
04:52:20 <jackdk> lens isn't bloated, half the functions are actually `id`
04:52:21 seydar joins (~seydar@154-27-113-252.starry-inc.net)
04:52:42 × Guest|85 quits (~Guest|85@103.57.84.94) (Client Quit)
04:52:45 × Andrew quits (Andrew@user/AndrewYu) (Quit: Leaving)
04:53:22 <Axman6> lens is, imo, incredibly elegant, consistent, and solves real problems, that are more relevant the larger your programs become
04:53:33 AndrewYu joins (Andrew@user/AndrewYu)
04:53:37 Kaiepi joins (~Kaiepi@156.34.47.253)
04:54:42 redb joins (~nmh@136.49.49.211)
04:54:46 <sm> they say optics is both more usable and more principled though
04:55:21 <sm> I should not say "though".. I meant "also"
04:55:43 <Axman6> there are reasons for using optics, but I'm extremely familliar with lens, and the fact you can add optics for lens without having lens as a dependency is very compelling
04:56:04 <Axman6> to use optics, you need to have it as a dependency of your project as far as I understand it
04:56:21 × bahamas quits (~lucian@84.232.140.158) (Ping timeout: 256 seconds)
04:56:46 <sm> nod
04:56:57 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds)
04:57:25 <jackdk> yes, and first mover advantage - I don't want to fracture the ecosystem so I write lenses
04:57:38 <sm> (is that really a problem, in these days of a zillion deps)
04:58:18 <sm> I don't recall the recent post where I read about the extra "principledness", but it was interesting
04:58:31 <abastro[m]> "Fracturing ecosystem"
04:58:31 <abastro[m]> Come on, we already have gazillions of stream libraries
04:58:42 <abastro[m]> And MTL/RIO/Effects
04:59:23 sm used microlens but deps use lens, some probably use optics too
04:59:45 <jackdk> Yeah getting streaming right is not straightforward, but doesn't mean I have to gleefully make a problem worse
05:00:32 <jackdk> microlens is great for libs if you can get away with it, but if you want to write prisms or isos you end up having to pull in `profunctors` which pulls in a few more Ed packages than you might like
05:01:29 <sm> hmm no, only microlens here now
05:01:58 <Axman6> and prisms are half the reason to use lens anyway
05:03:09 × redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds)
05:03:53 <sm> ah, it was this: https://www.brunogavranovic.com/posts/2022-02-10-optics-vs-lenses-operationally.html
05:04:32 lispy joins (~lispy@82.212.112.246)
05:04:37 seydar joins (~seydar@154-27-113-252.starry-inc.net)
05:04:46 <sm> "optics do a better job of modelling the internals"
05:06:47 <dolio> I'm not convinced that article's claim makes any sense.
05:06:56 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 246 seconds)
05:08:10 × yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection)
05:08:20 × AndrewYu quits (Andrew@user/AndrewYu) (Quit: Leaving)
05:08:44 yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
05:09:00 × zmt00 quits (~zmt00@user/zmt00) (Quit: Leaving)
05:09:07 AndrewYu joins (Andrew@user/AndrewYu)
05:09:17 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds)
05:09:55 <sm> dolio: after reading it ?
05:09:58 <Axman6> huh, I've never seen this before, specifying the kind that a data definition has: https://hackage.haskell.org/package/optics-core-0.4.1/docs/src/Optics.Internal.Optic.Types.html#OpticKind
05:10:13 <dolio> I skimmed it.
05:10:27 <sm> ok, just wondering
05:10:47 <jackdk> Axman6: `-XStandaloneKindSignatures` are `-XStandaloneKingSignatures`
05:10:53 zmt00 joins (~zmt00@user/zmt00)
05:10:59 <dolio> It appears to be entirely based on defining a "lens" to only mean a pair of functions (s -> a, s -> b -> t).
05:11:11 <Axman6> I'm not sure I even agree with the beginning of it: "The type of the internal state of a lens (A, A') -> (B, B') is always equal to A."
05:11:51 <Axman6> I have always interpreted the type of the internal state to be basically the function which takes a B' and produced an A', and not an A
05:11:59 <dolio> Except people were representing them as `s -> (a, b -> t)` like 10 years ago or something, for the obvious performance reasons.
05:12:26 <dolio> 10 is probably underestimating.
05:12:45 <Axman6> is this article even talking about the difference between the lens package and the optics package? or the general idea of optics in general, which both libraries implement
05:13:34 <dolio> And the `b -> t` part can close over any internal state you want. Perfect abstraction.
05:14:09 <Axman6> exactly
05:14:13 × yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
05:15:16 <dolio> At first it was unclear if other representations, like the one using quantification over functors, actually matched the performance benefits of this representation, although they do.
05:16:54 seydar joins (~seydar@154-27-113-252.starry-inc.net)
05:17:11 <sm> Axman6 good question, it's probably talking about the abstractions now that you mention it (which the libraries may or may not match)
05:17:28 <Axman6> they both have internally the same representation
05:17:32 redb joins (~nmh@136.49.49.211)
05:18:48 × [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
05:20:01 AndrewYu is now known as Andrew
05:20:10 <dolio> It's also confusing to me that it would compare 'optics' to lenses, because historically 'optic' was the catch all term for all the different notions people realised you could do by quantifying over different sorts of things. Like traversals, prisms, etc.
05:20:42 <Axman6> yeah
05:21:17 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
05:21:39 <Axman6> yeah it basically looks like that article exactly describes the implementation of both the lens and optics libraries
05:22:33 <dolio> I don't think the lens library uses the naive representation, except as a convenient way of defining a lens.
05:22:34 <Axman6> optics doesn't have zippers? D:
05:22:59 × redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds)
05:24:41 chomwitt joins (~chomwitt@2a02:587:dc0e:4f00:e2a4:4df9:d340:7660)
05:29:02 <Axman6> admittedly a feature that I haven't had a need for, but it's extremely cool that it does exist in lens
05:29:14 seydar joins (~seydar@154-27-113-252.starry-inc.net)
05:31:45 <Axman6> @hoogle equality
05:31:45 <lambdabot> Control.Lens.Combinators equality :: (s :~: a) -> (b :~: t) -> Equality s t a b
05:31:45 <lambdabot> Control.Lens.Equality equality :: (s :~: a) -> (b :~: t) -> Equality s t a b
05:31:45 <lambdabot> Diagrams.Prelude equality :: () => (s :~: a) -> (b :~: t) -> Equality s t a b
05:33:45 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
05:34:31 <abastro[m]> I mean, optics give better error messages
05:35:00 <abastro[m]> Call me dumb and idiotic and smooth brained, I can never make sense of the lens error messages
05:35:27 <abastro[m]> I wish I could just look at lens error messages and see what to fix
05:37:51 <jackdk> It's practice, like building up an understanding of any other error message. I agree that it's hard
05:38:22 × frost quits (~frost@user/frost) (Quit: Client closed)
05:38:47 <abastro[m]> I see, so it is possible
05:39:17 <abastro[m]> Tho I think I am indeed too smooth-brained to ever understand it
05:39:21 <dolio> I don't think lens errors are likely to be useful. That's the major downside.
05:39:25 <abastro[m]> For this kind of me, optics is a godsend
05:39:34 <dolio> The only useful part is the line number.
05:39:46 × lispy quits (~lispy@82.212.112.246) (Quit: Client closed)
05:40:02 <abastro[m]> Haha line number XD
05:41:27 seydar joins (~seydar@154-27-113-252.starry-inc.net)
05:42:40 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
05:42:42 <Axman6> it's definitely possible to learn to understand lens' errors, but the effort that's been put into optics to improve that is definitly a big advantage, particularly when learning
05:42:59 <jackdk> I have a friend who learned lens mostly by cranking through optics by example and then moving over to lens
05:43:17 <abastro[m]> I also personally feel that using van Laarhoven encoding is alike leaking implementation details
05:43:32 <abastro[m]> (While lens do indeed provide more features)
05:43:51 <Axman6> sometimes those are useful details though
05:46:17 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds)
05:50:08 coot joins (~coot@213.134.190.95)
05:52:11 <abastro[m]> Useful?
05:52:53 michalz joins (~michalz@185.246.204.122)
05:52:56 redb joins (~nmh@136.49.49.211)
05:53:45 seydar joins (~seydar@154-27-113-252.starry-inc.net)
05:54:09 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:56:42 fef joins (~thedawn@user/thedawn)
05:57:33 × redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds)
05:58:02 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds)
06:01:22 <Axman6> you can arbitrarilly add new functionality to lens without depending on it, just because you know that the optics are just functions of the form (Functor|Applicative|Other) f => (a -> f b) -> (s -> f t), and having that detail exposed means you know what constraints you're working under, whether you can actually do applicative things, ect.
06:02:42 <Axman6> lens is, imo, fundamentally easier to understand its implementation because of this, because optics uses the same implementation, but also adds a lot of type level computation, which is much more foreign to newcomers than familliar type classes like Functor, Applicative etc.
06:05:07 alp_ joins (~alp@user/alp)
06:05:20 yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
06:05:44 × FragByte quits (~christian@user/fragbyte) (Quit: Quit)
06:05:57 seydar joins (~seydar@154-27-113-252.starry-inc.net)
06:06:15 <Axman6> learning you can add your own lenses without the need to import anything is imo useful: data MyFoo a = MyFoo {_fooA :: Int, _fooB :: [Bool]; _fooC :: c}; fooA :: Lens' (MtFoo a) Int; fooA f myFoo = (\newFooA -> myFoo { fooA = newFooA) <$> f (fooA myFoo)
06:07:25 <abastro[m]> Well tbh theoretical details of lens is quite hard to understand for beginners anyway
06:07:38 <abastro[m]> Implementation details, ppl usually gloss over
06:09:31 <Axman6> I think lens is easier to use once you understand the implementation details
06:10:17 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds)
06:12:12 <Axman6> like, lens is better used if you accept that it just a new way of thinking about things you already know
06:12:21 odnes joins (~odnes@5-203-209-2.pat.nym.cosmote.net)
06:14:02 odnes_ joins (~odnes@5-203-209-2.pat.nym.cosmote.net)
06:14:26 <abastro[m]> Easier to use? Eh
06:15:56 <abastro[m]> I mean, is it worth the poor error messages
06:16:57 × odnes quits (~odnes@5-203-209-2.pat.nym.cosmote.net) (Ping timeout: 248 seconds)
06:18:11 seydar joins (~seydar@154-27-113-252.starry-inc.net)
06:19:34 <Axman6> yes
06:20:08 <Axman6> well, an optic library is worth using, trying to work on my current project without lenses would be a nightmare
06:20:19 <tdammers> It kind of depends though. "Ability to add lenses without depending on lens", for example, is more important for library authors than for application authors.
06:20:43 <Axman6> and with experience, you don't get the the error messages very often at all, because you know what not to do ahead of time
06:22:32 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds)
06:24:35 redb joins (~nmh@136.49.49.211)
06:25:27 acidjnk joins (~acidjnk@p200300d0c7049f25b15f97e32406cde6.dip0.t-ipconnect.de)
06:27:28 × califax quits (~califax@user/califx) (Remote host closed the connection)
06:27:40 califax joins (~califax@user/califx)
06:28:35 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
06:29:27 × redb quits (~nmh@136.49.49.211) (Ping timeout: 268 seconds)
06:30:25 seydar joins (~seydar@154-27-113-252.starry-inc.net)
06:33:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection)
06:33:23 × odnes_ quits (~odnes@5-203-209-2.pat.nym.cosmote.net) (Ping timeout: 246 seconds)
06:33:26 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
06:34:07 dyeplexer joins (~dyeplexer@user/dyeplexer)
06:35:05 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds)
06:35:53 × yuriy quits (uid548749@id-548749.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
06:36:10 <boxscape> Is `Just x <- pure a` the same as `let Just x = y` inside a do block?
06:36:10 <boxscape> I'm asking because they seem to do the same thing, but confusingly only the latter warns about incomplete uni-patterns..
06:36:20 <boxscape> I suppose I could just look at the report
06:37:27 <boxscape> hm no, report doesn't say that `let` gets desugared with fail
06:39:32 <boxscape> guess I should figure out why my program doesn't fail then if I replace <- with let
06:39:47 dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be)
06:41:01 redb joins (~nmh@136.49.49.211)
06:42:39 seydar joins (~seydar@154-27-113-252.starry-inc.net)
06:45:29 × redb quits (~nmh@136.49.49.211) (Ping timeout: 268 seconds)
06:47:25 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
06:51:05 redb joins (~nmh@136.49.49.211)
06:51:51 MajorBiscuit joins (~MajorBisc@86-88-79-148.fixed.kpn.net)
06:52:51 cfricke joins (~cfricke@user/cfricke)
06:53:22 Major_Biscuit joins (~MajorBisc@c-001-005-034.client.tudelft.eduvpn.nl)
06:54:55 seydar joins (~seydar@154-27-113-252.starry-inc.net)
06:56:50 × MajorBiscuit quits (~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 246 seconds)
07:00:08 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds)
07:03:22 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
07:03:26 wildsebastian joins (~wildsebas@2001:470:69fc:105::1:14b1)
07:04:34 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
07:07:08 seydar joins (~seydar@154-27-113-252.starry-inc.net)
07:11:53 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
07:13:24 gehmehgeh joins (~user@user/gehmehgeh)
07:15:35 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
07:18:35 × Chai-T-Rex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 240 seconds)
07:19:20 seydar joins (~seydar@154-27-113-252.starry-inc.net)
07:20:52 <maerwald[m]> Axman6: did you just say lens is easier than optics for newcomers?
07:20:55 Chai-T-Rex joins (~ChaiTRex@user/chaitrex)
07:21:44 <dons> fclabels 4eva
07:22:24 zeenk joins (~zeenk@2a02:2f04:a313:d600:8d26:ec9f:3ff6:fc94)
07:22:55 × fockerized quits (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Quit: WeeChat 3.3)
07:24:03 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
07:24:12 lortabac joins (~lortabac@2a01:e0a:541:b8f0:cb75:3834:c1c1:ff4e)
07:27:13 × dextaa_54 quits (~dextaa@user/dextaa) (Remote host closed the connection)
07:29:36 <abastro[m]> > Axman6: did you just say lens is easier than optics for newcomers?
07:29:37 <abastro[m]> >.>
07:29:38 <lambdabot> <hint>:1:67: error:
07:29:38 <lambdabot> parse error (possibly incorrect indentation or mismatched brackets)
07:30:46 <abastro[m]> <Axman6> "and with experience, you don't..." <- Sure, of course that is why dynamic languages are great. While the error messages might be confusing and hard to fix, you won't face them often once you get expertise in it and write proper tests!
07:31:18 Galaxion-tech joins (~Galaxion-@122.162.144.183)
07:31:35 seydar joins (~seydar@154-27-113-252.starry-inc.net)
07:31:59 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
07:33:00 odnes joins (~odnes@5-203-209-2.pat.nym.cosmote.net)
07:33:40 × Galaxion-tech quits (~Galaxion-@122.162.144.183) (Client Quit)
07:35:38 bahamas joins (~lucian@84.232.140.158)
07:36:23 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
07:37:03 <tdammers> abastro[m]: starting a line with > triggers lambdabot, please don't do that unless you actually intend to have lambdabot run what follows as Haskell code
07:40:03 <Hecate> yeah this really sucks
07:43:13 <sm> yeah it should probably be changed as > is markdown for quotation and increasingly common as a convention in chat
07:43:48 seydar joins (~seydar@154-27-113-252.starry-inc.net)
07:44:40 <sm> (but FYI abastro, try to use element's reply feature sparingly in bridged IRC rooms, it creates too much noise)
07:44:48 <dminuoso> 09:44:09 Axman6 | [06:12:12] like, lens is better used if you accept that it just a new way of thinking about things you already know
07:45:01 <dminuoso> That is a weird proposition
07:45:13 <Hecate> eh, we already do this for Haskell :-P
07:45:45 <dminuoso> Well, if something requires intricate understanding of the internals to use, then it's not necessarily a good abstraction.
07:45:59 <dminuoso> For example, I dont want to know how GHC works internally to appreciate Haskell.
07:48:09 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds)
07:49:11 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 256 seconds)
07:49:16 machinedgod joins (~machinedg@24.105.81.50)
07:49:37 <Hecate> not everything is an abstraction either!
07:49:45 × dminuoso quits (~dminuoso@static.88-198-218-68.clients.your-server.de) (Changing host)
07:49:45 dminuoso joins (~dminuoso@user/dminuoso)
07:54:07 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
07:54:23 × pooryorick quits (~pooryoric@87-119-174-173.tll.elisa.ee) (Ping timeout: 260 seconds)
07:54:58 pooryorick joins (~pooryoric@87-119-174-173.tll.elisa.ee)
07:56:22 seydar joins (~seydar@154-27-113-252.starry-inc.net)
07:57:32 mikoto-chan joins (~mikoto-ch@213.177.151.239)
08:00:12 mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
08:00:57 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds)
08:01:14 <abastro[m]> Meh I see, IRC from matrix is so hard
08:02:28 <abastro[m]> If lens is not an abstraction, what is it?
08:02:34 <[exa]> abastro[m]: liberate yourself from convenient interfaces, telnet here
08:02:59 <abastro[m]> I'm on mobile
08:03:20 <[exa]> ay.
08:03:37 <abastro[m]> Is lens poor man's nested record modification?
08:04:08 <[exa]> no
08:04:15 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
08:04:23 <[exa]> lens is a package, full of materialized affine traversals and their specializations
08:04:41 <sm> you're not really using telnet are you
08:04:41 <abastro[m]> Then what is it, if it is not an abstraction?
08:05:06 ccntrq joins (~Thunderbi@2a01:e34:eccb:b060:ba9d:69d8:b4f8:4092)
08:05:31 <[exa]> abastro[m]: perhaps a "common composable interface for doing stuff on parts on structures"?
08:05:53 <[exa]> sm: not really but pretty close :]
08:06:28 <abastro[m]> Composable Interface, imho that implies abstraction tbh
08:06:28 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
08:07:11 DNH joins (~DNH@2a02:8108:1100:16d8:c8af:4307:df41:9668)
08:08:17 seydar joins (~seydar@154-27-113-252.starry-inc.net)
08:08:47 <[exa]> not sure, if there was a typeclass for it I'd say it is an abstract thing, but most of the lensy things are perfectly concrete, just sharing some of the optics types (such as Lens)
08:09:12 x_kuru joins (xkuru@user/xkuru)
08:09:43 <tdammers> the intriguing thing about van Laarhoven lenses is that they look a lot like implementation details bleeding through, until you start seeing the bigger picture
08:10:08 mncheck joins (~mncheck@193.224.205.254)
08:10:26 <tdammers> if you think of lenses as "a getter/setter pair", then the van Laarhoven implementation seems like it only works by strange coincidence
08:10:32 <abastro[m]> I mean, while function type looks concrete, it is an abstraction after all.
08:10:33 × mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 248 seconds)
08:10:55 <tdammers> it is, and it isn't
08:10:57 × coot quits (~coot@213.134.190.95) (Quit: coot)
08:11:15 x_kuru_ joins (~xkuru@user/xkuru)
08:11:19 <abastro[m]> van Laarhoven implementation looks like mathematical incidence to me
08:11:37 <abastro[m]> And in the end, with lens there is a problem of: "What is the point of all this?"
08:11:56 <[exa]> did you try traversals?
08:12:23 <abastro[m]> Ofc I did, I see that Lens generalizes to Traversals as well
08:12:38 <abastro[m]> But for library users, it could better be implementation details
08:12:46 mikoto-chan joins (~mikoto-ch@213.177.151.239)
08:12:58 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds)
08:13:03 <abastro[m]> Also you could easily explain how getter/setter pair could be used for a traversal as well
08:13:08 × xkuru quits (~xkuru@user/xkuru) (Ping timeout: 260 seconds)
08:13:30 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
08:14:54 × x_kuru quits (xkuru@user/xkuru) (Ping timeout: 268 seconds)
08:14:58 <[exa]> abastro[m]: then I probably don't get your question. Maybe we feel differently about what qualifies as an abstraction
08:15:01 <abastro[m]> Oftentimes, whenever I explain lens to someone they say, "What is the point of all this? For lens, setter & getter suffices. Can't we have intricate details like 'lens being traversal' abstracted out?"
08:15:36 jgeerds joins (~jgeerds@d5364b87.access.ecotel.net)
08:15:57 <abastro[m]> "What abstraction means" is terminology after all.
08:16:53 <[exa]> yeah, still I tend to avoid this "hide the complex-looking ___ in a box" meaning
08:17:25 <abastro[m]> Hmm, interesting. Yea, that is how I was taught what abstraction is
08:17:45 <[exa]> I prefer saying encapsulation
08:17:57 <abastro[m]> The outsiders seem to get the impression that haskellers are masochists from these parts, where we do things in seemingly overcomplicated way
08:18:01 × bahamas quits (~lucian@84.232.140.158) (Ping timeout: 248 seconds)
08:18:33 <abastro[m]> So I think it is good to meticulously reason about the *why* part
08:19:02 <abastro[m]> If it was just because of nice mathematical property.. that's going to veer towards masochism
08:19:28 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
08:20:06 CiaoSen joins (~Jura@p200300c9572d40002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
08:21:07 <[exa]> the point of the advanced type magic in Lenses is AFAIK to ensure that all stuff that can be composed really composes and doesn't cause runtime errors, such as if (trivial case:) someone forgot they are getting the value of a prism and expected it without the Maybe
08:21:37 <Franciman> wise words [exa]
08:21:58 <[exa]> first guess tbh
08:21:59 <Franciman> congrats to the haskell community for getting delconts (almost, since the MR must still be merged)
08:22:07 <Franciman> what are you planning to do with them?
08:22:24 <[exa]> delconts as in "delimited continuations" I guess? :D
08:22:28 × jgeerds quits (~jgeerds@d5364b87.access.ecotel.net) (Ping timeout: 272 seconds)
08:22:29 <Franciman> yep
08:22:36 <Franciman> sorry my morning feel is LAZYNESS
08:22:40 <Franciman> you should understand it right?
08:22:51 <abastro[m]> [exa]: I see that point, tho I don't get the reason to not encapsulate the composition details
08:23:47 <[exa]> Franciman: same here tbh, atmospheric pressure too low for thinking :D
08:24:03 <[exa]> abastro[m]: so that people may tinker with it easily?
08:24:17 <abastro[m]> Delimited continuation is in? So we can have native Cont monad I guess
08:24:29 <abastro[m]> Tinker with implementation details? Ehh
08:25:39 <Franciman> abastro[m]: no not yet, but https://gitlab.haskell.org/ghc/ghc/-/merge_requests/7942#5e75a5cad76eb00a51db49bf823e85050009544e
08:26:27 <abastro[m]> I see, I legit thought it wasn't going forward and bam! It is here
08:26:40 <abastro[m]> So lexi actually got time to write it down I guess?
08:27:07 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.4.1)
08:27:12 <abastro[m]> Btw regarding lens & tinkering, this is where ppl get the masochist feel, haskellers seem to like to mess with complex type internals
08:27:38 <lexi-lambda> well, someone decided they were willing to pay me to finish it it :)
08:27:39 <[exa]> abastro[m]: the "masochist" feeling means "having a bit of control if something goes awry" for others
08:29:01 <tdammers> it's the same kind of masochism you see in other languages, the only difference is that it happens more often at the type level in haskell
08:29:31 × bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
08:29:39 <tdammers> you see an abstraction opportunity, you grab it, you run with it, and then you try out how far you can take it
08:30:12 <[exa]> abastro[m]: I usually argue about this with the OOP crowd, the traditional approach there is to contain the complex details by putting them into boxes, contrary to haskell where you contain the complex details by making a (much less complex) type scaffolding sufficient for the compiler to help you do the complex thing easily
08:30:52 dcoutts_ joins (~duncan@host213-122-143-81.range213-122.btcentralplus.com)
08:31:08 <tdammers> we still put complex things in boxes, it's just that the boxes aren't usually object-shaped
08:31:34 Pickchea joins (~private@user/pickchea)
08:32:36 <[exa]> actually, looking at it from the point of lambda calculi, lens type _is_ a type-level abstraction, it's got the forall there :]
08:32:43 seydar joins (~seydar@154-27-113-252.starry-inc.net)
08:35:06 <lexi-lambda> Franciman: to be honest, the Haskell community has had delconts for quite some time (see CC-delcont on Hackage), and they haven’t seen terribly much use, so I’m not sure this is likely to change that
08:37:01 <[exa]> lexi-lambda: actually, the plot from the MR looks to me like most people who weren't very happy about the effect systems could just jump in now (me included)
08:37:27 <[exa]> (probably just needs to be reposted a few times on reddit or so :D)
08:37:34 <lexi-lambda> not sure I understand what you mean
08:37:38 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
08:38:20 × mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 268 seconds)
08:39:42 × DNH quits (~DNH@2a02:8108:1100:16d8:c8af:4307:df41:9668) (Quit: My MacBook has gone to sleep. ZZZzzz…)
08:42:45 <Franciman> lexi-lambda: well, maybe they could be used to simplify exceptions semantics
08:43:28 <lexi-lambda> in what sense?
08:43:40 <Franciman> you can implement try-catch with delconts
08:43:52 <lexi-lambda> sure, but the semantics is identical
08:43:53 <Franciman> and to my inferior brain delconts semantics is a tad easier to model
08:44:08 <Franciman> not in the presence of multiple threads!
08:44:23 <lexi-lambda> I don’t understand—both exceptions and delconts are single-thread phenomena
08:44:53 <Franciman> aren't async exceptions a problem?
08:44:55 seydar joins (~seydar@154-27-113-252.starry-inc.net)
08:45:25 <lexi-lambda> async exceptions are orthogonal to the semantics of exceptions within a given thread, mostly
08:45:38 <Franciman> i see
08:46:03 × yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection)
08:46:05 <lexi-lambda> async exceptions just allow an interrupt between any given reduction step for which interrupts are not masked
08:46:22 <lexi-lambda> and async exceptions are generally a Good Thing
08:46:30 FragByte joins (~christian@user/fragbyte)
08:47:11 yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
08:47:39 <lexi-lambda> the delimited continuations MR is mostly orthogonal to RTS exceptions, though it does have to go to some special care to respect the async exception masking state (which is itself largely independent of the operation of async exceptions, it’s more like a “continuation mark” in Scheme parlance)
08:48:14 Franciman confusedly nods
08:48:28 <lexi-lambda> and it’s valuable for the RTS implementation of exceptions to be independent of the RTS implementation of exceptions, because exceptions can be raised in pure code, whereas delconts don’t make sense in pure code
08:48:46 <lexi-lambda> err, independent of the RTS implementation of delconts, I mean
08:48:47 <lexi-lambda> lol
08:48:50 × zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection)
08:48:54 <Franciman> delconts don't make sense in pure code ~~~?
08:48:59 <Franciman> sure
08:49:12 frost joins (~frost@user/frost)
08:49:21 <lexi-lambda> delconts don’t make sense in pure code in the sense that they are only well-defined if you have a well-defined evaluation order
08:49:48 <lexi-lambda> they can still exist in code for which evaluation order is only *locally* well-defined, in the ST monad sense
08:49:49 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
08:50:34 <lexi-lambda> but the point is that they don’t make sense in Haskell without some kind of monadic structure to pin down the evaluation context
08:50:37 dschremp1 joins (~dominik@070-207.dynamic.dsl.fonira.net)
08:51:04 <lexi-lambda> whereas RTS exceptions can be raised arbitrarily in pure evaluation (for better or for worse)
08:51:42 <Franciman> if they have the same semantics
08:51:45 <Franciman> how is this possible?
08:51:54 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 268 seconds)
08:52:07 <lexi-lambda> well, exceptions are a more restricted case of delconts, but those restrictions are relevant here
08:52:13 <Franciman> ah ahh okko
08:52:15 <Franciman> makes sense
08:52:20 × mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 246 seconds)
08:52:31 × yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
08:52:51 <Franciman> so monads are basically imposing a cps to your code
08:52:59 <Franciman> in fact,
08:53:02 <Franciman> :t (>>=)
08:53:03 <lambdabot> Monad m => m a -> (a -> m b) -> m b
08:53:05 <Franciman> is cps
08:53:12 <lexi-lambda> yes, indeed, it’s a very literal correspondence
08:54:13 azimut_ joins (~azimut@gateway/tor-sasl/azimut)
08:54:35 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
08:54:44 <Franciman> thanks lexi-lambda it's clear now
08:55:10 <Franciman> so far the "only" usecase i found for delconts is implementing effect systems
08:55:13 <Franciman> and type safe print!
08:55:17 <Franciman> type safe print is very nice lol
08:55:25 <lexi-lambda> type safe print?
08:55:30 <abastro[m]> [exa]: Eh, I doubt that type scaffolding helps you that much. It still requires quite a bit of cognitive overhead
08:55:53 <Franciman> 1seq
08:56:09 <[exa]> abastro[m]: it yells at me when I try to mess it up, I'm happy
08:56:14 <lexi-lambda> but yes, I would say that, in a sense, effect systems are primarily a more structured, more typed interface to delimited continuations
08:56:45 <abastro[m]> Well it yells when you mess up, but it is still hard to know which way to go for right
08:57:01 <lexi-lambda> haskell programmers do not think about things this way very much, but in a very real way, libraries like polysemy provided monads that implement delimited continuations
08:57:05 <abastro[m]> I wonder if with delcont we could have native Cont monad
08:57:21 <lexi-lambda> yes, but not ContT
08:57:28 <lexi-lambda> which makes it somewhat less useful
08:57:29 seydar joins (~seydar@154-27-113-252.starry-inc.net)
08:57:33 <abastro[m]> Cont monad which provides efficient delimited continuation
08:57:38 <abastro[m]> Oh no why mot ContT?
08:57:46 <Franciman> lexi-lambda: https://okmij.org/ftp/continuations/implementations.html#genuine-shift
08:57:50 <abastro[m]> s/mot/not
08:57:59 <lexi-lambda> abastro[m]: the same reason you can’t have IOT/STT
08:58:11 <abastro[m]> Wow thanks
08:58:25 <abastro[m]> So straightforwardly put
08:58:39 <abastro[m]> Tbh ContT is a bit messy, isn't it?
08:59:03 <abastro[m]> IIRC `ContT m` is always monad whatever m is
08:59:58 <lexi-lambda> I don’t think ContT itself is particularly messy, per se, but it doesn’t cooperate very nicely with mtl-style MonadError, MonadWriter, etc. classes
09:00:23 <abastro[m]> Hmm
09:00:27 <abastro[m]> What about Monad itself
09:00:47 <lexi-lambda> however, I am largely of the opinion that those classes don’t really do what you want for lots of monad transformers, not just ContT
09:01:14 <lexi-lambda> I’m not sure what you mean by “what about Monad itself”—what about it?
09:01:26 mikoto-chan joins (~mikoto-ch@213.177.151.239)
09:01:36 <lexi-lambda> ContT is a perfectly well-behaved monad transformer in the sense that it is always a monad when applied to a monad
09:02:17 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
09:02:21 <abastro[m]> Well, it also makes a monad when given any m
09:02:35 <lexi-lambda> sure
09:03:44 DNH joins (~DNH@2a02:8108:1100:16d8:c8af:4307:df41:9668)
09:06:17 mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
09:06:21 <lexi-lambda> I guess for that reason you could, strictly speaking, have native ContT, just not native CCT (from CC-delcont)
09:06:41 <lexi-lambda> but I’m not sure how useful it would be, regardless
09:06:43 × asocialblade quits (~qsl@user/asocialblade) (Ping timeout: 260 seconds)
09:07:23 yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
09:09:41 seydar joins (~seydar@154-27-113-252.starry-inc.net)
09:09:42 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
09:11:24 × mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 240 seconds)
09:11:38 kaph joins (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it)
09:14:06 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 245 seconds)
09:15:13 × odnes quits (~odnes@5-203-209-2.pat.nym.cosmote.net) (Remote host closed the connection)
09:15:34 odnes joins (~odnes@5-203-209-2.pat.nym.cosmote.net)
09:15:37 Inst joins (~Liam@2601:6c4:4080:3f80:88f1:8b95:b5a0:872d)
09:16:40 × shriekingnoise quits (~shrieking@201.231.16.156) (Quit: Quit)
09:20:11 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
09:22:26 <Franciman> delimited continuations can also be used to implement call by need evaluation
09:22:31 <Franciman> in a cbv environment
09:23:31 <Franciman> and maybe a better macro system too
09:23:36 <Franciman> but i don't know how
09:24:41 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 248 seconds)
09:28:53 <maerwald[m]> Isn't the man point eff?
09:29:06 <lexi-lambda> in theory, yes
09:29:26 <maerwald[m]> How's that going?
09:29:45 <lexi-lambda> there are still open questions about eff’s semantics in some tricky cases that I don’t yet have answers for
09:30:52 <lexi-lambda> for the past couple years I’ve been struggling to come up with answers to them that I have felt remotely satisfied with, and I was a bit disillusioned as to whether it was even possible, but I think I might have had some new ideas recently
09:31:58 <lexi-lambda> the semantics has always been more important to me than the performance (though ofc that’s important, too), and I’m not satisfied with the semantics of any existing effect system in haskell
09:33:49 seydar joins (~seydar@154-27-113-252.starry-inc.net)
09:36:51 × m1dnight quits (~christoph@78-22-9-5.access.telenet.be) (Quit: WeeChat 3.5)
09:37:30 m1dnight joins (~christoph@78-22-9-5.access.telenet.be)
09:38:18 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
09:42:07 _dmc_ joins (~dcm@user/dmc/x-4369397)
09:42:55 × cdman quits (~dcm@user/dmc/x-4369397) (Ping timeout: 272 seconds)
09:46:01 seydar joins (~seydar@154-27-113-252.starry-inc.net)
09:46:28 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
09:48:01 cdman joins (~dcm@user/dmc/x-4369397)
09:48:45 × _dmc_ quits (~dcm@user/dmc/x-4369397) (Ping timeout: 256 seconds)
09:49:47 coot joins (~coot@213.134.190.95)
09:50:27 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
09:52:49 × raym quits (~raym@user/raym) (Quit: Failed to initialize NVML: Driver/library version mismatch)
09:54:49 kaph_ joins (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it)
09:55:13 raym joins (~raym@user/raym)
09:56:02 × CiaoSen quits (~Jura@p200300c9572d40002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
09:57:13 × kaph quits (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) (Ping timeout: 248 seconds)
09:58:13 seydar joins (~seydar@154-27-113-252.starry-inc.net)
09:58:44 cfricke joins (~cfricke@user/cfricke)
10:00:58 × kaph_ quits (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) (Ping timeout: 268 seconds)
10:02:55 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
10:08:08 zaquest joins (~notzaques@5.130.79.72)
10:10:26 seydar joins (~seydar@154-27-113-252.starry-inc.net)
10:14:49 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
10:16:28 × redb quits (~nmh@136.49.49.211) (Ping timeout: 272 seconds)
10:18:14 × xff0x quits (~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp) (Ping timeout: 268 seconds)
10:18:33 × deadmarshal_ quits (~deadmarsh@95.38.112.46) (Ping timeout: 248 seconds)
10:22:39 seydar joins (~seydar@154-27-113-252.starry-inc.net)
10:23:49 × Inst quits (~Liam@2601:6c4:4080:3f80:88f1:8b95:b5a0:872d) (Ping timeout: 240 seconds)
10:23:49 × yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection)
10:24:23 yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
10:27:29 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds)
10:30:42 × haskl quits (~haskl@user/haskl) (Read error: Connection reset by peer)
10:33:07 haskl joins (~haskl@user/haskl)
10:33:29 × mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 248 seconds)
10:34:16 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 268 seconds)
10:34:53 seydar joins (~seydar@154-27-113-252.starry-inc.net)
10:34:58 × dschremp1 quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.4.1)
10:36:09 __monty__ joins (~toonn@user/toonn)
10:37:32 gurkenglas joins (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de)
10:38:19 Inst joins (~Liam@c-98-208-218-119.hsd1.fl.comcast.net)
10:39:33 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
10:39:42 ub joins (~Thunderbi@p200300ecdf15885c0dce6310edc9e9e7.dip0.t-ipconnect.de)
10:39:54 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds)
10:40:26 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
10:41:14 × ub quits (~Thunderbi@p200300ecdf15885c0dce6310edc9e9e7.dip0.t-ipconnect.de) (Client Quit)
10:44:33 redb joins (~nmh@136.49.49.211)
10:44:41 × Inst quits (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 246 seconds)
10:45:21 mikoto-chan joins (~mikoto-ch@213.177.151.239)
10:45:46 akegalj joins (~akegalj@93.140.126.69)
10:46:09 bahamas joins (~lucian@84.232.140.158)
10:46:55 boxscape_ joins (~boxscape_@p4ff0b7be.dip0.t-ipconnect.de)
10:47:05 seydar joins (~seydar@154-27-113-252.starry-inc.net)
10:48:09 <boxscape_> Is there an explanation somewhere of Data.Data's gmapMo and gmapMp?
10:48:36 _dmc_ joins (~dcm@27.2.216.134)
10:48:36 × _dmc_ quits (~dcm@27.2.216.134) (Changing host)
10:48:36 _dmc_ joins (~dcm@user/dmc/x-4369397)
10:48:57 × redb quits (~nmh@136.49.49.211) (Ping timeout: 248 seconds)
10:49:23 × cdman quits (~dcm@user/dmc/x-4369397) (Ping timeout: 256 seconds)
10:49:39 × _dmc_ quits (~dcm@user/dmc/x-4369397) (Max SendQ exceeded)
10:50:21 _dmc_ joins (~dcm@user/dmc/x-4369397)
10:51:20 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds)
10:51:33 deadmarshal_ joins (~deadmarsh@95.38.112.46)
10:55:53 × deadmarshal_ quits (~deadmarsh@95.38.112.46) (Ping timeout: 246 seconds)
10:56:22 <lortabac> boxscape_: maybe this blog post talks about them, I don't remember https://chrisdone.com/posts/data-typeable/
10:56:46 <boxscape_> doesn't look like it unfortunately but could still be helpful, thanks
10:58:32 Macbethwin joins (~chargen@D964062A.static.ziggozakelijk.nl)
10:59:19 seydar joins (~seydar@154-27-113-252.starry-inc.net)
10:59:29 xff0x joins (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp)
11:01:21 Macbethwin is now known as rttixian
11:02:29 Guest89 joins (~Guest89@2a01:41e1:440f:2c00:f9ba:f616:34ce:27bb)
11:03:32 odnes_ joins (~odnes@5-203-246-201.pat.nym.cosmote.net)
11:04:03 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
11:04:26 × odnes quits (~odnes@5-203-209-2.pat.nym.cosmote.net) (Read error: Connection reset by peer)
11:04:47 mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
11:09:47 × Pickchea quits (~private@user/pickchea) (Ping timeout: 256 seconds)
11:11:31 seydar joins (~seydar@154-27-113-252.starry-inc.net)
11:12:13 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
11:13:08 Midjak joins (~Midjak@10.233.130.77.rev.sfr.net)
11:14:03 geekosaur joins (~geekosaur@xmonad/geekosaur)
11:15:59 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
11:19:35 redb joins (~nmh@136.49.49.211)
11:22:36 shriekingnoise joins (~shrieking@201.231.16.156)
11:24:09 × redb quits (~nmh@136.49.49.211) (Ping timeout: 248 seconds)
11:33:15 × cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 260 seconds)
11:33:27 chddr joins (~Thunderbi@91.226.35.164)
11:33:32 ub joins (~Thunderbi@p200300ecdf15885c0dce6310edc9e9e7.dip0.t-ipconnect.de)
11:33:32 × ub quits (~Thunderbi@p200300ecdf15885c0dce6310edc9e9e7.dip0.t-ipconnect.de) (Client Quit)
11:36:33 × hololeap_ quits (~hololeap@user/hololeap) (Remote host closed the connection)
11:36:41 hololeap joins (~hololeap@user/hololeap)
11:37:28 redb joins (~nmh@136.49.49.211)
11:39:31 <chddr> Is there a neat way to use deriving via with a newtype around tuple (a,a) to switch the order of comparison for a tuple? What I mean is to compare the second component first, and after it the first
11:40:24 <merijn> chddr: I don't think so, but defining your own instance for a newtype should be trivial
11:40:40 <merijn> chddr: Also, let me introduce you to your friend: The monoid instance of Ordering :p
11:40:47 <merijn> :t orderBy
11:40:48 <lambdabot> error: Variable not in scope: orderBy
11:40:55 <merijn> eh, wait
11:41:02 <merijn> :t sortBy
11:41:03 <lambdabot> (a -> a -> Ordering) -> [a] -> [a]
11:41:09 <merijn> :t comparing
11:41:10 <lambdabot> Ord a => (b -> a) -> b -> b -> Ordering
11:41:45 <chddr> merijn: Yep, just thought there might be a clever way to avoid writing it entirely :)
11:41:46 <merijn> > sortBy (comparing snd <> comparing fst) $ zip [5,4..1] [1..5]
11:41:48 <lambdabot> [(5,1),(4,2),(3,3),(2,4),(1,5)]
11:42:09 <sm> neat, I had not discovered that
11:42:23 <merijn> chddr: Basically, the monoid on Ordering prefers the left-most non-EQ value
11:42:32 <boxscape_> > sortBy (comparing swap) $ zip [5,4..1] [1..5]
11:42:33 <lambdabot> [(5,1),(4,2),(3,3),(2,4),(1,5)]
11:42:46 <merijn> boxscape_: Mine is more generically useful, though :p
11:42:49 <boxscape_> that is true
11:43:01 <merijn> Since you can compose arbitrary complex sub-orderings
11:43:11 <boxscape_> (and my version should have used sortOn)
11:43:51 <merijn> chddr: Basically, the monoid on functions ("instance Monoid r => Monoid (a -> r)") monoidally combines functions by passing arguments to each function and monoidally combining the results
11:44:58 <chddr> impressive...
11:45:05 <merijn> Combined with the left-biased monoid on Ordering it results in sorting first by the left-most argument, then ordering all things with the same left value by the next condition (so in my initial example first by snd, then by fst) but it scales up to arbitrarily complex comparisons
11:45:30 <merijn> Also of note here is: Down
11:46:07 <merijn> Which is a newtype using a flipped comparison
11:46:12 <merijn> > sortOn Down [1..5]
11:46:14 <lambdabot> [5,4,3,2,1]
11:46:36 <merijn> And semi-relatedly Dual (which is a newtype for Monoid with flipped mappend
11:46:46 <merijn> > [1..5] <> [6..10]
11:46:47 <lambdabot> [1,2,3,4,5,6,7,8,9,10]
11:46:51 <merijn> > Dual [1..5] <> Dual [6..10]
11:46:53 <lambdabot> Dual {getDual = [6,7,8,9,10,1,2,3,4,5]}
11:50:35 <chddr> Yeah, I first tried to fiddle with Down, but realised that what I need first is invert the order in which fst and snd are compared
11:51:09 <merijn> Monoid instance of functions and monoid on Ordering are two of my favourite monoids :)
11:52:17 × bahamas quits (~lucian@84.232.140.158) (Ping timeout: 256 seconds)
11:54:47 <hpc> my favorite monoid is in the category of endofunctors :D
11:55:15 × fef quits (~thedawn@user/thedawn) (Ping timeout: 240 seconds)
11:56:25 seydar joins (~seydar@154-27-113-252.starry-inc.net)
11:56:33 × acidjnk quits (~acidjnk@p200300d0c7049f25b15f97e32406cde6.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
11:56:47 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 246 seconds)
12:00:24 × wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Remote host closed the connection)
12:01:21 wyrd joins (~wyrd@gateway/tor-sasl/wyrd)
12:01:36 × redb quits (~nmh@136.49.49.211) (Ping timeout: 272 seconds)
12:01:55 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
12:02:41 Pickchea joins (~private@user/pickchea)
12:04:01 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
12:04:44 toulene joins (~toulene@user/toulene)
12:09:46 seydar joins (~seydar@154-27-113-252.starry-inc.net)
12:11:53 × bw quits (sid2730@user/betawaffle) (Ping timeout: 256 seconds)
12:12:05 <boxscape_> Wow I just found out that if you have `data Foo = A {a :: Int} | B`, and you try to update `a` after you know (via pattern match) that your value must have the `A` constructor, GHC doesn't complain about an incomplete record update, that's pretty nice
12:14:01 kaph_ joins (~kaph@151.68.121.66)
12:14:47 bahamas joins (~lucian@84.232.140.158)
12:14:56 × x_kuru_ quits (~xkuru@user/xkuru) (Read error: Connection reset by peer)
12:15:35 <hpc> if you think about it, that's basically the same way ghc knows how GADTs work
12:15:42 <boxscape_> yeah, that's true
12:15:44 <hpc> so i bet you could get a pretty nice implementation of that feature fairly easily
12:15:58 <boxscape_> however, it doesn't seem to ever warn about x.a, even if x is B :(
12:16:08 <hpc> :(
12:16:09 bw joins (sid2730@user/betawaffle)
12:16:27 <boxscape_> time to open another GHC issue I guess
12:21:56 <boxscape_> never mind, already exists https://gitlab.haskell.org/ghc/ghc/-/issues/18650
12:22:49 × _dmc_ quits (~dcm@user/dmc/x-4369397) (Ping timeout: 248 seconds)
12:27:13 cdman joins (~dcm@user/dmc/x-4369397)
12:28:42 abastro joins (~abab9579@220.75.216.63)
12:28:54 × abastro quits (~abab9579@220.75.216.63) (Remote host closed the connection)
12:29:10 abastro joins (~abab9579@220.75.216.63)
12:29:20 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds)
12:30:40 redb joins (~nmh@136.49.49.211)
12:31:23 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
12:34:56 × redb quits (~nmh@136.49.49.211) (Ping timeout: 246 seconds)
12:40:35 cfricke joins (~cfricke@user/cfricke)
12:40:50 <boxscape_> hpc Interestingly I just found out that it doesn't work in all cases where GADTs work https://gitlab.haskell.org/ghc/ghc/-/issues/21360
12:41:33 seydar joins (~seydar@154-27-113-252.starry-inc.net)
12:44:29 deadmarshal_ joins (~deadmarsh@95.38.112.46)
12:46:03 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
12:46:34 × mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 272 seconds)
12:47:43 × yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection)
12:48:19 yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
12:49:38 × elkcl quits (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (Ping timeout: 246 seconds)
12:50:20 bontaq joins (~user@ool-45779fe5.dyn.optonline.net)
12:50:39 × kaph_ quits (~kaph@151.68.121.66) (Ping timeout: 256 seconds)
12:51:36 redb joins (~nmh@136.49.49.211)
12:53:07 × immae quits (~immae@2a01:4f8:141:53e7::) (Quit: WeeChat 3.3)
12:54:21 immae joins (~immae@2a01:4f8:141:53e7::)
12:55:56 × redb quits (~nmh@136.49.49.211) (Ping timeout: 246 seconds)
12:57:20 × bahamas quits (~lucian@84.232.140.158) (Ping timeout: 272 seconds)
12:58:03 fef joins (~thedawn@user/thedawn)
13:01:53 elkcl joins (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru)
13:03:43 doyougnu joins (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com)
13:06:44 <abastro> Wow is it hard to add extension to compile a dependency?
13:07:44 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
13:12:01 redb joins (~nmh@136.49.49.211)
13:12:23 <boxscape_> abastro could be just me but it's not clear to me what you're asking
13:13:26 <merijn> boxscape_: You can't safely used record accessors with sumtypes, no
13:14:10 <merijn> Which is why -XNoFieldSelectors is so great
13:14:27 <Guest89> I hope it's okay to ask a kinda vague question here: I am using `ghc-lib-parser` just like the example supplied at https://hackage.haskell.org/package/ghc-lib-parser-9.2.2.20220307/docs/GHC-Parser.html does to parse Haskell files. However when parsing files I frequently run into errors. Mostly with ifdefs but also with imports, but there are others
13:14:28 <Guest89> as well. The point being, simple files seem to work, anything a little unusual doesn't. The only setting I see to rectify this are the enabled `Extensions` within the `ParserOpts` which have to match the source file, but even with that it does not work. Is there something I am missing or didn't understand about using `ghc-lib-parser`?
13:14:49 <boxscape_> merijn but you still have the same problem if you want to use -XNoFieldSelectors with OverloadedRecordDot. Though resolving 18650 would fix that
13:15:23 <merijn> boxscape_: I think OverloadedRecordDot is an absolute atrocity, so I have no sympathy for it blowing up in people's faces :)
13:15:30 <boxscape_> fair enough
13:15:49 <boxscape_> I find it convenient mostly for small things where adding a lens dependency isn't worth it, but in those cases I suppose safety isn't as critical either
13:16:13 <merijn> boxscape_: In most of those cases just using regular record syntax would just fine too, though?
13:16:25 <boxscape_> merijn I like OverloadedRecordDot better though
13:16:41 × redb quits (~nmh@136.49.49.211) (Ping timeout: 248 seconds)
13:16:46 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
13:16:54 <merijn> It turns the grammar into a confusing, contextual nightmare
13:17:01 × BlackboardN quits (~Blackboar@user/BlackboardN) (Ping timeout: 245 seconds)
13:17:30 <merijn> I got better things to spend brainpower on then guessing which of 3 (or is it 4 or 5 by now) syntactical constructs a specfic . is.
13:17:47 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 260 seconds)
13:18:08 <merijn> Had Haskell required spaces around operators (it should have, would solve a lot of annoying grammar issues), record-dot would be nice, but we don't live in that world
13:18:39 <merijn> spaces around operators would have solved the whole stupid unary vs binary minus problem too
13:18:53 <boxscape_> I put spaces around all my operators anyway so I don't find it that confusing in my own code, at least
13:19:41 <merijn> boxscape_: So do I, but the grammar has to handle cases where that's not true
13:20:10 <boxscape_> yeah but the complexity in the compiler exists whether I enable the extension or not :)
13:20:48 <merijn> boxscape_: The extension makes it ambiguous what "foo.bar" means for anyone reading your code, though
13:21:02 <merijn> 'cause the reader cannot assume you consistently space operators
13:22:18 <boxscape_> It does. I think it also makes it easier to understand what's going on though than using record selector functions, but I suppose the tradeoff between those is subjective.
13:23:19 <boxscape_> I would be inclined to believe that people a priori tend to assume that compose (.) will have spaces around it
13:23:42 <merijn> boxscape_: I've seen *a lot* of haskell without spaces for composition
13:23:53 <boxscape_> hm, fair enough
13:23:57 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
13:28:28 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.4.1)
13:28:31 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
13:29:21 × cdman quits (~dcm@user/dmc/x-4369397) (Quit: Leaving)
13:31:33 cdman joins (~dcm@user/dmc/x-4369397)
13:32:42 bahamas joins (~lucian@84.232.140.158)
13:36:25 × cdman quits (~dcm@user/dmc/x-4369397) (Client Quit)
13:37:14 × bahamas quits (~lucian@84.232.140.158) (Ping timeout: 246 seconds)
13:39:42 × yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection)
13:40:16 yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
13:42:29 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
13:42:29 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
13:42:29 wroathe joins (~wroathe@user/wroathe)
13:43:32 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 246 seconds)
13:43:54 cosimone joins (~user@93-47-228-79.ip115.fastwebnet.it)
13:44:24 bezmuth joins (~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7)
13:45:31 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
13:45:54 redb joins (~nmh@136.49.49.211)
13:47:23 × Pickchea quits (~private@user/pickchea) (Ping timeout: 246 seconds)
13:48:24 ub joins (~Thunderbi@p200300ecdf15885c0dce6310edc9e9e7.dip0.t-ipconnect.de)
13:48:29 × ub quits (~Thunderbi@p200300ecdf15885c0dce6310edc9e9e7.dip0.t-ipconnect.de) (Client Quit)
13:50:32 <abastro> Yea my question was quite vague, boxscape_
13:50:32 × redb quits (~nmh@136.49.49.211) (Ping timeout: 272 seconds)
13:50:45 <abastro> Anyway I forked the repo to solve it
13:53:03 CiaoSen joins (~Jura@p200300c9572d40002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
13:55:28 × yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection)
13:55:33 odnes__ joins (~odnes@5-203-246-201.pat.nym.cosmote.net)
13:56:07 yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
13:57:13 × alp_ quits (~alp@user/alp) (Ping timeout: 248 seconds)
13:58:17 × odnes_ quits (~odnes@5-203-246-201.pat.nym.cosmote.net) (Ping timeout: 248 seconds)
14:00:04 kaph joins (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it)
14:00:39 bahamas joins (~lucian@84.232.140.158)
14:01:28 × yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
14:04:33 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds)
14:07:18 × frost quits (~frost@user/frost) (Ping timeout: 250 seconds)
14:09:32 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
14:10:50 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
14:12:30 × benin quits (~benin@183.82.204.110) (Quit: The Lounge - https://thelounge.chat)
14:15:02 × doyougnu quits (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Ping timeout: 246 seconds)
14:15:19 benin joins (~benin@183.82.204.110)
14:17:35 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
14:19:28 redb joins (~nmh@136.49.49.211)
14:22:31 Sgeo joins (~Sgeo@user/sgeo)
14:23:53 × redb quits (~nmh@136.49.49.211) (Ping timeout: 248 seconds)
14:24:14 Akiva joins (~Akiva@user/Akiva)
14:26:34 × azimut_ quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
14:26:55 azimut joins (~azimut@gateway/tor-sasl/azimut)
14:28:31 Pickchea joins (~private@user/pickchea)
14:31:55 × Guest89 quits (~Guest89@2a01:41e1:440f:2c00:f9ba:f616:34ce:27bb) (Quit: Client closed)
14:32:49 <lortabac> is there a way to coerce between two records if all the fields are coercible?
14:33:25 Guest89 joins (~Guest89@2a01:41e1:440f:2c00:f9ba:f616:34ce:27bb)
14:33:26 <lortabac> maybe some library that relies on Generics
14:34:38 × akegalj quits (~akegalj@93.140.126.69) (Quit: leaving)
14:38:17 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 248 seconds)
14:40:09 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
14:42:20 seydar joins (~seydar@154-27-113-252.starry-inc.net)
14:43:50 yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
14:46:33 sander joins (~sander@user/sander)
14:46:50 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
14:49:21 × rttixian quits (~chargen@D964062A.static.ziggozakelijk.nl) (Read error: Connection reset by peer)
14:50:36 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 240 seconds)
14:53:39 × cosimone quits (~user@93-47-228-79.ip115.fastwebnet.it) (Remote host closed the connection)
14:54:48 redb joins (~nmh@136.49.49.211)
14:59:03 × redb quits (~nmh@136.49.49.211) (Ping timeout: 260 seconds)
14:59:08 seydar joins (~seydar@154-27-113-252.starry-inc.net)
15:01:15 xpika joins (~alan@n175-34-18-168.sun1.vic.optusnet.com.au)
15:01:15 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
15:03:48 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
15:08:04 × kaph quits (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) (Read error: Connection reset by peer)
15:10:20 × sammelweis quits (~quassel@c-68-48-18-140.hsd1.mi.comcast.net) (Ping timeout: 246 seconds)
15:10:45 kaph joins (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it)
15:12:05 xpika parts (~alan@n175-34-18-168.sun1.vic.optusnet.com.au) ()
15:12:21 xpika joins (~alan@n175-34-18-168.sun1.vic.optusnet.com.au)
15:13:44 <xpika> is there a haskell library for converting html to ascii table?
15:14:13 <maerwald> pandoc can convert between html and markdown
15:14:59 mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
15:15:32 redb joins (~nmh@136.49.49.211)
15:16:38 alp_ joins (~alp@user/alp)
15:16:51 × bahamas quits (~lucian@84.232.140.158) (Ping timeout: 256 seconds)
15:19:04 lbseale joins (~ep1ctetus@user/ep1ctetus)
15:22:01 × boxscape_ quits (~boxscape_@p4ff0b7be.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
15:25:26 seydar joins (~seydar@154-27-113-252.starry-inc.net)
15:25:49 zebrag joins (~chris@user/zebrag)
15:26:17 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 248 seconds)
15:26:38 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
15:27:04 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
15:30:16 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds)
15:32:54 <xpika> is there a library function for horizontally appending two 2d blocks of text?
15:33:24 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:cb75:3834:c1c1:ff4e) (Quit: WeeChat 2.8)
15:33:42 <geekosaur> not in base. there are several pretty-printling libraries that can do it among other things
15:34:00 <xpika> which one?
15:34:43 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 260 seconds)
15:34:59 <geekosaur> actually, not in base but provided with ghc: https://downloads.haskell.org/ghc/8.10.7/docs/html/libraries/pretty-1.1.3.6/Text-PrettyPrint-Annotated-HughesPJ.html
15:35:26 <geekosaur> mm, not quite that one, but see Text.PrettyPrint in general, from
15:35:31 <geekosaur> @hackage pretty
15:35:31 <lambdabot> https://hackage.haskell.org/package/pretty
15:35:47 <geekosaur> again,this ships with ghc since ghc uses it to format error messages
15:36:08 <geekosaur> I think it's the <+> operator that combines two 2D Docs
15:40:45 <maerwald> and adds a space
15:41:52 <xpika> hcat [vcat [text "Hello" , text "^"] , text " World"]
15:41:54 <geekosaur> Ithink simple mappend /<> works to do it without a space, though
15:42:00 × jespada quits (~jespada@cpc121022-nmal24-2-0-cust171.19-2.cable.virginm.net) (Quit: Textual IRC Client: www.textualapp.com)
15:42:04 <glguy> Is it expected that haskell-src-exts-1.23.1 doesn't build on macOS with ghc 9.2.2? (some of that might be overconstrained, just listing what I tried)
15:42:11 <xpika> gives
15:42:11 <xpika> Hello
15:42:11 <xpika> ^ World
15:42:32 <xpika> I want
15:42:32 <xpika> Hello World
15:42:32 <xpika> ^
15:43:01 <glguy> oh nevermind, I guess. It worked on the third try o.O
15:43:18 jespada joins (~jespada@2a0c:5c84:1:4000::91c2)
15:46:08 geekosaur looks for other prettyprinter libs
15:46:19 <geekosaur> I think I'm not surprised since it's used for error messages
15:48:52 <geekosaur> in particular I'm remembering one which allowed specification of how two 2d blocks were aligned
15:49:38 × mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Remote host closed the connection)
15:50:25 × gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection)
15:51:07 gehmehgeh joins (~user@user/gehmehgeh)
15:52:11 × Guest89 quits (~Guest89@2a01:41e1:440f:2c00:f9ba:f616:34ce:27bb) (Quit: Client closed)
15:53:18 <geekosaur> mrrgh. allI'm finding so far uses the Wadler algorithm which isn't designed for multicolumn
15:55:31 <geekosaur> https://hackage.haskell.org/package/boxes-0.1.5/docs/Text-PrettyPrint-Boxes.html if it still builds
15:55:51 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
15:56:10 × bezmuth quits (~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7) (Ping timeout: 268 seconds)
15:57:50 × ix quits (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Remote host closed the connection)
15:58:00 ix joins (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
16:00:39 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
16:02:31 × CiaoSen quits (~Jura@p200300c9572d40002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
16:02:49 × ccntrq quits (~Thunderbi@2a01:e34:eccb:b060:ba9d:69d8:b4f8:4092) (Remote host closed the connection)
16:03:21 × yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection)
16:04:07 × gdd quits (~gdd@129.199.146.230) (Ping timeout: 250 seconds)
16:04:21 yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
16:06:49 epolanski joins (uid312403@id-312403.helmsley.irccloud.com)
16:08:42 haskellberryfinn joins (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
16:09:08 × yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
16:09:23 gdd joins (~gdd@129.199.146.230)
16:10:43 eaii^ joins (~eaii@c-24-99-107-170.hsd1.ga.comcast.net)
16:11:05 cosimone joins (~user@93-47-228-79.ip115.fastwebnet.it)
16:16:50 × haskellberryfinn quits (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 246 seconds)
16:17:57 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
16:20:48 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
16:21:34 yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
16:24:26 bezmuth joins (~bezmuth@host86-136-197-212.range86-136.btcentralplus.com)
16:24:42 doyougnu joins (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com)
16:24:46 <xpika> Text.PrettyPrint.Boxes> printBox $ (text "hello" // text "1") <+> ( text "world" // text "2")
16:24:46 <xpika> hello world
16:24:46 <xpika> 1 2
16:25:06 <xpika> not bad
16:25:58 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
16:26:42 × Cale quits (~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com) (Remote host closed the connection)
16:28:34 × zeenk quits (~zeenk@2a02:2f04:a313:d600:8d26:ec9f:3ff6:fc94) (Quit: Konversation terminated!)
16:28:56 vicfred joins (~vicfred@user/vicfred)
16:29:53 haskellberryfinn joins (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
16:30:08 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
16:40:36 × redb quits (~nmh@136.49.49.211) (Ping timeout: 240 seconds)
16:49:56 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Remote host closed the connection)
16:50:03 tzh_ joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
16:51:31 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
16:51:43 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
16:52:40 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
16:53:19 redb joins (~nmh@136.49.49.211)
16:53:57 × abastro quits (~abab9579@220.75.216.63) (Ping timeout: 246 seconds)
16:54:37 pretty_d1 joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
16:54:49 × mbuf quits (~Shakthi@122.162.142.187) (Quit: Leaving)
16:55:21 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 245 seconds)
17:01:03 × haskellberryfinn quits (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 260 seconds)
17:01:11 × agrosant quits (~agrosant@79.103.182.92.dsl.dyn.forthnet.gr) (Ping timeout: 272 seconds)
17:04:28 BlackboardN joins (~Blackboar@user/BlackboardN)
17:05:35 <lechner> Hi, with the word 'package' a bit overloaded, is there a more precise term for a particular source version on Hackage?
17:06:24 <maerwald> package version
17:10:33 <lechner> Yeah, we used that for everything in Debian too until I introduced 'sources' and 'installables'. Can I go with 'hackage source version'?
17:11:07 <maerwald> a hackable
17:11:19 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
17:11:56 <lechner> i'll take it if it's not a joke
17:12:18 × cosimone quits (~user@93-47-228-79.ip115.fastwebnet.it) (Remote host closed the connection)
17:12:19 <monochrom> We already have a name for "installables": build product. Therefore, "package version" already refers to source code, without emphasizing "source code".
17:13:27 <lechner> in my mind hackage is a misnomer. it should not refer to the repo but to each source version
17:14:20 <lechner> perhaps turning Hackage intoa plural hackages.haskell.org
17:14:23 × odnes__ quits (~odnes@5-203-246-201.pat.nym.cosmote.net) (Quit: Leaving)
17:14:55 <monochrom> Huh? Hackage is a gathering place.
17:15:15 <maerwald> lechner: are you seriously thinking you could rename hackage?
17:15:34 <monochrom> We say "Trafalga Plaza", not "Trafalga Plazas" just because "it has many persons".
17:15:59 <lechner> you can't be more stubborn than my colleages at Debian
17:16:01 <monochrom> Err I guess s/Plaza/Square/
17:16:26 <lechner> Haskell is all about accurate terminology
17:16:59 <monochrom> You don't say "Debians" just because it also has many source versions, installable versions, and unusable versions too while we're at it.
17:17:26 <lechner> hackage would stand for Haskell Package
17:17:37 <lechner> singular
17:17:40 <monochrom> N. O.
17:18:25 <monochrom> You don't say "debian would stand for deb package, singluar" either.
17:19:11 <lechner> .deb refers to Ian's ex-wife
17:19:26 <monochrom> Let me hop over to #debian to suggest "lechner taught me the logic that debian would stand for a deb package, therefore the whole distro should be debianS". What do you think?
17:19:47 <monochrom> I mean, sheesh.
17:25:57 seydar joins (~seydar@154-27-113-252.starry-inc.net)
17:30:04 × gawen quits (~gawen@user/gawen) (Quit: cya)
17:31:24 gawen joins (~gawen@user/gawen)
17:31:25 × Major_Biscuit quits (~MajorBisc@c-001-005-034.client.tudelft.eduvpn.nl) (Ping timeout: 240 seconds)
17:32:00 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
17:34:17 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds)
17:36:37 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
17:37:13 Vajb joins (~Vajb@2001:999:62:aa00:7f5a:4f10:c894:3813)
17:39:40 <monochrom> https://bartoszmilewski.com/2022/04/05/teaching-optics-through-conspiracy-theories/ is pretty nice.
17:39:41 mvk joins (~mvk@2607:fea8:5ce3:8500::9d5a)
17:43:08 ec joins (~ec@gateway/tor-sasl/ec)
17:44:35 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
17:46:07 <siraben> I'm defining binary numbers using type families and I want to write type-level factorial for them, but don't want to expose the underlying representation, is there a ViewPatterns-like thing for type families?
17:46:33 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
17:46:38 × Unicorn_Princess quits (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection)
17:46:49 <siraben> Oh I guess I can define type level If
17:50:34 × deadmarshal_ quits (~deadmarsh@95.38.112.46) (Ping timeout: 272 seconds)
17:52:01 jpds joins (~jpds@gateway/tor-sasl/jpds)
17:52:42 cheater joins (~Username@user/cheater)
17:54:24 hololeap_ joins (~hololeap@user/hololeap)
17:55:11 × vysn quits (~vysn@user/vysn) (Ping timeout: 268 seconds)
17:55:15 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds)
17:56:12 <siraben> oh that doesn't work because type-level evaluation is strict
18:00:51 zincy joins (~zincy@host86-160-236-152.range86-160.btcentralplus.com)
18:00:58 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
18:01:05 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
18:02:02 × coot quits (~coot@213.134.190.95) (Quit: coot)
18:02:27 × asivitz quits (uid178348@id-178348.tinside.irccloud.com) (Quit: Connection closed for inactivity)
18:03:20 × tubogram4 quits (~tubogram@user/tubogram) (*.net *.split)
18:03:20 × dons quits (~dons@user/dons) (*.net *.split)
18:03:20 × Axman6 quits (~Axman6@user/axman6) (*.net *.split)
18:05:04 Axman6 joins (~Axman6@user/axman6)
18:05:04 tubogram4 joins (~tubogram@user/tubogram)
18:05:04 dons joins (~dons@user/dons)
18:05:46 × neurocyte861449 quits (~neurocyte@user/neurocyte) (Read error: Connection reset by peer)
18:07:20 neurocyte8614492 joins (~neurocyte@IP-185238252073.dynamic.medianet-world.de)
18:07:20 × neurocyte8614492 quits (~neurocyte@IP-185238252073.dynamic.medianet-world.de) (Changing host)
18:07:20 neurocyte8614492 joins (~neurocyte@user/neurocyte)
18:09:24 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
18:10:11 Cale joins (~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com)
18:10:23 jakalx joins (~jakalx@base.jakalx.net)
18:11:08 hololeap joins (~hololeap@user/hololeap)
18:11:23 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
18:12:15 × hololeap_ quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds)
18:13:10 dextaa_54 joins (~dextaa@user/dextaa)
18:14:43 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
18:15:20 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
18:19:02 deadmarshal_ joins (~deadmarsh@95.38.112.46)
18:19:03 × Vajb quits (~Vajb@2001:999:62:aa00:7f5a:4f10:c894:3813) (Read error: Connection reset by peer)
18:19:37 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 248 seconds)
18:19:48 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
18:20:59 wootehfoot joins (~wootehfoo@user/wootehfoot)
18:21:35 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
18:21:42 × mvk quits (~mvk@2607:fea8:5ce3:8500::9d5a) (Ping timeout: 268 seconds)
18:22:15 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds)
18:23:51 × deadmarshal_ quits (~deadmarsh@95.38.112.46) (Ping timeout: 256 seconds)
18:27:56 Guest89 joins (~Guest89@2a01:41e1:440f:2c00:f9ba:f616:34ce:27bb)
18:28:05 _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl)
18:28:35 hololeap joins (~hololeap@user/hololeap)
18:29:05 jpds joins (~jpds@gateway/tor-sasl/jpds)
18:37:22 econo joins (uid147250@user/econo)
18:39:36 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
18:42:48 × redb quits (~nmh@136.49.49.211) (Ping timeout: 246 seconds)
18:43:07 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Ping timeout: 256 seconds)
18:45:45 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 248 seconds)
18:46:37 × epolanski quits (uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
18:47:50 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
18:48:50 × alp_ quits (~alp@user/alp) (Ping timeout: 268 seconds)
18:50:15 × yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection)
18:50:52 yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
18:53:27 coot joins (~coot@213.134.190.95)
18:55:53 × yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 248 seconds)
18:57:07 × lbseale quits (~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer)
18:58:32 × bezmuth quits (~bezmuth@host86-136-197-212.range86-136.btcentralplus.com) (Ping timeout: 246 seconds)
19:02:46 × benin quits (~benin@183.82.204.110) (Ping timeout: 272 seconds)
19:07:00 redb joins (~nmh@136.49.49.211)
19:09:33 benin joins (~benin@183.82.204.110)
19:11:24 × redb quits (~nmh@136.49.49.211) (Ping timeout: 240 seconds)
19:12:16 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds)
19:14:11 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
19:17:25 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
19:26:13 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
19:26:31 Pickchea joins (~private@user/pickchea)
19:27:47 haskellberryfinn joins (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
19:27:54 geekosaur joins (~geekosaur@xmonad/geekosaur)
19:30:18 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
19:30:40 redb joins (~nmh@136.49.49.211)
19:31:31 seydar joins (~seydar@154-27-113-252.starry-inc.net)
19:32:36 × vicfred quits (~vicfred@user/vicfred) (Quit: Leaving)
19:32:41 rekahsoft joins (~rekahsoft@cpe001b21a2fd89-cm64777ddc63a0.cpe.net.cable.rogers.com)
19:32:45 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
19:32:47 mvk joins (~mvk@2607:fea8:5ce3:8500::9d5a)
19:33:02 acidjnk joins (~acidjnk@p200300d0c7049f25b15f97e32406cde6.dip0.t-ipconnect.de)
19:34:08 × rekahsoft quits (~rekahsoft@cpe001b21a2fd89-cm64777ddc63a0.cpe.net.cable.rogers.com) (Remote host closed the connection)
19:37:02 Kaipi joins (~Kaiepi@156.34.47.253)
19:37:58 × redb quits (~nmh@136.49.49.211) (Ping timeout: 260 seconds)
19:38:10 × Kaiepi quits (~Kaiepi@156.34.47.253) (Ping timeout: 268 seconds)
19:38:46 jgeerds joins (~jgeerds@d5364b87.access.ecotel.net)
19:40:18 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
19:41:18 × Kaipi quits (~Kaiepi@156.34.47.253) (Remote host closed the connection)
19:41:52 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 268 seconds)
19:43:15 × fef quits (~thedawn@user/thedawn) (Ping timeout: 240 seconds)
19:44:19 × awpr quits (uid446117@id-446117.lymington.irccloud.com) (Quit: Connection closed for inactivity)
19:46:29 × doyougnu quits (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Ping timeout: 246 seconds)
19:47:15 × shapr quits (~user@pool-173-73-44-186.washdc.fios.verizon.net) (Remote host closed the connection)
19:47:20 seydar joins (~seydar@154-27-113-252.starry-inc.net)
19:47:32 × pooryorick quits (~pooryoric@87-119-174-173.tll.elisa.ee) (Ping timeout: 246 seconds)
19:48:14 redb joins (~nmh@136.49.49.211)
19:52:10 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds)
19:52:36 rekahsoft joins (~rekahsoft@cpe001b21a2fd89-cm64777ddc63a0.cpe.net.cable.rogers.com)
19:54:30 pooryorick joins (~pooryoric@87-119-174-173.tll.elisa.ee)
19:58:25 liz_ joins (~liz@host109-151-125-217.range109-151.btcentralplus.com)
20:02:46 × dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4.1)
20:03:19 × orcus quits (~orcus@user/brprice) (Ping timeout: 260 seconds)
20:03:47 orcus joins (~orcus@user/brprice)
20:03:55 × _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
20:05:53 alp_ joins (~alp@user/alp)
20:07:24 × vjoki quits (~vjoki@2a00:d880:3:1::fea1:9ae) (Ping timeout: 240 seconds)
20:08:23 × neurocyte8614492 quits (~neurocyte@user/neurocyte) (Ping timeout: 268 seconds)
20:09:24 yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
20:09:30 seydar joins (~seydar@154-27-113-252.starry-inc.net)
20:09:42 zeenk joins (~zeenk@2a02:2f04:a313:d600:8d26:ec9f:3ff6:fc94)
20:09:51 vjoki joins (~vjoki@2a00:d880:3:1::fea1:9ae)
20:12:47 × zincy quits (~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Remote host closed the connection)
20:14:21 × yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
20:14:33 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds)
20:15:15 vicfred joins (~vicfred@user/vicfred)
20:15:53 × chddr quits (~Thunderbi@91.226.35.164) (Ping timeout: 248 seconds)
20:17:32 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
20:19:21 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
20:19:34 hololeap_ joins (~hololeap@user/hololeap)
20:20:06 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds)
20:20:15 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds)
20:20:38 Lord_of_Life_ is now known as Lord_of_Life
20:21:56 seydar joins (~seydar@154-27-113-252.starry-inc.net)
20:26:18 × vjoki quits (~vjoki@2a00:d880:3:1::fea1:9ae) (Quit: ...)
20:26:23 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds)
20:27:01 vjoki joins (~vjoki@2a00:d880:3:1::fea1:9ae)
20:29:06 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
20:31:15 × hololeap_ quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds)
20:31:21 xkuru joins (~xkuru@user/xkuru)
20:32:10 hololeap_ joins (~hololeap@user/hololeap)
20:33:50 × coot quits (~coot@213.134.190.95) (Quit: coot)
20:34:03 seydar joins (~seydar@154-27-113-252.starry-inc.net)
20:34:57 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
20:35:05 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 248 seconds)
20:37:10 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
20:37:17 shapr joins (~user@pool-173-73-44-186.washdc.fios.verizon.net)
20:38:10 × tzh_ quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Remote host closed the connection)
20:38:58 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
20:39:28 zincy joins (~zincy@2a00:23c8:970c:4801:dc35:500f:d0de:de53)
20:39:48 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
20:42:10 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Remote host closed the connection)
20:42:52 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
20:43:36 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
20:44:34 seydar joins (~seydar@154-27-113-252.starry-inc.net)
20:48:07 × jgeerds quits (~jgeerds@d5364b87.access.ecotel.net) (Remote host closed the connection)
20:48:24 jgeerds joins (~jgeerds@d5364b87.access.ecotel.net)
20:48:40 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Remote host closed the connection)
20:49:03 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
20:51:40 × xkuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer)
20:53:14 img joins (~img@user/img)
20:53:45 × michalz quits (~michalz@185.246.204.122) (Remote host closed the connection)
20:53:49 xkuru joins (~xkuru@user/xkuru)
20:55:05 liz_ is now known as liz
20:55:32 seydar joins (~seydar@154-27-113-252.starry-inc.net)
21:00:15 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
21:06:15 × pretty_d1 quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
21:08:48 × jgeerds quits (~jgeerds@d5364b87.access.ecotel.net) (Ping timeout: 272 seconds)
21:12:21 yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
21:12:29 × zincy quits (~zincy@2a00:23c8:970c:4801:dc35:500f:d0de:de53) (Remote host closed the connection)
21:16:41 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
21:17:27 × yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
21:18:34 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
21:19:35 × zyklotomic quits (~ethan@res380d-128-61-86-37.res.gatech.edu) (Ping timeout: 250 seconds)
21:21:27 zyklotomic joins (~ethan@res380d-128-61-81-124.res.gatech.edu)
21:26:29 Guest53 joins (~Guest53@190.192.80.102)
21:28:33 × dfordivam1 quits (~dfordivam@tk2-219-19469.vs.sakura.ne.jp) (Ping timeout: 252 seconds)
21:29:34 dfordivam1 joins (~dfordivam@tk2-219-19469.vs.sakura.ne.jp)
21:39:55 × acidjnk quits (~acidjnk@p200300d0c7049f25b15f97e32406cde6.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
21:43:15 × wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 240 seconds)
21:45:28 × Teacup quits (~teacup@user/teacup) (Remote host closed the connection)
21:45:40 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:45:43 Teacup joins (~teacup@user/teacup)
21:50:15 × hololeap_ quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds)
21:50:24 wyrd joins (~wyrd@gateway/tor-sasl/wyrd)
21:52:51 cosimone joins (~user@93-47-228-79.ip115.fastwebnet.it)
21:52:59 × dcoutts_ quits (~duncan@host213-122-143-81.range213-122.btcentralplus.com) (Ping timeout: 260 seconds)
21:53:53 hololeap_ joins (~hololeap@user/hololeap)
21:59:07 awschnap joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
21:59:07 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Read error: Connection reset by peer)
21:59:55 × hololeap_ quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds)
22:01:25 hololeap_ joins (~hololeap@user/hololeap)
22:03:14 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
22:03:23 seydar joins (~seydar@154-27-113-252.starry-inc.net)
22:03:31 × vicfred quits (~vicfred@user/vicfred) (Quit: Leaving)
22:04:26 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
22:07:35 Sgeo joins (~Sgeo@user/sgeo)
22:09:17 × awschnap quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:09:29 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:10:14 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
22:15:42 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:15:57 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:16:04 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:16:22 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:16:29 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:16:45 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:16:53 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:17:08 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:17:15 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:17:30 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:17:37 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:17:50 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:17:58 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:18:14 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:18:21 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:18:35 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:18:42 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:18:56 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:19:03 Guest2780 joins (~Guest27@2601:281:d47f:1590::a504)
22:19:04 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:19:19 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:19:26 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:19:41 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:19:47 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:20:01 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:20:08 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 246 seconds)
22:20:09 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:20:23 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:20:31 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:20:45 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:20:52 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:21:06 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:21:14 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:21:28 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:21:36 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:21:51 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:21:58 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:22:12 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:22:20 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:22:35 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:22:41 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:22:56 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:23:03 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:23:17 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:23:25 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:23:32 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds)
22:23:39 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:23:46 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:24:02 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:24:09 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:24:23 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:24:31 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:24:46 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:24:52 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:25:07 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:25:14 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:25:23 × mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 246 seconds)
22:25:28 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:25:36 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:25:51 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:25:57 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:26:12 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:26:19 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:26:26 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
22:26:34 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:26:42 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:26:45 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
22:26:57 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:27:04 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:27:18 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:27:25 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:27:41 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:27:48 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:28:03 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:28:10 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:28:25 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:28:32 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:28:46 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:28:53 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:29:09 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:29:16 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:29:30 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:29:37 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:29:51 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:29:59 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:30:17 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:30:24 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:30:39 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:30:46 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:31:00 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:31:08 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:31:15 × haskellberryfinn quits (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 260 seconds)
22:31:23 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:31:29 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:31:45 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:31:52 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:32:05 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:32:13 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:32:29 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:32:35 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:32:49 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:32:57 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:33:12 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:33:19 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
22:36:47 <Guest89> Inside a Stack project is there anywhere else I need to add `ghc-lib-parser` as a dependency other than inside the `package.yaml`? Other libraries work just fine.
22:38:51 seydar joins (~seydar@154-27-113-252.starry-inc.net)
22:38:59 × zeenk quits (~zeenk@2a02:2f04:a313:d600:8d26:ec9f:3ff6:fc94) (Quit: Konversation terminated!)
22:43:14 dcoutts_ joins (~duncan@host213-122-143-81.range213-122.btcentralplus.com)
22:43:48 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds)
22:46:57 × Guest2780 quits (~Guest27@2601:281:d47f:1590::a504) (Quit: Client closed)
22:47:07 × Pickchea quits (~private@user/pickchea) (Ping timeout: 260 seconds)
22:49:10 seydar joins (~seydar@154-27-113-252.starry-inc.net)
22:53:39 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
22:55:51 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
23:01:38 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
23:02:01 machinedgod joins (~machinedg@24.105.81.50)
23:08:34 seydar joins (~seydar@154-27-113-252.starry-inc.net)
23:13:25 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
23:15:12 bezmuth joins (~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7)
23:16:29 yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
23:18:30 seydar joins (~seydar@154-27-113-252.starry-inc.net)
23:19:13 × liz quits (~liz@host109-151-125-217.range109-151.btcentralplus.com) (Quit: Lost terminal)
23:20:07 × xff0x quits (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) (Quit: xff0x)
23:21:45 xff0x joins (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp)
23:22:26 × xff0x quits (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) (Client Quit)
23:23:03 × alphabeta quits (~kilolympu@31.205.200.235) (Ping timeout: 260 seconds)
23:23:15 pera joins (~pera@user/pera)
23:23:42 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds)
23:24:00 xff0x joins (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp)
23:24:02 × xff0x quits (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) (Client Quit)
23:25:03 xff0x joins (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp)
23:26:17 × xff0x quits (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) (Client Quit)
23:26:29 xff0x joins (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp)
23:26:53 × yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection)
23:27:20 × xff0x quits (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) (Client Quit)
23:27:36 xff0x joins (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp)
23:28:17 yauhsien joins (~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
23:29:51 × mncheck quits (~mncheck@193.224.205.254) (Ping timeout: 256 seconds)
23:29:53 <dons> morning all
23:29:54 kilolympus joins (~kilolympu@31.205.200.235)
23:31:55 × lemonsnicks quits (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Ping timeout: 260 seconds)
23:31:57 <geekosaur> o/
23:33:15 × yauhsien quits (~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
23:33:39 seydar joins (~seydar@154-27-113-252.starry-inc.net)
23:34:04 chenqisu1 joins (~chenqisu1@183.217.200.239)
23:37:00 × alp_ quits (~alp@user/alp) (Ping timeout: 240 seconds)
23:37:32 lemonsnicks joins (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
23:37:54 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
23:42:09 × xff0x quits (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) (Quit: xff0x)
23:42:23 xff0x joins (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp)
23:45:15 liz joins (~liz@host109-151-125-217.range109-151.btcentralplus.com)
23:46:27 × xff0x quits (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) (Client Quit)
23:46:45 xff0x joins (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp)
23:51:34 × ec quits (~ec@gateway/tor-sasl/ec) (Quit: ec)
23:55:44 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 260 seconds)
23:58:07 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
23:59:01 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds)
23:59:31 seydar joins (~seydar@154-27-113-252.starry-inc.net)

All times are in UTC on 2022-04-07.