2021/07/31

2021-07-31 00:00:02 +0200safinaskar(~user@109.252.55.35)
2021-07-31 00:00:20 +0200 <safinaskar> webchat.freenode.net doesn't work
2021-07-31 00:00:23 +0200 <safinaskar> do you know why?
2021-07-31 00:00:49 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net) (Quit: ERC (IRC client for Emacs 28.0.50))
2021-07-31 00:01:41 +0200l-monninger(~l-monning@c-73-170-133-54.hsd1.ca.comcast.net)
2021-07-31 00:02:24 +0200l-monninger(~l-monning@c-73-170-133-54.hsd1.ca.comcast.net) (Client Quit)
2021-07-31 00:02:25 +0200 <meejah> safinaskar: "freenode is dead", approximately?
2021-07-31 00:02:35 +0200jneira_(~jneira_@28.red-80-28-169.staticip.rima-tde.net)
2021-07-31 00:02:39 +0200ubert(~Thunderbi@91.141.35.41.wireless.dyn.drei.com) (Quit: ubert)
2021-07-31 00:02:50 +0200 <geekosaur> what pointed you at webchat.freenode.net?
2021-07-31 00:02:57 +0200ubert(~Thunderbi@91.141.35.41.wireless.dyn.drei.com)
2021-07-31 00:03:06 +0200 <yushyin> https://web.libera.chat/ use this
2021-07-31 00:03:11 +0200 <geekosaur> it should prb\obably point to web.libera.chat these days
2021-07-31 00:03:36 +0200 <safinaskar> well, i found on augeas site that they are using freenode
2021-07-31 00:03:39 +0200 <safinaskar> so i am asking
2021-07-31 00:04:38 +0200 <geekosaur> indeed they appear not to have moved here
2021-07-31 00:05:31 +0200 <yushyin> maybe ask the freenode support what's wrong with it
2021-07-31 00:07:05 +0200 <DigitalKiwi> lol good luck
2021-07-31 00:07:11 +0200Null_A(~null_a@2601:645:8700:2290:44f7:81a6:341:7abe) (Remote host closed the connection)
2021-07-31 00:07:20 +0200ubert(~Thunderbi@91.141.35.41.wireless.dyn.drei.com) (Ping timeout: 256 seconds)
2021-07-31 00:08:21 +0200 <qrpnxz> it's called freenode, not freesupport /s
2021-07-31 00:08:57 +0200agua(~agua@2804:18:70:7597:1:0:6e99:2d6f)
2021-07-31 00:14:10 +0200Guest4(~Guest4@173-28-193-122.client.mchsi.com)
2021-07-31 00:15:33 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-31 00:16:34 +0200 <pavonia> freenode seems to enforce SASL connections now, might be related to this
2021-07-31 00:18:46 +0200lavaman(~lavaman@98.38.249.169)
2021-07-31 00:18:48 +0200Null_A(~null_a@2601:645:8700:2290:44f7:81a6:341:7abe)
2021-07-31 00:18:52 +0200 <safinaskar> pavonia: yes, but even webchat.freenode.net doesn't work!
2021-07-31 00:19:12 +0200gabiruh_gabiruh
2021-07-31 00:19:18 +0200 <safinaskar> i. e. freenode's own official web client fails to properly connect to freenode servers!
2021-07-31 00:20:02 +0200 <pavonia> Are you trying to connect via your account?
2021-07-31 00:20:57 +0200 <monochrom> That reminds me. "doesn't work" has not been defined. This has degenerated to a telepathic speculation game.
2021-07-31 00:21:26 +0200 <monochrom> I mean, even if we ignore the fact that this is not a freenode tech support service.
2021-07-31 00:22:31 +0200sagax(~sagax@213.138.71.146) (Ping timeout: 268 seconds)
2021-07-31 00:23:18 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 258 seconds)
2021-07-31 00:23:32 +0200 <DigitalKiwi> this is particularly amusing considering what freenode did to this channel and especially edwardk lol
2021-07-31 00:25:27 +0200 <pavonia> What did they do to edwardk?
2021-07-31 00:29:51 +0200 <DigitalKiwi> https://twitter.com/kmett/status/1403428202173796353
2021-07-31 00:30:58 +0200 <monochrom> Thanks. Yikes.
2021-07-31 00:33:27 +0200 <sm> safinaskar: freenode is dead, you should forget it
2021-07-31 00:33:59 +0200 <geekosaur> augeas appears to still be there
2021-07-31 00:34:13 +0200 <geekosaur> which is what safinaskar was looking for
2021-07-31 00:35:00 +0200lavaman(~lavaman@98.38.249.169)
2021-07-31 00:35:11 +0200 <geekosaur> (of course it may be living up to its nameā€¦)
2021-07-31 00:36:10 +0200 <geekosaur> or down to, as the case may be
2021-07-31 00:36:33 +0200 <sm> I found only https://hackage.haskell.org/package/augeas from 2012
2021-07-31 00:37:45 +0200 <sm> ah, this page: https://augeas.net/developers.html
2021-07-31 00:39:29 +0200FragByte(~christian@user/fragbyte) (Quit: Quit)
2021-07-31 00:40:04 +0200 <sm> and they don't seem to be on libera at all so maybe they really are a hold out, wow
2021-07-31 00:40:32 +0200chomwitt(~chomwitt@2a02:587:dc0c:a300:12c3:7bff:fe6d:d374)
2021-07-31 00:40:47 +0200theproffesor(~theproffe@2601:282:847f:8010::3a29) (Changing host)
2021-07-31 00:40:47 +0200theproffesor(~theproffe@user/theproffesor)
2021-07-31 00:40:56 +0200 <sm> no I think they're just not too active
2021-07-31 00:41:14 +0200FragByte(~christian@user/fragbyte)
2021-07-31 00:41:26 +0200roboguy__(~roboguy_@2605:a601:afe7:9f00:21b8:dc17:ae59:fdd6)
2021-07-31 00:41:38 +0200 <sm> send em a bug report safinaskar
2021-07-31 00:42:49 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2021-07-31 00:43:02 +0200xff0x(~xff0x@2001:1a81:532e:4200:4c53:a999:c700:5bd) (Ping timeout: 256 seconds)
2021-07-31 00:43:10 +0200smtnet3(~asdfasdfa@202.36.244.28) (Remote host closed the connection)
2021-07-31 00:43:23 +0200 <int-e> https://nitter.eu/kurtseifried/status/1398712468394811395#m is two months old, still relevant
2021-07-31 00:43:51 +0200xff0x(~xff0x@2001:1a81:532e:4200:ef34:239:52ff:ac71)
2021-07-31 00:44:08 +0200acidjnk(~acidjnk@p200300d0c72b9576e9974425ad52911e.dip0.t-ipconnect.de)
2021-07-31 00:45:06 +0200roboguy_(~roboguy_@2605:a601:afe7:9f00:948c:3207:efde:714f) (Ping timeout: 240 seconds)
2021-07-31 00:45:15 +0200newhaskeller(~newhaskel@2804:14c:c0:8dbb:94e0:d2eb:43f:5833)
2021-07-31 00:45:41 +0200 <pavonia> int-e++ (for posting nitter instead of twitter links)
2021-07-31 00:47:00 +0200tpefreedom(~tsomers@98-125-225-122.dyn.centurytel.net)
2021-07-31 00:47:18 +0200 <tpefreedom> Are there any GUI libraries that are not based on OO?
2021-07-31 00:47:28 +0200haskl(~haskl@98.37.78.63) (Ping timeout: 272 seconds)
2021-07-31 00:48:19 +0200 <pavonia> FRP libraries aren't, I guess
2021-07-31 00:48:24 +0200haskl(~haskl@98.37.78.63)
2021-07-31 00:48:26 +0200 <geekosaur> there's some FRP libraries
2021-07-31 00:48:38 +0200 <tpefreedom> FRP libraries?
2021-07-31 00:48:59 +0200 <geekosaur> some of which wrap originally OO or OO-like libs, but I think some are direct
2021-07-31 00:49:06 +0200 <geekosaur> functional reactive programming
2021-07-31 00:50:38 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 250 seconds)
2021-07-31 00:50:49 +0200 <delYsid> wait, does "cabal build" of a lib implicitly install it somehow?
2021-07-31 00:51:12 +0200 <monochrom> No.
2021-07-31 00:51:35 +0200 <monochrom> Even "cabal install" doesn't install a lib unless you add "--lib".
2021-07-31 00:51:36 +0200pesada(~agua@2804:14c:8793:8e2f:ecd5:11e0:50a0:f2fe)
2021-07-31 00:52:24 +0200 <monochrom> At least not in the "made available for bare-hand ghci" sense.
2021-07-31 00:53:03 +0200 <monochrom> But "cabal build" is extremely local to your source tree or build tree.
2021-07-31 00:53:23 +0200 <delYsid> I distinctly remember o-clock failed to build with ghc 9 yesterday. So I PR'ed it, and there hasnt been an upload to hackage yet. But today, the package I work on which depends on o-clock builds fine with ghc 9...
2021-07-31 00:53:54 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-07-31 00:53:57 +0200 <monochrom> Yes sometimes problems resolves themselves.
2021-07-31 00:54:02 +0200drd(~drd@93-39-151-19.ip76.fastwebnet.it)
2021-07-31 00:54:22 +0200 <myShoggoth> Haskell Foundation July Update: https://discourse.haskell.org/t/haskell-foundation-july-update/2812
2021-07-31 00:54:28 +0200 <monochrom> Sometimes students email me questions when I'm asleep and email me again "I have figured it out" when I wake and check email. :)
2021-07-31 00:55:08 +0200 <delYsid> monochrom: yeah, but this is something different...
2021-07-31 00:55:08 +0200agua(~agua@2804:18:70:7597:1:0:6e99:2d6f) (Ping timeout: 272 seconds)
2021-07-31 00:55:21 +0200oxide(~lambda@user/oxide) (Quit: oxide)
2021-07-31 00:55:38 +0200 <delYsid> anyway, CI will tell.
2021-07-31 00:58:42 +0200 <tpefreedom> So far, with what little GUI stuff I've done, I've mostly just treated the widget toolkits like other imported libraries with their own built in operations.
2021-07-31 01:00:05 +0200agua(~agua@2804:18:70:7597:1:0:6e99:2d6f)
2021-07-31 01:01:06 +0200Null_A(~null_a@2601:645:8700:2290:44f7:81a6:341:7abe) (Remote host closed the connection)
2021-07-31 01:03:06 +0200pesada(~agua@2804:14c:8793:8e2f:ecd5:11e0:50a0:f2fe) (Ping timeout: 240 seconds)
2021-07-31 01:04:17 +0200dhil(~dhil@195.213.192.47) (Ping timeout: 245 seconds)
2021-07-31 01:04:56 +0200pesada(~agua@2804:14c:8793:8e2f:ecd5:11e0:50a0:f2fe)
2021-07-31 01:06:23 +0200qontinuum(qontinuum@user/qontinuum)
2021-07-31 01:07:10 +0200agua(~agua@2804:18:70:7597:1:0:6e99:2d6f) (Ping timeout: 272 seconds)
2021-07-31 01:08:16 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-31 01:08:19 +0200agua(~agua@2804:18:70:7597:1:0:6e99:2d6f)
2021-07-31 01:09:42 +0200safinaskar(~user@109.252.55.35) ()
2021-07-31 01:12:10 +0200pesada(~agua@2804:14c:8793:8e2f:ecd5:11e0:50a0:f2fe) (Ping timeout: 272 seconds)
2021-07-31 01:12:53 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-07-31 01:15:43 +0200drd(~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 265 seconds)
2021-07-31 01:16:06 +0200qontinuum_(qontinuum@user/qontinuum)
2021-07-31 01:16:12 +0200qontinuum(qontinuum@user/qontinuum) (Ping timeout: 265 seconds)
2021-07-31 01:16:15 +0200qontinuum_qontinuum
2021-07-31 01:23:25 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-07-31 01:23:27 +0200qontinuum(qontinuum@user/qontinuum) (Ping timeout: 265 seconds)
2021-07-31 01:24:10 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-31 01:28:23 +0200qontinuum(qontinuum@user/qontinuum)
2021-07-31 01:31:02 +0200gustik(~gustik@2a01:c844:241f:c020:312a:c22f:e497:698f) (Quit: Leaving)
2021-07-31 01:32:34 +0200qontinuum_(qontinuum@user/qontinuum)
2021-07-31 01:33:00 +0200vysn(~vysn@user/vysn) (Remote host closed the connection)
2021-07-31 01:33:07 +0200qontinuum(qontinuum@user/qontinuum) (Ping timeout: 265 seconds)
2021-07-31 01:33:07 +0200qontinuum_qontinuum
2021-07-31 01:40:00 +0200newhaskeller(~newhaskel@2804:14c:c0:8dbb:94e0:d2eb:43f:5833) (Quit: Client closed)
2021-07-31 01:42:00 +0200acidjnk(~acidjnk@p200300d0c72b9576e9974425ad52911e.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2021-07-31 01:42:16 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-07-31 01:43:30 +0200lavaman(~lavaman@98.38.249.169)
2021-07-31 01:46:06 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
2021-07-31 01:46:18 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-31 01:48:01 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 258 seconds)
2021-07-31 01:50:31 +0200pesada(~agua@191.177.175.57)
2021-07-31 01:52:43 +0200Core7498(~agua@2804:18:70:7597:1:0:6e99:2d6f)
2021-07-31 01:52:59 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 252 seconds)
2021-07-31 01:53:03 +0200agua(~agua@2804:18:70:7597:1:0:6e99:2d6f) (Read error: Connection reset by peer)
2021-07-31 01:54:00 +0200pesada(~agua@191.177.175.57) (Read error: Connection reset by peer)
2021-07-31 01:58:54 +0200Core9323(~Core9323@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b)
2021-07-31 02:03:58 +0200Core9323(~Core9323@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) (Read error: Connection reset by peer)
2021-07-31 02:06:47 +0200hegstal(~hegstal@2a02:c7f:7604:8a00:7f3a:926a:5be5:7f19) (Remote host closed the connection)
2021-07-31 02:16:03 +0200Guest4(~Guest4@173-28-193-122.client.mchsi.com) (Quit: Client closed)
2021-07-31 02:16:26 +0200dermato(~dermatobr@cpe-70-114-219-76.austin.res.rr.com)
2021-07-31 02:16:26 +0200willbush(~user@47.183.200.14)
2021-07-31 02:21:39 +0200 <janus> tpefreedom: but aren't you supposed to be able to say that about any library? ;) especially in a pure functional language
2021-07-31 02:22:15 +0200 <janus> there are also Elm-clones, i dunno if those count as FRP, i think not. at least not in the way conor elliott (i think?) meant it originally
2021-07-31 02:22:39 +0200 <tpefreedom> janus, I just ignore the object oriented elements and treat them like any standard library function.
2021-07-31 02:23:06 +0200 <tpefreedom> Also, this is in python
2021-07-31 02:32:01 +0200lbseale(~lbseale@user/ep1ctetus) (Quit: Leaving)
2021-07-31 02:32:39 +0200MQ-17J(~MQ-17J@69.14.129.206) (Read error: Connection reset by peer)
2021-07-31 02:32:58 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-31 02:33:06 +0200agua(~agua@2804:14c:8793:8e2f:ecd5:11e0:50a0:f2fe)
2021-07-31 02:33:47 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 252 seconds)
2021-07-31 02:34:11 +0200Codaraxis(~Codaraxis@user/codaraxis)
2021-07-31 02:35:01 +0200bitmapper(uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-31 02:35:30 +0200pesada(~agua@2804:18:70:7597:1:0:6e99:2d6f)
2021-07-31 02:35:37 +0200Erutuon(~Erutuon@user/erutuon)
2021-07-31 02:35:50 +0200Core7498(~agua@2804:18:70:7597:1:0:6e99:2d6f) (Ping timeout: 272 seconds)
2021-07-31 02:37:44 +0200agua(~agua@2804:14c:8793:8e2f:ecd5:11e0:50a0:f2fe) (Ping timeout: 272 seconds)
2021-07-31 02:38:06 +0200pesada(~agua@2804:18:70:7597:1:0:6e99:2d6f) (Read error: Connection reset by peer)
2021-07-31 02:38:31 +0200agua(~agua@2804:18:70:7597:1:0:6e99:2d6f)
2021-07-31 02:39:06 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-31 02:40:09 +0200pesada(~agua@2804:14c:8793:8e2f:ecd5:11e0:50a0:f2fe)
2021-07-31 02:40:16 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 272 seconds)
2021-07-31 02:42:25 +0200P1RATEZ(piratez@user/p1ratez)
2021-07-31 02:42:34 +0200agua(~agua@2804:18:70:7597:1:0:6e99:2d6f) (Ping timeout: 240 seconds)
2021-07-31 02:42:48 +0200agua(~agua@2804:18:70:7597:1:0:6e99:2d6f)
2021-07-31 02:46:31 +0200alx741(~alx741@181.196.69.85) (Quit: alx741)
2021-07-31 02:47:14 +0200pesada(~agua@2804:14c:8793:8e2f:ecd5:11e0:50a0:f2fe) (Ping timeout: 272 seconds)
2021-07-31 02:48:49 +0200Atum_(~IRC@user/atum/x-2392232) (Read error: Connection reset by peer)
2021-07-31 02:49:30 +0200Guest4(~Guest4@173-28-193-122.client.mchsi.com)
2021-07-31 02:52:07 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-07-31 02:52:08 +0200fresheyeball(~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net)
2021-07-31 02:53:08 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Client Quit)
2021-07-31 02:53:15 +0200 <delYsid> omg, OverloadedRecordDot
2021-07-31 02:53:26 +0200 <delYsid> this looks wrong
2021-07-31 02:54:31 +0200 <yushyin> :D
2021-07-31 02:58:17 +0200chomwitt(~chomwitt@2a02:587:dc0c:a300:12c3:7bff:fe6d:d374) (Remote host closed the connection)
2021-07-31 03:00:47 +0200mud(~mud@user/kadoban)
2021-07-31 03:02:03 +0200kadobanana(~mud@user/kadoban) (Ping timeout: 265 seconds)
2021-07-31 03:10:40 +0200xff0x(~xff0x@2001:1a81:532e:4200:ef34:239:52ff:ac71) (Ping timeout: 272 seconds)
2021-07-31 03:12:05 +0200xff0x(~xff0x@2001:1a81:536d:8c00:2d4:a9e1:415e:5f77)
2021-07-31 03:21:22 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 245 seconds)
2021-07-31 03:22:38 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 272 seconds)
2021-07-31 03:25:24 +0200zeenk(~zeenk@2a02:2f04:a008:d600:18f2:3421:bac6:8f38) (Quit: Konversation terminated!)
2021-07-31 03:29:28 +0200goepsilongo(~chacho@2603-7000-ab00-62ed-0000-0000-0000-0bd0.res6.spectrum.com)
2021-07-31 03:31:09 +0200 <pavonia> In what way is this syntax overloaded?
2021-07-31 03:31:42 +0200 <dsal> :t (.) -- this is the common meaning of .
2021-07-31 03:31:43 +0200 <lambdabot> (b -> c) -> (a -> b) -> a -> c
2021-07-31 03:32:07 +0200 <c_wraith> It's not the first overloading of .
2021-07-31 03:32:11 +0200 <c_wraith> But that only makes it worse.
2021-07-31 03:32:33 +0200 <c_wraith> Still won't be as bad as the C++ game "what does const mean here?", but it's pretty silly
2021-07-31 03:33:07 +0200 <pavonia> Hhm, my understanding of the name is that there already is a "record dot" which can be overloaded by enabling the extension
2021-07-31 03:33:57 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-31 03:36:16 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-07-31 03:37:42 +0200lavaman(~lavaman@98.38.249.169)
2021-07-31 03:38:53 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-31 03:39:03 +0200 <dsal> I'm not very interested in this particular addition. lens is pretty good for this, though they separated the 'get' and 'update' mechanisms into separate classes with separate behaviors here. That's kind of neat. It's a bit harder to have an update in lens for all reasonable gets.
2021-07-31 03:41:27 +0200Guest4(~Guest4@173-28-193-122.client.mchsi.com) (Quit: Client closed)
2021-07-31 03:42:10 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
2021-07-31 03:44:56 +0200 <yushyin> pavonia: it is part of the recorddotsyntax proposal, which was split into two extensions, one of them is OverloadedRecordDot. you can see the changes and discussion here https://github.com/ghc-proposals/ghc-proposals/pull/405
2021-07-31 03:48:45 +0200 <pavonia> Thanks
2021-07-31 03:52:24 +0200wei2912(~wei2912@112.199.250.21)
2021-07-31 03:57:38 +0200bruceleewees(~bruceleew@83.24.236.64.ipv4.supernova.orange.pl) (Ping timeout: 265 seconds)
2021-07-31 03:59:23 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-07-31 03:59:59 +0200berberman_(~berberman@user/berberman)
2021-07-31 04:01:26 +0200berberman(~berberman@user/berberman) (Ping timeout: 268 seconds)
2021-07-31 04:02:44 +0200img(~img@user/img)
2021-07-31 04:13:22 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-07-31 04:21:43 +0200xkuru(~xkuru@user/xkuru)
2021-07-31 04:25:44 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-07-31 04:25:44 +0200FinnElijaGuest8580
2021-07-31 04:25:44 +0200Guest8580(~finn_elij@user/finn-elija/x-0085643) (Killed (copper.libera.chat (Nickname regained by services)))
2021-07-31 04:25:44 +0200finn_elijaFinnElija
2021-07-31 04:27:58 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-07-31 04:31:13 +0200vicfred_(~vicfred@user/vicfred)
2021-07-31 04:33:40 +0200vicfred(~vicfred@user/vicfred) (Ping timeout: 256 seconds)
2021-07-31 04:38:47 +0200 <delYsid> :t liftM2
2021-07-31 04:38:48 +0200 <lambdabot> Monad m => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r
2021-07-31 04:40:58 +0200 <delYsid> @hoogle (a -> b -> m c) -> m a -> m b -> m c
2021-07-31 04:40:59 +0200 <lambdabot> Control.Monad.HT liftJoin2 :: Monad m => (a -> b -> m c) -> m a -> m b -> m c
2021-07-31 04:40:59 +0200 <lambdabot> Util bind2 :: Monad m => (a -> b -> m c) -> m a -> m b -> m c
2021-07-31 04:40:59 +0200 <lambdabot> Numeric.Decimal bindM2 :: Monad m => (a -> b -> m c) -> m a -> m b -> m c
2021-07-31 04:42:45 +0200gzj(~GZJ0X@199.193.127.138.16clouds.com)
2021-07-31 04:44:34 +0200Guest4(~Guest4@173-28-193-122.client.mchsi.com)
2021-07-31 04:46:08 +0200ddb(~ddb@2607:5300:61:c67::196) (Quit: WeeChat 3.2)
2021-07-31 04:46:22 +0200ddb(~ddb@2607:5300:61:c67::196)
2021-07-31 04:49:16 +0200Null_A(~null_a@67-207-96-2.static.wiline.com)
2021-07-31 04:52:43 +0200ddb(~ddb@2607:5300:61:c67::196) (Quit: WeeChat 3.2)
2021-07-31 04:52:57 +0200ddb(~ddb@2607:5300:61:c67::196)
2021-07-31 04:53:50 +0200Patrick18(~Patrick18@pool-100-36-167-42.washdc.fios.verizon.net)
2021-07-31 04:58:16 +0200td_(~td@94.134.91.212) (Ping timeout: 272 seconds)
2021-07-31 04:59:23 +0200 <Patrick18> Could anyone here help me figure out how to profile builds with cabal? I've tried cabal v2-configure --enable-profiling and then cabal v2-build but I get an error:
2021-07-31 04:59:43 +0200td_(~td@muedsl-82-207-238-147.citykom.de)
2021-07-31 04:59:49 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-31 05:00:00 +0200 <Patrick18> Could not find module 'Prelude' Perhaps you haven't installed the profiling libraries for package 'base-4.12.0.0'?
2021-07-31 05:00:38 +0200 <sclv> Patrick18: how did you install ghc?
2021-07-31 05:00:48 +0200 <Patrick18> ghcup I believe
2021-07-31 05:01:08 +0200 <sclv> ghcup should install profiling libs by default
2021-07-31 05:01:27 +0200 <sclv> sometimes ubuntu installs or the like donā€™t and you need an additional rpm
2021-07-31 05:01:40 +0200vicfred__(~vicfred@user/vicfred)
2021-07-31 05:02:15 +0200 <sclv> ā€˜which ghcā€™ could help confirm
2021-07-31 05:03:16 +0200 <Patrick18> It's probably not ghcup then. I get /usr/bin/ghc
2021-07-31 05:04:08 +0200vicfred_(~vicfred@user/vicfred) (Ping timeout: 250 seconds)
2021-07-31 05:07:10 +0200delYsid(~user@84-115-55-45.cable.dynamic.surfer.at) (ERC (IRC client for Emacs 27.1.50))
2021-07-31 05:09:16 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
2021-07-31 05:10:01 +0200 <Patrick18> How can I download said profiling libs (including base)?
2021-07-31 05:10:38 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-07-31 05:11:55 +0200Guest4(~Guest4@173-28-193-122.client.mchsi.com) (Quit: Client closed)
2021-07-31 05:25:16 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-31 05:28:21 +0200Patrick18(~Patrick18@pool-100-36-167-42.washdc.fios.verizon.net) (Quit: Client closed)
2021-07-31 05:30:38 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
2021-07-31 05:31:42 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 276 seconds)
2021-07-31 05:36:04 +0200roboguy__(~roboguy_@2605:a601:afe7:9f00:21b8:dc17:ae59:fdd6) ()
2021-07-31 05:37:37 +0200lavaman(~lavaman@98.38.249.169)
2021-07-31 05:39:41 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2021-07-31 05:40:56 +0200qontinuum(qontinuum@user/qontinuum) (Quit: See ya)
2021-07-31 05:41:08 +0200qontinuum(qontinuum@user/qontinuum)
2021-07-31 05:41:54 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2021-07-31 05:47:50 +0200Null_A(~null_a@67-207-96-2.static.wiline.com) (Read error: Connection reset by peer)
2021-07-31 05:48:16 +0200Null_A(~null_a@67-207-96-2.static.wiline.com)
2021-07-31 05:49:42 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-31 05:52:11 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 265 seconds)
2021-07-31 05:54:07 +0200willbush(~user@47.183.200.14) (Quit: ERC (IRC client for Emacs 28.0.50))
2021-07-31 05:55:20 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
2021-07-31 05:56:03 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
2021-07-31 06:01:01 +0200Nahra`(~user@static.161.95.99.88.clients.your-server.de) (Ping timeout: 258 seconds)
2021-07-31 06:02:20 +0200bitmapper(uid464869@id-464869.tooting.irccloud.com)
2021-07-31 06:03:46 +0200funsafe(~funsafe@c-71-59-221-7.hsd1.wa.comcast.net) (Ping timeout: 240 seconds)
2021-07-31 06:06:03 +0200funsafe(~funsafe@2601:1c1:4200:938f:32aa:eb39:2110:e2ea)
2021-07-31 06:09:31 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-31 06:09:58 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-07-31 06:10:57 +0200gzj(~GZJ0X@199.193.127.138.16clouds.com) (Remote host closed the connection)
2021-07-31 06:12:36 +0200mikoto-chan(~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be)
2021-07-31 06:16:53 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net)
2021-07-31 06:20:34 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds)
2021-07-31 06:22:12 +0200shredder(~user@user/shredder) (Quit: quitting)
2021-07-31 06:24:33 +0200shredder(~user@user/shredder)
2021-07-31 06:24:36 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-07-31 06:25:40 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-07-31 06:25:41 +0200sus(thelounge@user/zeromomentum) (Quit: the lounge - https://webirc.envs.net)
2021-07-31 06:26:04 +0200img(~img@user/img)
2021-07-31 06:26:07 +0200sus(thelounge@user/zeromomentum)
2021-07-31 06:37:36 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-07-31 06:42:42 +0200Cajun(~Cajun@user/cajun)
2021-07-31 06:44:06 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-07-31 06:50:07 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-07-31 06:50:29 +0200bruceleewees(~bruceleew@83.24.236.64.ipv4.supernova.orange.pl)
2021-07-31 06:52:33 +0200tpefreedom(~tsomers@98-125-225-122.dyn.centurytel.net) (Remote host closed the connection)
2021-07-31 07:03:44 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-07-31 07:04:48 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-31 07:07:06 +0200Brianmancer(~Neuromanc@user/briandamag) (Ping timeout: 265 seconds)
2021-07-31 07:26:06 +0200P1RATEZ(piratez@user/p1ratez) (Remote host closed the connection)
2021-07-31 07:27:45 +0200ubert(~Thunderbi@77.119.223.125.wireless.dyn.drei.com)
2021-07-31 07:30:09 +0200reumeth(~reumeth@user/reumeth)
2021-07-31 07:32:57 +0200mastarija__(~mastarija@31.217.8.174)
2021-07-31 07:34:49 +0200ubert(~Thunderbi@77.119.223.125.wireless.dyn.drei.com) (Remote host closed the connection)
2021-07-31 07:35:08 +0200ubert(~Thunderbi@77.119.223.125.wireless.dyn.drei.com)
2021-07-31 07:36:09 +0200matthias1(~igloo@cpe-76-170-236-166.socal.res.rr.com)
2021-07-31 07:40:19 +0200matthias1(~igloo@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection)
2021-07-31 07:41:41 +0200retroid_(~retro@5ec19a54.skybroadband.com) (Ping timeout: 252 seconds)
2021-07-31 07:45:47 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-07-31 07:46:00 +0200MQ-17J(~MQ-17J@8.6.144.192)
2021-07-31 07:53:31 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-07-31 08:01:24 +0200fef(~thedawn@user/thedawn)
2021-07-31 08:01:56 +0200Guest9(~Guest9@43.241.144.40)
2021-07-31 08:02:45 +0200Brianmancer(~Neuromanc@user/briandamag)
2021-07-31 08:03:06 +0200retroid_(~retro@5ec19a54.skybroadband.com)
2021-07-31 08:07:34 +0200wei2912(~wei2912@112.199.250.21) (Quit: Lost terminal)
2021-07-31 08:08:15 +0200gehmehgeh(~user@user/gehmehgeh)
2021-07-31 08:09:16 +0200mastarija_(~mastarija@31.217.8.174)
2021-07-31 08:12:30 +0200mastarija__(~mastarija@31.217.8.174) (Ping timeout: 258 seconds)
2021-07-31 08:14:14 +0200peterhil(~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi) (Ping timeout: 252 seconds)
2021-07-31 08:18:26 +0200Meh(~Meh@202.14.120.94)
2021-07-31 08:18:50 +0200MehGuest3079
2021-07-31 08:21:39 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-07-31 08:22:39 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 276 seconds)
2021-07-31 08:22:51 +0200Lord_of_Life_Lord_of_Life
2021-07-31 08:24:56 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-31 08:26:07 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-07-31 08:26:25 +0200Guest3079(~Meh@202.14.120.94) (Quit: Connection closed)
2021-07-31 08:28:34 +0200MQ-17J(~MQ-17J@8.6.144.192) (Ping timeout: 240 seconds)
2021-07-31 08:33:58 +0200ubert(~Thunderbi@77.119.223.125.wireless.dyn.drei.com) (Ping timeout: 258 seconds)
2021-07-31 08:35:59 +0200sagax(~sagax@213.138.71.146)
2021-07-31 08:36:59 +0200tomboy64(~tomboy64@user/tomboy64) (Quit: Off to see the wizard.)
2021-07-31 08:37:39 +0200justache(~justache@user/justache) (Remote host closed the connection)
2021-07-31 08:38:27 +0200justache(~justache@user/justache)
2021-07-31 08:38:48 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-31 08:39:36 +0200tomboy64(~tomboy64@user/tomboy64)
2021-07-31 08:39:54 +0200qontinuum(qontinuum@user/qontinuum) (Ping timeout: 265 seconds)
2021-07-31 08:40:08 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-31 08:41:00 +0200 <aegon> hmm, i'm trying to multiply to Nat's but its complaining about the kind, am i missing an extension?
2021-07-31 08:41:09 +0200 <aegon> i see * defined for Nats in typelits as a type family
2021-07-31 08:43:49 +0200tomboy64(~tomboy64@user/tomboy64) (Read error: Connection reset by peer)
2021-07-31 08:44:12 +0200tomboy64(~tomboy64@user/tomboy64)
2021-07-31 08:46:41 +0200Null_A(~null_a@67-207-96-2.static.wiline.com) ()
2021-07-31 08:47:26 +0200 <monochrom> Perhaps NoStarIsType
2021-07-31 08:48:14 +0200retroid_(~retro@5ec19a54.skybroadband.com) (Ping timeout: 272 seconds)
2021-07-31 08:49:27 +0200stenvold(~stenvold@2001:a61:25f1:6701:a993:a914:786f:a6f5)
2021-07-31 08:49:47 +0200anandprabhu(~anandprab@45.83.220.206)
2021-07-31 08:50:42 +0200xkuru(~xkuru@user/xkuru) (Remote host closed the connection)
2021-07-31 08:52:24 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net) (Remote host closed the connection)
2021-07-31 08:52:28 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds)
2021-07-31 08:52:46 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net)
2021-07-31 08:53:46 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-07-31 08:55:12 +0200anandprabhu(~anandprab@45.83.220.206) (Quit: Leaving)
2021-07-31 08:55:28 +0200Guest9(~Guest9@43.241.144.40) (Ping timeout: 256 seconds)
2021-07-31 08:56:21 +0200 <aegon> yep! thanks
2021-07-31 08:56:44 +0200 <sm> @Patrick18:libera.chat: figured it out ?
2021-07-31 08:56:44 +0200 <lambdabot> Unknown command, try @list
2021-07-31 09:00:51 +0200mattil(~mattilinn@78-27-98-194.bb.dnainternet.fi)
2021-07-31 09:01:25 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com)
2021-07-31 09:01:25 +0200vicfred__(~vicfred@user/vicfred) (Quit: Leaving)
2021-07-31 09:03:26 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-07-31 09:03:59 +0200Vajb(~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01)
2021-07-31 09:05:56 +0200Guest65(~Guest65@188.27.128.31)
2021-07-31 09:09:28 +0200MidAutumnMoon90MidAutumnHotaru
2021-07-31 09:10:47 +0200Vajb(~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
2021-07-31 09:11:19 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-31 09:14:50 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-07-31 09:16:54 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-31 09:17:45 +0200fef(~thedawn@user/thedawn) (Quit: Leaving)
2021-07-31 09:18:28 +0200mastarija_(~mastarija@31.217.8.174) (Quit: Leaving)
2021-07-31 09:18:45 +0200mastarija(~mastarija@31.217.8.174)
2021-07-31 09:20:23 +0200 <mastarija> So, I've enabled GADTs and Constraint kinds and I still get "Not in scope: type constructor or class `Constraint'" when trying to define this `type NoCo = (() :: Constraint)
2021-07-31 09:20:23 +0200 <mastarija> `
2021-07-31 09:20:59 +0200mikoto-chan(~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) (Ping timeout: 265 seconds)
2021-07-31 09:21:00 +0200 <mastarija> Not sure what I'm doing wrong
2021-07-31 09:21:47 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2021-07-31 09:22:16 +0200dhil(~dhil@195.213.192.47)
2021-07-31 09:22:27 +0200burnsidesLlama(~burnsides@client-8-91.eduroam.oxuni.org.uk)
2021-07-31 09:22:29 +0200 <mastarija> Oh... I'm an idiot. I had to import them from Data.Kind
2021-07-31 09:22:40 +0200 <mastarija> I thought this was not necessary
2021-07-31 09:22:41 +0200cjb(~cjb@user/cjb)
2021-07-31 09:23:56 +0200mikoto-chan(~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be)
2021-07-31 09:24:52 +0200retroid_(~retro@5ec19a54.skybroadband.com)
2021-07-31 09:27:53 +0200 <tomsmeding> mastarija: you'll find that you also have to import Type from Data.Kind :)
2021-07-31 09:28:01 +0200 <mastarija> Yes
2021-07-31 09:28:04 +0200 <mastarija> Did that :D
2021-07-31 09:30:03 +0200burnsidesLlama(~burnsides@client-8-91.eduroam.oxuni.org.uk) (Remote host closed the connection)
2021-07-31 09:30:47 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-07-31 09:34:44 +0200neceve(~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f)
2021-07-31 09:35:29 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 265 seconds)
2021-07-31 09:35:42 +0200son0p(~ff@181.136.122.143) (Ping timeout: 256 seconds)
2021-07-31 09:36:28 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-31 09:39:04 +0200lavaman(~lavaman@98.38.249.169)
2021-07-31 09:40:41 +0200 <mastarija> Do we have something like an "empty" constraint in the base, something in the lines of "class EmptyC x" "instance EmptyC x"?
2021-07-31 09:41:30 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2021-07-31 09:43:14 +0200 <tomsmeding> isn't that ()
2021-07-31 09:43:24 +0200 <mastarija> No, that is ()::Constraint
2021-07-31 09:43:36 +0200 <mastarija> tomsmeding, I'm looking for x -> Constraint
2021-07-31 09:43:42 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
2021-07-31 09:43:44 +0200 <tomsmeding> ooooh
2021-07-31 09:43:57 +0200 <mastarija> Yes, my bad
2021-07-31 09:44:17 +0200 <mastarija> Calling it empty wasn't the best choice of words :D
2021-07-31 09:44:23 +0200stenvold(~stenvold@2001:a61:25f1:6701:a993:a914:786f:a6f5) (Quit: Client closed)
2021-07-31 09:44:43 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-07-31 09:46:44 +0200acidjnk(~acidjnk@p200300d0c72b9576e9974425ad52911e.dip0.t-ipconnect.de)
2021-07-31 09:47:10 +0200Nahra(~user@static.161.95.99.88.clients.your-server.de)
2021-07-31 09:48:13 +0200 <tomsmeding> mastarija: I grepped the source code of 'base' on ^class and all the 82 results (only 82!) are non-empty :)
2021-07-31 09:48:33 +0200 <tomsmeding> mastarija: https://paste.tomsmeding.com/H2uxebLC
2021-07-31 09:48:58 +0200 <mastarija> Ah.. oh well :D
2021-07-31 09:51:06 +0200fendor(~fendor@91.141.37.142.wireless.dyn.drei.com)
2021-07-31 09:53:50 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-31 09:56:03 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-07-31 10:00:23 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2021-07-31 10:01:30 +0200azeem(~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Ping timeout: 240 seconds)
2021-07-31 10:02:09 +0200azeem(~azeem@176.201.34.159)
2021-07-31 10:05:26 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 272 seconds)
2021-07-31 10:05:53 +0200hendursa1(~weechat@user/hendursaga)
2021-07-31 10:06:54 +0200azeem(~azeem@176.201.34.159) (Ping timeout: 265 seconds)
2021-07-31 10:07:24 +0200azeem(~azeem@176.200.191.24)
2021-07-31 10:07:52 +0200aegon(~mike@174.127.249.180) (Ping timeout: 265 seconds)
2021-07-31 10:07:54 +0200dagit(~dagit@2601:1c2:1b7f:9fa0:ad74:311a:d89a:e0b1) (Ping timeout: 250 seconds)
2021-07-31 10:08:32 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 244 seconds)
2021-07-31 10:10:27 +0200stenvold(~stenvold@2001:a61:25f1:6701:a993:a914:786f:a6f5)
2021-07-31 10:11:32 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-31 10:14:59 +0200vysn(~vysn@user/vysn)
2021-07-31 10:16:34 +0200azeem(~azeem@176.200.191.24) (Ping timeout: 265 seconds)
2021-07-31 10:16:42 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2021-07-31 10:17:48 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-07-31 10:17:48 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-07-31 10:17:51 +0200allbery_bgeekosaur
2021-07-31 10:18:34 +0200 <mastarija> Btw, is there a way to check if an argument to a type family is of a certain type class?
2021-07-31 10:19:00 +0200 <mastarija> Basically, I want to determine the resulting type depending on type class that a type is an instance of
2021-07-31 10:20:09 +0200azeem(~azeem@176.200.191.24)
2021-07-31 10:25:08 +0200azeem(~azeem@176.200.191.24) (Ping timeout: 272 seconds)
2021-07-31 10:28:20 +0200azeem(~azeem@176.200.191.24)
2021-07-31 10:28:53 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Ping timeout: 252 seconds)
2021-07-31 10:32:02 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 265 seconds)
2021-07-31 10:33:09 +0200cjb(~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50)
2021-07-31 10:36:29 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-07-31 10:39:22 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 10:39:53 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-07-31 10:40:28 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 10:41:36 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 272 seconds)
2021-07-31 10:41:48 +0200zeenk(~zeenk@2a02:2f04:a008:d600:18f2:3421:bac6:8f38)
2021-07-31 10:41:54 +0200 <mastarija> Is it possible to use type application to apply type variables defined in the class instance to functions within instance definition?
2021-07-31 10:42:01 +0200 <mastarija> instance forall k. Applicative (Wrong k) where
2021-07-31 10:42:01 +0200 <Drew[m]> mastarija: would you want to do this for more than one type class?
2021-07-31 10:42:09 +0200bitmapper(uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-31 10:42:13 +0200 <mastarija> Only one for now
2021-07-31 10:42:17 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-31 10:42:19 +0200 <mastarija> Drew[m], why?
2021-07-31 10:44:17 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-31 10:45:46 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 10:45:59 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 10:48:15 +0200 <Drew[m]> Say you want `F t` to be type `X` when `t` is in class `A`, and type `Y` when `t` is in class `B`... what happens when it is in both?
2021-07-31 10:48:31 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
2021-07-31 10:49:01 +0200 <mastarija> Drew[m], I get the first class?
2021-07-31 10:49:28 +0200 <mastarija> Sorry, first type
2021-07-31 10:50:31 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
2021-07-31 10:52:11 +0200 <mastarija> Drew[m], I was thinking in terms of how pattern matching work. Basically, which class matches first, I get it's related type
2021-07-31 10:53:07 +0200 <mastarija> type family Typer e where Typer (e instanceof Show) = Int; Typer (e instanceof Monoid) = Char; etc...
2021-07-31 10:55:21 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-07-31 10:55:46 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 10:55:53 +0200Vajb(~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01)
2021-07-31 10:56:35 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 10:56:58 +0200agua(~agua@2804:18:70:7597:1:0:6e99:2d6f) (Ping timeout: 240 seconds)
2021-07-31 10:57:09 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net)
2021-07-31 10:57:18 +0200 <Drew[m]> So with associated type families you can ofc make a class with an associated type family and make an instance of that type family for a whole class buut there is problems with that, since all it takes is a second instance for a whole class to get ambiguity
2021-07-31 10:57:40 +0200Codaraxis(~Codaraxis@user/codaraxis) (Remote host closed the connection)
2021-07-31 10:57:55 +0200 <Drew[m]> I'm currently reading up on non-associated type families because I'm rusty
2021-07-31 10:58:00 +0200Codaraxis(~Codaraxis@user/codaraxis)
2021-07-31 10:58:21 +0200 <mastarija> Associated ones are defined withing the Class, right?
2021-07-31 10:58:30 +0200 <Drew[m]> Yes
2021-07-31 10:59:31 +0200agua(~agua@2804:14c:8793:8e2f:ecd5:11e0:50a0:f2fe)
2021-07-31 11:00:05 +0200 <mastarija> Btw, it says (if I'm reading it correctly) in the GHC manual that type variables declared in instance scope over the methods.
2021-07-31 11:00:15 +0200 <mastarija> But for my case it doesn't seem to work
2021-07-31 11:00:35 +0200 <mastarija> instance forall k. Applicative (Wrong k) where pure = mypure @k
2021-07-31 11:00:42 +0200 <mastarija> mypure :: forall k a. k => a -> Wrong k a
2021-07-31 11:01:11 +0200 <tomsmeding> ScopedTypeVariables?
2021-07-31 11:01:17 +0200 <mastarija> Enabled
2021-07-31 11:01:45 +0200 <mastarija> tomsmeding, it says "Could not deduce: k arising from a use of `mypure'"
2021-07-31 11:02:29 +0200 <tomsmeding> what happens if you write 'mypure @_ @k' instead of 'mypure @k'
2021-07-31 11:02:54 +0200 <tomsmeding> i.e. are you sure about the type variable order in the forall of mypure :p
2021-07-31 11:03:06 +0200neceve(~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 240 seconds)
2021-07-31 11:03:06 +0200 <mastarija> Expected a type, but `k' has kind `Constraint'
2021-07-31 11:03:16 +0200 <mastarija> Which is what I'd expect...
2021-07-31 11:03:18 +0200 <tomsmeding> ah yes
2021-07-31 11:03:30 +0200 <tomsmeding> do you have a small reproducing example?
2021-07-31 11:03:37 +0200 <mastarija> Sure, just a sec
2021-07-31 11:03:58 +0200 <tomsmeding> (sounds like just the definition of Wrong and that instance)
2021-07-31 11:05:12 +0200 <mastarija> tomsmeding, https://gist.github.com/mastarija/af03154c0d85fd78782f07ff6aeef98e
2021-07-31 11:08:31 +0200 <tomsmeding> error disappears if I change the kind of 'k' to Type
2021-07-31 11:08:58 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 11:09:11 +0200 <mastarija> yes, but I want k to be a Constraint...
2021-07-31 11:09:18 +0200 <tomsmeding> I know :p
2021-07-31 11:09:30 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 11:09:51 +0200 <mastarija> xD
2021-07-31 11:10:02 +0200neceve(~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f)
2021-07-31 11:10:10 +0200 <tomsmeding> error also disappears if you remove the 'k =>' in the signature of mypure
2021-07-31 11:10:20 +0200 <tomsmeding> (at the cost of introducing an error in its body, of course)
2021-07-31 11:10:45 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-31 11:11:01 +0200 <tomsmeding> error also disappears if you _add_ 'k =>' in the instance head!
2021-07-31 11:11:34 +0200 <tomsmeding> which makes perfect sense -- ghc can't deduce k because, indeed, it cannot satisfy the constraint -- not because it can't find an instance of the type variable
2021-07-31 11:11:45 +0200 <mastarija> oohh...
2021-07-31 11:11:49 +0200 <tomsmeding> and then you don't even need the @k anymore
2021-07-31 11:12:05 +0200 <tomsmeding> and you can also just write 'pure = Inert'
2021-07-31 11:12:06 +0200 <mastarija> Oooooooohhhhhhh....
2021-07-31 11:12:25 +0200 <mastarija> Damn, how did I miss that :D
2021-07-31 11:12:28 +0200 <tomsmeding> :)
2021-07-31 11:12:37 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-07-31 11:13:38 +0200__monty__(~toonn@user/toonn)
2021-07-31 11:14:00 +0200 <tomsmeding> (and the 'forall k.' is unnecessary in the instance head, for completeness)
2021-07-31 11:15:51 +0200 <tomsmeding> the error message has unfortunate overlap with the error message indicating that ghc can't figure out what a particular type variable should be, though
2021-07-31 11:15:59 +0200 <tomsmeding> or at least, I was deceived for a while :p
2021-07-31 11:16:07 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-07-31 11:16:13 +0200 <tomsmeding> or would that be 'ambiguous type variable'...
2021-07-31 11:16:58 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 11:18:05 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 11:18:12 +0200 <mastarija> tomsmeding, do you know if there is a way to write a constraint which says that a kind of something is a Type?
2021-07-31 11:18:35 +0200 <mastarija> something like (kind e ~ Type)
2021-07-31 11:18:43 +0200 <tomsmeding> mastarija: how would that even sort-check
2021-07-31 11:18:55 +0200 <mastarija> Not sure what that is D:
2021-07-31 11:19:03 +0200 <mastarija> Oh.. sort
2021-07-31 11:19:08 +0200 <tomsmeding> type kind sort
2021-07-31 11:19:17 +0200 <mastarija> yes, I remembered now :D
2021-07-31 11:19:49 +0200 <tomsmeding> hm, isn't Constraint really equal to Type in ghc haskell
2021-07-31 11:19:57 +0200 <tomsmeding> and there is TypeInType
2021-07-31 11:20:21 +0200 <mastarija> Now that you mention it...
2021-07-31 11:20:28 +0200 <tomsmeding> I don't think there is a 'kind' function like you wrote, but using a well-placed kind signature, you should be able to get the kind as a variable in scope
2021-07-31 11:20:32 +0200 <tomsmeding> and then you can just use ~ I think
2021-07-31 11:26:46 +0200azeem(~azeem@176.200.191.24) (Ping timeout: 250 seconds)
2021-07-31 11:27:46 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 11:27:55 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 11:28:46 +0200azeem(~azeem@176.200.191.24)
2021-07-31 11:30:08 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-07-31 11:32:19 +0200dunj3(~dunj3@2001:981:9d95:1:886d:656c:9636:23f4)
2021-07-31 11:33:54 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 265 seconds)
2021-07-31 11:34:07 +0200 <mastarija> So yeah... why doesn't this work? (((c:: Type -> Constraint) (e::Type)) ~ Constraint)
2021-07-31 11:37:09 +0200 <mastarija> Nwm
2021-07-31 11:40:37 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-31 11:41:08 +0200azeem(~azeem@176.200.191.24) (Ping timeout: 272 seconds)
2021-07-31 11:44:52 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-07-31 11:45:34 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2021-07-31 11:46:05 +0200euouae(~euouae@user/euouae)
2021-07-31 11:46:35 +0200 <nshepperd2> forall k (t :: k). (k ~ Type) => ...?
2021-07-31 11:48:43 +0200 <mastarija> nshepperd2, huh.. didn't know about that syntax, thx
2021-07-31 11:52:03 +0200 <euouae> What's the tunes.org-style logging?
2021-07-31 11:52:07 +0200 <euouae> It's in the /topic
2021-07-31 11:53:10 +0200 <nshepperd2> i think even just k being inhabited (t :: k) implies that k is necessarily TYPE r for some r :: RuntimeRep
2021-07-31 11:53:52 +0200 <nshepperd2> wait no, that's wrong nvm
2021-07-31 11:54:09 +0200 <nshepperd2> it's t being inhabited that implies that :D
2021-07-31 11:57:58 +0200Guest82(~Guest82@78.155.54.115)
2021-07-31 12:04:57 +0200 <Drew[m]> <tomsmeding> "hm, isn't Constraint really..." <- A constraint has kind `Constraint`, `Constraint` has kind `Type`
2021-07-31 12:07:09 +0200 <Drew[m]> And `Type` has kind `Type`
2021-07-31 12:07:55 +0200 <Drew[m]> But like you can have two values of type `Int` that aren't equal, just because `Constraint` and `Type` have the same kind, that doesn't make them equal types
2021-07-31 12:08:30 +0200azeem(~azeem@176.200.234.104)
2021-07-31 12:09:52 +0200hiruji(~hiruji@user/hiruji) (Read error: Connection reset by peer)
2021-07-31 12:10:12 +0200hiruji(~hiruji@user/hiruji)
2021-07-31 12:12:45 +0200 <Orbstheorem> Where do you usually put your arbitrary instances? With the code (which leads to the main code depending on quickcheck) or in the tests (which leads to orphan instances)?
2021-07-31 12:13:13 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-31 12:13:37 +0200 <Orbstheorem> One of my issues is that sometimes I have to declare arbitrary instances for library types (such as URI) and I find myself with orphan instances on my main code :/
2021-07-31 12:13:40 +0200 <sshine> Orbstheorem, I don't use Arbitrary. I use forAll / forAllShrink.
2021-07-31 12:14:19 +0200 <sshine> (actually, I use Hedgehog, which doesn't have an Arbitrary type class, and where the shrinker comes for free, but it's equivalent to those.)
2021-07-31 12:14:42 +0200neceve(~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 272 seconds)
2021-07-31 12:15:28 +0200 <sshine> Orbstheorem, with Arbitrary instances, either your main library gets a QuickCheck dependency, or you get orphan instances, or you need to wrap each thing you generate once more, which can be impractical for big, recursive data types.
2021-07-31 12:15:45 +0200azeem(~azeem@176.200.234.104) (Read error: Connection reset by peer)
2021-07-31 12:16:31 +0200azeem(~azeem@176.200.234.104)
2021-07-31 12:16:32 +0200 <sshine> or rather... the last thing isn't really true. if you wrap a data type in one newtype, that newtype's Arbitrary instance can refer to a Gen that refers to other Gens without there having to be Arbitrary instances for every sub-datatype.
2021-07-31 12:16:36 +0200 <Orbstheorem> I'm not sure I get the forAll/forAllShrink answer: A `Gen a` instance is still required.
2021-07-31 12:17:22 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2021-07-31 12:17:32 +0200 <Orbstheorem> sshine: What do people usually prefer.
2021-07-31 12:17:36 +0200 <sshine> Orbstheorem, example: https://github.com/exercism/haskell/pull/843/files#diff-637040c93c07fbca943993ab34b2ee07185c74ebe5ā€¦
2021-07-31 12:18:45 +0200mastarija_(~mastarija@31.217.8.174)
2021-07-31 12:18:45 +0200 <Orbstheorem> Alright, so you write the generators yourself.
2021-07-31 12:19:08 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-07-31 12:19:13 +0200 <Orbstheorem> > <@sshine:libera.chat> Roos, with Arbitrary instances, either your main library gets a QuickCheck dependency, or you get orphan instances, or you need to wrap each thing you generate once more, which can be impractical for big, recursive data types.
2021-07-31 12:19:13 +0200 <Orbstheorem> * What do people usually prefer?
2021-07-31 12:19:14 +0200 <lambdabot> <hint>:1:1: error: parse error on input ā€˜<@ā€™
2021-07-31 12:19:32 +0200mastarija__(~mastarija@31.217.8.174)
2021-07-31 12:19:48 +0200 <Orbstheorem> I personally like just declaring what I need and have quickcheck 'wire' those generators in; yes it's probably one of two lines, but I find it more clean.
2021-07-31 12:20:12 +0200 <sshine> Orbstheorem, https://www.fpcomplete.com/blog/quickcheck-hedgehog-validity/ -- here's an article that discusses Arbitrary. and yes, I write the generators. do you know of any projects that derives Gen?
2021-07-31 12:20:46 +0200 <sshine> you mean you like to have 'arbitrary :: anything'? yeah, I think it is really cool :) but not always practical.
2021-07-31 12:20:55 +0200 <Orbstheorem> Thanks for the article ^^
2021-07-31 12:22:01 +0200 <sshine> e.g. what if you, for one type, want to test multiple things where the values are generated differently? e.g. I have a parser for scientific numbers, and one of the properties is "can it handle the full syntactic range?" -- and another is, does it handle precision? for the second property, a lot of the "full syntactic range" values wouldn't come close to the point of interest wrt. precision.
2021-07-31 12:22:11 +0200mastarija(~mastarija@31.217.8.174) (Ping timeout: 252 seconds)
2021-07-31 12:22:21 +0200 <sshine> so my experience is that I can't assume there to be one canonical generator for each type.
2021-07-31 12:22:35 +0200 <Orbstheorem> What I mean is that I like stuff like this: `prop_foobar :: OneType -> SecondType -> Property`
2021-07-31 12:22:38 +0200 <sshine> or even, very often, a generally useful one.
2021-07-31 12:23:01 +0200 <sshine> Orbstheorem, yeah, that part seems really nice :) sort of like DI.
2021-07-31 12:23:34 +0200mastarija_(~mastarija@31.217.8.174) (Ping timeout: 272 seconds)
2021-07-31 12:24:30 +0200 <Orbstheorem> Yes, I'm not saying I never use `forAll` myself, rather than most of the times, very dump (Arbitrary) generators do the job, and I'd rather not have the overhead of writing `forAll genOneType $ ...`.
2021-07-31 12:25:22 +0200 <sshine> the overhead of Arbitrary is specifying a newtype and its Arbitrary instance for every kind of thing you want to generate, as opposed to writing 'genOneType'.
2021-07-31 12:25:22 +0200Vajb(~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
2021-07-31 12:26:23 +0200 <sshine> in my experience, the overhead of the different approaches is comparable, and depends mostly on how much you manage to re-use your Arbitrary instances. and the thing you like is to have Arbitrary values injected into your property test, as opposed to specifying them as Gen values. which I do think is a killer feature, but also not worth it. :P
2021-07-31 12:26:37 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-31 12:28:09 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-31 12:29:16 +0200euouae(~euouae@user/euouae) (Ping timeout: 246 seconds)
2021-07-31 12:32:58 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 12:33:42 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 272 seconds)
2021-07-31 12:34:04 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 12:35:50 +0200 <sshine> Orbstheorem, https://github.com/sshine/hs-jq/blob/master/test/ParserTest.hs#L335 <- here's a test that depends on a generator that only generates strings with certain unicode symbols in it. with Arbitrary I'd have to create a newtype that doesn't get re-used. I might re-use the generator inside a full-coverage generator, but I probably wouldn't re-use the Arbitrary instance for that.
2021-07-31 12:41:18 +0200mastarija__(~mastarija@31.217.8.174) (Ping timeout: 272 seconds)
2021-07-31 12:41:32 +0200azeem(~azeem@176.200.234.104) (Ping timeout: 252 seconds)
2021-07-31 12:43:57 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-31 12:48:53 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
2021-07-31 12:53:15 +0200 <Orbstheorem> I'm under the impression I may have misexpressed myself: I'm not criticizing the use of `forAll` (in fact, I very often use it myself), so saying that `forAll` and Arbitrary don't play well toguether, I'm simply advocating for Arbitrary instances for types that already exist in the code. I am not advocating for wrapping stuff in newtypes just for the fun of creating an Arbitrary instance.
2021-07-31 12:53:22 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 12:53:59 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 12:55:07 +0200 <Orbstheorem> `deriving stock (Generic); deriving anyclass (Arbitrary)` is very clean for many of my instances, my original question expressed my concern between depending on QuickCheck on the main code or having orphan instances in the tests (either by empty implementation or standalone deriving).
2021-07-31 13:02:28 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-07-31 13:05:51 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Remote host closed the connection)
2021-07-31 13:06:10 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 13:06:12 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
2021-07-31 13:06:32 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 13:07:57 +0200AlexNoo_(~AlexNoo@178.34.150.193)
2021-07-31 13:08:04 +0200pe200012(~pe200012@113.105.10.33)
2021-07-31 13:09:54 +0200Alex_test(~al_test@94.233.241.173) (Ping timeout: 256 seconds)
2021-07-31 13:10:32 +0200AlexZenon(~alzenon@94.233.241.173) (Ping timeout: 245 seconds)
2021-07-31 13:11:12 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-31 13:11:29 +0200euouae(~euouae@user/euouae)
2021-07-31 13:11:38 +0200AlexNoo(~AlexNoo@94.233.241.173) (Ping timeout: 250 seconds)
2021-07-31 13:11:48 +0200 <sshine> Orbstheorem, https://www.michaelpj.com/blog/2020/10/29/your-orphans-are-fine.html
2021-07-31 13:12:00 +0200pe200012(~pe200012@113.105.10.33) (Client Quit)
2021-07-31 13:12:20 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 272 seconds)
2021-07-31 13:14:18 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com)
2021-07-31 13:14:54 +0200AlexZenon(~alzenon@178.34.150.193)
2021-07-31 13:14:55 +0200Alex_test(~al_test@178.34.150.193)
2021-07-31 13:21:03 +0200acidjnk_new(~acidjnk@p200300d0c72b9501c19bd88441742b9a.dip0.t-ipconnect.de)
2021-07-31 13:24:26 +0200acidjnk(~acidjnk@p200300d0c72b9576e9974425ad52911e.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-07-31 13:30:00 +0200stenvold(~stenvold@2001:a61:25f1:6701:a993:a914:786f:a6f5) (Quit: Client closed)
2021-07-31 13:32:25 +0200dunj3(~dunj3@2001:981:9d95:1:886d:656c:9636:23f4) (Quit: Leaving)
2021-07-31 13:38:59 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-07-31 13:40:29 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-31 13:40:49 +0200lavaman(~lavaman@98.38.249.169)
2021-07-31 13:44:53 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 265 seconds)
2021-07-31 13:45:54 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
2021-07-31 13:50:26 +0200mastarija__(~mastarija@31.217.8.174)
2021-07-31 13:50:29 +0200deejaytee(~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net)
2021-07-31 13:50:40 +0200MoC(~moc@user/moc)
2021-07-31 13:52:10 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 13:53:13 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 14:01:35 +0200tommd(~tommd@cpe-76-179-204-251.maine.res.rr.com)
2021-07-31 14:01:36 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-07-31 14:02:09 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-31 14:12:35 +0200mastarija__(~mastarija@31.217.8.174) (Quit: Leaving)
2021-07-31 14:12:35 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-07-31 14:13:08 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-07-31 14:14:58 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-07-31 14:14:58 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-31 14:15:09 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-31 14:17:37 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-31 14:20:06 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2021-07-31 14:20:53 +0200nshepperd2(~nshepperd@li364-218.members.linode.com) (Quit: The Lounge - https://thelounge.chat)
2021-07-31 14:20:53 +0200nshepperd(nshepperd@2600:3c03::f03c:92ff:fe28:92c9) (Quit: quit)
2021-07-31 14:21:35 +0200 <bontaq> hmm is there a nice way to add 1 day to a Datetime in the chronos library?
2021-07-31 14:21:53 +0200nshepperd2(~nshepperd@li364-218.members.linode.com)
2021-07-31 14:21:55 +0200nshepperd(nshepperd@2600:3c03::f03c:92ff:fe28:92c9)
2021-07-31 14:24:40 +0200ubert(~Thunderbi@77.119.201.127.wireless.dyn.drei.com)
2021-07-31 14:30:50 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-07-31 14:30:50 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-07-31 14:30:53 +0200allbery_bgeekosaur
2021-07-31 14:30:57 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-31 14:31:46 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 14:32:34 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 14:35:56 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2021-07-31 14:40:36 +0200goepsilongo(~chacho@2603-7000-ab00-62ed-0000-0000-0000-0bd0.res6.spectrum.com) (Quit: Konversation terminated!)
2021-07-31 14:43:11 +0200cheater(~Username@user/cheater) (Remote host closed the connection)
2021-07-31 14:44:47 +0200fendor_(~fendor@178.165.178.92.wireless.dyn.drei.com)
2021-07-31 14:46:54 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-31 14:47:24 +0200eltonpin1(~1ntEgr8@2601:c8:c000:3090:9505:af4c:44c9:29b0)
2021-07-31 14:47:55 +0200eltonpin1(~1ntEgr8@2601:c8:c000:3090:9505:af4c:44c9:29b0) (Client Quit)
2021-07-31 14:47:58 +0200fendor(~fendor@91.141.37.142.wireless.dyn.drei.com) (Ping timeout: 272 seconds)
2021-07-31 14:50:14 +0200cheater(~Username@user/cheater)
2021-07-31 14:51:48 +0200egoist(~egoist@186.235.82.100)
2021-07-31 14:52:40 +0200Guest65(~Guest65@188.27.128.31) (Quit: Client closed)
2021-07-31 14:54:47 +0200sm2n(~sm2n@user/sm2n) (Ping timeout: 255 seconds)
2021-07-31 14:57:47 +0200euouae(~euouae@user/euouae) (Quit: euouae)
2021-07-31 14:58:44 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2021-07-31 14:58:59 +0200 <Orbstheorem> Is there a way to run hls and have an output similar to `stack build --file-watch` on a separate terminal?
2021-07-31 14:59:11 +0200 <Orbstheorem> hls is nice, but Coc is not and oftentimes I find myself using both.
2021-07-31 15:00:02 +0200 <Orbstheorem> And I suspect hls doesn't like that (especially when I add a new dependency to `package.yaml`. Sometimes `CocRestart` works, but othertimes, I have to close and reopen my editor :/
2021-07-31 15:01:02 +0200cheater(~Username@user/cheater) (Read error: Connection reset by peer)
2021-07-31 15:01:04 +0200alx741(~alx741@181.196.69.85)
2021-07-31 15:04:10 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 15:04:59 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 15:08:09 +0200cheater(~Username@user/cheater)
2021-07-31 15:14:54 +0200fendor_fendor
2021-07-31 15:16:29 +0200son0p(~ff@181.136.122.143)
2021-07-31 15:16:44 +0200burnsidesLlama(~burnsides@client-8-91.eduroam.oxuni.org.uk)
2021-07-31 15:17:32 +0200Guest7767(~dunkeln@user/dunkeln)
2021-07-31 15:17:52 +0200Guest7767dunkeln
2021-07-31 15:22:10 +0200tommd(~tommd@cpe-76-179-204-251.maine.res.rr.com) (Ping timeout: 272 seconds)
2021-07-31 15:27:48 +0200cheater(~Username@user/cheater) (Ping timeout: 272 seconds)
2021-07-31 15:30:24 +0200acidjnk_new(~acidjnk@p200300d0c72b9501c19bd88441742b9a.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2021-07-31 15:31:46 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 15:32:16 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 15:33:45 +0200 <maerwald> IMO, there are process handling bugs with HLS
2021-07-31 15:34:16 +0200 <maerwald> some clients are more erratic than others, but I found none that can handle HLS crashing
2021-07-31 15:34:56 +0200gehmehgeh(~user@user/gehmehgeh)
2021-07-31 15:34:59 +0200deejaytee(~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net) (Quit: Leaving)
2021-07-31 15:36:59 +0200cheater(~Username@user/cheater)
2021-07-31 15:43:22 +0200Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
2021-07-31 15:46:48 +0200dunkeln(~dunkeln@user/dunkeln) (Quit: Leaving...)
2021-07-31 15:47:08 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-07-31 15:49:29 +0200sm2n(~sm2n@user/sm2n)
2021-07-31 15:50:36 +0200burnsidesLlama(~burnsides@client-8-91.eduroam.oxuni.org.uk) (Remote host closed the connection)
2021-07-31 15:53:54 +0200jakalx(~jakalx@base.jakalx.net) ()
2021-07-31 15:56:13 +0200zebrag(~chris@user/zebrag)
2021-07-31 15:57:33 +0200pesada(~agua@2804:18:70:7597:1:0:6e99:2d6f)
2021-07-31 15:58:39 +0200mikoto-chan(~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) (Read error: No route to host)
2021-07-31 15:59:28 +0200flandrer(~Mk2013@193.29.106.60)
2021-07-31 15:59:35 +0200mikoto-chan(~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be)
2021-07-31 16:01:06 +0200agua(~agua@2804:14c:8793:8e2f:ecd5:11e0:50a0:f2fe) (Ping timeout: 240 seconds)
2021-07-31 16:01:22 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 16:01:37 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 16:02:38 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-07-31 16:04:09 +0200burnsidesLlama(~burnsides@client-8-91.eduroam.oxuni.org.uk)
2021-07-31 16:05:27 +0200flandrer(~Mk2013@193.29.106.60) (Remote host closed the connection)
2021-07-31 16:07:04 +0200 <phaazon> Iā€™m not sure but whatā€™s the Ā« infallible 2 type conversion Ā» typeclass in Haskell again?
2021-07-31 16:07:15 +0200 <phaazon> i.e. class Convert a b where convert :: a -> b
2021-07-31 16:07:34 +0200 <phaazon> Iā€™m creating specialized versions of that every time IĀ need it, especially for error handling
2021-07-31 16:08:05 +0200 <phaazon> (so that IĀ can IĀ use (Convert SpecificError e) => MonadError e and allow user to use their own error types wrapping mine)
2021-07-31 16:08:22 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-07-31 16:12:49 +0200hololeap(~hololeap@user/hololeap)
2021-07-31 16:13:53 +0200burnsidesLlama(~burnsides@client-8-91.eduroam.oxuni.org.uk) (Remote host closed the connection)
2021-07-31 16:14:28 +0200 <geekosaur> Are you talking about Coercible? But I don't think it will do what you want there
2021-07-31 16:15:04 +0200 <phaazon> geekosaur: Iā€™m talking about an equivalent of Rustā€™s From
2021-07-31 16:15:07 +0200 <phaazon> I currently use this:
2021-07-31 16:15:10 +0200 <phaazon> class LiftArticleError e where
2021-07-31 16:15:12 +0200 <phaazon> liftArticleError :: ArticleError -> e
2021-07-31 16:15:15 +0200 <phaazon> (for a specialized error type)
2021-07-31 16:15:28 +0200 <phaazon> so that I can do (MonadError e, LiftArticleError e) => m ā€¦
2021-07-31 16:15:33 +0200 <phaazon> so that I can do (MonadError e m, LiftArticleError e) => m ā€¦
2021-07-31 16:15:51 +0200hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-07-31 16:16:15 +0200Guest1599(~Guest15@2a02:a31a:a23c:f480:2fd7:e087:5546:a438)
2021-07-31 16:16:17 +0200hololeap(~hololeap@user/hololeap)
2021-07-31 16:16:26 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-31 16:16:29 +0200 <phaazon> so not Coercible
2021-07-31 16:16:35 +0200 <phaazon> since they might have a different representations
2021-07-31 16:16:47 +0200 <phaazon> the idea is that the user might provide their owen error types, wrapping mine
2021-07-31 16:16:51 +0200 <Guest1599> Hi! How to understand this line: `newtype Task c k v = Task (forall f. c f => (k -> f v) -> f v)` ?
2021-07-31 16:17:02 +0200 <phaazon> like data UserError = Foo FooError | Article ArticleError
2021-07-31 16:17:21 +0200 <phaazon> and then simply instance LiftArticleError UserError where liftArticleError = Article
2021-07-31 16:17:37 +0200 <geekosaur> the only other thing I can think of is SomeException, but that's the root of the exception hierarchy
2021-07-31 16:17:49 +0200 <phaazon> alright, Iā€™ll make my own thing then
2021-07-31 16:18:00 +0200 <phaazon> itā€™s surprising thatā€™s not a thing in Haskell but itā€™s used everywhere in Rust
2021-07-31 16:18:10 +0200 <phaazon> especially since it plays a vital role in stuff like the ? operator
2021-07-31 16:20:31 +0200agua(~agua@191.177.175.57)
2021-07-31 16:20:52 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
2021-07-31 16:22:33 +0200 <Guest1599> I know it might sound easy, but I'd love to hear how people read and understand it
2021-07-31 16:22:58 +0200pesada(~agua@2804:18:70:7597:1:0:6e99:2d6f) (Ping timeout: 272 seconds)
2021-07-31 16:24:46 +0200 <phaazon> Guest1599: c is a constraint that will be applied on a functor wrapped in an existential
2021-07-31 16:25:15 +0200 <phaazon> so IĀ guess youā€™d use that with Task MonadIO to get a task running in Ā« a MonadIO Ā»
2021-07-31 16:26:46 +0200jneira_(~jneira_@28.red-80-28-169.staticip.rima-tde.net) (Ping timeout: 272 seconds)
2021-07-31 16:26:52 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-31 16:28:40 +0200cheater(~Username@user/cheater) (Ping timeout: 272 seconds)
2021-07-31 16:29:56 +0200xff0x(~xff0x@2001:1a81:536d:8c00:2d4:a9e1:415e:5f77) (Ping timeout: 256 seconds)
2021-07-31 16:30:16 +0200 <[exa]> phaazon: the all-to-all conversions don't really work nice with type inference, you'll usually jump into a situation where the type system needs to do a DFS on your code to find a good variant (and finish it to prove that it's not ambiguous), which is far from having the types intuitive
2021-07-31 16:30:34 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 16:30:41 +0200 <Guest1599> phaazon I'm a Haskell beginner; I know how to read `newtype ZipList a = ZipList { getZipList :: [a] }` and how to construct a type out of it (i.e. `ZipList Int`)
2021-07-31 16:30:54 +0200 <Guest1599> but this `Task` still looks vague to me
2021-07-31 16:30:58 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 16:31:17 +0200 <phaazon> [exa]: you mean because of the two type variables?
2021-07-31 16:31:38 +0200Atum_(~IRC@user/atum/x-2392232)
2021-07-31 16:31:39 +0200 <phaazon> yeah, well, IĀ agree itā€™s not perfect but most of the time it works great (in Rust at least, and Haskell type system is far better so I would expect it to behave better :D)
2021-07-31 16:31:55 +0200 <phaazon> Guest1599: whatā€™s bothering you is the forall, right?
2021-07-31 16:32:10 +0200 <phaazon> you might need to get a look at a more specific version
2021-07-31 16:32:12 +0200 <phaazon> like TaskIO
2021-07-31 16:32:25 +0200 <[exa]> in rust the contexts are much much smaller, so it usually works nicely
2021-07-31 16:32:47 +0200 <[exa]> in haskell you can easily get a function that has a whole convert chain in the type signature
2021-07-31 16:32:48 +0200 <phaazon> newtype TaskIO k v = TaskIO (forall f. MonadIO f => (k -> f v) -> f v) -- Guest1599
2021-07-31 16:33:26 +0200 <phaazon> Guest1599: the forall here means that you cannot inspect and know what f itā€™s being used
2021-07-31 16:33:39 +0200 <phaazon> the only place where you know that information is prior wrapping that function in the TaskIO
2021-07-31 16:33:46 +0200 <phaazon> once itā€™s wrapped in, you lose the information of the type of f
2021-07-31 16:33:54 +0200 <phaazon> and you only know about the constraint
2021-07-31 16:34:03 +0200 <phaazon> so basically, MonadIO f, but you canā€™t know what f is inside
2021-07-31 16:34:29 +0200 <Guest1599> hmm, okay
2021-07-31 16:34:36 +0200 <phaazon> so you pass a (k -> f v) function and you get back a f v
2021-07-31 16:34:58 +0200 <phaazon> IĀ donā€™t know what that k and v means but itā€™s very likely to be an environment pattern, or some kind of pointer you can lookup in MonadIO
2021-07-31 16:35:13 +0200 <phaazon> now, your initial type sig also abstracted on the constraint
2021-07-31 16:35:18 +0200 <Guest1599> k - `key`, v - `value`, think of it as a storage
2021-07-31 16:35:21 +0200 <phaazon> (with the c type param)
2021-07-31 16:35:26 +0200 <phaazon> yeah that makes sense
2021-07-31 16:36:24 +0200 <Guest1599> " pass a (k -> f v) function and you get back a f v" - where to pass it? I'm a bit lost
2021-07-31 16:36:52 +0200AlexNoo_AlexNoo
2021-07-31 16:37:09 +0200 <Guest1599> i.e. with `Maybe`: it's a type constructor - one can pass a type and it becomes `Maybe PassedType` - a concrete type
2021-07-31 16:37:21 +0200 <Guest1599> I see thath TaskIO also accepts two types - `k` and `v`
2021-07-31 16:37:39 +0200 <Guest1599> so... where's the place for `k -> f v` herE?
2021-07-31 16:38:41 +0200jakalx(~jakalx@base.jakalx.net)
2021-07-31 16:40:02 +0200 <Guest1599> I think my problem is that the right-hand side of `=` looks like nothing I've seen in the context of a newtype
2021-07-31 16:40:51 +0200 <phaazon> Guest1599: yeah youā€™d have to pattern match on it
2021-07-31 16:40:58 +0200 <phaazon> or use a function that does that for you
2021-07-31 16:41:16 +0200 <phaazon> rewritting TaskIO in a way that automatically provides you a nice function to do so:
2021-07-31 16:41:22 +0200 <Guest1599> I think I'm more lost than you expect
2021-07-31 16:41:36 +0200 <phaazon> newtype TaskIO k v = TaskIO { runTaskIO ::Ā forall f. MonadIO f => (k -> f v) -> f v }
2021-07-31 16:42:58 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 16:43:16 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 16:43:32 +0200kuribas(~user@ptr-25vy0i7fhp3jdg2nokv.18120a2.ip6.access.telenet.be)
2021-07-31 16:43:53 +0200 <Guest1599> runTaskIO someTaskIO kToFVfunction would return `f v`...?
2021-07-31 16:44:02 +0200 <phaazon> I can give you an example, wait :)
2021-07-31 16:44:58 +0200 <Guest1599> phaazon : if it helps, the line comes from https://www.cambridge.org/core/journals/journal-of-functional-programming/article/build-systems-a-ā€¦ page 9
2021-07-31 16:45:36 +0200 <Guest1599> (the Task is a custom one, seperated from stdlib etc)
2021-07-31 16:46:22 +0200 <phaazon> so:
2021-07-31 16:46:34 +0200 <phaazon> let task = TaskIO $ \lookup -> liftA2 (+) (lookup "hey") (lookup "you")
2021-07-31 16:46:53 +0200 <phaazon> here, we just lookup two keys (setting k = String)
2021-07-31 16:46:57 +0200 <phaazon> and we add them together
2021-07-31 16:47:09 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-07-31 16:47:09 +0200 <phaazon> so that we have v as Num v
2021-07-31 16:47:27 +0200 <phaazon> the type of task is then (Num v) => TakIO String v
2021-07-31 16:47:27 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-07-31 16:47:44 +0200 <phaazon> now, you need to run that task, so as I told you earlier, you need to pass that (k -> f v) function
2021-07-31 16:47:52 +0200 <phaazon> letā€™s just mockup something really quick
2021-07-31 16:48:01 +0200 <phaazon> lookup "hey" = pure 1; lookup "you" = pure 2;Ā lookup _ = pure 0
2021-07-31 16:48:05 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-31 16:48:10 +0200 <phaazon> running the task like:
2021-07-31 16:48:17 +0200 <phaazon> runTaskIO task lookup
2021-07-31 16:48:23 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-07-31 16:48:25 +0200 <phaazon> will tie everything and will provide 3
2021-07-31 16:49:03 +0200 <phaazon> the only place where we know the type of f is when we define task
2021-07-31 16:49:19 +0200 <phaazon> IĀ didnā€™t do anything specific but I could have used liftIO . print and it would have made f = IO
2021-07-31 16:49:33 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-31 16:50:05 +0200 <phaazon> the important thing is that you will get back a value in f v, yes
2021-07-31 16:50:29 +0200lbseale(~lbseale@user/ep1ctetus)
2021-07-31 16:51:19 +0200 <Guest1599> (let me digest it)
2021-07-31 16:51:27 +0200 <phaazon> sure
2021-07-31 16:51:36 +0200 <phaazon> existential quantification is not really beginner level anyway :)
2021-07-31 16:51:44 +0200 <phaazon> itā€™s completly normal if you feel overwhelmed by it
2021-07-31 16:52:17 +0200xff0x(~xff0x@2001:1a81:536d:8c00:2d4:a9e1:415e:5f77)
2021-07-31 16:52:22 +0200 <Guest1599> First qustion: Why `newtype TaskIO k v = TaskIO { runTaskIO :: forall f. MonadIO f => (k -> f v) -> f v} ` , not just `newtype TaskIO k v = TaskIO { runTaskIO :: (MonadIO f) => (k -> f v) -> f v } ` ?
2021-07-31 16:53:00 +0200 <Guest1599> what would be the difference?
2021-07-31 16:53:09 +0200 <phaazon> good question; the right side of a data type declaration must use either concrete types or type variables declared on the left part
2021-07-31 16:53:23 +0200 <phaazon> f here is only known on the right side
2021-07-31 16:53:31 +0200 <phaazon> it doesnā€™t appear on the left side
2021-07-31 16:53:37 +0200 <phaazon> so if I give you two different tasks
2021-07-31 16:53:58 +0200 <phaazon> which types are TaskIO Int String and TaskIO Int String, what f is inside of them? the same? different? :)
2021-07-31 16:54:17 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-31 16:54:29 +0200 <phaazon> so the forall keyword is a bit confusing but allows us to say ā€œthereā€™s a f inside of that thing and itā€™s introduced here as existential; we know itā€™s there but we canā€™t inspect / observe it from outsideā€
2021-07-31 16:55:07 +0200 <Guest1599> hmmm, okay
2021-07-31 16:55:08 +0200 <phaazon> your second form would be valid if you had newtype TaskIO k f v, for instance
2021-07-31 16:55:22 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 16:55:29 +0200 <phaazon> it would be a problem, though
2021-07-31 16:55:33 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 16:55:35 +0200 <phaazon> because someone could use any functor / monad here
2021-07-31 16:55:41 +0200 <phaazon> (not necessarily MonadIO)
2021-07-31 16:56:28 +0200 <Guest1599> phaazon couldn't we provide something like `(MondaIO f) =>` on the RHS ( right-hand side of the equation sign)?
2021-07-31 16:58:08 +0200 <Guest1599> maybe that's a question that won't get us (me) anywhere though;
2021-07-31 16:58:29 +0200 <phaazon> there are different position where we can do that but yeah, not sure
2021-07-31 17:02:14 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2021-07-31 17:04:50 +0200 <Guest1599> phaazon are you a regular member of this channel? (I think I need to digest what you've said, read a few more things and perhaps (tomorrow...? some time in the future) discuss further if needed. Would be nice to see you around
2021-07-31 17:09:33 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-07-31 17:10:01 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com)
2021-07-31 17:10:53 +0200 <phaazon> Iā€™ve been there for ~10 years but donā€™t often partake, but lately Iā€™ve been doing lots of PureScript and Haskell so I look at whatā€™s happening here more often, so yes, just hl me :)
2021-07-31 17:11:14 +0200peterhil(~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi)
2021-07-31 17:11:37 +0200 <phaazon> I actually injured my foot lately while wakeboarding so I have time on the computer, donā€™t worry about that lol
2021-07-31 17:12:24 +0200 <Guest1599> funny that you mentioned wakeboarding, yesterday I tried it for the first time
2021-07-31 17:12:37 +0200 <Guest1599> I thought that it's rather injury-free
2021-07-31 17:13:04 +0200MoC(~moc@user/moc) (Quit: Konversation terminated!)
2021-07-31 17:13:05 +0200 <phaazon> :)
2021-07-31 17:13:09 +0200 <phaazon> depends on what you do
2021-07-31 17:13:28 +0200 <phaazon> Iā€™m at the intermediary / advanced skill level so I throwā€¦ interesting tricks
2021-07-31 17:13:38 +0200 <Guest1599> :D that's cool!
2021-07-31 17:14:10 +0200 <phaazon> on Wednesday I fall off a high jump off the kicker after a flip that ended badly, where I caught my back edge on the way down and got partially ejected of my bindings but not completely, resulting in both the feet stuck in the bindings, bent
2021-07-31 17:14:30 +0200 <phaazon> I have nice rainbow colors on the right foot, probably a ligament partially torn or something like that, cool times :D
2021-07-31 17:15:04 +0200 <phaazon> but yeah, itā€™s definitely less risky than snowboarding (IĀ just completely broke a radius in half two years ago there, so yeah, injuries are worse :D)
2021-07-31 17:16:15 +0200danso(~danso@23-233-111-52.cpe.pppoe.ca) (Read error: Connection reset by peer)
2021-07-31 17:16:44 +0200coot(~coot@46.204.69.82.nat.umts.dynamic.t-mobile.pl)
2021-07-31 17:16:44 +0200coot(~coot@46.204.69.82.nat.umts.dynamic.t-mobile.pl) (Read error: Connection reset by peer)
2021-07-31 17:17:22 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 17:17:35 +0200danso(~danso@23-233-111-52.cpe.pppoe.ca)
2021-07-31 17:17:42 +0200 <Guest1599> I hope you'll get better soon. and yeah, injuries are what puts me off from snowboarding
2021-07-31 17:18:02 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 17:19:22 +0200 <phaazon> did you enjoy wakeboarding? :)
2021-07-31 17:19:29 +0200pavonia(~user@user/siracusa)
2021-07-31 17:19:30 +0200 <phaazon> were you able to stand up? balance is hard at first
2021-07-31 17:20:26 +0200Pickchea(~private@user/pickchea)
2021-07-31 17:21:12 +0200jmorris(uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-31 17:22:06 +0200 <Guest1599> i definitely enjoyed it
2021-07-31 17:22:33 +0200 <Guest1599> I was able to stand up - we had a wakeboarding session with a line/rope over a like rather than a boat. I think it's better-suited for beginners
2021-07-31 17:22:48 +0200 <Guest1599> over a lake*
2021-07-31 17:27:46 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 17:28:40 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 17:30:24 +0200fendor(~fendor@178.165.178.92.wireless.dyn.drei.com) (Remote host closed the connection)
2021-07-31 17:30:26 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-31 17:37:01 +0200 <phaazon> cable? yeah IĀ donā€™t do boats either
2021-07-31 17:37:08 +0200 <phaazon> itā€™s two completely different sports anyway :)
2021-07-31 17:38:34 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 17:39:42 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 17:42:27 +0200lavaman(~lavaman@98.38.249.169)
2021-07-31 17:43:41 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-31 17:45:51 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
2021-07-31 17:47:12 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
2021-07-31 17:51:46 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 17:52:26 +0200funsafe(~funsafe@2601:1c1:4200:938f:32aa:eb39:2110:e2ea) (Ping timeout: 250 seconds)
2021-07-31 17:52:43 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 17:54:01 +0200funsafe(~funsafe@2601:1c1:4200:938f:32aa:eb39:2110:e2ea)
2021-07-31 17:57:27 +0200HarveyPwca(~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06)
2021-07-31 17:58:12 +0200neceve(~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f)
2021-07-31 18:00:19 +0200HarveyPwca(~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06) (Remote host closed the connection)
2021-07-31 18:00:49 +0200HarveyPwca(~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06)
2021-07-31 18:04:23 +0200nuncanada(~dude@179.235.162.215)
2021-07-31 18:08:06 +0200ubert(~Thunderbi@77.119.201.127.wireless.dyn.drei.com) (Ping timeout: 272 seconds)
2021-07-31 18:09:47 +0200markpythonicbitc(~textual@50.228.44.6)
2021-07-31 18:10:29 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-07-31 18:14:28 +0200mattil(~mattilinn@78-27-98-194.bb.dnainternet.fi) (Remote host closed the connection)
2021-07-31 18:16:16 +0200kilolympus(~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) (Read error: Connection reset by peer)
2021-07-31 18:17:47 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-07-31 18:18:06 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-31 18:18:16 +0200erisco(~erisco@d24-57-249-233.home.cgocable.net)
2021-07-31 18:21:13 +0200cheater(~Username@user/cheater)
2021-07-31 18:22:40 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2021-07-31 18:23:03 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-07-31 18:27:09 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-07-31 18:27:22 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Ping timeout: 258 seconds)
2021-07-31 18:28:48 +0200Guest608(~Guest60@187.83.249.216.dyn.smithville.net)
2021-07-31 18:30:29 +0200lbseale(~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
2021-07-31 18:30:59 +0200 <Guest608> is there an easy way to get stack to reinstall/relink a package? I'm having issues which I think are linking problems but I don't know how to get stack to reinstall things without just doing rm -rf ~/.stack
2021-07-31 18:33:00 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-07-31 18:33:12 +0200 <maerwald> haha
2021-07-31 18:36:14 +0200 <maerwald> now you wished sandboxes were still a thing
2021-07-31 18:36:21 +0200 <maerwald> but everyone wanted this nix-style stuff
2021-07-31 18:37:35 +0200mattil(~mattilinn@78-27-98-194.bb.dnainternet.fi)
2021-07-31 18:37:49 +0200berberman(~berberman@user/berberman)
2021-07-31 18:38:22 +0200berberman_(~berberman@user/berberman) (Ping timeout: 250 seconds)
2021-07-31 18:39:47 +0200mattil(~mattilinn@78-27-98-194.bb.dnainternet.fi) (Client Quit)
2021-07-31 18:40:30 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-07-31 18:41:22 +0200Kaiepi(~Kaiepi@156.34.44.192) (Remote host closed the connection)
2021-07-31 18:41:46 +0200Kaiepi(~Kaiepi@156.34.44.192)
2021-07-31 18:44:03 +0200phma_(~phma@host-67-44-208-68.hnremote.net)
2021-07-31 18:44:27 +0200phma(phma@2001:5b0:210d:748:6bd3:69b4:5bd0:5d7a) (Read error: Connection reset by peer)
2021-07-31 18:44:44 +0200Guest9(~Guest9@103.240.169.29)
2021-07-31 18:47:42 +0200mattil(~mattilinn@78-27-98-194.bb.dnainternet.fi)
2021-07-31 18:50:35 +0200zebrag(~chris@user/zebrag) (Ping timeout: 252 seconds)
2021-07-31 18:51:12 +0200zebrag(~chris@user/zebrag)
2021-07-31 18:52:27 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-07-31 18:53:32 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-07-31 18:55:21 +0200 <monochrom> There is a way to do surgical removal, but it requires knowing how stack organizes things.
2021-07-31 18:55:48 +0200 <monochrom> I happen to know how to do it for cabal-install.
2021-07-31 18:59:31 +0200Guest608(~Guest60@187.83.249.216.dyn.smithville.net) (Ping timeout: 246 seconds)
2021-07-31 19:01:36 +0200 <maerwald> anyone knows this stack error? https://paste.tomsmeding.com/Z1KZsYpu
2021-07-31 19:02:20 +0200 <maerwald> "createProcess: runInteractiveProcess: exec: does not exist (No such file or directory)"... ok, yeah, what?
2021-07-31 19:02:29 +0200 <maerwald> useless haskell errors...
2021-07-31 19:06:32 +0200aegon(~mike@174.127.249.180)
2021-07-31 19:07:08 +0200 <aegon> feels bad to have so many questions lately but I'm running off the edge of a cliff trying to understand my first need to mess with the DataKind and TypeApplication world
2021-07-31 19:07:46 +0200 <aegon> I'm using Frames and its incorrectly guessing the type of some of my csv columns sometimes, I want to modify the universe of possible types for the guessing to remove the option of Bool
2021-07-31 19:07:46 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-07-31 19:08:01 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-07-31 19:08:02 +0200 <aegon> but the examples on the repo are all using a function that doesn't exist anymore
2021-07-31 19:08:55 +0200 <aegon> https://hackage.haskell.org/package/Frames-0.6.1/docs/Frames-TH.html I need to construct a column universe which is off type proxy a , the examples i see are just a list of types
2021-07-31 19:09:10 +0200 <aegon> but i can't seem to figure out how to construct one on my own
2021-07-31 19:09:57 +0200 <aegon> this might be template haskell land not type land now that I'm reading it with fresh eyes
2021-07-31 19:12:32 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-07-31 19:13:07 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net)
2021-07-31 19:14:17 +0200psydroid(~psydroid@user/psydroid)
2021-07-31 19:18:02 +0200econo(uid147250@user/econo)
2021-07-31 19:18:24 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 272 seconds)
2021-07-31 19:21:58 +0200HarveyPwca(~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06) (Quit: Leaving)
2021-07-31 19:34:59 +0200dagit(~dagit@2601:1c2:1b7f:9fa0:5146:76a:259b:45c5)
2021-07-31 19:37:58 +0200MorrowM(~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 272 seconds)
2021-07-31 19:38:54 +0200 <aegon> i'd like to understand more but I was looking too deep, this can be done with a type level list to the RowGen
2021-07-31 19:39:47 +0200Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net)
2021-07-31 19:41:12 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2021-07-31 19:45:58 +0200 <dsal> aegon: People *love* questions here. You should feel bad when you don't have questions.
2021-07-31 19:46:33 +0200 <aegon> :) good, because i'm lost again, i thought i got a workaround to compile which was to copy the rowGen function inclucded in Frames.TH but pass my own type list to RowGen
2021-07-31 19:46:39 +0200 <aegon> but now i'm getting type errors i can't parse
2021-07-31 19:46:51 +0200 <dsal> Paste some examples.
2021-07-31 19:47:12 +0200 <dsal> I'm doing a bunch of silly TH right now to generate coloring functions from PNGs at compile time.
2021-07-31 19:49:16 +0200 <aegon> whoa hpaste is down o_o
2021-07-31 19:49:25 +0200 <geekosaur> @where paste
2021-07-31 19:49:25 +0200 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
2021-07-31 19:49:35 +0200 <geekosaur> hpaste has been gonbe for several years
2021-07-31 19:49:37 +0200jneira_(~jneira_@28.red-80-28-169.staticip.rima-tde.net)
2021-07-31 19:49:40 +0200 <aegon> oh :X
2021-07-31 19:51:38 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-31 19:52:16 +0200 <aegon> https://paste.tomsmeding.com/BIJtdLO9
2021-07-31 19:52:35 +0200Erutuon(~Erutuon@user/erutuon)
2021-07-31 19:53:00 +0200 <aegon> i don't understand the RowGen type, but I'm trying to remove the option for Bool table column inference since it gets it wrong sometimes, my tables are all Int / Double
2021-07-31 19:53:40 +0200 <aegon> the commented out tableTypes call works but guesses wrong sometimes
2021-07-31 19:54:44 +0200 <aegon> I'm starting to read through Vinyl to see if i can grok that but am quite lost
2021-07-31 19:59:16 +0200 <dsal> Heh, I accidentally imported `Data.Map (mapMaybe)` instead of `Data.Maybe (mapMaybe)` and confused myself quite a bit.
2021-07-31 19:59:56 +0200lavaman(~lavaman@98.38.249.169)
2021-07-31 20:00:06 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-31 20:00:36 +0200 <dsal> aegon: It says you are using undefined variables.
2021-07-31 20:04:00 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 272 seconds)
2021-07-31 20:04:18 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2021-07-31 20:04:38 +0200 <Gurkenglas> what's the proper word for bypassing the typechecker? it should evoke the impression of me swooning at a bad boy. evil is already taken by not being equivalence invariant.
2021-07-31 20:04:47 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-07-31 20:04:51 +0200 <dsal> bug?
2021-07-31 20:05:01 +0200 <dsal> "unsafe" is probably common
2021-07-31 20:05:15 +0200 <Gurkenglas> no that evokes the image of a stern disciplinarian
2021-07-31 20:06:49 +0200 <aegon> dsal: hmm, trying to fix the imports, for some reason its complaingin about Data.Proxy and Pipes.Internal.Proxy
2021-07-31 20:06:53 +0200 <aegon> I'm not including pipes in that file
2021-07-31 20:07:33 +0200 <Hecate> G0urkenglas: we have unsafePerformIO, and accursedUnutterablePerformIO
2021-07-31 20:07:44 +0200 <Hecate> so maybe accursed can be reused? :)
2021-07-31 20:08:15 +0200 <Gurkenglas> closer, if just because the previous one was so far away :3
2021-07-31 20:08:18 +0200 <Hecate> koz: take a look, maybe this can help you with naming :P
2021-07-31 20:08:56 +0200 <Hecate> Gurkenglas: my last suggestion is "eldritch" ;)
2021-07-31 20:09:05 +0200 <aegon> dsal: this is where i'm att now in trying to figure it out https://paste.tomsmeding.com/dGvajduB
2021-07-31 20:09:21 +0200 <Gurkenglas> better yet! imma keep lookin.
2021-07-31 20:14:15 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-31 20:14:15 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-07-31 20:15:14 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-31 20:15:19 +0200 <aegon> its wierd, in their source they are able to use syntax that mine doesn't allow
2021-07-31 20:16:55 +0200 <monochrom> "unsafeCoerce" bypasses the type checker and we are fine with "just" calling it unsafe.
2021-07-31 20:19:34 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-31 20:19:38 +0200 <monochrom> And "the evil mangler" is actually a semantics-preserving code optimizer. So "evil" actually means safe.
2021-07-31 20:21:27 +0200nuncanada(~dude@179.235.162.215) (Read error: Connection reset by peer)
2021-07-31 20:21:46 +0200 <koz> Hecate: What's this in reference to?
2021-07-31 20:22:22 +0200Atum_(~IRC@user/atum/x-2392232) (Quit: Atum_)
2021-07-31 20:22:41 +0200dudek(~dudek@185.150.236.155)
2021-07-31 20:22:48 +0200 <Hecate> koz: the accursed, unutterable things you do during the week-end :3
2021-07-31 20:23:09 +0200 <koz> LOL
2021-07-31 20:24:07 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds)
2021-07-31 20:24:28 +0200 <boxscape> is there a canonical way to convert from CString to ByteString?
2021-07-31 20:25:55 +0200 <boxscape> ah, found it
2021-07-31 20:26:11 +0200 <boxscape> it's packCString in the bytestring library
2021-07-31 20:26:33 +0200Atum_(~IRC@user/atum/x-2392232)
2021-07-31 20:26:42 +0200nuncanada(~dude@179.235.162.215)
2021-07-31 20:26:50 +0200 <aegon> ok, hacked thoruhg it, what can I read to understand more about what Vinyl / Frames is doing there :?
2021-07-31 20:29:00 +0200 <Hecate> aegon: step 1 : read about row polymorphism ; step 2 : come to terms with the fact that Haskell isn't row-polymorphic ; step 3 : live a good life full of happiness, find joy in the little things, go outside play in the park, and definitely do something else than use vinyl :P
2021-07-31 20:29:47 +0200 <aegon> lol, staring on step 1
2021-07-31 20:30:10 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 20:30:30 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 20:30:45 +0200 <Hecate> aegon: PureScript is a nice and ergonomic implmentation of extensible records / row-polymorphism
2021-07-31 20:32:55 +0200 <boxscape> hm GHC has this really clever thing where they warn about bindings that are unused because they are only used in other unused bindings, but I'd actually prefer if it just stuck to only warning about first-order unused bindings :/
2021-07-31 20:35:39 +0200 <monochrom> I kill that warning in the first place.
2021-07-31 20:36:31 +0200 <monochrom> I can be talked into turning it on just for a last-minute check.
2021-07-31 20:37:00 +0200 <boxscape> understandable
2021-07-31 20:39:35 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se)
2021-07-31 20:39:45 +0200Sgeo(~Sgeo@user/sgeo)
2021-07-31 20:43:47 +0200jgeerds(~jgeerds@55d45555.access.ecotel.net)
2021-07-31 20:43:47 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-07-31 20:44:10 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-31 20:44:34 +0200mattil(~mattilinn@78-27-98-194.bb.dnainternet.fi) (Remote host closed the connection)
2021-07-31 20:44:58 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 20:45:21 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 20:47:54 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-07-31 20:51:19 +0200lavaman(~lavaman@98.38.249.169)
2021-07-31 20:51:47 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds)
2021-07-31 20:54:02 +0200Guest9(~Guest9@103.240.169.29) (Ping timeout: 272 seconds)
2021-07-31 20:55:09 +0200 <Hecate> boxscape: you can enable it during CI only
2021-07-31 20:57:56 +0200 <boxscape> Hecate: just had the idea to write an issue (and possibly implement it) to suggest explicitly saying when an unused binding is actually unused vs only used in unused bindings, and possibly split it into two separate warnings
2021-07-31 20:58:29 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net)
2021-07-31 20:59:41 +0200Atum_(~IRC@user/atum/x-2392232) (Remote host closed the connection)
2021-07-31 21:00:06 +0200Atum_(~IRC@user/atum/x-2392232)
2021-07-31 21:06:29 +0200 <Hecate> boxscape: hint: if you implement it, you have much more chance to see it in GHC ;)
2021-07-31 21:06:54 +0200 <Hecate> that being said, you may want to start with a compiler plugin if possible
2021-07-31 21:07:18 +0200 <boxscape> to be able to use it sooner or for another reason?
2021-07-31 21:09:02 +0200 <Hecate> boxscape: to see how it behaves on real codebases in real workflows
2021-07-31 21:09:13 +0200 <boxscape> hm I see
2021-07-31 21:09:14 +0200 <Hecate> before undertaking the long and tedious process of a GHC Proposal
2021-07-31 21:09:32 +0200 <boxscape> I don't think this really requires a GHC proposal, it's just changing a few words in a warning message
2021-07-31 21:09:40 +0200 <Hecate> (which will be made easier by the existence of code that can be reviewed, instead of an endless bikeshedding of possibilities)
2021-07-31 21:10:12 +0200 <Hecate> if you want to implement a new warning, this is a user-facing change and thus I'm pretty sure you'll have to do a GHC proposal
2021-07-31 21:10:25 +0200 <boxscape> I see
2021-07-31 21:10:41 +0200 <Hecate> but don't fret
2021-07-31 21:10:56 +0200 <Hecate> if you make a plugin before the proposal, it's going to be much easier
2021-07-31 21:10:56 +0200 <boxscape> well, I might start with changing a few words in the warning message then and think about splitting it later
2021-07-31 21:11:02 +0200 <Hecate> :)
2021-07-31 21:11:08 +0200 <boxscape> makes sense
2021-07-31 21:12:26 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-07-31 21:13:41 +0200 <maerwald> who knows what `security` on darwin is (the binary)?
2021-07-31 21:13:47 +0200 <maerwald> https://github.com/vincenthz/hs-certificate/blob/master/x509-system/System/X509/MacOS.hs#L22
2021-07-31 21:14:31 +0200hexfive(~eric@50.35.83.177)
2021-07-31 21:14:35 +0200hexfive(~eric@50.35.83.177) (Client Quit)
2021-07-31 21:17:28 +0200Kaipi(~Kaiepi@156.34.44.192)
2021-07-31 21:17:28 +0200Kaiepi(~Kaiepi@156.34.44.192) (Read error: Connection reset by peer)
2021-07-31 21:17:30 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-31 21:19:36 +0200jgeerds(~jgeerds@55d45555.access.ecotel.net) (Remote host closed the connection)
2021-07-31 21:20:00 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 272 seconds)
2021-07-31 21:20:36 +0200 <maerwald> also love the `either error id` inside IO
2021-07-31 21:21:51 +0200Erutuon(~Erutuon@user/erutuon)
2021-07-31 21:22:50 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2021-07-31 21:24:10 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 21:24:40 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
2021-07-31 21:24:50 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 21:26:49 +0200elias_(~elias@154.27.37.188.rev.vodafone.pt)
2021-07-31 21:29:30 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 272 seconds)
2021-07-31 21:31:04 +0200Erutuon(~Erutuon@user/erutuon)
2021-07-31 21:31:30 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 240 seconds)
2021-07-31 21:35:07 +0200 <raehik> I'm doing some binary serialisation of some relatively simple data, but need more than what Data.ByteString.Builder provides. I know of two libraries, binary and cereal. Any recommendations on what to use?
2021-07-31 21:35:31 +0200 <raehik> KBs of data, saving to memory/disk
2021-07-31 21:36:42 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 240 seconds)
2021-07-31 21:36:58 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 21:37:21 +0200 <[exa]> raehik: how complicated is the data?
2021-07-31 21:37:23 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 21:37:43 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-07-31 21:38:07 +0200 <raehik> [exa]: easy, Word8->64s, some bytestrings
2021-07-31 21:38:46 +0200 <raehik> Need to do null padding of data though, which I can't do easily with Builder b/c it doesn't let you view current buffer length
2021-07-31 21:39:29 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-07-31 21:39:44 +0200lavaman(~lavaman@98.38.249.169)
2021-07-31 21:39:58 +0200 <[exa]> I'd go with binary. cereal's got some extra parsing machinery if the data is somehow complicated but I doubt it's going to be useful here
2021-07-31 21:41:32 +0200alx741(~alx741@181.196.69.85) (Ping timeout: 272 seconds)
2021-07-31 21:42:06 +0200 <raehik> hm, neither of them expose buffer length, weird
2021-07-31 21:42:50 +0200 <[exa]> you mean "how much bytes are left to read" ? I remember that was problematic for some reason
2021-07-31 21:43:08 +0200 <raehik> no I mean for serializing
2021-07-31 21:43:35 +0200 <raehik> I have a bytestring, and I need to serialize it as a 64-byte block
2021-07-31 21:43:52 +0200 <raehik> so I need to pad it with nulls depending on length (assume it's not overlong)
2021-07-31 21:44:09 +0200Merfont(~Kaiepi@156.34.44.192)
2021-07-31 21:44:10 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 21:44:15 +0200Kaipi(~Kaiepi@156.34.44.192) (Remote host closed the connection)
2021-07-31 21:44:48 +0200 <raehik> I could write my own monad on top of any of those serializers to handle it. Was hoping it existed elsewhere though
2021-07-31 21:45:13 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 21:45:23 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 252 seconds)
2021-07-31 21:46:11 +0200 <[exa]> hm yeah putN could probably be implemented a bit more efficiently, knowing how much buffer space is left ahead
2021-07-31 21:48:30 +0200Merfont(~Kaiepi@156.34.44.192) (Remote host closed the connection)
2021-07-31 21:48:47 +0200Merfont(~Kaiepi@156.34.44.192)
2021-07-31 21:50:10 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-07-31 21:50:16 +0200 <raehik> I'm able to do it on the parsing side in a pleasant manner by checking before and after cursor positions, so it can be a "wrapper" on any parser
2021-07-31 21:51:30 +0200 <raehik> Was hoping I could do the same on the serialize/printing side, but I can't get the length of a builder without building it. ah well I'll go the lazy way
2021-07-31 21:54:16 +0200alx741(~alx741@186.178.108.145)
2021-07-31 21:54:27 +0200roboguy_(~roboguy_@2605:a601:afe7:9f00:ac04:a5c:ba91:d865)
2021-07-31 21:54:58 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 21:55:55 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 21:58:54 +0200Guest9(~Guest9@103.240.169.29)
2021-07-31 22:00:03 +0200jakalx(~jakalx@base.jakalx.net)
2021-07-31 22:00:48 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-07-31 22:00:48 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-07-31 22:00:52 +0200allbery_bgeekosaur
2021-07-31 22:02:55 +0200Merfont(~Kaiepi@156.34.44.192) (Remote host closed the connection)
2021-07-31 22:03:17 +0200Merfont(~Kaiepi@156.34.44.192)
2021-07-31 22:10:34 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 22:11:35 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 22:11:39 +0200 <ixlun> Hi all, I'm using pipes and I'm trying to yield all values from a Mutable Vector: `lift $ VSM.mapM_ yield outBuf` but the type of that is `Proxy () IQ () IQ (Proxy x'0 x0 () a0 m0) ()`. and it can't match the inner `Proxy` with `IO`. Any ideas?
2021-07-31 22:13:32 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-31 22:13:49 +0200MorrowM(~MorrowM_@bzq-110-168-31-106.red.bezeqint.net)
2021-07-31 22:19:43 +0200Erutuon(~Erutuon@user/erutuon) (Quit: WeeChat 2.8)
2021-07-31 22:19:46 +0200fresheyeball(~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
2021-07-31 22:22:04 +0200reumeth(~reumeth@user/reumeth) (Ping timeout: 272 seconds)
2021-07-31 22:26:22 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 256 seconds)
2021-07-31 22:27:59 +0200nuncanada(~dude@179.235.162.215) (Read error: Connection reset by peer)
2021-07-31 22:28:14 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-07-31 22:28:23 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-07-31 22:29:21 +0200roboguy__(~roboguy_@2605:a601:afe7:9f00:8cab:6f70:b160:7f9)
2021-07-31 22:30:42 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-07-31 22:31:14 +0200 <dsal> ixlun: Missing a bit of context, but if you're trying to have a value escape the context in which the vector is mutable, that's designed to not be possible.
2021-07-31 22:31:34 +0200Merfont(~Kaiepi@156.34.44.192) (Ping timeout: 272 seconds)
2021-07-31 22:32:28 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
2021-07-31 22:32:48 +0200roboguy_(~roboguy_@2605:a601:afe7:9f00:ac04:a5c:ba91:d865) (Ping timeout: 250 seconds)
2021-07-31 22:34:29 +0200Kaiepi(~Kaiepi@156.34.44.192)
2021-07-31 22:34:30 +0200 <janus> i have been converting monochrom's Cont into a transformer. but i can't seem to define yieldGet for it
2021-07-31 22:34:40 +0200Erutuon(~Erutuon@user/erutuon)
2021-07-31 22:34:45 +0200 <janus> is there some underlying theoretical reason for that? or should it be possible?
2021-07-31 22:34:57 +0200 <ixlun> Here's some more info with a code snippet: https://pastebin.com/YzX8XWi6
2021-07-31 22:36:06 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2)
2021-07-31 22:36:14 +0200 <dsal> ixlun: Yeah, it looks like you're trying to have the value from a mutable vector escape the mutable context. That's not supposed to work. You'll need to freeze the vector first.
2021-07-31 22:36:23 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-07-31 22:36:27 +0200mdunnio(~textual@205.178.28.97)
2021-07-31 22:36:47 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-07-31 22:36:51 +0200 <ixlun> Ohh right, because I'm sending the value 'downstream' in the proxy?
2021-07-31 22:37:28 +0200mdunnio(~textual@205.178.28.97) (Read error: Connection reset by peer)
2021-07-31 22:38:08 +0200 <ixlun> dsal: in which case, why does this work? https://pastebin.com/dG2N6mAU
2021-07-31 22:38:24 +0200 <ixlun> there's no error on that code, and I've not froze the vector, but that compiles fine.
2021-07-31 22:38:49 +0200 <dsal> You're lifting in the code that errors.
2021-07-31 22:38:51 +0200 <ixlun> (using the `mapM_` was an attempt to clean that piece of code up)
2021-07-31 22:39:08 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2021-07-31 22:39:14 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-31 22:39:18 +0200nuncanada(~dude@179.235.162.215)
2021-07-31 22:39:32 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-07-31 22:40:34 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 22:41:40 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 22:41:40 +0200nuncanada(~dude@179.235.162.215) (Client Quit)
2021-07-31 22:42:23 +0200 <ixlun> Ah okay, so, the issue is that in: `mapM_ f v = forI_ v $ \i -> f =<< unsafeRead v i` the `unsafeRead` isn't lifted?
2021-07-31 22:42:35 +0200gehmehgeh(~user@user/gehmehgeh)
2021-07-31 22:42:42 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 240 seconds)
2021-07-31 22:42:49 +0200tommd(~tommd@cpe-76-179-204-251.maine.res.rr.com)
2021-07-31 22:43:23 +0200wroathe(~wroathe@96-88-30-181-static.hfc.comcastbusiness.net)
2021-07-31 22:43:40 +0200Orimendix(~kevin@162-221-219-5.lxtnkya3.metronetinc.net)
2021-07-31 22:44:52 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-31 22:46:42 +0200Kaiepi(~Kaiepi@156.34.44.192) (Ping timeout: 265 seconds)
2021-07-31 22:51:10 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2)
2021-07-31 22:51:47 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-07-31 22:55:02 +0200severen(~severen@202.36.179.72)
2021-07-31 22:56:34 +0200tommd(~tommd@cpe-76-179-204-251.maine.res.rr.com) (Ping timeout: 240 seconds)
2021-07-31 22:56:38 +0200Guest9(~Guest9@103.240.169.29) (Quit: Connection closed)
2021-07-31 23:00:58 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 23:01:01 +0200acidjnk_new(~acidjnk@p200300d0c72b9501c19bd88441742b9a.dip0.t-ipconnect.de)
2021-07-31 23:01:13 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 23:01:22 +0200severenseverenr
2021-07-31 23:02:05 +0200Kaiepi(~Kaiepi@156.34.44.192)
2021-07-31 23:02:18 +0200severenrkoyaa
2021-07-31 23:02:30 +0200koyaaseveren
2021-07-31 23:10:50 +0200elias_(~elias@154.27.37.188.rev.vodafone.pt) (Ping timeout: 272 seconds)
2021-07-31 23:13:09 +0200Kaiepi(~Kaiepi@156.34.44.192) (Read error: Connection reset by peer)
2021-07-31 23:13:15 +0200curiousgay(~curiousga@77-120-186-48.kha.volia.net)
2021-07-31 23:13:16 +0200Guest1599(~Guest15@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Ping timeout: 246 seconds)
2021-07-31 23:13:24 +0200Kaiepi(~Kaiepi@156.34.44.192)
2021-07-31 23:14:03 +0200 <raehik> Any way to have Show print actual UTF-8 characters instead of their decimal codepoint?
2021-07-31 23:14:17 +0200 <geekosaur> nope
2021-07-31 23:14:17 +0200 <monochrom> putStr
2021-07-31 23:14:34 +0200 <c_wraith> that's exactly what show is intended to prevent
2021-07-31 23:14:37 +0200 <raehik> monochrom: dealing with a Show, not a String
2021-07-31 23:14:59 +0200 <c_wraith> If it's displaying codepoints, the input was a String
2021-07-31 23:15:13 +0200 <c_wraith> (or some component of it was a String)
2021-07-31 23:15:22 +0200 <monochrom> "the Show must go on"
2021-07-31 23:15:23 +0200 <raehik> yes, a component
2021-07-31 23:15:53 +0200 <monochrom> Well that's too bad. Don't use Show. Write your own function.
2021-07-31 23:16:27 +0200HotblackDesiato(~HotblackD@gateway/tor-sasl/hotblackdesiato) (Ping timeout: 244 seconds)
2021-07-31 23:16:41 +0200 <raehik> yes sir :(
2021-07-31 23:16:50 +0200 <c_wraith> in general, if you care about formatting at all, Show is the wrong interface
2021-07-31 23:17:09 +0200 <raehik> Right right I know, it was just for debugging
2021-07-31 23:17:20 +0200 <monochrom> Show is one of those things that result from the compromise of multiple conflicting stakes so it tries to please everyone therefore it is of no use to anyone.
2021-07-31 23:17:47 +0200 <severen> It would be nice if there was a Display/Debug split as in Rust
2021-07-31 23:17:56 +0200 <monochrom> Yes absolutely.
2021-07-31 23:18:21 +0200 <monochrom> For debugging, a programmer shouldn't mind escape codes all that much.
2021-07-31 23:18:34 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-07-31 23:18:55 +0200 <monochrom> http://www.vex.net/~trebla/haskell/string-print-show-read.xhtml
2021-07-31 23:19:01 +0200 <raehik> I need to check that the strings are correct/what I'm expecting
2021-07-31 23:19:23 +0200 <monochrom> Use == ?
2021-07-31 23:19:59 +0200 <raehik> no sorry I just mean I want to take a quick look (heh) to check that the data is all good
2021-07-31 23:19:59 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-07-31 23:20:23 +0200 <raehik> it's Japanese in UTF-8, escape codes aren't really handy
2021-07-31 23:20:28 +0200 <monochrom> copy-paste to putStr
2021-07-31 23:20:47 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-31 23:21:06 +0200 <raehik> ahhhh ofc! obvious to me now
2021-07-31 23:21:27 +0200 <raehik> need to write a prettyprinter anyway I guess. waaaah
2021-07-31 23:22:16 +0200bruceleewees(~bruceleew@83.24.236.64.ipv4.supernova.orange.pl) (Read error: Connection reset by peer)
2021-07-31 23:22:24 +0200HotblackDesiato(~HotblackD@gateway/tor-sasl/hotblackdesiato)
2021-07-31 23:22:54 +0200bruceleewees(~bruceleew@83.24.236.64.ipv4.supernova.orange.pl)
2021-07-31 23:22:54 +0200elias_(~elias@154.27.37.188.rev.vodafone.pt)
2021-07-31 23:22:55 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-07-31 23:24:10 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2021-07-31 23:24:36 +0200 <dsal> I'm trying out hedgehog in this project. It feel slightly more awkward/procedural than QC with `prop :: Something -> SomethingElse -> Property` -- how does one typically model this? I'm doing stuff like `(d1,d2) <- forAll $ liftA2 (,) Gen.enumBounded Gen.enumBounded` which seems a bit awkward. Is there a more sensible way to do this?
2021-07-31 23:25:59 +0200 <boxscape> I want to import Vulkan (from the vulkan package) hiding (view). If I leave out the `hiding` part (and use Lens's view), GHC tells me that there's three `view`s in scope, one from Lens and two different record fields imported by Vulkan. Adding `hiding (view)` only gets rid of one of those fields in the error message. Any idea how I can get rid of the second one?
2021-07-31 23:27:06 +0200 <raehik> the unicode-show package attempts to fix my problem albeit being wobbly and incredibly slow!
2021-07-31 23:28:08 +0200 <monochrom> Heh wobble and slow are bad.
2021-07-31 23:28:31 +0200Kaiepi(~Kaiepi@156.34.44.192) (Remote host closed the connection)
2021-07-31 23:30:12 +0200Kaiepi(~Kaiepi@156.34.44.192)
2021-07-31 23:30:27 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-07-31 23:30:31 +0200 <janus> dsal: you can make a Gen for each of your datatypes and then make Gens for the composed datatypes also (using their applicative, i think). why use raw tuples in testing code?
2021-07-31 23:30:59 +0200 <dsal> janus: I don't want a tuple per se, I just want two of my things.
2021-07-31 23:31:45 +0200 <boxscape> ah, it works if I write hiding (Datatype1(view), Datatype2(view))
2021-07-31 23:31:59 +0200 <boxscape> strange that it hides one field but not the other otherwise
2021-07-31 23:32:08 +0200 <janus> dsal: you could make a "genTwo" which would be everything after the forAll in your example? that would be pretty compact in use...
2021-07-31 23:32:43 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-07-31 23:33:32 +0200 <dsal> Sure, but I only need that for this one test case. I have a more complex type I've used for some other tests where it makes a bit more sense to make a gen thing, but I still often end up having more than one test input from different sources.
2021-07-31 23:33:52 +0200phma_phma
2021-07-31 23:36:58 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 265 seconds)
2021-07-31 23:37:51 +0200 <janus> but there is nothing preventing you from having gen combinators, so i don't understand why this is a problem
2021-07-31 23:38:15 +0200choucavalier_choucavalier
2021-07-31 23:38:39 +0200Orimendix(~kevin@162-221-219-5.lxtnkya3.metronetinc.net) (Konversation terminated!)
2021-07-31 23:38:43 +0200nate3(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-07-31 23:38:48 +0200choucavalier(~choucaval@peanutbuttervibes.com) (Changing host)
2021-07-31 23:38:48 +0200choucavalier(~choucaval@user/choucavalier)
2021-07-31 23:39:36 +0200hendursa1(~weechat@user/hendursaga) (Quit: hendursa1)
2021-07-31 23:40:08 +0200hendursaga(~weechat@user/hendursaga)
2021-07-31 23:40:50 +0200 <dsal> It just feels like more work that's more explicit so far. I've only just started, though.
2021-07-31 23:42:50 +0200 <boxscape> (Okay, looks like a ghc bug, I was able to replicate it on a small scale)
2021-07-31 23:42:55 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2021-07-31 23:42:57 +0200 <janus> it's definitely more explicit than using Arbitrary, because you'd typically name the Gen's and make them top-level. i don't see it as something bad, necessarily
2021-07-31 23:44:41 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net)
2021-07-31 23:46:58 +0200fossdd(~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
2021-07-31 23:47:11 +0200severen(~severen@202.36.179.72) (Quit: WeeChat 3.2)
2021-07-31 23:47:16 +0200fossdd(~fossdd@sourcehut/user/fossdd)
2021-07-31 23:47:21 +0200 <dsal> This is my first, fairly simple case so far. Feels like I had to say a bunch more stuff to get the same thing done. I'm down to my most complicated example now, though, so let's see what it does when things aren't trivial. https://www.irccloud.com/pastebin/u27Irvjd/hedge.diff
2021-07-31 23:48:35 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2021-07-31 23:50:07 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection)
2021-07-31 23:50:09 +0200 <dsal> Weird. The test is failing. Maybe that's good...
2021-07-31 23:51:31 +0200roboguy_(~roboguy_@2605:a601:afe7:9f00:549a:3ebc:6e:7e3d)
2021-07-31 23:53:19 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net)
2021-07-31 23:53:23 +0200 <dsal> It's failing with a report that is... not true. I don't think it was actually testing with the code that was reporting. That's not awesome. heh
2021-07-31 23:53:27 +0200lavaman(~lavaman@98.38.249.169)
2021-07-31 23:54:18 +0200mikoto-chan(~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) (Ping timeout: 240 seconds)
2021-07-31 23:54:42 +0200roboguy__(~roboguy_@2605:a601:afe7:9f00:8cab:6f70:b160:7f9) (Ping timeout: 240 seconds)
2021-07-31 23:57:42 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 272 seconds)
2021-07-31 23:58:20 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 272 seconds)