2022/04/07

2022-04-07 00:00:06 +0200 <monochrom> I'll post my proof paste in a moment.
2022-04-07 00:01:17 +0200MajorBiscuit(~MajorBisc@86-88-79-148.fixed.kpn.net) (Quit: WeeChat 3.4)
2022-04-07 00:01:55 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-07 00:02:25 +0200 <monochrom> https://paste.tomsmeding.com/m6GansIE
2022-04-07 00:04:18 +0200 <monochrom> I should put it on an exam and devastate the whole class!
2022-04-07 00:04:50 +0200mikoto-chan(~mikoto-ch@213.177.151.239) (Ping timeout: 246 seconds)
2022-04-07 00:06:39 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2022-04-07 00:07:18 +0200Akiva(~Akiva@user/Akiva)
2022-04-07 00:10:13 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds)
2022-04-07 00:10:56 +0200Guest27(~Guest27@2601:281:d47f:1590::e9d9) (Ping timeout: 250 seconds)
2022-04-07 00:12:04 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-04-07 00:12:38 +0200acidjnk(~acidjnk@p200300d0c7049f39b8d686b04cd6897b.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2022-04-07 00:15:42 +0200chargen(~chargen@8.31.163.87) (Leaving)
2022-04-07 00:25:41 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2022-04-07 00:25:48 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-04-07 00:29:53 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-04-07 00:30:18 +0200 <maerwald[m]> You like to torment students, don't you? ; )
2022-04-07 00:34:14 +0200img(~img@user/img)
2022-04-07 00:35:22 +0200redb(~nmh@136.49.49.211) (Ping timeout: 272 seconds)
2022-04-07 00:35:26 +0200 <monochrom> The class average is always too high, I always look for upping the game!
2022-04-07 00:36:57 +0200 <hpc> it's like configuring a sound system, you get the full range of the class > 0 and < 100 (non-inclusive), and then adjust the curve :D
2022-04-07 00:37:42 +0200 <maerwald[m]> So ppl get punished for being above average?
2022-04-07 00:39:32 +0200 <hpc> so you find the limit of everyone's knowledge and have an accurate basis to decide the curve from
2022-04-07 00:39:40 +0200 <hpc> maybe "punishing", maybe "rewarding"
2022-04-07 00:40:01 +0200 <hpc> if almost everyone is getting 100s, maybe the class is too easy
2022-04-07 00:40:18 +0200 <hpc> and you can go through the concepts faster, or get more advanced
2022-04-07 00:41:02 +0200jgeerds(~jgeerds@d5364b87.access.ecotel.net) (Ping timeout: 260 seconds)
2022-04-07 00:41:11 +0200 <maerwald[m]> Maybe they just want to be done so they can go home and you pour more stuff at them :D
2022-04-07 00:41:50 +0200 <maerwald[m]> They'll lern that too and then pretend to be average
2022-04-07 00:42:53 +0200 <monochrom> Ppl get punished. Period. >:)
2022-04-07 00:42:56 +0200 <hpc> if they want to be lazy that's on them
2022-04-07 00:42:56 +0200stef204(~stef204@user/stef204) (Quit: WeeChat 3.5)
2022-04-07 00:44:05 +0200 <maerwald[m]> They're usually lazy, because that allows fusing homework close before the class
2022-04-07 00:44:54 +0200 <abastro[m]> Well, Haskell has laziness so
2022-04-07 00:45:06 +0200dcoutts_(~duncan@host213-122-143-81.range213-122.btcentralplus.com) (Ping timeout: 268 seconds)
2022-04-07 00:45:13 +0200 <hpc> strictly speaking, haskell is just non-strict :P
2022-04-07 00:45:21 +0200 <abastro[m]> Students learning it would be kind of lazy
2022-04-07 00:45:31 +0200 <abastro[m]> Ah :P
2022-04-07 00:45:50 +0200bezmuth(~bezmuth@host86-136-197-212.range86-136.btcentralplus.com)
2022-04-07 00:47:32 +0200 <abastro[m]> Wait what is that exam problem, that sounds hellish
2022-04-07 00:47:45 +0200 <maerwald[m]> This is how laziness works: this should be evaluated, unless... or maybe not. Ohh...let me check that in the debugger.
2022-04-07 00:47:59 +0200redb(~nmh@136.49.49.211)
2022-04-07 00:48:44 +0200 <hpc> that's the beauty of IO
2022-04-07 00:48:48 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-04-07 00:48:53 +0200 <abastro[m]> Yep, laziness allows doing what is necessary, being more efficient
2022-04-07 00:48:54 +0200 <hpc> the students are evaluated just before being execut- i mean, what?
2022-04-07 00:49:18 +0200 <abastro[m]> Haha
2022-04-07 00:49:30 +0200 <maerwald[m]> abastro: that's a gross oversimplification
2022-04-07 00:49:56 +0200 <maerwald[m]> Laziness gets you punished by monochrom
2022-04-07 00:50:00 +0200 <abastro[m]> Lmao
2022-04-07 00:50:24 +0200 <abastro[m]> <del>But..but sensei haskell is lazy by default</del>
2022-04-07 00:50:46 +0200 <maerwald[m]> Unless you're above average, then you get punished even of you are strict
2022-04-07 00:51:30 +0200 <abastro[m]> Wait why?
2022-04-07 00:53:28 +0200 <monochrom> abastro[m]: I was just kidding, my courses are really in no position to talk about MonadFix, too many other topics of relevance already. But the question was "from MonadFix laws can you prove mfix (const t) = t". My solution is at https://paste.tomsmeding.com/m6GansIE
2022-04-07 00:54:26 +0200 <abastro[m]> Oh, interesting
2022-04-07 00:56:49 +0200 <abastro[m]> Btw is your profession professor?
2022-04-07 00:56:50 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-04-07 00:57:35 +0200hololeap_(~hololeap@user/hololeap) (Ping timeout: 240 seconds)
2022-04-07 00:57:51 +0200hololeap_(~hololeap@user/hololeap)
2022-04-07 00:58:45 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-04-07 01:00:18 +0200alp_(~alp@user/alp)
2022-04-07 01:00:21 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-04-07 01:01:01 +0200mvk(~mvk@2607:fea8:5ce3:8500::9d5a) (Ping timeout: 240 seconds)
2022-04-07 01:01:18 +0200Guest89(~Guest89@2a01:41e1:47ec:c500:e741:fb6e:5f12:6189) (Quit: Client closed)
2022-04-07 01:02:24 +0200 <abastro[m]> Oh I'm sorry for asking..
2022-04-07 01:03:17 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds)
2022-04-07 01:03:18 +0200Guest89(~Guest89@2a01:41e1:47ec:c500:e741:fb6e:5f12:6189)
2022-04-07 01:03:43 +0200johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2022-04-07 01:05:46 +0200mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 272 seconds)
2022-04-07 01:06:14 +0200koz(~koz@121.99.240.58) (Ping timeout: 260 seconds)
2022-04-07 01:10:09 +0200Guest|3(~Guest|3@taffa.wpa.dal.ca)
2022-04-07 01:10:38 +0200Akiva(~Akiva@user/Akiva) (Ping timeout: 246 seconds)
2022-04-07 01:10:50 +0200 <Guest|3> getting the error message "curl: (60) SSL certificate problem: certificate has expired
2022-04-07 01:10:51 +0200 <Guest|3> More details here: https://curl.haxx.se/docs/sslcerts.html"
2022-04-07 01:11:08 +0200 <Guest|3> when trying to install GHC
2022-04-07 01:11:29 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 01:11:57 +0200koz(~koz@121.99.240.58)
2022-04-07 01:12:02 +0200chomwitt(~chomwitt@athedsl-31574.home.otenet.gr) (Ping timeout: 252 seconds)
2022-04-07 01:12:33 +0200bezmuth(~bezmuth@host86-136-197-212.range86-136.btcentralplus.com) (Quit: bezmuth)
2022-04-07 01:12:45 +0200 <Guest|3> can somebody please help me figure out how to download GHC?
2022-04-07 01:12:55 +0200bezmuth(~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7)
2022-04-07 01:15:06 +0200 <geekosaur> works here. are you sure you don't have out of date root certificates?
2022-04-07 01:16:32 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds)
2022-04-07 01:21:46 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-04-07 01:21:53 +0200 <hpc> have you tried the fixes on that link?
2022-04-07 01:24:58 +0200 <Guest|3> I have fixed it now, thank you for the responses
2022-04-07 01:25:02 +0200Guest|3(~Guest|3@taffa.wpa.dal.ca) (Quit: Connection closed)
2022-04-07 01:27:22 +0200Akiva(~Akiva@user/Akiva)
2022-04-07 01:29:08 +0200Guest27(~Guest27@2601:281:d47f:1590::e9d9)
2022-04-07 01:30:03 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-04-07 01:31:21 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
2022-04-07 01:32:15 +0200gurkenglas(~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) (Ping timeout: 260 seconds)
2022-04-07 01:34:52 +0200wrengr(~wrengr@249.189.233.35.bc.googleusercontent.com)
2022-04-07 01:36:23 +0200DNH(~DNH@2a02:8108:1100:16d8:c8af:4307:df41:9668) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-04-07 01:43:55 +0200ec(~ec@gateway/tor-sasl/ec) (Quit: ec)
2022-04-07 01:44:45 +0200 <dons> moin moin
2022-04-07 01:45:49 +0200 <geekosaur> o/
2022-04-07 01:53:29 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-04-07 01:58:51 +0200Midjak(~Midjak@226.34.136.77.rev.sfr.net) (Quit: This computer has gone to sleep)
2022-04-07 02:01:14 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
2022-04-07 02:01:29 +0200califax(~califax@user/califx) (Remote host closed the connection)
2022-04-07 02:03:34 +0200califax(~califax@user/califx)
2022-04-07 02:03:47 +0200theproffesor(~theproffe@2601:282:847f:7f00::87) (Quit: ¯\_(ツ)_/¯)
2022-04-07 02:04:00 +0200theproffesor(~theprofff@2601:282:847f:7f00::87)
2022-04-07 02:04:11 +0200theproffesor(~theprofff@2601:282:847f:7f00::87) (Changing host)
2022-04-07 02:04:11 +0200theproffesor(~theprofff@user/theproffesor)
2022-04-07 02:04:18 +0200Akiva(~Akiva@user/Akiva) (Ping timeout: 260 seconds)
2022-04-07 02:07:07 +0200redb(~nmh@136.49.49.211) (Ping timeout: 268 seconds)
2022-04-07 02:07:43 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-04-07 02:08:23 +0200bezmuth(~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7) (Ping timeout: 260 seconds)
2022-04-07 02:11:15 +0200Guest89(~Guest89@2a01:41e1:47ec:c500:e741:fb6e:5f12:6189) (Quit: Client closed)
2022-04-07 02:11:43 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2022-04-07 02:13:26 +0200 <abastro[m]> Morning
2022-04-07 02:14:09 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2022-04-07 02:16:59 +0200Guest27(~Guest27@2601:281:d47f:1590::e9d9) (Quit: Client closed)
2022-04-07 02:17:12 +0200Guest27(~Guest27@2601:281:d47f:1590::e9d9)
2022-04-07 02:18:24 +0200bezmuth(~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7)
2022-04-07 02:18:33 +0200Guest27(~Guest27@2601:281:d47f:1590::e9d9) (Client Quit)
2022-04-07 02:20:54 +0200 <Axman6> o/
2022-04-07 02:23:21 +0200redb(~nmh@136.49.49.211)
2022-04-07 02:31:47 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
2022-04-07 02:36:14 +0200lbseale(~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer)
2022-04-07 02:38:09 +0200exilepilot(~exilepilo@2a00:23c4:ba88:fc01:d059:aa64:8c3f:a223)
2022-04-07 02:38:23 +0200exilepilot(~exilepilo@2a00:23c4:ba88:fc01:d059:aa64:8c3f:a223) (Remote host closed the connection)
2022-04-07 02:38:44 +0200exilepilot(~exilepilo@2a00:23c4:ba88:fc01:d059:aa64:8c3f:a223)
2022-04-07 02:39:33 +0200 <dons> its a ghc -j6 +RTS -A256m -n4m -RTS sort of day
2022-04-07 02:39:48 +0200AndrewLeetPeet
2022-04-07 02:42:35 +0200LeetPeet(Andrew@user/AndrewYu) (Quit: Leaving)
2022-04-07 02:42:48 +0200AndrewYu(Andrew@user/AndrewYu)
2022-04-07 02:45:01 +0200bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 250 seconds)
2022-04-07 02:45:47 +0200AndrewYuAndrew
2022-04-07 02:48:20 +0200 <energizer> are there languages where an expression can have more than one type?
2022-04-07 02:50:54 +0200xff0x(~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) (Ping timeout: 268 seconds)
2022-04-07 02:51:03 +0200 <dons> you mean like generics? or polymorphism?
2022-04-07 02:51:07 +0200 <Axman6> the expression `1` in Haskell has many possible types
2022-04-07 02:51:13 +0200 <Axman6> :t 1
2022-04-07 02:51:14 +0200 <lambdabot> Num p => p
2022-04-07 02:51:16 +0200 <Axman6> :t 1 : Int
2022-04-07 02:51:17 +0200 <lambdabot> error:
2022-04-07 02:51:17 +0200 <lambdabot> • Data constructor not in scope: Int :: [a]
2022-04-07 02:51:17 +0200 <lambdabot> • Perhaps you meant variable ‘int’ (imported from Text.PrettyPrint.HughesPJ)
2022-04-07 02:51:19 +0200 <Axman6> :t 1 : Integer
2022-04-07 02:51:20 +0200 <lambdabot> error:
2022-04-07 02:51:20 +0200 <lambdabot> • Data constructor not in scope: Integer :: [a]
2022-04-07 02:51:20 +0200 <lambdabot> • Perhaps you meant one of these:
2022-04-07 02:51:22 +0200 <Axman6> :t 1 :: Integer
2022-04-07 02:51:23 +0200 <lambdabot> Integer
2022-04-07 02:51:25 +0200 <Axman6> too much Daml
2022-04-07 02:51:32 +0200 <Axman6> :t 1 :: Expr
2022-04-07 02:51:33 +0200 <lambdabot> Expr
2022-04-07 02:51:36 +0200 <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 ..
2022-04-07 02:52:34 +0200 <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
2022-04-07 02:53:12 +0200 <dons> but its just a form of polymorphism, similar to class-based in haskell ( class T a ;; instance T Int ; instance T Bool
2022-04-07 02:53:34 +0200 <dons> or data T = TInt Int | TBool Bool is maybe closer to the Flow version
2022-04-07 02:53:45 +0200 <energizer> is "Num p => p" a type?
2022-04-07 02:54:35 +0200 <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`
2022-04-07 02:54:41 +0200 <dons> but yeah, its a type.
2022-04-07 02:54:49 +0200 <dons> (what is a type ?!? is a big question)
2022-04-07 02:56:00 +0200 <dons> "Num p => p"
2022-04-07 02:56:28 +0200 <energizer> if i take what you said literally i get p is a type and "Num p => p" represents the type of that p?
2022-04-07 02:56:36 +0200 <energizer> but i dont think that's what you meant
2022-04-07 02:56:43 +0200 <dons> nope.
2022-04-07 02:57:04 +0200 <dons> type systems let you specifify types for values in computer programs, right?
2022-04-07 02:57:21 +0200 <energizer> i dunno they seem to be about expressions
2022-04-07 02:57:29 +0200 <dons> well, expressions are values too
2022-04-07 02:57:40 +0200 <energizer> an expression has exactly one type, iirc
2022-04-07 02:58:05 +0200 <dons> so, v is a value. v :: Num p => p, says that the value `v` has a type, "Num p => p"
2022-04-07 02:58:22 +0200 <dons> , and that type is a generic one, meaning the concrete type `p` is one of a member of the set Num
2022-04-07 02:58:38 +0200 <dons> right. our type checkers go to a lot of lengths to ensure there's precisely one type
2022-04-07 02:58:52 +0200 <cheater> o/ dons
2022-04-07 02:58:58 +0200 <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
2022-04-07 02:59:22 +0200 <dons> you can write a lot of haskell programs without every writing down the type signatures, yeah?
2022-04-07 02:59:43 +0200 <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
2022-04-07 02:59:58 +0200 <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
2022-04-07 03:00:30 +0200 <dons> so "Num p => p" is such a signature. if attached to a value with ":: " it specifies the valid types for the value
2022-04-07 03:01:50 +0200 <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"
2022-04-07 03:02:03 +0200alp_(~alp@user/alp) (Ping timeout: 260 seconds)
2022-04-07 03:02:10 +0200 <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
2022-04-07 03:02:19 +0200redb(~nmh@136.49.49.211) (Ping timeout: 256 seconds)
2022-04-07 03:02:56 +0200 <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
2022-04-07 03:03:14 +0200 <dons> more common types are things like, length :: [a] -> Int
2022-04-07 03:03:36 +0200 <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
2022-04-07 03:04:31 +0200szkl(uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2022-04-07 03:05:45 +0200mud(~mud@user/kadoban)
2022-04-07 03:06:24 +0200 <energizer> how would you compare PFPL vs TAPL?
2022-04-07 03:07:03 +0200 <dons> I found PFPL more foundational. it changed how I think about programming languages
2022-04-07 03:12:06 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 03:14:02 +0200 <energizer> dons: i noticed you said value instead of expression
2022-04-07 03:14:44 +0200 <dons> different languages distinguish values and expressions, but in a lazy language like haskell its less clear
2022-04-07 03:14:53 +0200redb(~nmh@136.49.49.211)
2022-04-07 03:15:04 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-04-07 03:15:04 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-04-07 03:15:04 +0200wroathe(~wroathe@user/wroathe)
2022-04-07 03:16:05 +0200 <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?)
2022-04-07 03:16:05 +0200 <energizer> what is the difference between a value and expression in ocaml or nix or whatever?
2022-04-07 03:16:26 +0200 <energizer> er, not nix
2022-04-07 03:16:28 +0200 <dons> you might have some evaluation to do, to get the expression down to a value.
2022-04-07 03:16:33 +0200abastro(~abab9579@192.249.26.131)
2022-04-07 03:16:39 +0200 <dons> and you can probably do different things with values than expressions
2022-04-07 03:17:03 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
2022-04-07 03:17:04 +0200 <dons> similarly with values that have unboxed types in haskell. they are a bit more restricted, can't be bottom
2022-04-07 03:17:46 +0200 <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
2022-04-07 03:18:34 +0200 <dons> at least more typed functional languages let you write some knid of type signature for expressions, or values, almost anywhere.
2022-04-07 03:19:36 +0200xff0x(~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp)
2022-04-07 03:20:06 +0200neurocyte8614492(~neurocyte@IP-185238252073.dynamic.medianet-world.de)
2022-04-07 03:20:06 +0200neurocyte8614492(~neurocyte@IP-185238252073.dynamic.medianet-world.de) (Changing host)
2022-04-07 03:20:06 +0200neurocyte8614492(~neurocyte@user/neurocyte)
2022-04-07 03:22:21 +0200neurocyte861449(~neurocyte@user/neurocyte) (Ping timeout: 268 seconds)
2022-04-07 03:22:21 +0200neurocyte8614492neurocyte861449
2022-04-07 03:23:16 +0200frost(~frost@user/frost)
2022-04-07 03:23:58 +0200 <dons> we don't really distinguish expressions and commands, but lots of languages do.
2022-04-07 03:24:23 +0200 <dons> other than in the do-notation, which I guess does make syntactic sugar for a particular kind of expression (monadically-typed sones)
2022-04-07 03:27:01 +0200 <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.
2022-04-07 03:27:32 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-04-07 03:27:54 +0200kaph(~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) (Ping timeout: 268 seconds)
2022-04-07 03:28:24 +0200vysn(~vysn@user/vysn)
2022-04-07 03:30:02 +0200Chai-T-Rex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2022-04-07 03:30:28 +0200Chai-T-Rex(~ChaiTRex@user/chaitrex)
2022-04-07 03:35:11 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
2022-04-07 03:36:32 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 03:38:01 +0200Kaipi(~Kaiepi@156.34.47.253) (Ping timeout: 248 seconds)
2022-04-07 03:38:58 +0200exilepilot(~exilepilo@2a00:23c4:ba88:fc01:d059:aa64:8c3f:a223) (Quit: Leaving)
2022-04-07 03:39:13 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-04-07 03:39:25 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-04-07 03:41:13 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds)
2022-04-07 03:44:34 +0200 <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}
2022-04-07 03:44:51 +0200bezmuth_(~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7)
2022-04-07 03:45:01 +0200bezmuth(~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7) (Ping timeout: 240 seconds)
2022-04-07 03:45:27 +0200 <dons> yeah
2022-04-07 03:45:27 +0200bezmuth_bezmuth
2022-04-07 03:48:44 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 03:53:29 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds)
2022-04-07 03:56:01 +0200danso(~danso@danso.ca) ()
2022-04-07 03:59:58 +0200redb(~nmh@136.49.49.211) (Ping timeout: 268 seconds)
2022-04-07 04:00:57 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 04:01:26 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds)
2022-04-07 04:01:34 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-07 04:05:47 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
2022-04-07 04:12:59 +0200ubert(~Thunderbi@p200300ecdf15881ccd0eab025279bcac.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2022-04-07 04:13:09 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 04:13:16 +0200ubert(~Thunderbi@p200300ecdf15885c99f35b3e45127b02.dip0.t-ipconnect.de)
2022-04-07 04:17:32 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds)
2022-04-07 04:18:52 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-04-07 04:19:07 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-04-07 04:19:14 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-04-07 04:19:29 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-04-07 04:19:36 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-04-07 04:21:26 +0200redb(~nmh@136.49.49.211)
2022-04-07 04:26:11 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-04-07 04:26:38 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Remote host closed the connection)
2022-04-07 04:28:02 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2022-04-07 04:28:05 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-04-07 04:30:58 +0200redb(~nmh@136.49.49.211) (Ping timeout: 272 seconds)
2022-04-07 04:31:11 +0200abastro(~abab9579@192.249.26.131) (Ping timeout: 246 seconds)
2022-04-07 04:31:41 +0200liz(~liz@host109-151-125-217.range109-151.btcentralplus.com) (Quit: Lost terminal)
2022-04-07 04:35:52 +0200 <jackdk> Axman6: https://github.com/system-f/fp-course#demonstrate-io-maintains-referential-transparency
2022-04-07 04:36:40 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Remote host closed the connection)
2022-04-07 04:37:39 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 04:37:41 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2022-04-07 04:37:45 +0200bezmuth(~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7) (Ping timeout: 248 seconds)
2022-04-07 04:42:22 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds)
2022-04-07 04:43:08 +0200redb(~nmh@136.49.49.211)
2022-04-07 04:43:34 +0200 <abastro[m]> Tho that is more relevant with pure sharing
2022-04-07 04:43:37 +0200 <abastro[m]> Using pure let
2022-04-07 04:48:04 +0200redb(~nmh@136.49.49.211) (Ping timeout: 268 seconds)
2022-04-07 04:48:35 +0200terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
2022-04-07 04:49:50 +0200terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1)
2022-04-07 04:49:52 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 04:54:31 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
2022-04-07 04:56:36 +0200 <Axman6> dons: why do you need `Foreign.CPP.Dynamic.parseJSON line`?
2022-04-07 04:57:45 +0200 <dons> that's the folly json parser, bytestring -> Value
2022-04-07 04:58:01 +0200 <dons> tends to be 2-3x more efficient than aeson
2022-04-07 04:58:06 +0200 <dons> though i should probably test that
2022-04-07 05:00:00 +0200 <abastro[m]> Thin layer around C++ json parser?
2022-04-07 05:00:15 +0200 <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
2022-04-07 05:00:56 +0200 <dons> right, ideally here i would not build the intermediate Value from parseJSON, just to build a LSIF KeyFact
2022-04-07 05:01:06 +0200 <dons> stream into the result, fusing the intermediate data away
2022-04-07 05:02:05 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 05:02:35 +0200 <abastro[m]> C++ is faster than Haskell anyway
2022-04-07 05:03:22 +0200 <Axman6> that isn't findamentally true
2022-04-07 05:03:26 +0200 <zero> abastro[m]: can you really say a language is faster than another?
2022-04-07 05:03:39 +0200 <Axman6> (In fact, dons has several blog posts showing that can be untrue)
2022-04-07 05:03:57 +0200 <dons> haha
2022-04-07 05:04:12 +0200 <abastro[m]> I mean, in average it is faster
2022-04-07 05:04:27 +0200 <zero> abastro[m]: what do you mean by average?
2022-04-07 05:04:31 +0200 <abastro[m]> With fastest library of C++ faster than fastest library of Haskell
2022-04-07 05:04:32 +0200 <zero> and what do you mean by faster?
2022-04-07 05:04:34 +0200redb(~nmh@136.49.49.211)
2022-04-07 05:05:21 +0200 <dons> its often slower if you factor in developer time fixing segfaults as a cost ;)
2022-04-07 05:05:33 +0200 <zero> :) there we go
2022-04-07 05:05:57 +0200 <zero> that is *one* good point
2022-04-07 05:07:11 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds)
2022-04-07 05:07:41 +0200 <sm> also for some problems it will be slower to express it in C++ (and for others, vice versa)
2022-04-07 05:08:46 +0200 <abastro[m]> I mean in time taken in runtime
2022-04-07 05:09:02 +0200redb(~nmh@136.49.49.211) (Ping timeout: 268 seconds)
2022-04-07 05:09:35 +0200redb(~nmh@136.49.49.211)
2022-04-07 05:09:55 +0200 <sm> for simple problems that's typically true, for complicated ones, less so
2022-04-07 05:10:12 +0200 <abastro[m]> So I mean, for simple problems like this, C++ is speedier
2022-04-07 05:10:17 +0200cdman(~dcm@27.2.216.134)
2022-04-07 05:10:17 +0200cdman(~dcm@27.2.216.134) (Changing host)
2022-04-07 05:10:17 +0200cdman(~dcm@user/dmc/x-4369397)
2022-04-07 05:10:46 +0200 <sm> you're not wrong, we're just point out the nuances
2022-04-07 05:11:10 +0200 <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.
2022-04-07 05:11:12 +0200 <dibblego> red cars are faster than C++
2022-04-07 05:11:27 +0200 <dons> i also wouldn't write the rest of it in C++ :} since its all symbolic manipulation stuff
2022-04-07 05:11:48 +0200 <dons> also the service is sensitive to the performance of JSON ingestion
2022-04-07 05:11:51 +0200 <dons> so worth spending a bit of effort
2022-04-07 05:11:56 +0200 <dons> make sensible tradeoffs
2022-04-07 05:12:00 +0200 <dons> be pragmatic
2022-04-07 05:12:46 +0200 <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
2022-04-07 05:13:00 +0200 <dons> lesson here is: don't use json
2022-04-07 05:13:13 +0200 <sm> programming! hurrah! 🎉
2022-04-07 05:13:45 +0200 <dons> the first mistake was writing programs. that made things slower
2022-04-07 05:13:58 +0200redb(~nmh@136.49.49.211) (Ping timeout: 268 seconds)
2022-04-07 05:14:30 +0200 <abastro[m]> Ye I am just sharing opinion that for simple parts which need performance, thin wrapper around C++ libs would be the best
2022-04-07 05:14:31 +0200smspent the last hour bulletproofing a stupid 50 line haskell script
2022-04-07 05:14:50 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 05:14:59 +0200 <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.
2022-04-07 05:15:42 +0200 <sm> hurrah!
2022-04-07 05:17:17 +0200 <dons> nice
2022-04-07 05:17:51 +0200 <abastro[m]> Nice exception
2022-04-07 05:18:17 +0200 <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.
2022-04-07 05:19:14 +0200 <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
2022-04-07 05:19:27 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
2022-04-07 05:20:36 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-04-07 05:22:02 +0200 <abastro[m]> My dumb brain says to use TCP communication
2022-04-07 05:24:22 +0200 <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.
2022-04-07 05:24:39 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
2022-04-07 05:26:36 +0200 <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.
2022-04-07 05:27:49 +0200 <sm> do you need it to be fast ?
2022-04-07 05:28:20 +0200Dorkside62(~dorkside@208.190.197.222)
2022-04-07 05:28:35 +0200deadmarshal_(~deadmarsh@95.38.112.46)
2022-04-07 05:28:41 +0200Dorkside6(~dorkside@208.190.197.222) (Read error: Connection reset by peer)
2022-04-07 05:28:41 +0200Dorkside62Dorkside6
2022-04-07 05:31:29 +0200 <sm> I guess both haskell and python have FFI that can see the C-ish structures
2022-04-07 05:31:38 +0200 <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.
2022-04-07 05:33:46 +0200 <abastro[m]> Wait using TCP is buggy?
2022-04-07 05:35:27 +0200 <abastro[m]> The rock bottom technology underlining the entire internet?
2022-04-07 05:35:37 +0200smis shocked
2022-04-07 05:35:40 +0200 <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
2022-04-07 05:36:59 +0200 <Henson> dealing with disconnects and timeouts, and reconnections was unpleasant.
2022-04-07 05:38:17 +0200 <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
2022-04-07 05:38:52 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 05:41:04 +0200awpr(uid446117@id-446117.lymington.irccloud.com)
2022-04-07 05:43:06 +0200redb(~nmh@136.49.49.211)
2022-04-07 05:43:15 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
2022-04-07 05:44:45 +0200 <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
2022-04-07 05:46:57 +0200mbuf(~Shakthi@122.162.142.187)
2022-04-07 05:47:46 +0200[_](~itchyjunk@user/itchyjunk/x-7353470)
2022-04-07 05:48:14 +0200redb(~nmh@136.49.49.211) (Ping timeout: 272 seconds)
2022-04-07 05:49:18 +0200redb(~nmh@136.49.49.211)
2022-04-07 05:49:57 +0200 <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!
2022-04-07 05:51:08 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 05:51:28 +0200 <monochrom> Use invisible characters for filenames, too.
2022-04-07 05:51:35 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 268 seconds)
2022-04-07 05:52:04 +0200 <monochrom> open(" \n\n \n\n\n", ...)
2022-04-07 05:52:07 +0200 <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.
2022-04-07 05:52:53 +0200 <Henson> monochrom: haha, that would be a nasty filename
2022-04-07 05:53:52 +0200 <abastro[m]> Oh, so TCP was too low level for you
2022-04-07 05:54:01 +0200redb(~nmh@136.49.49.211) (Ping timeout: 256 seconds)
2022-04-07 05:54:25 +0200redb(~nmh@136.49.49.211)
2022-04-07 05:54:58 +0200 <abastro[m]> Oh, making files is a briliant idea
2022-04-07 05:55:07 +0200 <abastro[m]> Memory-mapped files good
2022-04-07 05:55:37 +0200 <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
2022-04-07 05:55:43 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
2022-04-07 05:56:16 +0200 <Henson> Axman6++
2022-04-07 05:57:05 +0200 <Henson> hmm, maybe I'm thinkin of the bot in the #nixos channel.
2022-04-07 05:57:09 +0200 <Axman6> "Fark, did I call the final version "\t\n \t" or "\n\t \t"???"
2022-04-07 05:57:20 +0200 <Axman6> @karma Axman6
2022-04-07 05:57:20 +0200 <lambdabot> You have a karma of 2
2022-04-07 05:57:24 +0200 <Henson> Axman6: thanks for the suggestion.
2022-04-07 05:57:36 +0200 <Axman6> Honestyl it was a joke, but it would probably work
2022-04-07 05:57:53 +0200 <Henson> Axman6: well, I think it would work, and it was a good suggestion, even if it was a joke.
2022-04-07 05:58:17 +0200 <Axman6> I think it would work too, particularly if you don't need to persist the data
2022-04-07 05:58:33 +0200 <Axman6> even allows you to have the reading side read data as soon as it's written
2022-04-07 05:59:00 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-04-07 05:59:07 +0200redb(~nmh@136.49.49.211) (Ping timeout: 256 seconds)
2022-04-07 05:59:36 +0200 <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)
2022-04-07 06:01:08 +0200Ram-Z(~Ram-Z@li1814-254.members.linode.com) (Ping timeout: 260 seconds)
2022-04-07 06:02:59 +0200 <Axman6> no time like the present!
2022-04-07 06:03:05 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 256 seconds)
2022-04-07 06:03:47 +0200 <abastro[m]> Well tbh using web technology for everything is quite a meme
2022-04-07 06:12:46 +0200abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Remote host closed the connection)
2022-04-07 06:12:48 +0200Ram-Z(~Ram-Z@li1814-254.members.linode.com)
2022-04-07 06:15:37 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 06:18:03 +0200 <Axman6> web technology has also moved much more towards networking technology too though
2022-04-07 06:18:38 +0200Henson(~kvirc@107-179-133-201.cpe.teksavvy.com) (Quit: thanks for the help!)
2022-04-07 06:18:41 +0200 <Axman6> like WebSockets give you bidirectional sockets
2022-04-07 06:20:09 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds)
2022-04-07 06:20:44 +0200solrize(~solrize@user/solrize) (Remote host closed the connection)
2022-04-07 06:22:23 +0200 <Axman6> @hoogle Optic s s a a -> s -> Maybe a -> s
2022-04-07 06:22:23 +0200 <lambdabot> No results found
2022-04-07 06:22:36 +0200 <Axman6> @hoogle Optic p s s a a -> s -> Maybe a -> s
2022-04-07 06:22:37 +0200 <lambdabot> No results found
2022-04-07 06:23:56 +0200 <abastro[m]> I should totally rename my secret folder into "\n"
2022-04-07 06:24:53 +0200 <abastro[m]> That should make it hard to find
2022-04-07 06:25:43 +0200redb(~nmh@136.49.49.211)
2022-04-07 06:27:52 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 06:29:04 +0200 <Axman6> @hoogle ASetter' s a -> Maybe a -> s -> s
2022-04-07 06:29:05 +0200 <lambdabot> No results found
2022-04-07 06:30:24 +0200benin(~benin@183.82.204.110)
2022-04-07 06:30:25 +0200 <Axman6> given how massive lens is, I'm surprised that doesn't exist!
2022-04-07 06:30:27 +0200redb(~nmh@136.49.49.211) (Ping timeout: 260 seconds)
2022-04-07 06:30:41 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-04-07 06:30:56 +0200redb(~nmh@136.49.49.211)
2022-04-07 06:31:59 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-04-07 06:32:25 +0200 <dibblego> write it
2022-04-07 06:32:47 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
2022-04-07 06:34:23 +0200 <Axman6> :t let l .~? m = maybe identity (set l) m in (.~?)
2022-04-07 06:34:24 +0200 <lambdabot> error:
2022-04-07 06:34:24 +0200 <lambdabot> • Variable not in scope: identity :: s1 -> t1
2022-04-07 06:34:24 +0200 <lambdabot> • Perhaps you meant one of these:
2022-04-07 06:34:31 +0200 <Axman6> :t let l .~? m = maybe id (set l) m in (.~?)
2022-04-07 06:34:32 +0200 <lambdabot> ASetter a1 a1 a2 b -> Maybe b -> a1 -> a1
2022-04-07 06:36:08 +0200redb(~nmh@136.49.49.211) (Ping timeout: 246 seconds)
2022-04-07 06:36:43 +0200 <dibblego> let iWishThisExists = maybe mempty in iWishThisExists . set
2022-04-07 06:38:14 +0200redb(~nmh@136.49.49.211)
2022-04-07 06:38:38 +0200cdman(~dcm@user/dmc/x-4369397) (Remote host closed the connection)
2022-04-07 06:38:49 +0200 <jackdk> % :t \setter -> ala Endo foldMap . fmap (set setter) -- Axman6
2022-04-07 06:38:50 +0200 <yahb> jackdk: (Foldable f, Functor f) => ASetter b b a1 a2 -> f a2 -> b -> b
2022-04-07 06:39:35 +0200cdman(~dcm@27.2.216.134)
2022-04-07 06:39:35 +0200cdman(~dcm@27.2.216.134) (Changing host)
2022-04-07 06:39:35 +0200cdman(~dcm@user/dmc/x-4369397)
2022-04-07 06:39:44 +0200 <abastro[m]> It feels like lens is huge with lots of utilities ppl crave for missing
2022-04-07 06:39:54 +0200 <abastro[m]> But that's just my feeling
2022-04-07 06:40:05 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 06:42:26 +0200redb(~nmh@136.49.49.211) (Ping timeout: 246 seconds)
2022-04-07 06:44:23 +0200bahamas(~lucian@84.232.140.158)
2022-04-07 06:44:32 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds)
2022-04-07 06:46:19 +0200 <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: (<<%=)
2022-04-07 06:48:17 +0200 <jackdk> and _this_ is why we allow custom operators - the power of a consistent visual language
2022-04-07 06:50:10 +0200 <abastro[m]> But instead you get the bloat
2022-04-07 06:50:20 +0200 <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
2022-04-07 06:51:15 +0200Guest|85(~Guest|85@103.57.84.94)
2022-04-07 06:51:27 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
2022-04-07 06:52:20 +0200 <jackdk> lens isn't bloated, half the functions are actually `id`
2022-04-07 06:52:21 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 06:52:42 +0200Guest|85(~Guest|85@103.57.84.94) (Client Quit)
2022-04-07 06:52:45 +0200Andrew(Andrew@user/AndrewYu) (Quit: Leaving)
2022-04-07 06:53:22 +0200 <Axman6> lens is, imo, incredibly elegant, consistent, and solves real problems, that are more relevant the larger your programs become
2022-04-07 06:53:33 +0200AndrewYu(Andrew@user/AndrewYu)
2022-04-07 06:53:37 +0200Kaiepi(~Kaiepi@156.34.47.253)
2022-04-07 06:54:42 +0200redb(~nmh@136.49.49.211)
2022-04-07 06:54:46 +0200 <sm> they say optics is both more usable and more principled though
2022-04-07 06:55:21 +0200 <sm> I should not say "though".. I meant "also"
2022-04-07 06:55:43 +0200 <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
2022-04-07 06:56:04 +0200 <Axman6> to use optics, you need to have it as a dependency of your project as far as I understand it
2022-04-07 06:56:21 +0200bahamas(~lucian@84.232.140.158) (Ping timeout: 256 seconds)
2022-04-07 06:56:46 +0200 <sm> nod
2022-04-07 06:56:57 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds)
2022-04-07 06:57:25 +0200 <jackdk> yes, and first mover advantage - I don't want to fracture the ecosystem so I write lenses
2022-04-07 06:57:38 +0200 <sm> (is that really a problem, in these days of a zillion deps)
2022-04-07 06:58:18 +0200 <sm> I don't recall the recent post where I read about the extra "principledness", but it was interesting
2022-04-07 06:58:31 +0200 <abastro[m]> "Fracturing ecosystem"
2022-04-07 06:58:31 +0200 <abastro[m]> Come on, we already have gazillions of stream libraries
2022-04-07 06:58:42 +0200 <abastro[m]> And MTL/RIO/Effects
2022-04-07 06:59:23 +0200smused microlens but deps use lens, some probably use optics too
2022-04-07 06:59:45 +0200 <jackdk> Yeah getting streaming right is not straightforward, but doesn't mean I have to gleefully make a problem worse
2022-04-07 07:00:32 +0200 <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
2022-04-07 07:01:29 +0200 <sm> hmm no, only microlens here now
2022-04-07 07:01:58 +0200 <Axman6> and prisms are half the reason to use lens anyway
2022-04-07 07:03:09 +0200redb(~nmh@136.49.49.211) (Ping timeout: 256 seconds)
2022-04-07 07:03:53 +0200 <sm> ah, it was this: https://www.brunogavranovic.com/posts/2022-02-10-optics-vs-lenses-operationally.html
2022-04-07 07:04:32 +0200lispy(~lispy@82.212.112.246)
2022-04-07 07:04:37 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 07:04:46 +0200 <sm> "optics do a better job of modelling the internals"
2022-04-07 07:06:47 +0200 <dolio> I'm not convinced that article's claim makes any sense.
2022-04-07 07:06:56 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 246 seconds)
2022-04-07 07:08:10 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-04-07 07:08:20 +0200AndrewYu(Andrew@user/AndrewYu) (Quit: Leaving)
2022-04-07 07:08:44 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
2022-04-07 07:09:00 +0200zmt00(~zmt00@user/zmt00) (Quit: Leaving)
2022-04-07 07:09:07 +0200AndrewYu(Andrew@user/AndrewYu)
2022-04-07 07:09:17 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds)
2022-04-07 07:09:55 +0200 <sm> dolio: after reading it ?
2022-04-07 07:09:58 +0200 <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#Op…
2022-04-07 07:10:13 +0200 <dolio> I skimmed it.
2022-04-07 07:10:27 +0200 <sm> ok, just wondering
2022-04-07 07:10:47 +0200 <jackdk> Axman6: `-XStandaloneKindSignatures` are `-XStandaloneKingSignatures`
2022-04-07 07:10:53 +0200zmt00(~zmt00@user/zmt00)
2022-04-07 07:10:59 +0200 <dolio> It appears to be entirely based on defining a "lens" to only mean a pair of functions (s -> a, s -> b -> t).
2022-04-07 07:11:11 +0200 <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."
2022-04-07 07:11:51 +0200 <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
2022-04-07 07:11:59 +0200 <dolio> Except people were representing them as `s -> (a, b -> t)` like 10 years ago or something, for the obvious performance reasons.
2022-04-07 07:12:26 +0200 <dolio> 10 is probably underestimating.
2022-04-07 07:12:45 +0200 <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
2022-04-07 07:13:34 +0200 <dolio> And the `b -> t` part can close over any internal state you want. Perfect abstraction.
2022-04-07 07:14:09 +0200 <Axman6> exactly
2022-04-07 07:14:13 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2022-04-07 07:15:16 +0200 <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.
2022-04-07 07:16:54 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 07:17:11 +0200 <sm> Axman6 good question, it's probably talking about the abstractions now that you mention it (which the libraries may or may not match)
2022-04-07 07:17:28 +0200 <Axman6> they both have internally the same representation
2022-04-07 07:17:32 +0200redb(~nmh@136.49.49.211)
2022-04-07 07:18:48 +0200[_](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2022-04-07 07:20:01 +0200AndrewYuAndrew
2022-04-07 07:20:10 +0200 <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.
2022-04-07 07:20:42 +0200 <Axman6> yeah
2022-04-07 07:21:17 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
2022-04-07 07:21:39 +0200 <Axman6> yeah it basically looks like that article exactly describes the implementation of both the lens and optics libraries
2022-04-07 07:22:33 +0200 <dolio> I don't think the lens library uses the naive representation, except as a convenient way of defining a lens.
2022-04-07 07:22:34 +0200 <Axman6> optics doesn't have zippers? D:
2022-04-07 07:22:59 +0200redb(~nmh@136.49.49.211) (Ping timeout: 256 seconds)
2022-04-07 07:24:41 +0200chomwitt(~chomwitt@2a02:587:dc0e:4f00:e2a4:4df9:d340:7660)
2022-04-07 07:29:02 +0200 <Axman6> admittedly a feature that I haven't had a need for, but it's extremely cool that it does exist in lens
2022-04-07 07:29:14 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 07:31:45 +0200 <Axman6> @hoogle equality
2022-04-07 07:31:45 +0200 <lambdabot> Control.Lens.Combinators equality :: (s :~: a) -> (b :~: t) -> Equality s t a b
2022-04-07 07:31:45 +0200 <lambdabot> Control.Lens.Equality equality :: (s :~: a) -> (b :~: t) -> Equality s t a b
2022-04-07 07:31:45 +0200 <lambdabot> Diagrams.Prelude equality :: () => (s :~: a) -> (b :~: t) -> Equality s t a b
2022-04-07 07:33:45 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
2022-04-07 07:34:31 +0200 <abastro[m]> I mean, optics give better error messages
2022-04-07 07:35:00 +0200 <abastro[m]> Call me dumb and idiotic and smooth brained, I can never make sense of the lens error messages
2022-04-07 07:35:27 +0200 <abastro[m]> I wish I could just look at lens error messages and see what to fix
2022-04-07 07:37:51 +0200 <jackdk> It's practice, like building up an understanding of any other error message. I agree that it's hard
2022-04-07 07:38:22 +0200frost(~frost@user/frost) (Quit: Client closed)
2022-04-07 07:38:47 +0200 <abastro[m]> I see, so it is possible
2022-04-07 07:39:17 +0200 <abastro[m]> Tho I think I am indeed too smooth-brained to ever understand it
2022-04-07 07:39:21 +0200 <dolio> I don't think lens errors are likely to be useful. That's the major downside.
2022-04-07 07:39:25 +0200 <abastro[m]> For this kind of me, optics is a godsend
2022-04-07 07:39:34 +0200 <dolio> The only useful part is the line number.
2022-04-07 07:39:46 +0200lispy(~lispy@82.212.112.246) (Quit: Client closed)
2022-04-07 07:40:02 +0200 <abastro[m]> Haha line number XD
2022-04-07 07:41:27 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 07:42:40 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-04-07 07:42:42 +0200 <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
2022-04-07 07:42:59 +0200 <jackdk> I have a friend who learned lens mostly by cranking through optics by example and then moving over to lens
2022-04-07 07:43:17 +0200 <abastro[m]> I also personally feel that using van Laarhoven encoding is alike leaking implementation details
2022-04-07 07:43:32 +0200 <abastro[m]> (While lens do indeed provide more features)
2022-04-07 07:43:51 +0200 <Axman6> sometimes those are useful details though
2022-04-07 07:46:17 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds)
2022-04-07 07:50:08 +0200coot(~coot@213.134.190.95)
2022-04-07 07:52:11 +0200 <abastro[m]> Useful?
2022-04-07 07:52:53 +0200michalz(~michalz@185.246.204.122)
2022-04-07 07:52:56 +0200redb(~nmh@136.49.49.211)
2022-04-07 07:53:45 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 07:54:09 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2022-04-07 07:56:42 +0200fef(~thedawn@user/thedawn)
2022-04-07 07:57:33 +0200redb(~nmh@136.49.49.211) (Ping timeout: 256 seconds)
2022-04-07 07:58:02 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds)
2022-04-07 08:01:22 +0200 <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.
2022-04-07 08:02:42 +0200 <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.
2022-04-07 08:05:07 +0200alp_(~alp@user/alp)
2022-04-07 08:05:20 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
2022-04-07 08:05:44 +0200FragByte(~christian@user/fragbyte) (Quit: Quit)
2022-04-07 08:05:57 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 08:06:15 +0200 <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)
2022-04-07 08:07:25 +0200 <abastro[m]> Well tbh theoretical details of lens is quite hard to understand for beginners anyway
2022-04-07 08:07:38 +0200 <abastro[m]> Implementation details, ppl usually gloss over
2022-04-07 08:09:31 +0200 <Axman6> I think lens is easier to use once you understand the implementation details
2022-04-07 08:10:17 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds)
2022-04-07 08:12:12 +0200 <Axman6> like, lens is better used if you accept that it just a new way of thinking about things you already know
2022-04-07 08:12:21 +0200odnes(~odnes@5-203-209-2.pat.nym.cosmote.net)
2022-04-07 08:14:02 +0200odnes_(~odnes@5-203-209-2.pat.nym.cosmote.net)
2022-04-07 08:14:26 +0200 <abastro[m]> Easier to use? Eh
2022-04-07 08:15:56 +0200 <abastro[m]> I mean, is it worth the poor error messages
2022-04-07 08:16:57 +0200odnes(~odnes@5-203-209-2.pat.nym.cosmote.net) (Ping timeout: 248 seconds)
2022-04-07 08:18:11 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 08:19:34 +0200 <Axman6> yes
2022-04-07 08:20:08 +0200 <Axman6> well, an optic library is worth using, trying to work on my current project without lenses would be a nightmare
2022-04-07 08:20:19 +0200 <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.
2022-04-07 08:20:43 +0200 <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
2022-04-07 08:22:32 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds)
2022-04-07 08:24:35 +0200redb(~nmh@136.49.49.211)
2022-04-07 08:25:27 +0200acidjnk(~acidjnk@p200300d0c7049f25b15f97e32406cde6.dip0.t-ipconnect.de)
2022-04-07 08:27:28 +0200califax(~califax@user/califx) (Remote host closed the connection)
2022-04-07 08:27:40 +0200califax(~califax@user/califx)
2022-04-07 08:28:35 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-04-07 08:29:27 +0200redb(~nmh@136.49.49.211) (Ping timeout: 268 seconds)
2022-04-07 08:30:25 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 08:33:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection)
2022-04-07 08:33:23 +0200odnes_(~odnes@5-203-209-2.pat.nym.cosmote.net) (Ping timeout: 246 seconds)
2022-04-07 08:33:26 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-04-07 08:34:07 +0200dyeplexer(~dyeplexer@user/dyeplexer)
2022-04-07 08:35:05 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds)
2022-04-07 08:35:53 +0200yuriy(uid548749@id-548749.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2022-04-07 08:36:10 +0200 <boxscape> Is `Just x <- pure a` the same as `let Just x = y` inside a do block?
2022-04-07 08:36:10 +0200 <boxscape> I'm asking because they seem to do the same thing, but confusingly only the latter warns about incomplete uni-patterns..
2022-04-07 08:36:20 +0200 <boxscape> I suppose I could just look at the report
2022-04-07 08:37:27 +0200 <boxscape> hm no, report doesn't say that `let` gets desugared with fail
2022-04-07 08:39:32 +0200 <boxscape> guess I should figure out why my program doesn't fail then if I replace <- with let
2022-04-07 08:39:47 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2022-04-07 08:41:01 +0200redb(~nmh@136.49.49.211)
2022-04-07 08:42:39 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 08:45:29 +0200redb(~nmh@136.49.49.211) (Ping timeout: 268 seconds)
2022-04-07 08:47:25 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
2022-04-07 08:51:05 +0200redb(~nmh@136.49.49.211)
2022-04-07 08:51:51 +0200MajorBiscuit(~MajorBisc@86-88-79-148.fixed.kpn.net)
2022-04-07 08:52:51 +0200cfricke(~cfricke@user/cfricke)
2022-04-07 08:53:22 +0200Major_Biscuit(~MajorBisc@c-001-005-034.client.tudelft.eduvpn.nl)
2022-04-07 08:54:55 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 08:56:50 +0200MajorBiscuit(~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 246 seconds)
2022-04-07 09:00:08 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds)
2022-04-07 09:03:22 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
2022-04-07 09:03:26 +0200wildsebastian(~wildsebas@2001:470:69fc:105::1:14b1)
2022-04-07 09:04:34 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-04-07 09:07:08 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 09:11:53 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
2022-04-07 09:13:24 +0200gehmehgeh(~user@user/gehmehgeh)
2022-04-07 09:15:35 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-04-07 09:18:35 +0200Chai-T-Rex(~ChaiTRex@user/chaitrex) (Ping timeout: 240 seconds)
2022-04-07 09:19:20 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 09:20:52 +0200 <maerwald[m]> Axman6: did you just say lens is easier than optics for newcomers?
2022-04-07 09:20:55 +0200Chai-T-Rex(~ChaiTRex@user/chaitrex)
2022-04-07 09:21:44 +0200 <dons> fclabels 4eva
2022-04-07 09:22:24 +0200zeenk(~zeenk@2a02:2f04:a313:d600:8d26:ec9f:3ff6:fc94)
2022-04-07 09:22:55 +0200fockerized(~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Quit: WeeChat 3.3)
2022-04-07 09:24:03 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
2022-04-07 09:24:12 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:cb75:3834:c1c1:ff4e)
2022-04-07 09:27:13 +0200dextaa_54(~dextaa@user/dextaa) (Remote host closed the connection)
2022-04-07 09:29:36 +0200 <abastro[m]> > Axman6: did you just say lens is easier than optics for newcomers?
2022-04-07 09:29:37 +0200 <abastro[m]> >.>
2022-04-07 09:29:38 +0200 <lambdabot> <hint>:1:67: error:
2022-04-07 09:29:38 +0200 <lambdabot> parse error (possibly incorrect indentation or mismatched brackets)
2022-04-07 09:30:46 +0200 <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!
2022-04-07 09:31:18 +0200Galaxion-tech(~Galaxion-@122.162.144.183)
2022-04-07 09:31:35 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 09:31:59 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-04-07 09:33:00 +0200odnes(~odnes@5-203-209-2.pat.nym.cosmote.net)
2022-04-07 09:33:40 +0200Galaxion-tech(~Galaxion-@122.162.144.183) (Client Quit)
2022-04-07 09:35:38 +0200bahamas(~lucian@84.232.140.158)
2022-04-07 09:36:23 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
2022-04-07 09:37:03 +0200 <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
2022-04-07 09:40:03 +0200 <Hecate> yeah this really sucks
2022-04-07 09:43:13 +0200 <sm> yeah it should probably be changed as > is markdown for quotation and increasingly common as a convention in chat
2022-04-07 09:43:48 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 09:44:40 +0200 <sm> (but FYI abastro, try to use element's reply feature sparingly in bridged IRC rooms, it creates too much noise)
2022-04-07 09:44:48 +0200 <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
2022-04-07 09:45:01 +0200 <dminuoso> That is a weird proposition
2022-04-07 09:45:13 +0200 <Hecate> eh, we already do this for Haskell :-P
2022-04-07 09:45:45 +0200 <dminuoso> Well, if something requires intricate understanding of the internals to use, then it's not necessarily a good abstraction.
2022-04-07 09:45:59 +0200 <dminuoso> For example, I dont want to know how GHC works internally to appreciate Haskell.
2022-04-07 09:48:09 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds)
2022-04-07 09:49:11 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 256 seconds)
2022-04-07 09:49:16 +0200machinedgod(~machinedg@24.105.81.50)
2022-04-07 09:49:37 +0200 <Hecate> not everything is an abstraction either!
2022-04-07 09:49:45 +0200dminuoso(~dminuoso@static.88-198-218-68.clients.your-server.de) (Changing host)
2022-04-07 09:49:45 +0200dminuoso(~dminuoso@user/dminuoso)
2022-04-07 09:54:07 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2022-04-07 09:54:23 +0200pooryorick(~pooryoric@87-119-174-173.tll.elisa.ee) (Ping timeout: 260 seconds)
2022-04-07 09:54:58 +0200pooryorick(~pooryoric@87-119-174-173.tll.elisa.ee)
2022-04-07 09:56:22 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 09:57:32 +0200mikoto-chan(~mikoto-ch@213.177.151.239)
2022-04-07 10:00:12 +0200mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-04-07 10:00:57 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds)
2022-04-07 10:01:14 +0200 <abastro[m]> Meh I see, IRC from matrix is so hard
2022-04-07 10:02:28 +0200 <abastro[m]> If lens is not an abstraction, what is it?
2022-04-07 10:02:34 +0200 <[exa]> abastro[m]: liberate yourself from convenient interfaces, telnet here
2022-04-07 10:02:59 +0200 <abastro[m]> I'm on mobile
2022-04-07 10:03:20 +0200 <[exa]> ay.
2022-04-07 10:03:37 +0200 <abastro[m]> Is lens poor man's nested record modification?
2022-04-07 10:04:08 +0200 <[exa]> no
2022-04-07 10:04:15 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-04-07 10:04:23 +0200 <[exa]> lens is a package, full of materialized affine traversals and their specializations
2022-04-07 10:04:41 +0200 <sm> you're not really using telnet are you
2022-04-07 10:04:41 +0200 <abastro[m]> Then what is it, if it is not an abstraction?
2022-04-07 10:05:06 +0200ccntrq(~Thunderbi@2a01:e34:eccb:b060:ba9d:69d8:b4f8:4092)
2022-04-07 10:05:31 +0200 <[exa]> abastro[m]: perhaps a "common composable interface for doing stuff on parts on structures"?
2022-04-07 10:05:53 +0200 <[exa]> sm: not really but pretty close :]
2022-04-07 10:06:28 +0200 <abastro[m]> Composable Interface, imho that implies abstraction tbh
2022-04-07 10:06:28 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-04-07 10:07:11 +0200DNH(~DNH@2a02:8108:1100:16d8:c8af:4307:df41:9668)
2022-04-07 10:08:17 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 10:08:47 +0200 <[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)
2022-04-07 10:09:12 +0200x_kuru(xkuru@user/xkuru)
2022-04-07 10:09:43 +0200 <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
2022-04-07 10:10:08 +0200mncheck(~mncheck@193.224.205.254)
2022-04-07 10:10:26 +0200 <tdammers> if you think of lenses as "a getter/setter pair", then the van Laarhoven implementation seems like it only works by strange coincidence
2022-04-07 10:10:32 +0200 <abastro[m]> I mean, while function type looks concrete, it is an abstraction after all.
2022-04-07 10:10:33 +0200mikoto-chan(~mikoto-ch@213.177.151.239) (Ping timeout: 248 seconds)
2022-04-07 10:10:55 +0200 <tdammers> it is, and it isn't
2022-04-07 10:10:57 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-04-07 10:11:15 +0200x_kuru_(~xkuru@user/xkuru)
2022-04-07 10:11:19 +0200 <abastro[m]> van Laarhoven implementation looks like mathematical incidence to me
2022-04-07 10:11:37 +0200 <abastro[m]> And in the end, with lens there is a problem of: "What is the point of all this?"
2022-04-07 10:11:56 +0200 <[exa]> did you try traversals?
2022-04-07 10:12:23 +0200 <abastro[m]> Ofc I did, I see that Lens generalizes to Traversals as well
2022-04-07 10:12:38 +0200 <abastro[m]> But for library users, it could better be implementation details
2022-04-07 10:12:46 +0200mikoto-chan(~mikoto-ch@213.177.151.239)
2022-04-07 10:12:58 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds)
2022-04-07 10:13:03 +0200 <abastro[m]> Also you could easily explain how getter/setter pair could be used for a traversal as well
2022-04-07 10:13:08 +0200xkuru(~xkuru@user/xkuru) (Ping timeout: 260 seconds)
2022-04-07 10:13:30 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2022-04-07 10:14:54 +0200x_kuru(xkuru@user/xkuru) (Ping timeout: 268 seconds)
2022-04-07 10:14:58 +0200 <[exa]> abastro[m]: then I probably don't get your question. Maybe we feel differently about what qualifies as an abstraction
2022-04-07 10:15:01 +0200 <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?"
2022-04-07 10:15:36 +0200jgeerds(~jgeerds@d5364b87.access.ecotel.net)
2022-04-07 10:15:57 +0200 <abastro[m]> "What abstraction means" is terminology after all.
2022-04-07 10:16:53 +0200 <[exa]> yeah, still I tend to avoid this "hide the complex-looking ___ in a box" meaning
2022-04-07 10:17:25 +0200 <abastro[m]> Hmm, interesting. Yea, that is how I was taught what abstraction is
2022-04-07 10:17:45 +0200 <[exa]> I prefer saying encapsulation
2022-04-07 10:17:57 +0200 <abastro[m]> The outsiders seem to get the impression that haskellers are masochists from these parts, where we do things in seemingly overcomplicated way
2022-04-07 10:18:01 +0200bahamas(~lucian@84.232.140.158) (Ping timeout: 248 seconds)
2022-04-07 10:18:33 +0200 <abastro[m]> So I think it is good to meticulously reason about the *why* part
2022-04-07 10:19:02 +0200 <abastro[m]> If it was just because of nice mathematical property.. that's going to veer towards masochism
2022-04-07 10:19:28 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-04-07 10:20:06 +0200CiaoSen(~Jura@p200300c9572d40002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-04-07 10:21:07 +0200 <[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
2022-04-07 10:21:37 +0200 <Franciman> wise words [exa]
2022-04-07 10:21:58 +0200 <[exa]> first guess tbh
2022-04-07 10:21:59 +0200 <Franciman> congrats to the haskell community for getting delconts (almost, since the MR must still be merged)
2022-04-07 10:22:07 +0200 <Franciman> what are you planning to do with them?
2022-04-07 10:22:24 +0200 <[exa]> delconts as in "delimited continuations" I guess? :D
2022-04-07 10:22:28 +0200jgeerds(~jgeerds@d5364b87.access.ecotel.net) (Ping timeout: 272 seconds)
2022-04-07 10:22:29 +0200 <Franciman> yep
2022-04-07 10:22:36 +0200 <Franciman> sorry my morning feel is LAZYNESS
2022-04-07 10:22:40 +0200 <Franciman> you should understand it right?
2022-04-07 10:22:51 +0200 <abastro[m]> [exa]: I see that point, tho I don't get the reason to not encapsulate the composition details
2022-04-07 10:23:47 +0200 <[exa]> Franciman: same here tbh, atmospheric pressure too low for thinking :D
2022-04-07 10:24:03 +0200 <[exa]> abastro[m]: so that people may tinker with it easily?
2022-04-07 10:24:17 +0200 <abastro[m]> Delimited continuation is in? So we can have native Cont monad I guess
2022-04-07 10:24:29 +0200 <abastro[m]> Tinker with implementation details? Ehh
2022-04-07 10:25:39 +0200 <Franciman> abastro[m]: no not yet, but https://gitlab.haskell.org/ghc/ghc/-/merge_requests/7942#5e75a5cad76eb00a51db49bf823e85050009544e
2022-04-07 10:26:27 +0200 <abastro[m]> I see, I legit thought it wasn't going forward and bam! It is here
2022-04-07 10:26:40 +0200 <abastro[m]> So lexi actually got time to write it down I guess?
2022-04-07 10:27:07 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.4.1)
2022-04-07 10:27:12 +0200 <abastro[m]> Btw regarding lens & tinkering, this is where ppl get the masochist feel, haskellers seem to like to mess with complex type internals
2022-04-07 10:27:38 +0200 <lexi-lambda> well, someone decided they were willing to pay me to finish it it :)
2022-04-07 10:27:39 +0200 <[exa]> abastro[m]: the "masochist" feeling means "having a bit of control if something goes awry" for others
2022-04-07 10:29:01 +0200 <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
2022-04-07 10:29:31 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2022-04-07 10:29:39 +0200 <tdammers> you see an abstraction opportunity, you grab it, you run with it, and then you try out how far you can take it
2022-04-07 10:30:12 +0200 <[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
2022-04-07 10:30:52 +0200dcoutts_(~duncan@host213-122-143-81.range213-122.btcentralplus.com)
2022-04-07 10:31:08 +0200 <tdammers> we still put complex things in boxes, it's just that the boxes aren't usually object-shaped
2022-04-07 10:31:34 +0200Pickchea(~private@user/pickchea)
2022-04-07 10:32:36 +0200 <[exa]> actually, looking at it from the point of lambda calculi, lens type _is_ a type-level abstraction, it's got the forall there :]
2022-04-07 10:32:43 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 10:35:06 +0200 <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
2022-04-07 10:37:01 +0200 <[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)
2022-04-07 10:37:27 +0200 <[exa]> (probably just needs to be reposted a few times on reddit or so :D)
2022-04-07 10:37:34 +0200 <lexi-lambda> not sure I understand what you mean
2022-04-07 10:37:38 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
2022-04-07 10:38:20 +0200mikoto-chan(~mikoto-ch@213.177.151.239) (Ping timeout: 268 seconds)
2022-04-07 10:39:42 +0200DNH(~DNH@2a02:8108:1100:16d8:c8af:4307:df41:9668) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-04-07 10:42:45 +0200 <Franciman> lexi-lambda: well, maybe they could be used to simplify exceptions semantics
2022-04-07 10:43:28 +0200 <lexi-lambda> in what sense?
2022-04-07 10:43:40 +0200 <Franciman> you can implement try-catch with delconts
2022-04-07 10:43:52 +0200 <lexi-lambda> sure, but the semantics is identical
2022-04-07 10:43:53 +0200 <Franciman> and to my inferior brain delconts semantics is a tad easier to model
2022-04-07 10:44:08 +0200 <Franciman> not in the presence of multiple threads!
2022-04-07 10:44:23 +0200 <lexi-lambda> I don’t understand—both exceptions and delconts are single-thread phenomena
2022-04-07 10:44:53 +0200 <Franciman> aren't async exceptions a problem?
2022-04-07 10:44:55 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 10:45:25 +0200 <lexi-lambda> async exceptions are orthogonal to the semantics of exceptions within a given thread, mostly
2022-04-07 10:45:38 +0200 <Franciman> i see
2022-04-07 10:46:03 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-04-07 10:46:05 +0200 <lexi-lambda> async exceptions just allow an interrupt between any given reduction step for which interrupts are not masked
2022-04-07 10:46:22 +0200 <lexi-lambda> and async exceptions are generally a Good Thing
2022-04-07 10:46:30 +0200FragByte(~christian@user/fragbyte)
2022-04-07 10:47:11 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
2022-04-07 10:47:39 +0200 <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)
2022-04-07 10:48:14 +0200Francimanconfusedly nods
2022-04-07 10:48:28 +0200 <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
2022-04-07 10:48:46 +0200 <lexi-lambda> err, independent of the RTS implementation of delconts, I mean
2022-04-07 10:48:47 +0200 <lexi-lambda> lol
2022-04-07 10:48:50 +0200zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2022-04-07 10:48:54 +0200 <Franciman> delconts don't make sense in pure code ~~~?
2022-04-07 10:48:59 +0200 <Franciman> sure
2022-04-07 10:49:12 +0200frost(~frost@user/frost)
2022-04-07 10:49:21 +0200 <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
2022-04-07 10:49:48 +0200 <lexi-lambda> they can still exist in code for which evaluation order is only *locally* well-defined, in the ST monad sense
2022-04-07 10:49:49 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
2022-04-07 10:50:34 +0200 <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
2022-04-07 10:50:37 +0200dschremp1(~dominik@070-207.dynamic.dsl.fonira.net)
2022-04-07 10:51:04 +0200 <lexi-lambda> whereas RTS exceptions can be raised arbitrarily in pure evaluation (for better or for worse)
2022-04-07 10:51:42 +0200 <Franciman> if they have the same semantics
2022-04-07 10:51:45 +0200 <Franciman> how is this possible?
2022-04-07 10:51:54 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 268 seconds)
2022-04-07 10:52:07 +0200 <lexi-lambda> well, exceptions are a more restricted case of delconts, but those restrictions are relevant here
2022-04-07 10:52:13 +0200 <Franciman> ah ahh okko
2022-04-07 10:52:15 +0200 <Franciman> makes sense
2022-04-07 10:52:20 +0200mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 246 seconds)
2022-04-07 10:52:31 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2022-04-07 10:52:51 +0200 <Franciman> so monads are basically imposing a cps to your code
2022-04-07 10:52:59 +0200 <Franciman> in fact,
2022-04-07 10:53:02 +0200 <Franciman> :t (>>=)
2022-04-07 10:53:03 +0200 <lambdabot> Monad m => m a -> (a -> m b) -> m b
2022-04-07 10:53:05 +0200 <Franciman> is cps
2022-04-07 10:53:12 +0200 <lexi-lambda> yes, indeed, it’s a very literal correspondence
2022-04-07 10:54:13 +0200azimut_(~azimut@gateway/tor-sasl/azimut)
2022-04-07 10:54:35 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2022-04-07 10:54:44 +0200 <Franciman> thanks lexi-lambda it's clear now
2022-04-07 10:55:10 +0200 <Franciman> so far the "only" usecase i found for delconts is implementing effect systems
2022-04-07 10:55:13 +0200 <Franciman> and type safe print!
2022-04-07 10:55:17 +0200 <Franciman> type safe print is very nice lol
2022-04-07 10:55:25 +0200 <lexi-lambda> type safe print?
2022-04-07 10:55:30 +0200 <abastro[m]> [exa]: Eh, I doubt that type scaffolding helps you that much. It still requires quite a bit of cognitive overhead
2022-04-07 10:55:53 +0200 <Franciman> 1seq
2022-04-07 10:56:09 +0200 <[exa]> abastro[m]: it yells at me when I try to mess it up, I'm happy
2022-04-07 10:56:14 +0200 <lexi-lambda> but yes, I would say that, in a sense, effect systems are primarily a more structured, more typed interface to delimited continuations
2022-04-07 10:56:45 +0200 <abastro[m]> Well it yells when you mess up, but it is still hard to know which way to go for right
2022-04-07 10:57:01 +0200 <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
2022-04-07 10:57:05 +0200 <abastro[m]> I wonder if with delcont we could have native Cont monad
2022-04-07 10:57:21 +0200 <lexi-lambda> yes, but not ContT
2022-04-07 10:57:28 +0200 <lexi-lambda> which makes it somewhat less useful
2022-04-07 10:57:29 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 10:57:33 +0200 <abastro[m]> Cont monad which provides efficient delimited continuation
2022-04-07 10:57:38 +0200 <abastro[m]> Oh no why mot ContT?
2022-04-07 10:57:46 +0200 <Franciman> lexi-lambda: https://okmij.org/ftp/continuations/implementations.html#genuine-shift
2022-04-07 10:57:50 +0200 <abastro[m]> s/mot/not
2022-04-07 10:57:59 +0200 <lexi-lambda> abastro[m]: the same reason you can’t have IOT/STT
2022-04-07 10:58:11 +0200 <abastro[m]> Wow thanks
2022-04-07 10:58:25 +0200 <abastro[m]> So straightforwardly put
2022-04-07 10:58:39 +0200 <abastro[m]> Tbh ContT is a bit messy, isn't it?
2022-04-07 10:59:03 +0200 <abastro[m]> IIRC `ContT m` is always monad whatever m is
2022-04-07 10:59:58 +0200 <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
2022-04-07 11:00:23 +0200 <abastro[m]> Hmm
2022-04-07 11:00:27 +0200 <abastro[m]> What about Monad itself
2022-04-07 11:00:47 +0200 <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
2022-04-07 11:01:14 +0200 <lexi-lambda> I’m not sure what you mean by “what about Monad itself”—what about it?
2022-04-07 11:01:26 +0200mikoto-chan(~mikoto-ch@213.177.151.239)
2022-04-07 11:01:36 +0200 <lexi-lambda> ContT is a perfectly well-behaved monad transformer in the sense that it is always a monad when applied to a monad
2022-04-07 11:02:17 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
2022-04-07 11:02:21 +0200 <abastro[m]> Well, it also makes a monad when given any m
2022-04-07 11:02:35 +0200 <lexi-lambda> sure
2022-04-07 11:03:44 +0200DNH(~DNH@2a02:8108:1100:16d8:c8af:4307:df41:9668)
2022-04-07 11:06:17 +0200mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-04-07 11:06:21 +0200 <lexi-lambda> I guess for that reason you could, strictly speaking, have native ContT, just not native CCT (from CC-delcont)
2022-04-07 11:06:41 +0200 <lexi-lambda> but I’m not sure how useful it would be, regardless
2022-04-07 11:06:43 +0200asocialblade(~qsl@user/asocialblade) (Ping timeout: 260 seconds)
2022-04-07 11:07:23 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
2022-04-07 11:09:41 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 11:09:42 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-04-07 11:11:24 +0200mikoto-chan(~mikoto-ch@213.177.151.239) (Ping timeout: 240 seconds)
2022-04-07 11:11:38 +0200kaph(~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it)
2022-04-07 11:14:06 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 245 seconds)
2022-04-07 11:15:13 +0200odnes(~odnes@5-203-209-2.pat.nym.cosmote.net) (Remote host closed the connection)
2022-04-07 11:15:34 +0200odnes(~odnes@5-203-209-2.pat.nym.cosmote.net)
2022-04-07 11:15:37 +0200Inst(~Liam@2601:6c4:4080:3f80:88f1:8b95:b5a0:872d)
2022-04-07 11:16:40 +0200shriekingnoise(~shrieking@201.231.16.156) (Quit: Quit)
2022-04-07 11:20:11 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-07 11:22:26 +0200 <Franciman> delimited continuations can also be used to implement call by need evaluation
2022-04-07 11:22:31 +0200 <Franciman> in a cbv environment
2022-04-07 11:23:31 +0200 <Franciman> and maybe a better macro system too
2022-04-07 11:23:36 +0200 <Franciman> but i don't know how
2022-04-07 11:24:41 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 248 seconds)
2022-04-07 11:28:53 +0200 <maerwald[m]> Isn't the man point eff?
2022-04-07 11:29:06 +0200 <lexi-lambda> in theory, yes
2022-04-07 11:29:26 +0200 <maerwald[m]> How's that going?
2022-04-07 11:29:45 +0200 <lexi-lambda> there are still open questions about eff’s semantics in some tricky cases that I don’t yet have answers for
2022-04-07 11:30:52 +0200 <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
2022-04-07 11:31:58 +0200 <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
2022-04-07 11:33:49 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 11:36:51 +0200m1dnight(~christoph@78-22-9-5.access.telenet.be) (Quit: WeeChat 3.5)
2022-04-07 11:37:30 +0200m1dnight(~christoph@78-22-9-5.access.telenet.be)
2022-04-07 11:38:18 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
2022-04-07 11:42:07 +0200_dmc_(~dcm@user/dmc/x-4369397)
2022-04-07 11:42:55 +0200cdman(~dcm@user/dmc/x-4369397) (Ping timeout: 272 seconds)
2022-04-07 11:46:01 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 11:46:28 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-04-07 11:48:01 +0200cdman(~dcm@user/dmc/x-4369397)
2022-04-07 11:48:45 +0200_dmc_(~dcm@user/dmc/x-4369397) (Ping timeout: 256 seconds)
2022-04-07 11:49:47 +0200coot(~coot@213.134.190.95)
2022-04-07 11:50:27 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
2022-04-07 11:52:49 +0200raym(~raym@user/raym) (Quit: Failed to initialize NVML: Driver/library version mismatch)
2022-04-07 11:54:49 +0200kaph_(~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it)
2022-04-07 11:55:13 +0200raym(~raym@user/raym)
2022-04-07 11:56:02 +0200CiaoSen(~Jura@p200300c9572d40002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2022-04-07 11:57:13 +0200kaph(~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) (Ping timeout: 248 seconds)
2022-04-07 11:58:13 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 11:58:44 +0200cfricke(~cfricke@user/cfricke)
2022-04-07 12:00:58 +0200kaph_(~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) (Ping timeout: 268 seconds)
2022-04-07 12:02:55 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
2022-04-07 12:08:08 +0200zaquest(~notzaques@5.130.79.72)
2022-04-07 12:10:26 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 12:14:49 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
2022-04-07 12:16:28 +0200redb(~nmh@136.49.49.211) (Ping timeout: 272 seconds)
2022-04-07 12:18:14 +0200xff0x(~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp) (Ping timeout: 268 seconds)
2022-04-07 12:18:33 +0200deadmarshal_(~deadmarsh@95.38.112.46) (Ping timeout: 248 seconds)
2022-04-07 12:22:39 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 12:23:49 +0200Inst(~Liam@2601:6c4:4080:3f80:88f1:8b95:b5a0:872d) (Ping timeout: 240 seconds)
2022-04-07 12:23:49 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-04-07 12:24:23 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
2022-04-07 12:27:29 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds)
2022-04-07 12:30:42 +0200haskl(~haskl@user/haskl) (Read error: Connection reset by peer)
2022-04-07 12:33:07 +0200haskl(~haskl@user/haskl)
2022-04-07 12:33:29 +0200mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 248 seconds)
2022-04-07 12:34:16 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 268 seconds)
2022-04-07 12:34:53 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 12:34:58 +0200dschremp1(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.4.1)
2022-04-07 12:36:09 +0200__monty__(~toonn@user/toonn)
2022-04-07 12:37:32 +0200gurkenglas(~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de)
2022-04-07 12:38:19 +0200Inst(~Liam@c-98-208-218-119.hsd1.fl.comcast.net)
2022-04-07 12:39:33 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2022-04-07 12:39:42 +0200ub(~Thunderbi@p200300ecdf15885c0dce6310edc9e9e7.dip0.t-ipconnect.de)
2022-04-07 12:39:54 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds)
2022-04-07 12:40:26 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-04-07 12:41:14 +0200ub(~Thunderbi@p200300ecdf15885c0dce6310edc9e9e7.dip0.t-ipconnect.de) (Client Quit)
2022-04-07 12:44:33 +0200redb(~nmh@136.49.49.211)
2022-04-07 12:44:41 +0200Inst(~Liam@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 246 seconds)
2022-04-07 12:45:21 +0200mikoto-chan(~mikoto-ch@213.177.151.239)
2022-04-07 12:45:46 +0200akegalj(~akegalj@93.140.126.69)
2022-04-07 12:46:09 +0200bahamas(~lucian@84.232.140.158)
2022-04-07 12:46:55 +0200boxscape_(~boxscape_@p4ff0b7be.dip0.t-ipconnect.de)
2022-04-07 12:47:05 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 12:48:09 +0200 <boxscape_> Is there an explanation somewhere of Data.Data's gmapMo and gmapMp?
2022-04-07 12:48:36 +0200_dmc_(~dcm@27.2.216.134)
2022-04-07 12:48:36 +0200_dmc_(~dcm@27.2.216.134) (Changing host)
2022-04-07 12:48:36 +0200_dmc_(~dcm@user/dmc/x-4369397)
2022-04-07 12:48:57 +0200redb(~nmh@136.49.49.211) (Ping timeout: 248 seconds)
2022-04-07 12:49:23 +0200cdman(~dcm@user/dmc/x-4369397) (Ping timeout: 256 seconds)
2022-04-07 12:49:39 +0200_dmc_(~dcm@user/dmc/x-4369397) (Max SendQ exceeded)
2022-04-07 12:50:21 +0200_dmc_(~dcm@user/dmc/x-4369397)
2022-04-07 12:51:20 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds)
2022-04-07 12:51:33 +0200deadmarshal_(~deadmarsh@95.38.112.46)
2022-04-07 12:55:53 +0200deadmarshal_(~deadmarsh@95.38.112.46) (Ping timeout: 246 seconds)
2022-04-07 12:56:22 +0200 <lortabac> boxscape_: maybe this blog post talks about them, I don't remember https://chrisdone.com/posts/data-typeable/
2022-04-07 12:56:46 +0200 <boxscape_> doesn't look like it unfortunately but could still be helpful, thanks
2022-04-07 12:58:32 +0200Macbethwin(~chargen@D964062A.static.ziggozakelijk.nl)
2022-04-07 12:59:19 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 12:59:29 +0200xff0x(~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp)
2022-04-07 13:01:21 +0200Macbethwinrttixian
2022-04-07 13:02:29 +0200Guest89(~Guest89@2a01:41e1:440f:2c00:f9ba:f616:34ce:27bb)
2022-04-07 13:03:32 +0200odnes_(~odnes@5-203-246-201.pat.nym.cosmote.net)
2022-04-07 13:04:03 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
2022-04-07 13:04:26 +0200odnes(~odnes@5-203-209-2.pat.nym.cosmote.net) (Read error: Connection reset by peer)
2022-04-07 13:04:47 +0200mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-04-07 13:09:47 +0200Pickchea(~private@user/pickchea) (Ping timeout: 256 seconds)
2022-04-07 13:11:31 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 13:12:13 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-04-07 13:13:08 +0200Midjak(~Midjak@10.233.130.77.rev.sfr.net)
2022-04-07 13:14:03 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2022-04-07 13:15:59 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
2022-04-07 13:19:35 +0200redb(~nmh@136.49.49.211)
2022-04-07 13:22:36 +0200shriekingnoise(~shrieking@201.231.16.156)
2022-04-07 13:24:09 +0200redb(~nmh@136.49.49.211) (Ping timeout: 248 seconds)
2022-04-07 13:33:15 +0200cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 260 seconds)
2022-04-07 13:33:27 +0200chddr(~Thunderbi@91.226.35.164)
2022-04-07 13:33:32 +0200ub(~Thunderbi@p200300ecdf15885c0dce6310edc9e9e7.dip0.t-ipconnect.de)
2022-04-07 13:33:32 +0200ub(~Thunderbi@p200300ecdf15885c0dce6310edc9e9e7.dip0.t-ipconnect.de) (Client Quit)
2022-04-07 13:36:33 +0200hololeap_(~hololeap@user/hololeap) (Remote host closed the connection)
2022-04-07 13:36:41 +0200hololeap(~hololeap@user/hololeap)
2022-04-07 13:37:28 +0200redb(~nmh@136.49.49.211)
2022-04-07 13:39:31 +0200 <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
2022-04-07 13:40:24 +0200 <merijn> chddr: I don't think so, but defining your own instance for a newtype should be trivial
2022-04-07 13:40:40 +0200 <merijn> chddr: Also, let me introduce you to your friend: The monoid instance of Ordering :p
2022-04-07 13:40:47 +0200 <merijn> :t orderBy
2022-04-07 13:40:48 +0200 <lambdabot> error: Variable not in scope: orderBy
2022-04-07 13:40:55 +0200 <merijn> eh, wait
2022-04-07 13:41:02 +0200 <merijn> :t sortBy
2022-04-07 13:41:03 +0200 <lambdabot> (a -> a -> Ordering) -> [a] -> [a]
2022-04-07 13:41:09 +0200 <merijn> :t comparing
2022-04-07 13:41:10 +0200 <lambdabot> Ord a => (b -> a) -> b -> b -> Ordering
2022-04-07 13:41:45 +0200 <chddr> merijn: Yep, just thought there might be a clever way to avoid writing it entirely :)
2022-04-07 13:41:46 +0200 <merijn> > sortBy (comparing snd <> comparing fst) $ zip [5,4..1] [1..5]
2022-04-07 13:41:48 +0200 <lambdabot> [(5,1),(4,2),(3,3),(2,4),(1,5)]
2022-04-07 13:42:09 +0200 <sm> neat, I had not discovered that
2022-04-07 13:42:23 +0200 <merijn> chddr: Basically, the monoid on Ordering prefers the left-most non-EQ value
2022-04-07 13:42:32 +0200 <boxscape_> > sortBy (comparing swap) $ zip [5,4..1] [1..5]
2022-04-07 13:42:33 +0200 <lambdabot> [(5,1),(4,2),(3,3),(2,4),(1,5)]
2022-04-07 13:42:46 +0200 <merijn> boxscape_: Mine is more generically useful, though :p
2022-04-07 13:42:49 +0200 <boxscape_> that is true
2022-04-07 13:43:01 +0200 <merijn> Since you can compose arbitrary complex sub-orderings
2022-04-07 13:43:11 +0200 <boxscape_> (and my version should have used sortOn)
2022-04-07 13:43:51 +0200 <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
2022-04-07 13:44:58 +0200 <chddr> impressive...
2022-04-07 13:45:05 +0200 <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
2022-04-07 13:45:30 +0200 <merijn> Also of note here is: Down
2022-04-07 13:46:07 +0200 <merijn> Which is a newtype using a flipped comparison
2022-04-07 13:46:12 +0200 <merijn> > sortOn Down [1..5]
2022-04-07 13:46:14 +0200 <lambdabot> [5,4,3,2,1]
2022-04-07 13:46:36 +0200 <merijn> And semi-relatedly Dual (which is a newtype for Monoid with flipped mappend
2022-04-07 13:46:46 +0200 <merijn> > [1..5] <> [6..10]
2022-04-07 13:46:47 +0200 <lambdabot> [1,2,3,4,5,6,7,8,9,10]
2022-04-07 13:46:51 +0200 <merijn> > Dual [1..5] <> Dual [6..10]
2022-04-07 13:46:53 +0200 <lambdabot> Dual {getDual = [6,7,8,9,10,1,2,3,4,5]}
2022-04-07 13:50:35 +0200 <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
2022-04-07 13:51:09 +0200 <merijn> Monoid instance of functions and monoid on Ordering are two of my favourite monoids :)
2022-04-07 13:52:17 +0200bahamas(~lucian@84.232.140.158) (Ping timeout: 256 seconds)
2022-04-07 13:54:47 +0200 <hpc> my favorite monoid is in the category of endofunctors :D
2022-04-07 13:55:15 +0200fef(~thedawn@user/thedawn) (Ping timeout: 240 seconds)
2022-04-07 13:56:25 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 13:56:33 +0200acidjnk(~acidjnk@p200300d0c7049f25b15f97e32406cde6.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-04-07 13:56:47 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 246 seconds)
2022-04-07 14:00:24 +0200wyrd(~wyrd@gateway/tor-sasl/wyrd) (Remote host closed the connection)
2022-04-07 14:01:21 +0200wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-04-07 14:01:36 +0200redb(~nmh@136.49.49.211) (Ping timeout: 272 seconds)
2022-04-07 14:01:55 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
2022-04-07 14:02:41 +0200Pickchea(~private@user/pickchea)
2022-04-07 14:04:01 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-04-07 14:04:44 +0200toulene(~toulene@user/toulene)
2022-04-07 14:09:46 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 14:11:53 +0200bw(sid2730@user/betawaffle) (Ping timeout: 256 seconds)
2022-04-07 14:12:05 +0200 <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
2022-04-07 14:14:01 +0200kaph_(~kaph@151.68.121.66)
2022-04-07 14:14:47 +0200bahamas(~lucian@84.232.140.158)
2022-04-07 14:14:56 +0200x_kuru_(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2022-04-07 14:15:35 +0200 <hpc> if you think about it, that's basically the same way ghc knows how GADTs work
2022-04-07 14:15:42 +0200 <boxscape_> yeah, that's true
2022-04-07 14:15:44 +0200 <hpc> so i bet you could get a pretty nice implementation of that feature fairly easily
2022-04-07 14:15:58 +0200 <boxscape_> however, it doesn't seem to ever warn about x.a, even if x is B :(
2022-04-07 14:16:08 +0200 <hpc> :(
2022-04-07 14:16:09 +0200bw(sid2730@user/betawaffle)
2022-04-07 14:16:27 +0200 <boxscape_> time to open another GHC issue I guess
2022-04-07 14:21:56 +0200 <boxscape_> never mind, already exists https://gitlab.haskell.org/ghc/ghc/-/issues/18650
2022-04-07 14:22:49 +0200_dmc_(~dcm@user/dmc/x-4369397) (Ping timeout: 248 seconds)
2022-04-07 14:27:13 +0200cdman(~dcm@user/dmc/x-4369397)
2022-04-07 14:28:42 +0200abastro(~abab9579@220.75.216.63)
2022-04-07 14:28:54 +0200abastro(~abab9579@220.75.216.63) (Remote host closed the connection)
2022-04-07 14:29:10 +0200abastro(~abab9579@220.75.216.63)
2022-04-07 14:29:20 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds)
2022-04-07 14:30:40 +0200redb(~nmh@136.49.49.211)
2022-04-07 14:31:23 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-04-07 14:34:56 +0200redb(~nmh@136.49.49.211) (Ping timeout: 246 seconds)
2022-04-07 14:40:35 +0200cfricke(~cfricke@user/cfricke)
2022-04-07 14:40:50 +0200 <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
2022-04-07 14:41:33 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 14:44:29 +0200deadmarshal_(~deadmarsh@95.38.112.46)
2022-04-07 14:46:03 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
2022-04-07 14:46:34 +0200mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 272 seconds)
2022-04-07 14:47:43 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-04-07 14:48:19 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
2022-04-07 14:49:38 +0200elkcl(~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (Ping timeout: 246 seconds)
2022-04-07 14:50:20 +0200bontaq(~user@ool-45779fe5.dyn.optonline.net)
2022-04-07 14:50:39 +0200kaph_(~kaph@151.68.121.66) (Ping timeout: 256 seconds)
2022-04-07 14:51:36 +0200redb(~nmh@136.49.49.211)
2022-04-07 14:53:07 +0200immae(~immae@2a01:4f8:141:53e7::) (Quit: WeeChat 3.3)
2022-04-07 14:54:21 +0200immae(~immae@2a01:4f8:141:53e7::)
2022-04-07 14:55:56 +0200redb(~nmh@136.49.49.211) (Ping timeout: 246 seconds)
2022-04-07 14:57:20 +0200bahamas(~lucian@84.232.140.158) (Ping timeout: 272 seconds)
2022-04-07 14:58:03 +0200fef(~thedawn@user/thedawn)
2022-04-07 15:01:53 +0200elkcl(~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru)
2022-04-07 15:03:43 +0200doyougnu(~doyougnu@cpe-67-249-83-190.twcny.res.rr.com)
2022-04-07 15:06:44 +0200 <abastro> Wow is it hard to add extension to compile a dependency?
2022-04-07 15:07:44 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2022-04-07 15:12:01 +0200redb(~nmh@136.49.49.211)
2022-04-07 15:12:23 +0200 <boxscape_> abastro could be just me but it's not clear to me what you're asking
2022-04-07 15:13:26 +0200 <merijn> boxscape_: You can't safely used record accessors with sumtypes, no
2022-04-07 15:14:10 +0200 <merijn> Which is why -XNoFieldSelectors is so great
2022-04-07 15:14:27 +0200 <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
2022-04-07 15:14:28 +0200 <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`?
2022-04-07 15:14:49 +0200 <boxscape_> merijn but you still have the same problem if you want to use -XNoFieldSelectors with OverloadedRecordDot. Though resolving 18650 would fix that
2022-04-07 15:15:23 +0200 <merijn> boxscape_: I think OverloadedRecordDot is an absolute atrocity, so I have no sympathy for it blowing up in people's faces :)
2022-04-07 15:15:30 +0200 <boxscape_> fair enough
2022-04-07 15:15:49 +0200 <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
2022-04-07 15:16:13 +0200 <merijn> boxscape_: In most of those cases just using regular record syntax would just fine too, though?
2022-04-07 15:16:25 +0200 <boxscape_> merijn I like OverloadedRecordDot better though
2022-04-07 15:16:41 +0200redb(~nmh@136.49.49.211) (Ping timeout: 248 seconds)
2022-04-07 15:16:46 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2022-04-07 15:16:54 +0200 <merijn> It turns the grammar into a confusing, contextual nightmare
2022-04-07 15:17:01 +0200BlackboardN(~Blackboar@user/BlackboardN) (Ping timeout: 245 seconds)
2022-04-07 15:17:30 +0200 <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.
2022-04-07 15:17:47 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 260 seconds)
2022-04-07 15:18:08 +0200 <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
2022-04-07 15:18:39 +0200 <merijn> spaces around operators would have solved the whole stupid unary vs binary minus problem too
2022-04-07 15:18:53 +0200 <boxscape_> I put spaces around all my operators anyway so I don't find it that confusing in my own code, at least
2022-04-07 15:19:41 +0200 <merijn> boxscape_: So do I, but the grammar has to handle cases where that's not true
2022-04-07 15:20:10 +0200 <boxscape_> yeah but the complexity in the compiler exists whether I enable the extension or not :)
2022-04-07 15:20:48 +0200 <merijn> boxscape_: The extension makes it ambiguous what "foo.bar" means for anyone reading your code, though
2022-04-07 15:21:02 +0200 <merijn> 'cause the reader cannot assume you consistently space operators
2022-04-07 15:22:18 +0200 <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.
2022-04-07 15:23:19 +0200 <boxscape_> I would be inclined to believe that people a priori tend to assume that compose (.) will have spaces around it
2022-04-07 15:23:42 +0200 <merijn> boxscape_: I've seen *a lot* of haskell without spaces for composition
2022-04-07 15:23:53 +0200 <boxscape_> hm, fair enough
2022-04-07 15:23:57 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-07 15:28:28 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.4.1)
2022-04-07 15:28:31 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2022-04-07 15:29:21 +0200cdman(~dcm@user/dmc/x-4369397) (Quit: Leaving)
2022-04-07 15:31:33 +0200cdman(~dcm@user/dmc/x-4369397)
2022-04-07 15:32:42 +0200bahamas(~lucian@84.232.140.158)
2022-04-07 15:36:25 +0200cdman(~dcm@user/dmc/x-4369397) (Client Quit)
2022-04-07 15:37:14 +0200bahamas(~lucian@84.232.140.158) (Ping timeout: 246 seconds)
2022-04-07 15:39:42 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-04-07 15:40:16 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
2022-04-07 15:42:29 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-04-07 15:42:29 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-04-07 15:42:29 +0200wroathe(~wroathe@user/wroathe)
2022-04-07 15:43:32 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 246 seconds)
2022-04-07 15:43:54 +0200cosimone(~user@93-47-228-79.ip115.fastwebnet.it)
2022-04-07 15:44:24 +0200bezmuth(~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7)
2022-04-07 15:45:31 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-04-07 15:45:54 +0200redb(~nmh@136.49.49.211)
2022-04-07 15:47:23 +0200Pickchea(~private@user/pickchea) (Ping timeout: 246 seconds)
2022-04-07 15:48:24 +0200ub(~Thunderbi@p200300ecdf15885c0dce6310edc9e9e7.dip0.t-ipconnect.de)
2022-04-07 15:48:29 +0200ub(~Thunderbi@p200300ecdf15885c0dce6310edc9e9e7.dip0.t-ipconnect.de) (Client Quit)
2022-04-07 15:50:32 +0200 <abastro> Yea my question was quite vague, boxscape_
2022-04-07 15:50:32 +0200redb(~nmh@136.49.49.211) (Ping timeout: 272 seconds)
2022-04-07 15:50:45 +0200 <abastro> Anyway I forked the repo to solve it
2022-04-07 15:53:03 +0200CiaoSen(~Jura@p200300c9572d40002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-04-07 15:55:28 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-04-07 15:55:33 +0200odnes__(~odnes@5-203-246-201.pat.nym.cosmote.net)
2022-04-07 15:56:07 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
2022-04-07 15:57:13 +0200alp_(~alp@user/alp) (Ping timeout: 248 seconds)
2022-04-07 15:58:17 +0200odnes_(~odnes@5-203-246-201.pat.nym.cosmote.net) (Ping timeout: 248 seconds)
2022-04-07 16:00:04 +0200kaph(~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it)
2022-04-07 16:00:39 +0200bahamas(~lucian@84.232.140.158)
2022-04-07 16:01:28 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2022-04-07 16:04:33 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2022-04-07 16:07:18 +0200frost(~frost@user/frost) (Ping timeout: 250 seconds)
2022-04-07 16:09:32 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
2022-04-07 16:10:50 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-04-07 16:12:30 +0200benin(~benin@183.82.204.110) (Quit: The Lounge - https://thelounge.chat)
2022-04-07 16:15:02 +0200doyougnu(~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Ping timeout: 246 seconds)
2022-04-07 16:15:19 +0200benin(~benin@183.82.204.110)
2022-04-07 16:17:35 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-04-07 16:19:28 +0200redb(~nmh@136.49.49.211)
2022-04-07 16:22:31 +0200Sgeo(~Sgeo@user/sgeo)
2022-04-07 16:23:53 +0200redb(~nmh@136.49.49.211) (Ping timeout: 248 seconds)
2022-04-07 16:24:14 +0200Akiva(~Akiva@user/Akiva)
2022-04-07 16:26:34 +0200azimut_(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-04-07 16:26:55 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-04-07 16:28:31 +0200Pickchea(~private@user/pickchea)
2022-04-07 16:31:55 +0200Guest89(~Guest89@2a01:41e1:440f:2c00:f9ba:f616:34ce:27bb) (Quit: Client closed)
2022-04-07 16:32:49 +0200 <lortabac> is there a way to coerce between two records if all the fields are coercible?
2022-04-07 16:33:25 +0200Guest89(~Guest89@2a01:41e1:440f:2c00:f9ba:f616:34ce:27bb)
2022-04-07 16:33:26 +0200 <lortabac> maybe some library that relies on Generics
2022-04-07 16:34:38 +0200akegalj(~akegalj@93.140.126.69) (Quit: leaving)
2022-04-07 16:38:17 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 248 seconds)
2022-04-07 16:40:09 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-04-07 16:42:20 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 16:43:50 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
2022-04-07 16:46:33 +0200sander(~sander@user/sander)
2022-04-07 16:46:50 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-04-07 16:49:21 +0200rttixian(~chargen@D964062A.static.ziggozakelijk.nl) (Read error: Connection reset by peer)
2022-04-07 16:50:36 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 240 seconds)
2022-04-07 16:53:39 +0200cosimone(~user@93-47-228-79.ip115.fastwebnet.it) (Remote host closed the connection)
2022-04-07 16:54:48 +0200redb(~nmh@136.49.49.211)
2022-04-07 16:59:03 +0200redb(~nmh@136.49.49.211) (Ping timeout: 260 seconds)
2022-04-07 16:59:08 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 17:01:15 +0200xpika(~alan@n175-34-18-168.sun1.vic.optusnet.com.au)
2022-04-07 17:01:15 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-04-07 17:03:48 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
2022-04-07 17:08:04 +0200kaph(~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) (Read error: Connection reset by peer)
2022-04-07 17:10:20 +0200sammelweis(~quassel@c-68-48-18-140.hsd1.mi.comcast.net) (Ping timeout: 246 seconds)
2022-04-07 17:10:45 +0200kaph(~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it)
2022-04-07 17:12:05 +0200xpika(~alan@n175-34-18-168.sun1.vic.optusnet.com.au) ()
2022-04-07 17:12:21 +0200xpika(~alan@n175-34-18-168.sun1.vic.optusnet.com.au)
2022-04-07 17:13:44 +0200 <xpika> is there a haskell library for converting html to ascii table?
2022-04-07 17:14:13 +0200 <maerwald> pandoc can convert between html and markdown
2022-04-07 17:14:59 +0200mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-04-07 17:15:32 +0200redb(~nmh@136.49.49.211)
2022-04-07 17:16:38 +0200alp_(~alp@user/alp)
2022-04-07 17:16:51 +0200bahamas(~lucian@84.232.140.158) (Ping timeout: 256 seconds)
2022-04-07 17:19:04 +0200lbseale(~ep1ctetus@user/ep1ctetus)
2022-04-07 17:22:01 +0200boxscape_(~boxscape_@p4ff0b7be.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2022-04-07 17:25:26 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 17:25:49 +0200zebrag(~chris@user/zebrag)
2022-04-07 17:26:17 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 248 seconds)
2022-04-07 17:26:38 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2022-04-07 17:27:04 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-04-07 17:30:16 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds)
2022-04-07 17:32:54 +0200 <xpika> is there a library function for horizontally appending two 2d blocks of text?
2022-04-07 17:33:24 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:cb75:3834:c1c1:ff4e) (Quit: WeeChat 2.8)
2022-04-07 17:33:42 +0200 <geekosaur> not in base. there are several pretty-printling libraries that can do it among other things
2022-04-07 17:34:00 +0200 <xpika> which one?
2022-04-07 17:34:43 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 260 seconds)
2022-04-07 17:34:59 +0200 <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-Annot…
2022-04-07 17:35:26 +0200 <geekosaur> mm, not quite that one, but see Text.PrettyPrint in general, from
2022-04-07 17:35:31 +0200 <geekosaur> @hackage pretty
2022-04-07 17:35:31 +0200 <lambdabot> https://hackage.haskell.org/package/pretty
2022-04-07 17:35:47 +0200 <geekosaur> again,this ships with ghc since ghc uses it to format error messages
2022-04-07 17:36:08 +0200 <geekosaur> I think it's the <+> operator that combines two 2D Docs
2022-04-07 17:40:45 +0200 <maerwald> and adds a space
2022-04-07 17:41:52 +0200 <xpika> hcat [vcat [text "Hello" , text "^"] , text " World"]
2022-04-07 17:41:54 +0200 <geekosaur> Ithink simple mappend /<> works to do it without a space, though
2022-04-07 17:42:00 +0200jespada(~jespada@cpc121022-nmal24-2-0-cust171.19-2.cable.virginm.net) (Quit: Textual IRC Client: www.textualapp.com)
2022-04-07 17:42:04 +0200 <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)
2022-04-07 17:42:11 +0200 <xpika> gives
2022-04-07 17:42:11 +0200 <xpika> Hello
2022-04-07 17:42:11 +0200 <xpika> ^ World
2022-04-07 17:42:32 +0200 <xpika> I want
2022-04-07 17:42:32 +0200 <xpika> Hello World
2022-04-07 17:42:32 +0200 <xpika> ^
2022-04-07 17:43:01 +0200 <glguy> oh nevermind, I guess. It worked on the third try o.O
2022-04-07 17:43:18 +0200jespada(~jespada@2a0c:5c84:1:4000::91c2)
2022-04-07 17:46:08 +0200geekosaurlooks for other prettyprinter libs
2022-04-07 17:46:19 +0200 <geekosaur> I think I'm not surprised since it's used for error messages
2022-04-07 17:48:52 +0200 <geekosaur> in particular I'm remembering one which allowed specification of how two 2d blocks were aligned
2022-04-07 17:49:38 +0200mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Remote host closed the connection)
2022-04-07 17:50:25 +0200gehmehgeh(~user@user/gehmehgeh) (Remote host closed the connection)
2022-04-07 17:51:07 +0200gehmehgeh(~user@user/gehmehgeh)
2022-04-07 17:52:11 +0200Guest89(~Guest89@2a01:41e1:440f:2c00:f9ba:f616:34ce:27bb) (Quit: Client closed)
2022-04-07 17:53:18 +0200 <geekosaur> mrrgh. allI'm finding so far uses the Wadler algorithm which isn't designed for multicolumn
2022-04-07 17:55:31 +0200 <geekosaur> https://hackage.haskell.org/package/boxes-0.1.5/docs/Text-PrettyPrint-Boxes.html if it still builds
2022-04-07 17:55:51 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-04-07 17:56:10 +0200bezmuth(~bezmuth@2a00:23c4:8a8f:5900:daa0:b5b1:cd63:bdb7) (Ping timeout: 268 seconds)
2022-04-07 17:57:50 +0200ix(~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Remote host closed the connection)
2022-04-07 17:58:00 +0200ix(~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
2022-04-07 18:00:39 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2022-04-07 18:02:31 +0200CiaoSen(~Jura@p200300c9572d40002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-04-07 18:02:49 +0200ccntrq(~Thunderbi@2a01:e34:eccb:b060:ba9d:69d8:b4f8:4092) (Remote host closed the connection)
2022-04-07 18:03:21 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-04-07 18:04:07 +0200gdd(~gdd@129.199.146.230) (Ping timeout: 250 seconds)
2022-04-07 18:04:21 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
2022-04-07 18:06:49 +0200epolanski(uid312403@id-312403.helmsley.irccloud.com)
2022-04-07 18:08:42 +0200haskellberryfinn(~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-04-07 18:09:08 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
2022-04-07 18:09:23 +0200gdd(~gdd@129.199.146.230)
2022-04-07 18:10:43 +0200eaii^(~eaii@c-24-99-107-170.hsd1.ga.comcast.net)
2022-04-07 18:11:05 +0200cosimone(~user@93-47-228-79.ip115.fastwebnet.it)
2022-04-07 18:16:50 +0200haskellberryfinn(~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 246 seconds)
2022-04-07 18:17:57 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-04-07 18:20:48 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-04-07 18:21:34 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
2022-04-07 18:24:26 +0200bezmuth(~bezmuth@host86-136-197-212.range86-136.btcentralplus.com)
2022-04-07 18:24:42 +0200doyougnu(~doyougnu@cpe-67-249-83-190.twcny.res.rr.com)
2022-04-07 18:24:46 +0200 <xpika> Text.PrettyPrint.Boxes> printBox $ (text "hello" // text "1") <+> ( text "world" // text "2")
2022-04-07 18:24:46 +0200 <xpika> hello world
2022-04-07 18:24:46 +0200 <xpika> 1 2
2022-04-07 18:25:06 +0200 <xpika> not bad
2022-04-07 18:25:58 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-07 18:26:42 +0200Cale(~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com) (Remote host closed the connection)
2022-04-07 18:28:34 +0200zeenk(~zeenk@2a02:2f04:a313:d600:8d26:ec9f:3ff6:fc94) (Quit: Konversation terminated!)
2022-04-07 18:28:56 +0200vicfred(~vicfred@user/vicfred)
2022-04-07 18:29:53 +0200haskellberryfinn(~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-04-07 18:30:08 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
2022-04-07 18:40:36 +0200redb(~nmh@136.49.49.211) (Ping timeout: 240 seconds)
2022-04-07 18:49:56 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Remote host closed the connection)
2022-04-07 18:50:03 +0200tzh_(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-04-07 18:51:31 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2022-04-07 18:51:43 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-04-07 18:52:40 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2022-04-07 18:53:19 +0200redb(~nmh@136.49.49.211)
2022-04-07 18:53:57 +0200abastro(~abab9579@220.75.216.63) (Ping timeout: 246 seconds)
2022-04-07 18:54:37 +0200pretty_d1(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-04-07 18:54:49 +0200mbuf(~Shakthi@122.162.142.187) (Quit: Leaving)
2022-04-07 18:55:21 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 245 seconds)
2022-04-07 19:01:03 +0200haskellberryfinn(~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 260 seconds)
2022-04-07 19:01:11 +0200agrosant(~agrosant@79.103.182.92.dsl.dyn.forthnet.gr) (Ping timeout: 272 seconds)
2022-04-07 19:04:28 +0200BlackboardN(~Blackboar@user/BlackboardN)
2022-04-07 19:05:35 +0200 <lechner> Hi, with the word 'package' a bit overloaded, is there a more precise term for a particular source version on Hackage?
2022-04-07 19:06:24 +0200 <maerwald> package version
2022-04-07 19:10:33 +0200 <lechner> Yeah, we used that for everything in Debian too until I introduced 'sources' and 'installables'. Can I go with 'hackage source version'?
2022-04-07 19:11:07 +0200 <maerwald> a hackable
2022-04-07 19:11:19 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-07 19:11:56 +0200 <lechner> i'll take it if it's not a joke
2022-04-07 19:12:18 +0200cosimone(~user@93-47-228-79.ip115.fastwebnet.it) (Remote host closed the connection)
2022-04-07 19:12:19 +0200 <monochrom> We already have a name for "installables": build product. Therefore, "package version" already refers to source code, without emphasizing "source code".
2022-04-07 19:13:27 +0200 <lechner> in my mind hackage is a misnomer. it should not refer to the repo but to each source version
2022-04-07 19:14:20 +0200 <lechner> perhaps turning Hackage intoa plural hackages.haskell.org
2022-04-07 19:14:23 +0200odnes__(~odnes@5-203-246-201.pat.nym.cosmote.net) (Quit: Leaving)
2022-04-07 19:14:55 +0200 <monochrom> Huh? Hackage is a gathering place.
2022-04-07 19:15:15 +0200 <maerwald> lechner: are you seriously thinking you could rename hackage?
2022-04-07 19:15:34 +0200 <monochrom> We say "Trafalga Plaza", not "Trafalga Plazas" just because "it has many persons".
2022-04-07 19:15:59 +0200 <lechner> you can't be more stubborn than my colleages at Debian
2022-04-07 19:16:01 +0200 <monochrom> Err I guess s/Plaza/Square/
2022-04-07 19:16:26 +0200 <lechner> Haskell is all about accurate terminology
2022-04-07 19:16:59 +0200 <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.
2022-04-07 19:17:26 +0200 <lechner> hackage would stand for Haskell Package
2022-04-07 19:17:37 +0200 <lechner> singular
2022-04-07 19:17:40 +0200 <monochrom> N. O.
2022-04-07 19:18:25 +0200 <monochrom> You don't say "debian would stand for deb package, singluar" either.
2022-04-07 19:19:11 +0200 <lechner> .deb refers to Ian's ex-wife
2022-04-07 19:19:26 +0200 <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?
2022-04-07 19:19:47 +0200 <monochrom> I mean, sheesh.
2022-04-07 19:25:57 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 19:30:04 +0200gawen(~gawen@user/gawen) (Quit: cya)
2022-04-07 19:31:24 +0200gawen(~gawen@user/gawen)
2022-04-07 19:31:25 +0200Major_Biscuit(~MajorBisc@c-001-005-034.client.tudelft.eduvpn.nl) (Ping timeout: 240 seconds)
2022-04-07 19:32:00 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-04-07 19:34:17 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds)
2022-04-07 19:36:37 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-04-07 19:37:13 +0200Vajb(~Vajb@2001:999:62:aa00:7f5a:4f10:c894:3813)
2022-04-07 19:39:40 +0200 <monochrom> https://bartoszmilewski.com/2022/04/05/teaching-optics-through-conspiracy-theories/ is pretty nice.
2022-04-07 19:39:41 +0200mvk(~mvk@2607:fea8:5ce3:8500::9d5a)
2022-04-07 19:43:08 +0200ec(~ec@gateway/tor-sasl/ec)
2022-04-07 19:44:35 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2022-04-07 19:46:07 +0200 <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?
2022-04-07 19:46:33 +0200cheater(~Username@user/cheater) (Ping timeout: 268 seconds)
2022-04-07 19:46:38 +0200Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection)
2022-04-07 19:46:49 +0200 <siraben> Oh I guess I can define type level If
2022-04-07 19:50:34 +0200deadmarshal_(~deadmarsh@95.38.112.46) (Ping timeout: 272 seconds)
2022-04-07 19:52:01 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-04-07 19:52:42 +0200cheater(~Username@user/cheater)
2022-04-07 19:54:24 +0200hololeap_(~hololeap@user/hololeap)
2022-04-07 19:55:11 +0200vysn(~vysn@user/vysn) (Ping timeout: 268 seconds)
2022-04-07 19:55:15 +0200hololeap(~hololeap@user/hololeap) (Ping timeout: 240 seconds)
2022-04-07 19:56:12 +0200 <siraben> oh that doesn't work because type-level evaluation is strict
2022-04-07 20:00:51 +0200zincy(~zincy@host86-160-236-152.range86-160.btcentralplus.com)
2022-04-07 20:00:58 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-04-07 20:01:05 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-04-07 20:02:02 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-04-07 20:02:27 +0200asivitz(uid178348@id-178348.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2022-04-07 20:03:20 +0200tubogram4(~tubogram@user/tubogram) (*.net *.split)
2022-04-07 20:03:20 +0200dons(~dons@user/dons) (*.net *.split)
2022-04-07 20:03:20 +0200Axman6(~Axman6@user/axman6) (*.net *.split)
2022-04-07 20:05:04 +0200Axman6(~Axman6@user/axman6)
2022-04-07 20:05:04 +0200tubogram4(~tubogram@user/tubogram)
2022-04-07 20:05:04 +0200dons(~dons@user/dons)
2022-04-07 20:05:46 +0200neurocyte861449(~neurocyte@user/neurocyte) (Read error: Connection reset by peer)
2022-04-07 20:07:20 +0200neurocyte8614492(~neurocyte@IP-185238252073.dynamic.medianet-world.de)
2022-04-07 20:07:20 +0200neurocyte8614492(~neurocyte@IP-185238252073.dynamic.medianet-world.de) (Changing host)
2022-04-07 20:07:20 +0200neurocyte8614492(~neurocyte@user/neurocyte)
2022-04-07 20:09:24 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-04-07 20:10:11 +0200Cale(~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com)
2022-04-07 20:10:23 +0200jakalx(~jakalx@base.jakalx.net)
2022-04-07 20:11:08 +0200hololeap(~hololeap@user/hololeap)
2022-04-07 20:11:23 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2022-04-07 20:12:15 +0200hololeap_(~hololeap@user/hololeap) (Ping timeout: 240 seconds)
2022-04-07 20:13:10 +0200dextaa_54(~dextaa@user/dextaa)
2022-04-07 20:14:43 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2022-04-07 20:15:20 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-04-07 20:19:02 +0200deadmarshal_(~deadmarsh@95.38.112.46)
2022-04-07 20:19:03 +0200Vajb(~Vajb@2001:999:62:aa00:7f5a:4f10:c894:3813) (Read error: Connection reset by peer)
2022-04-07 20:19:37 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 248 seconds)
2022-04-07 20:19:48 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-04-07 20:20:59 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2022-04-07 20:21:35 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2022-04-07 20:21:42 +0200mvk(~mvk@2607:fea8:5ce3:8500::9d5a) (Ping timeout: 268 seconds)
2022-04-07 20:22:15 +0200hololeap(~hololeap@user/hololeap) (Ping timeout: 240 seconds)
2022-04-07 20:23:51 +0200deadmarshal_(~deadmarsh@95.38.112.46) (Ping timeout: 256 seconds)
2022-04-07 20:27:56 +0200Guest89(~Guest89@2a01:41e1:440f:2c00:f9ba:f616:34ce:27bb)
2022-04-07 20:28:05 +0200_ht(~quassel@231-169-21-31.ftth.glasoperator.nl)
2022-04-07 20:28:35 +0200hololeap(~hololeap@user/hololeap)
2022-04-07 20:29:05 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-04-07 20:37:22 +0200econo(uid147250@user/econo)
2022-04-07 20:39:36 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-04-07 20:42:48 +0200redb(~nmh@136.49.49.211) (Ping timeout: 246 seconds)
2022-04-07 20:43:07 +0200dyeplexer(~dyeplexer@user/dyeplexer) (Ping timeout: 256 seconds)
2022-04-07 20:45:45 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 248 seconds)
2022-04-07 20:46:37 +0200epolanski(uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2022-04-07 20:47:50 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-04-07 20:48:50 +0200alp_(~alp@user/alp) (Ping timeout: 268 seconds)
2022-04-07 20:50:15 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-04-07 20:50:52 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
2022-04-07 20:53:27 +0200coot(~coot@213.134.190.95)
2022-04-07 20:55:53 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 248 seconds)
2022-04-07 20:57:07 +0200lbseale(~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer)
2022-04-07 20:58:32 +0200bezmuth(~bezmuth@host86-136-197-212.range86-136.btcentralplus.com) (Ping timeout: 246 seconds)
2022-04-07 21:02:46 +0200benin(~benin@183.82.204.110) (Ping timeout: 272 seconds)
2022-04-07 21:07:00 +0200redb(~nmh@136.49.49.211)
2022-04-07 21:09:33 +0200benin(~benin@183.82.204.110)
2022-04-07 21:11:24 +0200redb(~nmh@136.49.49.211) (Ping timeout: 240 seconds)
2022-04-07 21:12:16 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds)
2022-04-07 21:14:11 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-04-07 21:17:25 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-04-07 21:26:13 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-04-07 21:26:31 +0200Pickchea(~private@user/pickchea)
2022-04-07 21:27:47 +0200haskellberryfinn(~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-04-07 21:27:54 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2022-04-07 21:30:18 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-04-07 21:30:40 +0200redb(~nmh@136.49.49.211)
2022-04-07 21:31:31 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 21:32:36 +0200vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2022-04-07 21:32:41 +0200rekahsoft(~rekahsoft@cpe001b21a2fd89-cm64777ddc63a0.cpe.net.cable.rogers.com)
2022-04-07 21:32:45 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-07 21:32:47 +0200mvk(~mvk@2607:fea8:5ce3:8500::9d5a)
2022-04-07 21:33:02 +0200acidjnk(~acidjnk@p200300d0c7049f25b15f97e32406cde6.dip0.t-ipconnect.de)
2022-04-07 21:34:08 +0200rekahsoft(~rekahsoft@cpe001b21a2fd89-cm64777ddc63a0.cpe.net.cable.rogers.com) (Remote host closed the connection)
2022-04-07 21:37:02 +0200Kaipi(~Kaiepi@156.34.47.253)
2022-04-07 21:37:58 +0200redb(~nmh@136.49.49.211) (Ping timeout: 260 seconds)
2022-04-07 21:38:10 +0200Kaiepi(~Kaiepi@156.34.47.253) (Ping timeout: 268 seconds)
2022-04-07 21:38:46 +0200jgeerds(~jgeerds@d5364b87.access.ecotel.net)
2022-04-07 21:40:18 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
2022-04-07 21:41:18 +0200Kaipi(~Kaiepi@156.34.47.253) (Remote host closed the connection)
2022-04-07 21:41:52 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 268 seconds)
2022-04-07 21:43:15 +0200fef(~thedawn@user/thedawn) (Ping timeout: 240 seconds)
2022-04-07 21:44:19 +0200awpr(uid446117@id-446117.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2022-04-07 21:46:29 +0200doyougnu(~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Ping timeout: 246 seconds)
2022-04-07 21:47:15 +0200shapr(~user@pool-173-73-44-186.washdc.fios.verizon.net) (Remote host closed the connection)
2022-04-07 21:47:20 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 21:47:32 +0200pooryorick(~pooryoric@87-119-174-173.tll.elisa.ee) (Ping timeout: 246 seconds)
2022-04-07 21:48:14 +0200redb(~nmh@136.49.49.211)
2022-04-07 21:52:10 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds)
2022-04-07 21:52:36 +0200rekahsoft(~rekahsoft@cpe001b21a2fd89-cm64777ddc63a0.cpe.net.cable.rogers.com)
2022-04-07 21:54:30 +0200pooryorick(~pooryoric@87-119-174-173.tll.elisa.ee)
2022-04-07 21:58:25 +0200liz_(~liz@host109-151-125-217.range109-151.btcentralplus.com)
2022-04-07 22:02:46 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4.1)
2022-04-07 22:03:19 +0200orcus(~orcus@user/brprice) (Ping timeout: 260 seconds)
2022-04-07 22:03:47 +0200orcus(~orcus@user/brprice)
2022-04-07 22:03:55 +0200_ht(~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
2022-04-07 22:05:53 +0200alp_(~alp@user/alp)
2022-04-07 22:07:24 +0200vjoki(~vjoki@2a00:d880:3:1::fea1:9ae) (Ping timeout: 240 seconds)
2022-04-07 22:08:23 +0200neurocyte8614492(~neurocyte@user/neurocyte) (Ping timeout: 268 seconds)
2022-04-07 22:09:24 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
2022-04-07 22:09:30 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 22:09:42 +0200zeenk(~zeenk@2a02:2f04:a313:d600:8d26:ec9f:3ff6:fc94)
2022-04-07 22:09:51 +0200vjoki(~vjoki@2a00:d880:3:1::fea1:9ae)
2022-04-07 22:12:47 +0200zincy(~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Remote host closed the connection)
2022-04-07 22:14:21 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-04-07 22:14:33 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 268 seconds)
2022-04-07 22:15:15 +0200vicfred(~vicfred@user/vicfred)
2022-04-07 22:15:53 +0200chddr(~Thunderbi@91.226.35.164) (Ping timeout: 248 seconds)
2022-04-07 22:17:32 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-04-07 22:19:21 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2022-04-07 22:19:34 +0200hololeap_(~hololeap@user/hololeap)
2022-04-07 22:20:06 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds)
2022-04-07 22:20:15 +0200hololeap(~hololeap@user/hololeap) (Ping timeout: 240 seconds)
2022-04-07 22:20:38 +0200Lord_of_Life_Lord_of_Life
2022-04-07 22:21:56 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 22:26:18 +0200vjoki(~vjoki@2a00:d880:3:1::fea1:9ae) (Quit: ...)
2022-04-07 22:26:23 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds)
2022-04-07 22:27:01 +0200vjoki(~vjoki@2a00:d880:3:1::fea1:9ae)
2022-04-07 22:29:06 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-07 22:31:15 +0200hololeap_(~hololeap@user/hololeap) (Ping timeout: 240 seconds)
2022-04-07 22:31:21 +0200xkuru(~xkuru@user/xkuru)
2022-04-07 22:32:10 +0200hololeap_(~hololeap@user/hololeap)
2022-04-07 22:33:50 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-04-07 22:34:03 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 22:34:57 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-04-07 22:35:05 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 248 seconds)
2022-04-07 22:37:10 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-04-07 22:37:17 +0200shapr(~user@pool-173-73-44-186.washdc.fios.verizon.net)
2022-04-07 22:38:10 +0200tzh_(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Remote host closed the connection)
2022-04-07 22:38:58 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2022-04-07 22:39:28 +0200zincy(~zincy@2a00:23c8:970c:4801:dc35:500f:d0de:de53)
2022-04-07 22:39:48 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
2022-04-07 22:42:10 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Remote host closed the connection)
2022-04-07 22:42:52 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-04-07 22:43:36 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2022-04-07 22:44:34 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 22:48:07 +0200jgeerds(~jgeerds@d5364b87.access.ecotel.net) (Remote host closed the connection)
2022-04-07 22:48:24 +0200jgeerds(~jgeerds@d5364b87.access.ecotel.net)
2022-04-07 22:48:40 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Remote host closed the connection)
2022-04-07 22:49:03 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds)
2022-04-07 22:51:40 +0200xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2022-04-07 22:53:14 +0200img(~img@user/img)
2022-04-07 22:53:45 +0200michalz(~michalz@185.246.204.122) (Remote host closed the connection)
2022-04-07 22:53:49 +0200xkuru(~xkuru@user/xkuru)
2022-04-07 22:55:05 +0200liz_liz
2022-04-07 22:55:32 +0200seydar(~seydar@154-27-113-252.starry-inc.net)
2022-04-07 23:00:15 +0200seydar(~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds)
2022-04-07 23:06:15 +0200pretty_d1(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
2022-04-07 23:08:48 +0200jgeerds(~jgeerds@d5364b87.access.ecotel.net) (Ping timeout: 272 seconds)
2022-04-07 23:12:21 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net)
2022-04-07 23:12:29 +0200zincy(~zincy@2a00:23c8:970c:4801:dc35:500f:d0de:de53) (Remote host closed the connection)
2022-04-07 23:16:41 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
2022-04-07 23:17:27 +0200yauhsien(~yauhsien@61-231-21-149.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2022-04-07 23:18:34 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-04-07 23:19:35 +0200zyklotomic(~ethan@res380d-128-61-86-37.res.gatech.edu) (Ping timeout: 250 seconds)
2022-04-07 23:21:27 +0200zyklotomic(~ethan@res380d-128-61-81-124.res.gatech.edu)
2022-04-07 23:26:29 +0200Guest53(~Guest53@190.192.80.102)
2022-04-07 23:28:33 +0200dfordivam1(~dfordivam@tk2-219-19469.vs.sakura.ne.jp) (Ping timeout: 252 seconds)
2022-04-07 23:29:34 +0200dfordivam1(~dfordivam@tk2-219-19469.vs.sakura.ne.jp)
2022-04-07 23:39:55 +0200acidjnk(~acidjnk@p200300d0c7049f25b15f97e32406cde6.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-04-07 23:43:15 +0200wyrd(~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 240 seconds)
2022-04-07 23:45:28 +0200Teacup(~teacup@user/teacup) (Remote host closed the connection)
2022-04-07 23:45:40 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-04-07 23:45:43 +0200Teacup(~teacup@user/teacup)
2022-04-07 23:50:15 +0200hololeap_(~hololeap@user/hololeap) (Ping timeout: 240 seconds)
2022-04-07 23:50:24 +0200wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-04-07 23:52:51 +0200cosimone(~user@93-47-228-79.ip115.fastwebnet.it)
2022-04-07 23:52:59 +0200dcoutts_(~duncan@host213-122-143-81.range213-122.btcentralplus.com) (Ping timeout: 260 seconds)
2022-04-07 23:53:53 +0200hololeap_(~hololeap@user/hololeap)
2022-04-07 23:59:07 +0200awschnap(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-04-07 23:59:07 +0200lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Read error: Connection reset by peer)
2022-04-07 23:59:55 +0200hololeap_(~hololeap@user/hololeap) (Ping timeout: 240 seconds)