Home liberachat/#haskell: Logs Calendar

Logs on 2021-07-31 (liberachat/#haskell)

00:03:58 × Core9323 quits (~Core9323@2804:14c:8793:8e2f:48b4:3d09:2f3b:552b) (Read error: Connection reset by peer)
00:06:47 × hegstal quits (~hegstal@2a02:c7f:7604:8a00:7f3a:926a:5be5:7f19) (Remote host closed the connection)
00:16:03 × Guest4 quits (~Guest4@173-28-193-122.client.mchsi.com) (Quit: Client closed)
00:16:26 dermato joins (~dermatobr@cpe-70-114-219-76.austin.res.rr.com)
00:16:26 willbush joins (~user@47.183.200.14)
00:21:39 <janus> tpefreedom: but aren't you supposed to be able to say that about any library? ;) especially in a pure functional language
00:22:15 <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
00:22:39 <tpefreedom> janus, I just ignore the object oriented elements and treat them like any standard library function.
00:23:06 <tpefreedom> Also, this is in python
00:32:01 × lbseale quits (~lbseale@user/ep1ctetus) (Quit: Leaving)
00:32:39 × MQ-17J quits (~MQ-17J@69.14.129.206) (Read error: Connection reset by peer)
00:32:58 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
00:33:06 agua joins (~agua@2804:14c:8793:8e2f:ecd5:11e0:50a0:f2fe)
00:33:47 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 252 seconds)
00:34:11 Codaraxis joins (~Codaraxis@user/codaraxis)
00:35:01 × bitmapper quits (uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity)
00:35:30 pesada joins (~agua@2804:18:70:7597:1:0:6e99:2d6f)
00:35:37 Erutuon joins (~Erutuon@user/erutuon)
00:35:50 × Core7498 quits (~agua@2804:18:70:7597:1:0:6e99:2d6f) (Ping timeout: 272 seconds)
00:37:44 × agua quits (~agua@2804:14c:8793:8e2f:ecd5:11e0:50a0:f2fe) (Ping timeout: 272 seconds)
00:38:06 × pesada quits (~agua@2804:18:70:7597:1:0:6e99:2d6f) (Read error: Connection reset by peer)
00:38:31 agua joins (~agua@2804:18:70:7597:1:0:6e99:2d6f)
00:39:06 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
00:40:09 pesada joins (~agua@2804:14c:8793:8e2f:ecd5:11e0:50a0:f2fe)
00:40:16 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 272 seconds)
00:42:25 P1RATEZ joins (piratez@user/p1ratez)
00:42:34 × agua quits (~agua@2804:18:70:7597:1:0:6e99:2d6f) (Ping timeout: 240 seconds)
00:42:48 agua joins (~agua@2804:18:70:7597:1:0:6e99:2d6f)
00:46:31 × alx741 quits (~alx741@181.196.69.85) (Quit: alx741)
00:47:14 × pesada quits (~agua@2804:14c:8793:8e2f:ecd5:11e0:50a0:f2fe) (Ping timeout: 272 seconds)
00:48:49 × Atum_ quits (~IRC@user/atum/x-2392232) (Read error: Connection reset by peer)
00:49:30 Guest4 joins (~Guest4@173-28-193-122.client.mchsi.com)
00:52:07 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
00:52:08 fresheyeball joins (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net)
00:53:08 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Client Quit)
00:53:15 <delYsid> omg, OverloadedRecordDot
00:53:26 <delYsid> this looks wrong
00:54:31 <yushyin> :D
00:58:17 × chomwitt quits (~chomwitt@2a02:587:dc0c:a300:12c3:7bff:fe6d:d374) (Remote host closed the connection)
01:00:47 mud joins (~mud@user/kadoban)
01:02:03 × kadobanana quits (~mud@user/kadoban) (Ping timeout: 265 seconds)
01:10:40 × xff0x quits (~xff0x@2001:1a81:532e:4200:ef34:239:52ff:ac71) (Ping timeout: 272 seconds)
01:12:05 xff0x joins (~xff0x@2001:1a81:536d:8c00:2d4:a9e1:415e:5f77)
01:21:22 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 245 seconds)
01:22:38 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 272 seconds)
01:25:24 × zeenk quits (~zeenk@2a02:2f04:a008:d600:18f2:3421:bac6:8f38) (Quit: Konversation terminated!)
01:29:28 goepsilongo joins (~chacho@2603-7000-ab00-62ed-0000-0000-0000-0bd0.res6.spectrum.com)
01:31:09 <pavonia> In what way is this syntax overloaded?
01:31:42 <dsal> :t (.) -- this is the common meaning of .
01:31:43 <lambdabot> (b -> c) -> (a -> b) -> a -> c
01:32:07 <c_wraith> It's not the first overloading of .
01:32:11 <c_wraith> But that only makes it worse.
01:32:33 <c_wraith> Still won't be as bad as the C++ game "what does const mean here?", but it's pretty silly
01:33:07 <pavonia> Hhm, my understanding of the name is that there already is a "record dot" which can be overloaded by enabling the extension
01:33:57 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
01:36:16 justsomeguy joins (~justsomeg@user/justsomeguy)
01:37:42 lavaman joins (~lavaman@98.38.249.169)
01:38:53 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
01:39:03 <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.
01:41:27 × Guest4 quits (~Guest4@173-28-193-122.client.mchsi.com) (Quit: Client closed)
01:42:10 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
01:44:56 <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
01:48:45 <pavonia> Thanks
01:52:24 wei2912 joins (~wei2912@112.199.250.21)
01:57:38 × bruceleewees quits (~bruceleew@83.24.236.64.ipv4.supernova.orange.pl) (Ping timeout: 265 seconds)
01:59:23 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
01:59:59 berberman_ joins (~berberman@user/berberman)
02:01:26 × berberman quits (~berberman@user/berberman) (Ping timeout: 268 seconds)
02:02:44 img joins (~img@user/img)
02:13:22 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
02:21:43 xkuru joins (~xkuru@user/xkuru)
02:25:44 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:25:44 FinnElija is now known as Guest8580
02:25:44 × Guest8580 quits (~finn_elij@user/finn-elija/x-0085643) (Killed (copper.libera.chat (Nickname regained by services)))
02:25:44 finn_elija is now known as FinnElija
02:27:58 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
02:31:13 vicfred_ joins (~vicfred@user/vicfred)
02:33:40 × vicfred quits (~vicfred@user/vicfred) (Ping timeout: 256 seconds)
02:38:47 <delYsid> :t liftM2
02:38:48 <lambdabot> Monad m => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r
02:40:58 <delYsid> @hoogle (a -> b -> m c) -> m a -> m b -> m c
02:40:59 <lambdabot> Control.Monad.HT liftJoin2 :: Monad m => (a -> b -> m c) -> m a -> m b -> m c
02:40:59 <lambdabot> Util bind2 :: Monad m => (a -> b -> m c) -> m a -> m b -> m c
02:40:59 <lambdabot> Numeric.Decimal bindM2 :: Monad m => (a -> b -> m c) -> m a -> m b -> m c
02:42:45 gzj joins (~GZJ0X@199.193.127.138.16clouds.com)
02:44:34 Guest4 joins (~Guest4@173-28-193-122.client.mchsi.com)
02:46:08 × ddb quits (~ddb@2607:5300:61:c67::196) (Quit: WeeChat 3.2)
02:46:22 ddb joins (~ddb@2607:5300:61:c67::196)
02:49:16 Null_A joins (~null_a@67-207-96-2.static.wiline.com)
02:52:43 × ddb quits (~ddb@2607:5300:61:c67::196) (Quit: WeeChat 3.2)
02:52:57 ddb joins (~ddb@2607:5300:61:c67::196)
02:53:50 Patrick18 joins (~Patrick18@pool-100-36-167-42.washdc.fios.verizon.net)
02:58:16 × td_ quits (~td@94.134.91.212) (Ping timeout: 272 seconds)
02:59:23 <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:
02:59:43 td_ joins (~td@muedsl-82-207-238-147.citykom.de)
02:59:49 nate3 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
03:00:00 <Patrick18> Could not find module 'Prelude' Perhaps you haven't installed the profiling libraries for package 'base-4.12.0.0'?
03:00:38 <sclv> Patrick18: how did you install ghc?
03:00:48 <Patrick18> ghcup I believe
03:01:08 <sclv> ghcup should install profiling libs by default
03:01:27 <sclv> sometimes ubuntu installs or the like don’t and you need an additional rpm
03:01:40 vicfred__ joins (~vicfred@user/vicfred)
03:02:15 <sclv> ‘which ghc’ could help confirm
03:03:16 <Patrick18> It's probably not ghcup then. I get /usr/bin/ghc
03:04:08 × vicfred_ quits (~vicfred@user/vicfred) (Ping timeout: 250 seconds)
03:07:10 delYsid parts (~user@84-115-55-45.cable.dynamic.surfer.at) (ERC (IRC client for Emacs 27.1.50))
03:09:16 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
03:10:01 <Patrick18> How can I download said profiling libs (including base)?
03:10:38 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
03:11:55 × Guest4 quits (~Guest4@173-28-193-122.client.mchsi.com) (Quit: Client closed)
03:25:16 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
03:28:21 × Patrick18 quits (~Patrick18@pool-100-36-167-42.washdc.fios.verizon.net) (Quit: Client closed)
03:30:38 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
03:31:42 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 276 seconds)
03:36:04 × roboguy__ quits (~roboguy_@2605:a601:afe7:9f00:21b8:dc17:ae59:fdd6) ()
03:37:37 lavaman joins (~lavaman@98.38.249.169)
03:39:41 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
03:40:56 × qontinuum quits (qontinuum@user/qontinuum) (Quit: See ya)
03:41:08 qontinuum joins (qontinuum@user/qontinuum)
03:41:54 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
03:47:50 × Null_A quits (~null_a@67-207-96-2.static.wiline.com) (Read error: Connection reset by peer)
03:48:16 Null_A joins (~null_a@67-207-96-2.static.wiline.com)
03:49:42 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
03:52:11 × curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 265 seconds)
03:54:07 × willbush quits (~user@47.183.200.14) (Quit: ERC (IRC client for Emacs 28.0.50))
03:55:20 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
03:56:03 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
04:01:01 × Nahra` quits (~user@static.161.95.99.88.clients.your-server.de) (Ping timeout: 258 seconds)
04:02:20 bitmapper joins (uid464869@id-464869.tooting.irccloud.com)
04:03:46 × funsafe quits (~funsafe@c-71-59-221-7.hsd1.wa.comcast.net) (Ping timeout: 240 seconds)
04:06:03 funsafe joins (~funsafe@2601:1c1:4200:938f:32aa:eb39:2110:e2ea)
04:09:31 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
04:09:58 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
04:10:57 × gzj quits (~GZJ0X@199.193.127.138.16clouds.com) (Remote host closed the connection)
04:12:36 mikoto-chan joins (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be)
04:16:53 curiousgay joins (~curiousga@77-120-186-48.kha.volia.net)
04:20:34 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds)
04:22:12 × shredder quits (~user@user/shredder) (Quit: quitting)
04:24:33 shredder joins (~user@user/shredder)
04:24:36 takuan joins (~takuan@178-116-218-225.access.telenet.be)
04:25:40 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
04:25:41 × sus quits (thelounge@user/zeromomentum) (Quit: the lounge - https://webirc.envs.net)
04:26:04 img joins (~img@user/img)
04:26:07 sus joins (thelounge@user/zeromomentum)
04:37:36 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
04:42:42 Cajun joins (~Cajun@user/cajun)
04:44:06 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
04:50:07 geekosaur joins (~geekosaur@xmonad/geekosaur)
04:50:29 bruceleewees joins (~bruceleew@83.24.236.64.ipv4.supernova.orange.pl)
04:52:33 × tpefreedom quits (~tsomers@98-125-225-122.dyn.centurytel.net) (Remote host closed the connection)
05:03:44 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
05:04:48 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
05:07:06 × Brianmancer quits (~Neuromanc@user/briandamag) (Ping timeout: 265 seconds)
05:26:06 × P1RATEZ quits (piratez@user/p1ratez) (Remote host closed the connection)
05:27:45 ubert joins (~Thunderbi@77.119.223.125.wireless.dyn.drei.com)
05:30:09 reumeth joins (~reumeth@user/reumeth)
05:32:57 mastarija__ joins (~mastarija@31.217.8.174)
05:34:49 × ubert quits (~Thunderbi@77.119.223.125.wireless.dyn.drei.com) (Remote host closed the connection)
05:35:08 ubert joins (~Thunderbi@77.119.223.125.wireless.dyn.drei.com)
05:36:09 matthias1 joins (~igloo@cpe-76-170-236-166.socal.res.rr.com)
05:40:19 × matthias1 quits (~igloo@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection)
05:41:41 × retroid_ quits (~retro@5ec19a54.skybroadband.com) (Ping timeout: 252 seconds)
05:45:47 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
05:46:00 MQ-17J joins (~MQ-17J@8.6.144.192)
05:53:31 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
06:01:24 fef joins (~thedawn@user/thedawn)
06:01:56 Guest9 joins (~Guest9@43.241.144.40)
06:02:45 Brianmancer joins (~Neuromanc@user/briandamag)
06:03:06 retroid_ joins (~retro@5ec19a54.skybroadband.com)
06:07:34 × wei2912 quits (~wei2912@112.199.250.21) (Quit: Lost terminal)
06:08:15 gehmehgeh joins (~user@user/gehmehgeh)
06:09:16 mastarija_ joins (~mastarija@31.217.8.174)
06:12:30 × mastarija__ quits (~mastarija@31.217.8.174) (Ping timeout: 258 seconds)
06:14:14 × peterhil quits (~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi) (Ping timeout: 252 seconds)
06:18:26 Meh joins (~Meh@202.14.120.94)
06:18:50 Meh is now known as Guest3079
06:21:39 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
06:22:39 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 276 seconds)
06:22:51 Lord_of_Life_ is now known as Lord_of_Life
06:24:56 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
06:26:07 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
06:26:25 × Guest3079 quits (~Meh@202.14.120.94) (Quit: Connection closed)
06:28:34 × MQ-17J quits (~MQ-17J@8.6.144.192) (Ping timeout: 240 seconds)
06:33:58 × ubert quits (~Thunderbi@77.119.223.125.wireless.dyn.drei.com) (Ping timeout: 258 seconds)
06:35:59 sagax joins (~sagax@213.138.71.146)
06:36:59 × tomboy64 quits (~tomboy64@user/tomboy64) (Quit: Off to see the wizard.)
06:37:39 × justache quits (~justache@user/justache) (Remote host closed the connection)
06:38:27 justache joins (~justache@user/justache)
06:38:48 × jmorris quits (uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
06:39:36 tomboy64 joins (~tomboy64@user/tomboy64)
06:39:54 × qontinuum quits (qontinuum@user/qontinuum) (Ping timeout: 265 seconds)
06:40:08 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
06:41:00 <aegon> hmm, i'm trying to multiply to Nat's but its complaining about the kind, am i missing an extension?
06:41:09 <aegon> i see * defined for Nats in typelits as a type family
06:43:49 × tomboy64 quits (~tomboy64@user/tomboy64) (Read error: Connection reset by peer)
06:44:12 tomboy64 joins (~tomboy64@user/tomboy64)
06:46:41 × Null_A quits (~null_a@67-207-96-2.static.wiline.com) ()
06:47:26 <monochrom> Perhaps NoStarIsType
06:48:14 × retroid_ quits (~retro@5ec19a54.skybroadband.com) (Ping timeout: 272 seconds)
06:49:27 stenvold joins (~stenvold@2001:a61:25f1:6701:a993:a914:786f:a6f5)
06:49:47 anandprabhu joins (~anandprab@45.83.220.206)
06:50:42 × xkuru quits (~xkuru@user/xkuru) (Remote host closed the connection)
06:52:24 × curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Remote host closed the connection)
06:52:28 × nate3 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds)
06:52:46 curiousgay joins (~curiousga@77-120-186-48.kha.volia.net)
06:53:46 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
06:55:12 × anandprabhu quits (~anandprab@45.83.220.206) (Quit: Leaving)
06:55:28 × Guest9 quits (~Guest9@43.241.144.40) (Ping timeout: 256 seconds)
06:56:21 <aegon> yep! thanks
06:56:44 <sm> @Patrick18:libera.chat: figured it out ?
06:56:44 <lambdabot> Unknown command, try @list
07:00:51 mattil joins (~mattilinn@78-27-98-194.bb.dnainternet.fi)
07:01:25 jmorris joins (uid433911@id-433911.stonehaven.irccloud.com)
07:01:25 × vicfred__ quits (~vicfred@user/vicfred) (Quit: Leaving)
07:03:26 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
07:03:59 Vajb joins (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01)
07:05:56 Guest65 joins (~Guest65@188.27.128.31)
07:09:28 MidAutumnMoon90 is now known as MidAutumnHotaru
07:10:47 × Vajb quits (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
07:11:19 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
07:14:50 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
07:16:54 nate3 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
07:17:45 × fef quits (~thedawn@user/thedawn) (Quit: Leaving)
07:18:28 × mastarija_ quits (~mastarija@31.217.8.174) (Quit: Leaving)
07:18:45 mastarija joins (~mastarija@31.217.8.174)
07:20:23 <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)
07:20:23 <mastarija> `
07:20:59 × mikoto-chan quits (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) (Ping timeout: 265 seconds)
07:21:00 <mastarija> Not sure what I'm doing wrong
07:21:47 × nate3 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
07:22:16 dhil joins (~dhil@195.213.192.47)
07:22:27 burnsidesLlama joins (~burnsides@client-8-91.eduroam.oxuni.org.uk)
07:22:29 <mastarija> Oh... I'm an idiot. I had to import them from Data.Kind
07:22:40 <mastarija> I thought this was not necessary
07:22:41 cjb joins (~cjb@user/cjb)
07:23:56 mikoto-chan joins (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be)
07:24:52 retroid_ joins (~retro@5ec19a54.skybroadband.com)
07:27:53 <tomsmeding> mastarija: you'll find that you also have to import Type from Data.Kind :)
07:28:01 <mastarija> Yes
07:28:04 <mastarija> Did that :D
07:30:03 × burnsidesLlama quits (~burnsides@client-8-91.eduroam.oxuni.org.uk) (Remote host closed the connection)
07:30:47 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
07:34:44 neceve joins (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f)
07:35:29 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 265 seconds)
07:35:42 × son0p quits (~ff@181.136.122.143) (Ping timeout: 256 seconds)
07:36:28 nate3 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
07:39:04 lavaman joins (~lavaman@98.38.249.169)
07:40:41 <mastarija> Do we have something like an "empty" constraint in the base, something in the lines of "class EmptyC x" "instance EmptyC x"?
07:41:30 × nate3 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
07:43:14 <tomsmeding> isn't that ()
07:43:24 <mastarija> No, that is ()::Constraint
07:43:36 <mastarija> tomsmeding, I'm looking for x -> Constraint
07:43:42 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
07:43:44 <tomsmeding> ooooh
07:43:57 <mastarija> Yes, my bad
07:44:17 <mastarija> Calling it empty wasn't the best choice of words :D
07:44:23 × stenvold quits (~stenvold@2001:a61:25f1:6701:a993:a914:786f:a6f5) (Quit: Client closed)
07:44:43 amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
07:46:44 acidjnk joins (~acidjnk@p200300d0c72b9576e9974425ad52911e.dip0.t-ipconnect.de)
07:47:10 Nahra joins (~user@static.161.95.99.88.clients.your-server.de)
07:48:13 <tomsmeding> mastarija: I grepped the source code of 'base' on ^class and all the 82 results (only 82!) are non-empty :)
07:48:33 <tomsmeding> mastarija: https://paste.tomsmeding.com/H2uxebLC
07:48:58 <mastarija> Ah.. oh well :D
07:51:06 fendor joins (~fendor@91.141.37.142.wireless.dyn.drei.com)
07:53:50 nate3 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
07:56:03 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
08:00:23 × nate3 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
08:01:30 × azeem quits (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Ping timeout: 240 seconds)
08:02:09 azeem joins (~azeem@176.201.34.159)
08:05:26 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 272 seconds)
08:05:53 hendursa1 joins (~weechat@user/hendursaga)
08:06:54 × azeem quits (~azeem@176.201.34.159) (Ping timeout: 265 seconds)
08:07:24 azeem joins (~azeem@176.200.191.24)
08:07:52 × aegon quits (~mike@174.127.249.180) (Ping timeout: 265 seconds)
08:07:54 × dagit quits (~dagit@2601:1c2:1b7f:9fa0:ad74:311a:d89a:e0b1) (Ping timeout: 250 seconds)
08:08:32 × hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds)
08:10:27 stenvold joins (~stenvold@2001:a61:25f1:6701:a993:a914:786f:a6f5)
08:11:32 nate3 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
08:14:59 vysn joins (~vysn@user/vysn)
08:16:34 × azeem quits (~azeem@176.200.191.24) (Ping timeout: 265 seconds)
08:16:42 × nate3 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
08:17:48 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
08:17:48 allbery_b joins (~geekosaur@xmonad/geekosaur)
08:17:51 allbery_b is now known as geekosaur
08:18:34 <mastarija> Btw, is there a way to check if an argument to a type family is of a certain type class?
08:19:00 <mastarija> Basically, I want to determine the resulting type depending on type class that a type is an instance of
08:20:09 azeem joins (~azeem@176.200.191.24)
08:25:08 × azeem quits (~azeem@176.200.191.24) (Ping timeout: 272 seconds)
08:28:20 azeem joins (~azeem@176.200.191.24)
08:28:53 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Ping timeout: 252 seconds)
08:32:02 × curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 265 seconds)
08:33:09 × cjb quits (~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50)
08:36:29 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
08:39:22 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
08:39:53 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
08:40:28 fossdd joins (~fossdd@sourcehut/user/fossdd)
08:41:36 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 272 seconds)
08:41:48 zeenk joins (~zeenk@2a02:2f04:a008:d600:18f2:3421:bac6:8f38)
08:41:54 <mastarija> Is it possible to use type application to apply type variables defined in the class instance to functions within instance definition?
08:42:01 <mastarija> instance forall k. Applicative (Wrong k) where
08:42:01 <Drew[m]> mastarija: would you want to do this for more than one type class?
08:42:09 × bitmapper quits (uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity)
08:42:13 <mastarija> Only one for now
08:42:17 nate3 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
08:42:19 <mastarija> Drew[m], why?
08:44:17 × hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
08:45:46 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
08:45:59 fossdd joins (~fossdd@sourcehut/user/fossdd)
08:48:15 <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?
08:48:31 × nate3 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
08:49:01 <mastarija> Drew[m], I get the first class?
08:49:28 <mastarija> Sorry, first type
08:50:31 Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
08:52:11 <mastarija> Drew[m], I was thinking in terms of how pattern matching work. Basically, which class matches first, I get it's related type
08:53:07 <mastarija> type family Typer e where Typer (e instanceof Show) = Int; Typer (e instanceof Monoid) = Char; etc...
08:55:21 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
08:55:46 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
08:55:53 Vajb joins (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01)
08:56:35 fossdd joins (~fossdd@sourcehut/user/fossdd)
08:56:58 × agua quits (~agua@2804:18:70:7597:1:0:6e99:2d6f) (Ping timeout: 240 seconds)
08:57:09 curiousgay joins (~curiousga@77-120-186-48.kha.volia.net)
08:57:18 <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
08:57:40 × Codaraxis quits (~Codaraxis@user/codaraxis) (Remote host closed the connection)
08:57:55 <Drew[m]> I'm currently reading up on non-associated type families because I'm rusty
08:58:00 Codaraxis joins (~Codaraxis@user/codaraxis)
08:58:21 <mastarija> Associated ones are defined withing the Class, right?
08:58:30 <Drew[m]> Yes
08:59:31 agua joins (~agua@2804:14c:8793:8e2f:ecd5:11e0:50a0:f2fe)
09:00:05 <mastarija> Btw, it says (if I'm reading it correctly) in the GHC manual that type variables declared in instance scope over the methods.
09:00:15 <mastarija> But for my case it doesn't seem to work
09:00:35 <mastarija> instance forall k. Applicative (Wrong k) where pure = mypure @k
09:00:42 <mastarija> mypure :: forall k a. k => a -> Wrong k a
09:01:11 <tomsmeding> ScopedTypeVariables?
09:01:17 <mastarija> Enabled
09:01:45 <mastarija> tomsmeding, it says "Could not deduce: k arising from a use of `mypure'"
09:02:29 <tomsmeding> what happens if you write 'mypure @_ @k' instead of 'mypure @k'
09:02:54 <tomsmeding> i.e. are you sure about the type variable order in the forall of mypure :p
09:03:06 × neceve quits (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 240 seconds)
09:03:06 <mastarija> Expected a type, but `k' has kind `Constraint'
09:03:16 <mastarija> Which is what I'd expect...
09:03:18 <tomsmeding> ah yes
09:03:30 <tomsmeding> do you have a small reproducing example?
09:03:37 <mastarija> Sure, just a sec
09:03:58 <tomsmeding> (sounds like just the definition of Wrong and that instance)
09:05:12 <mastarija> tomsmeding, https://gist.github.com/mastarija/af03154c0d85fd78782f07ff6aeef98e
09:08:31 <tomsmeding> error disappears if I change the kind of 'k' to Type
09:08:58 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
09:09:11 <mastarija> yes, but I want k to be a Constraint...
09:09:18 <tomsmeding> I know :p
09:09:30 fossdd joins (~fossdd@sourcehut/user/fossdd)
09:09:51 <mastarija> xD
09:10:02 neceve joins (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f)
09:10:10 <tomsmeding> error also disappears if you remove the 'k =>' in the signature of mypure
09:10:20 <tomsmeding> (at the cost of introducing an error in its body, of course)
09:10:45 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
09:11:01 <tomsmeding> error also disappears if you _add_ 'k =>' in the instance head!
09:11:34 <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
09:11:45 <mastarija> oohh...
09:11:49 <tomsmeding> and then you don't even need the @k anymore
09:12:05 <tomsmeding> and you can also just write 'pure = Inert'
09:12:06 <mastarija> Oooooooohhhhhhh....
09:12:25 <mastarija> Damn, how did I miss that :D
09:12:28 <tomsmeding> :)
09:12:37 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
09:13:38 __monty__ joins (~toonn@user/toonn)
09:14:00 <tomsmeding> (and the 'forall k.' is unnecessary in the instance head, for completeness)
09:15:51 <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
09:15:59 <tomsmeding> or at least, I was deceived for a while :p
09:16:07 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
09:16:13 <tomsmeding> or would that be 'ambiguous type variable'...
09:16:58 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
09:18:05 fossdd joins (~fossdd@sourcehut/user/fossdd)
09:18:12 <mastarija> tomsmeding, do you know if there is a way to write a constraint which says that a kind of something is a Type?
09:18:35 <mastarija> something like (kind e ~ Type)
09:18:43 <tomsmeding> mastarija: how would that even sort-check
09:18:55 <mastarija> Not sure what that is D:
09:19:03 <mastarija> Oh.. sort
09:19:08 <tomsmeding> type kind sort
09:19:17 <mastarija> yes, I remembered now :D
09:19:49 <tomsmeding> hm, isn't Constraint really equal to Type in ghc haskell
09:19:57 <tomsmeding> and there is TypeInType
09:20:21 <mastarija> Now that you mention it...
09:20:28 <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
09:20:32 <tomsmeding> and then you can just use ~ I think
09:26:46 × azeem quits (~azeem@176.200.191.24) (Ping timeout: 250 seconds)
09:27:46 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
09:27:55 fossdd joins (~fossdd@sourcehut/user/fossdd)
09:28:46 azeem joins (~azeem@176.200.191.24)
09:30:08 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
09:32:19 dunj3 joins (~dunj3@2001:981:9d95:1:886d:656c:9636:23f4)
09:33:54 × curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 265 seconds)
09:34:07 <mastarija> So yeah... why doesn't this work? (((c:: Type -> Constraint) (e::Type)) ~ Constraint)
09:37:09 <mastarija> Nwm
09:40:37 nate3 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
09:41:08 × azeem quits (~azeem@176.200.191.24) (Ping timeout: 272 seconds)
09:44:52 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
09:45:34 × nate3 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
09:46:05 euouae joins (~euouae@user/euouae)
09:46:35 <nshepperd2> forall k (t :: k). (k ~ Type) => ...?
09:48:43 <mastarija> nshepperd2, huh.. didn't know about that syntax, thx
09:52:03 <euouae> What's the tunes.org-style logging?
09:52:07 <euouae> It's in the /topic
09:53:10 <nshepperd2> i think even just k being inhabited (t :: k) implies that k is necessarily TYPE r for some r :: RuntimeRep
09:53:52 <nshepperd2> wait no, that's wrong nvm
09:54:09 <nshepperd2> it's t being inhabited that implies that :D
09:57:58 Guest82 joins (~Guest82@78.155.54.115)
10:04:57 <Drew[m]> <tomsmeding> "hm, isn't Constraint really..." <- A constraint has kind `Constraint`, `Constraint` has kind `Type`
10:07:09 <Drew[m]> And `Type` has kind `Type`
10:07:55 <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
10:08:30 azeem joins (~azeem@176.200.234.104)
10:09:52 × hiruji quits (~hiruji@user/hiruji) (Read error: Connection reset by peer)
10:10:12 hiruji joins (~hiruji@user/hiruji)
10:12:45 <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)?
10:13:13 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
10:13:37 <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 :/
10:13:40 <sshine> Orbstheorem, I don't use Arbitrary. I use forAll / forAllShrink.
10:14:19 <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.)
10:14:42 × neceve quits (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 272 seconds)
10:15:28 <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.
10:15:45 × azeem quits (~azeem@176.200.234.104) (Read error: Connection reset by peer)
10:16:31 azeem joins (~azeem@176.200.234.104)
10:16:32 <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.
10:16:36 <Orbstheorem> I'm not sure I get the forAll/forAllShrink answer: A `Gen a` instance is still required.
10:17:22 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
10:17:32 <Orbstheorem> sshine: What do people usually prefer.
10:17:36 <sshine> Orbstheorem, example: https://github.com/exercism/haskell/pull/843/files#diff-637040c93c07fbca943993ab34b2ee07185c74ebe5417f416621ca16e7e905a7R19
10:18:45 mastarija_ joins (~mastarija@31.217.8.174)
10:18:45 <Orbstheorem> Alright, so you write the generators yourself.
10:19:08 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
10:19:13 <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.
10:19:13 <Orbstheorem> * What do people usually prefer?
10:19:14 <lambdabot> <hint>:1:1: error: parse error on input ‘<@’
10:19:32 mastarija__ joins (~mastarija@31.217.8.174)
10:19:48 <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.
10:20:12 <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?
10:20:46 <sshine> you mean you like to have 'arbitrary :: anything'? yeah, I think it is really cool :) but not always practical.
10:20:55 <Orbstheorem> Thanks for the article ^^
10:22:01 <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.
10:22:11 × mastarija quits (~mastarija@31.217.8.174) (Ping timeout: 252 seconds)
10:22:21 <sshine> so my experience is that I can't assume there to be one canonical generator for each type.
10:22:35 <Orbstheorem> What I mean is that I like stuff like this: `prop_foobar :: OneType -> SecondType -> Property`
10:22:38 <sshine> or even, very often, a generally useful one.
10:23:01 <sshine> Orbstheorem, yeah, that part seems really nice :) sort of like DI.
10:23:34 × mastarija_ quits (~mastarija@31.217.8.174) (Ping timeout: 272 seconds)
10:24:30 <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 $ ...`.
10:25:22 <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'.
10:25:22 × Vajb quits (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
10:26:23 <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
10:26:37 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
10:28:09 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
10:29:16 × euouae quits (~euouae@user/euouae) (Ping timeout: 246 seconds)
10:32:58 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
10:33:42 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 272 seconds)
10:34:04 fossdd joins (~fossdd@sourcehut/user/fossdd)
10:35:50 <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.
10:41:18 × mastarija__ quits (~mastarija@31.217.8.174) (Ping timeout: 272 seconds)
10:41:32 × azeem quits (~azeem@176.200.234.104) (Ping timeout: 252 seconds)
10:43:57 nate3 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
10:48:53 × nate3 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
10:53:15 <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.
10:53:22 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
10:53:59 fossdd joins (~fossdd@sourcehut/user/fossdd)
10:55:07 <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).
11:02:28 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
11:05:51 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Remote host closed the connection)
11:06:10 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
11:06:12 Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
11:06:32 fossdd joins (~fossdd@sourcehut/user/fossdd)
11:07:57 AlexNoo_ joins (~AlexNoo@178.34.150.193)
11:08:04 pe200012 joins (~pe200012@113.105.10.33)
11:09:54 × Alex_test quits (~al_test@94.233.241.173) (Ping timeout: 256 seconds)
11:10:32 × AlexZenon quits (~alzenon@94.233.241.173) (Ping timeout: 245 seconds)
11:11:12 × jmorris quits (uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
11:11:29 euouae joins (~euouae@user/euouae)
11:11:38 × AlexNoo quits (~AlexNoo@94.233.241.173) (Ping timeout: 250 seconds)
11:11:48 <sshine> Orbstheorem, https://www.michaelpj.com/blog/2020/10/29/your-orphans-are-fine.html
11:12:00 × pe200012 quits (~pe200012@113.105.10.33) (Client Quit)
11:12:20 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 272 seconds)
11:14:18 jmorris joins (uid433911@id-433911.stonehaven.irccloud.com)
11:14:54 AlexZenon joins (~alzenon@178.34.150.193)
11:14:55 Alex_test joins (~al_test@178.34.150.193)
11:21:03 acidjnk_new joins (~acidjnk@p200300d0c72b9501c19bd88441742b9a.dip0.t-ipconnect.de)
11:24:26 × acidjnk quits (~acidjnk@p200300d0c72b9576e9974425ad52911e.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
11:30:00 × stenvold quits (~stenvold@2001:a61:25f1:6701:a993:a914:786f:a6f5) (Quit: Client closed)
11:32:25 × dunj3 quits (~dunj3@2001:981:9d95:1:886d:656c:9636:23f4) (Quit: Leaving)
11:38:59 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
11:40:29 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:40:49 lavaman joins (~lavaman@98.38.249.169)
11:44:53 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 265 seconds)
11:45:54 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
11:50:26 mastarija__ joins (~mastarija@31.217.8.174)
11:50:29 deejaytee joins (~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net)
11:50:40 MoC joins (~moc@user/moc)
11:52:10 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
11:53:13 fossdd joins (~fossdd@sourcehut/user/fossdd)
12:01:35 tommd joins (~tommd@cpe-76-179-204-251.maine.res.rr.com)
12:01:36 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
12:02:09 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
12:12:35 × mastarija__ quits (~mastarija@31.217.8.174) (Quit: Leaving)
12:12:35 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
12:13:08 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
12:14:58 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
12:14:58 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
12:15:09 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:17:37 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
12:20:06 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
12:20:53 × nshepperd2 quits (~nshepperd@li364-218.members.linode.com) (Quit: The Lounge - https://thelounge.chat)
12:20:53 × nshepperd quits (nshepperd@2600:3c03::f03c:92ff:fe28:92c9) (Quit: quit)
12:21:35 <bontaq> hmm is there a nice way to add 1 day to a Datetime in the chronos library?
12:21:53 nshepperd2 joins (~nshepperd@li364-218.members.linode.com)
12:21:55 nshepperd joins (nshepperd@2600:3c03::f03c:92ff:fe28:92c9)
12:24:40 ubert joins (~Thunderbi@77.119.201.127.wireless.dyn.drei.com)
12:30:50 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
12:30:50 allbery_b joins (~geekosaur@xmonad/geekosaur)
12:30:53 allbery_b is now known as geekosaur
12:30:57 nate3 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
12:31:46 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
12:32:34 fossdd joins (~fossdd@sourcehut/user/fossdd)
12:35:56 × nate3 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
12:40:36 × goepsilongo quits (~chacho@2603-7000-ab00-62ed-0000-0000-0000-0bd0.res6.spectrum.com) (Quit: Konversation terminated!)
12:43:11 × cheater quits (~Username@user/cheater) (Remote host closed the connection)
12:44:47 fendor_ joins (~fendor@178.165.178.92.wireless.dyn.drei.com)
12:46:54 nate3 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
12:47:24 eltonpin1 joins (~1ntEgr8@2601:c8:c000:3090:9505:af4c:44c9:29b0)
12:47:55 × eltonpin1 quits (~1ntEgr8@2601:c8:c000:3090:9505:af4c:44c9:29b0) (Client Quit)
12:47:58 × fendor quits (~fendor@91.141.37.142.wireless.dyn.drei.com) (Ping timeout: 272 seconds)
12:50:14 cheater joins (~Username@user/cheater)
12:51:48 egoist joins (~egoist@186.235.82.100)
12:52:40 × Guest65 quits (~Guest65@188.27.128.31) (Quit: Client closed)
12:54:47 × sm2n quits (~sm2n@user/sm2n) (Ping timeout: 255 seconds)
12:57:47 × euouae quits (~euouae@user/euouae) (Quit: euouae)
12:58:44 × nate3 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
12:58:59 <Orbstheorem> Is there a way to run hls and have an output similar to `stack build --file-watch` on a separate terminal?
12:59:11 <Orbstheorem> hls is nice, but Coc is not and oftentimes I find myself using both.
13:00:02 <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 :/
13:01:02 × cheater quits (~Username@user/cheater) (Read error: Connection reset by peer)
13:01:04 alx741 joins (~alx741@181.196.69.85)
13:04:10 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
13:04:59 fossdd joins (~fossdd@sourcehut/user/fossdd)
13:08:09 cheater joins (~Username@user/cheater)
13:14:54 fendor_ is now known as fendor
13:16:29 son0p joins (~ff@181.136.122.143)
13:16:44 burnsidesLlama joins (~burnsides@client-8-91.eduroam.oxuni.org.uk)
13:17:32 Guest7767 joins (~dunkeln@user/dunkeln)
13:17:52 Guest7767 is now known as dunkeln
13:22:10 × tommd quits (~tommd@cpe-76-179-204-251.maine.res.rr.com) (Ping timeout: 272 seconds)
13:27:48 × cheater quits (~Username@user/cheater) (Ping timeout: 272 seconds)
13:30:24 × acidjnk_new quits (~acidjnk@p200300d0c72b9501c19bd88441742b9a.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
13:31:46 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
13:32:16 fossdd joins (~fossdd@sourcehut/user/fossdd)
13:33:45 <maerwald> IMO, there are process handling bugs with HLS
13:34:16 <maerwald> some clients are more erratic than others, but I found none that can handle HLS crashing
13:34:56 gehmehgeh joins (~user@user/gehmehgeh)
13:34:59 × deejaytee quits (~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net) (Quit: Leaving)
13:36:59 cheater joins (~Username@user/cheater)
13:43:22 Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
13:46:48 × dunkeln quits (~dunkeln@user/dunkeln) (Quit: Leaving...)
13:47:08 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
13:49:29 sm2n joins (~sm2n@user/sm2n)
13:50:36 × burnsidesLlama quits (~burnsides@client-8-91.eduroam.oxuni.org.uk) (Remote host closed the connection)
13:53:54 jakalx parts (~jakalx@base.jakalx.net) ()
13:56:13 zebrag joins (~chris@user/zebrag)
13:57:33 pesada joins (~agua@2804:18:70:7597:1:0:6e99:2d6f)
13:58:39 × mikoto-chan quits (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) (Read error: No route to host)
13:59:28 flandrer joins (~Mk2013@193.29.106.60)
13:59:35 mikoto-chan joins (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be)
14:01:06 × agua quits (~agua@2804:14c:8793:8e2f:ecd5:11e0:50a0:f2fe) (Ping timeout: 240 seconds)
14:01:22 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
14:01:37 fossdd joins (~fossdd@sourcehut/user/fossdd)
14:02:38 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
14:04:09 burnsidesLlama joins (~burnsides@client-8-91.eduroam.oxuni.org.uk)
14:05:27 × flandrer quits (~Mk2013@193.29.106.60) (Remote host closed the connection)
14:07:04 <phaazon> I’m not sure but what’s the « infallible 2 type conversion » typeclass in Haskell again?
14:07:15 <phaazon> i.e. class Convert a b where convert :: a -> b
14:07:34 <phaazon> I’m creating specialized versions of that every time I need it, especially for error handling
14:08:05 <phaazon> (so that I can I use (Convert SpecificError e) => MonadError e and allow user to use their own error types wrapping mine)
14:08:22 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
14:12:49 hololeap joins (~hololeap@user/hololeap)
14:13:53 × burnsidesLlama quits (~burnsides@client-8-91.eduroam.oxuni.org.uk) (Remote host closed the connection)
14:14:28 <geekosaur> Are you talking about Coercible? But I don't think it will do what you want there
14:15:04 <phaazon> geekosaur: I’m talking about an equivalent of Rust’s From
14:15:07 <phaazon> I currently use this:
14:15:10 <phaazon> class LiftArticleError e where
14:15:12 <phaazon> liftArticleError :: ArticleError -> e
14:15:15 <phaazon> (for a specialized error type)
14:15:28 <phaazon> so that I can do (MonadError e, LiftArticleError e) => m …
14:15:33 <phaazon> so that I can do (MonadError e m, LiftArticleError e) => m …
14:15:51 × hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection)
14:16:15 Guest1599 joins (~Guest15@2a02:a31a:a23c:f480:2fd7:e087:5546:a438)
14:16:17 hololeap joins (~hololeap@user/hololeap)
14:16:26 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
14:16:29 <phaazon> so not Coercible
14:16:35 <phaazon> since they might have a different representations
14:16:47 <phaazon> the idea is that the user might provide their owen error types, wrapping mine
14:16:51 <Guest1599> Hi! How to understand this line: `newtype Task c k v = Task (forall f. c f => (k -> f v) -> f v)` ?
14:17:02 <phaazon> like data UserError = Foo FooError | Article ArticleError
14:17:21 <phaazon> and then simply instance LiftArticleError UserError where liftArticleError = Article
14:17:37 <geekosaur> the only other thing I can think of is SomeException, but that's the root of the exception hierarchy
14:17:49 <phaazon> alright, I’ll make my own thing then
14:18:00 <phaazon> it’s surprising that’s not a thing in Haskell but it’s used everywhere in Rust
14:18:10 <phaazon> especially since it plays a vital role in stuff like the ? operator
14:20:31 agua joins (~agua@191.177.175.57)
14:20:52 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
14:22:33 <Guest1599> I know it might sound easy, but I'd love to hear how people read and understand it
14:22:58 × pesada quits (~agua@2804:18:70:7597:1:0:6e99:2d6f) (Ping timeout: 272 seconds)
14:24:46 <phaazon> Guest1599: c is a constraint that will be applied on a functor wrapped in an existential
14:25:15 <phaazon> so I guess you’d use that with Task MonadIO to get a task running in « a MonadIO »
14:26:46 × jneira_ quits (~jneira_@28.red-80-28-169.staticip.rima-tde.net) (Ping timeout: 272 seconds)
14:26:52 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
14:28:40 × cheater quits (~Username@user/cheater) (Ping timeout: 272 seconds)
14:29:56 × xff0x quits (~xff0x@2001:1a81:536d:8c00:2d4:a9e1:415e:5f77) (Ping timeout: 256 seconds)
14:30:16 <[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
14:30:34 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
14:30:41 <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`)
14:30:54 <Guest1599> but this `Task` still looks vague to me
14:30:58 fossdd joins (~fossdd@sourcehut/user/fossdd)
14:31:17 <phaazon> [exa]: you mean because of the two type variables?
14:31:38 Atum_ joins (~IRC@user/atum/x-2392232)
14:31:39 <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)
14:31:55 <phaazon> Guest1599: what’s bothering you is the forall, right?
14:32:10 <phaazon> you might need to get a look at a more specific version
14:32:12 <phaazon> like TaskIO
14:32:25 <[exa]> in rust the contexts are much much smaller, so it usually works nicely
14:32:47 <[exa]> in haskell you can easily get a function that has a whole convert chain in the type signature
14:32:48 <phaazon> newtype TaskIO k v = TaskIO (forall f. MonadIO f => (k -> f v) -> f v) -- Guest1599
14:33:26 <phaazon> Guest1599: the forall here means that you cannot inspect and know what f it’s being used
14:33:39 <phaazon> the only place where you know that information is prior wrapping that function in the TaskIO
14:33:46 <phaazon> once it’s wrapped in, you lose the information of the type of f
14:33:54 <phaazon> and you only know about the constraint
14:34:03 <phaazon> so basically, MonadIO f, but you can’t know what f is inside
14:34:29 <Guest1599> hmm, okay
14:34:36 <phaazon> so you pass a (k -> f v) function and you get back a f v
14:34:58 <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
14:35:13 <phaazon> now, your initial type sig also abstracted on the constraint
14:35:18 <Guest1599> k - `key`, v - `value`, think of it as a storage
14:35:21 <phaazon> (with the c type param)
14:35:26 <phaazon> yeah that makes sense
14:36:24 <Guest1599> " pass a (k -> f v) function and you get back a f v" - where to pass it? I'm a bit lost
14:36:52 AlexNoo_ is now known as AlexNoo
14:37:09 <Guest1599> i.e. with `Maybe`: it's a type constructor - one can pass a type and it becomes `Maybe PassedType` - a concrete type
14:37:21 <Guest1599> I see thath TaskIO also accepts two types - `k` and `v`
14:37:39 <Guest1599> so... where's the place for `k -> f v` herE?
14:38:41 jakalx joins (~jakalx@base.jakalx.net)
14:40:02 <Guest1599> I think my problem is that the right-hand side of `=` looks like nothing I've seen in the context of a newtype
14:40:51 <phaazon> Guest1599: yeah you’d have to pattern match on it
14:40:58 <phaazon> or use a function that does that for you
14:41:16 <phaazon> rewritting TaskIO in a way that automatically provides you a nice function to do so:
14:41:22 <Guest1599> I think I'm more lost than you expect
14:41:36 <phaazon> newtype TaskIO k v = TaskIO { runTaskIO :: forall f. MonadIO f => (k -> f v) -> f v }
14:42:58 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
14:43:16 fossdd joins (~fossdd@sourcehut/user/fossdd)
14:43:32 kuribas joins (~user@ptr-25vy0i7fhp3jdg2nokv.18120a2.ip6.access.telenet.be)
14:43:53 <Guest1599> runTaskIO someTaskIO kToFVfunction would return `f v`...?
14:44:02 <phaazon> I can give you an example, wait :)
14:44:58 <Guest1599> phaazon : if it helps, the line comes from https://www.cambridge.org/core/journals/journal-of-functional-programming/article/build-systems-a-la-carte-theory-and-practice/097CE52C750E69BD16B78C318754C7A4 page 9
14:45:36 <Guest1599> (the Task is a custom one, seperated from stdlib etc)
14:46:22 <phaazon> so:
14:46:34 <phaazon> let task = TaskIO $ \lookup -> liftA2 (+) (lookup "hey") (lookup "you")
14:46:53 <phaazon> here, we just lookup two keys (setting k = String)
14:46:57 <phaazon> and we add them together
14:47:09 slowButPresent joins (~slowButPr@user/slowbutpresent)
14:47:09 <phaazon> so that we have v as Num v
14:47:27 <phaazon> the type of task is then (Num v) => TakIO String v
14:47:27 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
14:47:44 <phaazon> now, you need to run that task, so as I told you earlier, you need to pass that (k -> f v) function
14:47:52 <phaazon> let’s just mockup something really quick
14:48:01 <phaazon> lookup "hey" = pure 1; lookup "you" = pure 2; lookup _ = pure 0
14:48:05 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
14:48:10 <phaazon> running the task like:
14:48:17 <phaazon> runTaskIO task lookup
14:48:23 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
14:48:25 <phaazon> will tie everything and will provide 3
14:49:03 <phaazon> the only place where we know the type of f is when we define task
14:49:19 <phaazon> I didn’t do anything specific but I could have used liftIO . print and it would have made f = IO
14:49:33 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
14:50:05 <phaazon> the important thing is that you will get back a value in f v, yes
14:50:29 lbseale joins (~lbseale@user/ep1ctetus)
14:51:19 <Guest1599> (let me digest it)
14:51:27 <phaazon> sure
14:51:36 <phaazon> existential quantification is not really beginner level anyway :)
14:51:44 <phaazon> it’s completly normal if you feel overwhelmed by it
14:52:17 xff0x joins (~xff0x@2001:1a81:536d:8c00:2d4:a9e1:415e:5f77)
14:52:22 <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 } ` ?
14:53:00 <Guest1599> what would be the difference?
14:53:09 <phaazon> good question; the right side of a data type declaration must use either concrete types or type variables declared on the left part
14:53:23 <phaazon> f here is only known on the right side
14:53:31 <phaazon> it doesn’t appear on the left side
14:53:37 <phaazon> so if I give you two different tasks
14:53:58 <phaazon> which types are TaskIO Int String and TaskIO Int String, what f is inside of them? the same? different? :)
14:54:17 nate3 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
14:54:29 <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”
14:55:07 <Guest1599> hmmm, okay
14:55:08 <phaazon> your second form would be valid if you had newtype TaskIO k f v, for instance
14:55:22 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
14:55:29 <phaazon> it would be a problem, though
14:55:33 fossdd joins (~fossdd@sourcehut/user/fossdd)
14:55:35 <phaazon> because someone could use any functor / monad here
14:55:41 <phaazon> (not necessarily MonadIO)
14:56:28 <Guest1599> phaazon couldn't we provide something like `(MondaIO f) =>` on the RHS ( right-hand side of the equation sign)?
14:58:08 <Guest1599> maybe that's a question that won't get us (me) anywhere though;
14:58:29 <phaazon> there are different position where we can do that but yeah, not sure
15:02:14 × nate3 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
15:04:50 <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
15:09:33 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
15:10:01 hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com)
15:10:53 <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 :)
15:11:14 peterhil joins (~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi)
15:11:37 <phaazon> I actually injured my foot lately while wakeboarding so I have time on the computer, don’t worry about that lol
15:12:24 <Guest1599> funny that you mentioned wakeboarding, yesterday I tried it for the first time
15:12:37 <Guest1599> I thought that it's rather injury-free
15:13:04 × MoC quits (~moc@user/moc) (Quit: Konversation terminated!)
15:13:05 <phaazon> :)
15:13:09 <phaazon> depends on what you do
15:13:28 <phaazon> I’m at the intermediary / advanced skill level so I throw… interesting tricks
15:13:38 <Guest1599> :D that's cool!
15:14:10 <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
15:14:30 <phaazon> I have nice rainbow colors on the right foot, probably a ligament partially torn or something like that, cool times :D
15:15:04 <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)
15:16:15 × danso quits (~danso@23-233-111-52.cpe.pppoe.ca) (Read error: Connection reset by peer)
15:16:44 coot joins (~coot@46.204.69.82.nat.umts.dynamic.t-mobile.pl)
15:16:44 × coot quits (~coot@46.204.69.82.nat.umts.dynamic.t-mobile.pl) (Read error: Connection reset by peer)
15:17:22 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
15:17:35 danso joins (~danso@23-233-111-52.cpe.pppoe.ca)
15:17:42 <Guest1599> I hope you'll get better soon. and yeah, injuries are what puts me off from snowboarding
15:18:02 fossdd joins (~fossdd@sourcehut/user/fossdd)
15:19:22 <phaazon> did you enjoy wakeboarding? :)
15:19:29 pavonia joins (~user@user/siracusa)
15:19:30 <phaazon> were you able to stand up? balance is hard at first
15:20:26 Pickchea joins (~private@user/pickchea)
15:21:12 × jmorris quits (uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
15:22:06 <Guest1599> i definitely enjoyed it
15:22:33 <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
15:22:48 <Guest1599> over a lake*
15:27:46 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
15:28:40 fossdd joins (~fossdd@sourcehut/user/fossdd)
15:30:24 × fendor quits (~fendor@178.165.178.92.wireless.dyn.drei.com) (Remote host closed the connection)
15:30:26 nate3 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
15:37:01 <phaazon> cable? yeah I don’t do boats either
15:37:08 <phaazon> it’s two completely different sports anyway :)
15:38:34 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
15:39:42 fossdd joins (~fossdd@sourcehut/user/fossdd)
15:42:27 lavaman joins (~lavaman@98.38.249.169)
15:43:41 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
15:45:51 Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
15:47:12 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
15:51:46 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
15:52:26 × funsafe quits (~funsafe@2601:1c1:4200:938f:32aa:eb39:2110:e2ea) (Ping timeout: 250 seconds)
15:52:43 fossdd joins (~fossdd@sourcehut/user/fossdd)
15:54:01 funsafe joins (~funsafe@2601:1c1:4200:938f:32aa:eb39:2110:e2ea)
15:57:27 HarveyPwca joins (~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06)
15:58:12 neceve joins (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f)
16:00:19 × HarveyPwca quits (~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06) (Remote host closed the connection)
16:00:49 HarveyPwca joins (~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06)
16:04:23 nuncanada joins (~dude@179.235.162.215)
16:08:06 × ubert quits (~Thunderbi@77.119.201.127.wireless.dyn.drei.com) (Ping timeout: 272 seconds)
16:09:47 markpythonicbitc joins (~textual@50.228.44.6)
16:10:29 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
16:14:28 × mattil quits (~mattilinn@78-27-98-194.bb.dnainternet.fi) (Remote host closed the connection)
16:16:16 × kilolympus quits (~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) (Read error: Connection reset by peer)
16:17:47 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
16:18:06 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
16:18:16 erisco joins (~erisco@d24-57-249-233.home.cgocable.net)
16:21:13 cheater joins (~Username@user/cheater)
16:22:40 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
16:23:03 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
16:27:09 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
16:27:22 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Ping timeout: 258 seconds)
16:28:48 Guest608 joins (~Guest60@187.83.249.216.dyn.smithville.net)
16:30:29 × lbseale quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
16:30:59 <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
16:33:00 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
16:33:12 <maerwald> haha
16:36:14 <maerwald> now you wished sandboxes were still a thing
16:36:21 <maerwald> but everyone wanted this nix-style stuff
16:37:35 mattil joins (~mattilinn@78-27-98-194.bb.dnainternet.fi)
16:37:49 berberman joins (~berberman@user/berberman)
16:38:22 × berberman_ quits (~berberman@user/berberman) (Ping timeout: 250 seconds)
16:39:47 × mattil quits (~mattilinn@78-27-98-194.bb.dnainternet.fi) (Client Quit)
16:40:30 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
16:41:22 × Kaiepi quits (~Kaiepi@156.34.44.192) (Remote host closed the connection)
16:41:46 Kaiepi joins (~Kaiepi@156.34.44.192)
16:44:03 phma_ joins (~phma@host-67-44-208-68.hnremote.net)
16:44:27 × phma quits (phma@2001:5b0:210d:748:6bd3:69b4:5bd0:5d7a) (Read error: Connection reset by peer)
16:44:44 Guest9 joins (~Guest9@103.240.169.29)
16:47:42 mattil joins (~mattilinn@78-27-98-194.bb.dnainternet.fi)
16:50:35 × zebrag quits (~chris@user/zebrag) (Ping timeout: 252 seconds)
16:51:12 zebrag joins (~chris@user/zebrag)
16:52:27 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
16:53:32 geekosaur joins (~geekosaur@xmonad/geekosaur)
16:55:21 <monochrom> There is a way to do surgical removal, but it requires knowing how stack organizes things.
16:55:48 <monochrom> I happen to know how to do it for cabal-install.
16:59:31 × Guest608 quits (~Guest60@187.83.249.216.dyn.smithville.net) (Ping timeout: 246 seconds)
17:01:36 <maerwald> anyone knows this stack error? https://paste.tomsmeding.com/Z1KZsYpu
17:02:20 <maerwald> "createProcess: runInteractiveProcess: exec: does not exist (No such file or directory)"... ok, yeah, what?
17:02:29 <maerwald> useless haskell errors...
17:06:32 aegon joins (~mike@174.127.249.180)
17:07:08 <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
17:07:46 <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
17:07:46 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
17:08:01 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
17:08:02 <aegon> but the examples on the repo are all using a function that doesn't exist anymore
17:08:55 <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
17:09:10 <aegon> but i can't seem to figure out how to construct one on my own
17:09:57 <aegon> this might be template haskell land not type land now that I'm reading it with fresh eyes
17:12:32 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
17:13:07 doyougnu joins (~user@c-73-25-202-122.hsd1.or.comcast.net)
17:14:17 psydroid joins (~psydroid@user/psydroid)
17:18:02 econo joins (uid147250@user/econo)
17:18:24 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 272 seconds)
17:21:58 × HarveyPwca quits (~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06) (Quit: Leaving)
17:34:59 dagit joins (~dagit@2601:1c2:1b7f:9fa0:5146:76a:259b:45c5)
17:37:58 × MorrowM quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 272 seconds)
17:38:54 <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
17:39:47 Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net)
17:41:12 × nate3 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
17:45:58 <dsal> aegon: People *love* questions here. You should feel bad when you don't have questions.
17:46:33 <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
17:46:39 <aegon> but now i'm getting type errors i can't parse
17:46:51 <dsal> Paste some examples.
17:47:12 <dsal> I'm doing a bunch of silly TH right now to generate coloring functions from PNGs at compile time.
17:49:16 <aegon> whoa hpaste is down o_o
17:49:25 <geekosaur> @where paste
17:49:25 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
17:49:35 <geekosaur> hpaste has been gonbe for several years
17:49:37 jneira_ joins (~jneira_@28.red-80-28-169.staticip.rima-tde.net)
17:49:40 <aegon> oh :X
17:51:38 nate3 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
17:52:16 <aegon> https://paste.tomsmeding.com/BIJtdLO9
17:52:35 Erutuon joins (~Erutuon@user/erutuon)
17:53:00 <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
17:53:40 <aegon> the commented out tableTypes call works but guesses wrong sometimes
17:54:44 <aegon> I'm starting to read through Vinyl to see if i can grok that but am quite lost
17:59:16 <dsal> Heh, I accidentally imported `Data.Map (mapMaybe)` instead of `Data.Maybe (mapMaybe)` and confused myself quite a bit.
17:59:56 lavaman joins (~lavaman@98.38.249.169)
18:00:06 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
18:00:36 <dsal> aegon: It says you are using undefined variables.
18:04:00 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 272 seconds)
18:04:18 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
18:04:38 <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.
18:04:47 geekosaur joins (~geekosaur@xmonad/geekosaur)
18:04:51 <dsal> bug?
18:05:01 <dsal> "unsafe" is probably common
18:05:15 <Gurkenglas> no that evokes the image of a stern disciplinarian
18:06:49 <aegon> dsal: hmm, trying to fix the imports, for some reason its complaingin about Data.Proxy and Pipes.Internal.Proxy
18:06:53 <aegon> I'm not including pipes in that file
18:07:33 <Hecate> G0urkenglas: we have unsafePerformIO, and accursedUnutterablePerformIO
18:07:44 <Hecate> so maybe accursed can be reused? :)
18:08:15 <Gurkenglas> closer, if just because the previous one was so far away :3
18:08:18 <Hecate> koz: take a look, maybe this can help you with naming :P
18:08:56 <Hecate> Gurkenglas: my last suggestion is "eldritch" ;)
18:09:05 <aegon> dsal: this is where i'm att now in trying to figure it out https://paste.tomsmeding.com/dGvajduB
18:09:21 <Gurkenglas> better yet! imma keep lookin.
18:14:15 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:14:15 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
18:15:14 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
18:15:19 <aegon> its wierd, in their source they are able to use syntax that mine doesn't allow
18:16:55 <monochrom> "unsafeCoerce" bypasses the type checker and we are fine with "just" calling it unsafe.
18:19:34 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
18:19:38 <monochrom> And "the evil mangler" is actually a semantics-preserving code optimizer. So "evil" actually means safe.
18:21:27 × nuncanada quits (~dude@179.235.162.215) (Read error: Connection reset by peer)
18:21:46 <koz> Hecate: What's this in reference to?
18:22:22 × Atum_ quits (~IRC@user/atum/x-2392232) (Quit: Atum_)
18:22:41 dudek joins (~dudek@185.150.236.155)
18:22:48 <Hecate> koz: the accursed, unutterable things you do during the week-end :3
18:23:09 <koz> LOL
18:24:07 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds)
18:24:28 <boxscape> is there a canonical way to convert from CString to ByteString?
18:25:55 <boxscape> ah, found it
18:26:11 <boxscape> it's packCString in the bytestring library
18:26:33 Atum_ joins (~IRC@user/atum/x-2392232)
18:26:42 nuncanada joins (~dude@179.235.162.215)
18:26:50 <aegon> ok, hacked thoruhg it, what can I read to understand more about what Vinyl / Frames is doing there :?
18:29:00 <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
18:29:47 <aegon> lol, staring on step 1
18:30:10 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
18:30:30 fossdd joins (~fossdd@sourcehut/user/fossdd)
18:30:45 <Hecate> aegon: PureScript is a nice and ergonomic implmentation of extensible records / row-polymorphism
18:32:55 <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 :/
18:35:39 <monochrom> I kill that warning in the first place.
18:36:31 <monochrom> I can be talked into turning it on just for a last-minute check.
18:37:00 <boxscape> understandable
18:39:35 Ariakenom joins (~Ariakenom@c83-255-154-140.bredband.tele2.se)
18:39:45 Sgeo joins (~Sgeo@user/sgeo)
18:43:47 jgeerds joins (~jgeerds@55d45555.access.ecotel.net)
18:43:47 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
18:44:10 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
18:44:34 × mattil quits (~mattilinn@78-27-98-194.bb.dnainternet.fi) (Remote host closed the connection)
18:44:58 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
18:45:21 fossdd joins (~fossdd@sourcehut/user/fossdd)
18:47:54 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
18:51:19 lavaman joins (~lavaman@98.38.249.169)
18:51:47 × nate3 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds)
18:54:02 × Guest9 quits (~Guest9@103.240.169.29) (Ping timeout: 272 seconds)
18:55:09 <Hecate> boxscape: you can enable it during CI only
18:57:56 <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
18:58:29 curiousgay joins (~curiousga@77-120-186-48.kha.volia.net)
18:59:41 × Atum_ quits (~IRC@user/atum/x-2392232) (Remote host closed the connection)
19:00:06 Atum_ joins (~IRC@user/atum/x-2392232)
19:06:29 <Hecate> boxscape: hint: if you implement it, you have much more chance to see it in GHC ;)
19:06:54 <Hecate> that being said, you may want to start with a compiler plugin if possible
19:07:18 <boxscape> to be able to use it sooner or for another reason?
19:09:02 <Hecate> boxscape: to see how it behaves on real codebases in real workflows
19:09:13 <boxscape> hm I see
19:09:14 <Hecate> before undertaking the long and tedious process of a GHC Proposal
19:09:32 <boxscape> I don't think this really requires a GHC proposal, it's just changing a few words in a warning message
19:09:40 <Hecate> (which will be made easier by the existence of code that can be reviewed, instead of an endless bikeshedding of possibilities)
19:10:12 <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
19:10:25 <boxscape> I see
19:10:41 <Hecate> but don't fret
19:10:56 <Hecate> if you make a plugin before the proposal, it's going to be much easier
19:10:56 <boxscape> well, I might start with changing a few words in the warning message then and think about splitting it later
19:11:02 <Hecate> :)
19:11:08 <boxscape> makes sense
19:12:26 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
19:13:41 <maerwald> who knows what `security` on darwin is (the binary)?
19:13:47 <maerwald> https://github.com/vincenthz/hs-certificate/blob/master/x509-system/System/X509/MacOS.hs#L22
19:14:31 hexfive joins (~eric@50.35.83.177)
19:14:35 × hexfive quits (~eric@50.35.83.177) (Client Quit)
19:17:28 Kaipi joins (~Kaiepi@156.34.44.192)
19:17:28 × Kaiepi quits (~Kaiepi@156.34.44.192) (Read error: Connection reset by peer)
19:17:30 nate3 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
19:19:36 × jgeerds quits (~jgeerds@55d45555.access.ecotel.net) (Remote host closed the connection)
19:20:00 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 272 seconds)
19:20:36 <maerwald> also love the `either error id` inside IO
19:21:51 Erutuon joins (~Erutuon@user/erutuon)
19:22:50 × nate3 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
19:24:10 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
19:24:40 drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
19:24:50 fossdd joins (~fossdd@sourcehut/user/fossdd)
19:26:49 elias_ joins (~elias@154.27.37.188.rev.vodafone.pt)
19:29:30 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 272 seconds)
19:31:04 Erutuon joins (~Erutuon@user/erutuon)
19:31:30 × drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 240 seconds)
19:35:07 <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?
19:35:31 <raehik> KBs of data, saving to memory/disk
19:36:42 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 240 seconds)
19:36:58 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
19:37:21 <[exa]> raehik: how complicated is the data?
19:37:23 fossdd joins (~fossdd@sourcehut/user/fossdd)
19:37:43 geekosaur joins (~geekosaur@xmonad/geekosaur)
19:38:07 <raehik> [exa]: easy, Word8->64s, some bytestrings
19:38:46 <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
19:39:29 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
19:39:44 lavaman joins (~lavaman@98.38.249.169)
19:39:58 <[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
19:41:32 × alx741 quits (~alx741@181.196.69.85) (Ping timeout: 272 seconds)
19:42:06 <raehik> hm, neither of them expose buffer length, weird
19:42:50 <[exa]> you mean "how much bytes are left to read" ? I remember that was problematic for some reason
19:43:08 <raehik> no I mean for serializing
19:43:35 <raehik> I have a bytestring, and I need to serialize it as a 64-byte block
19:43:52 <raehik> so I need to pad it with nulls depending on length (assume it's not overlong)
19:44:09 Merfont joins (~Kaiepi@156.34.44.192)
19:44:10 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
19:44:15 × Kaipi quits (~Kaiepi@156.34.44.192) (Remote host closed the connection)
19:44:48 <raehik> I could write my own monad on top of any of those serializers to handle it. Was hoping it existed elsewhere though
19:45:13 fossdd joins (~fossdd@sourcehut/user/fossdd)
19:45:23 × doyougnu quits (~user@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 252 seconds)
19:46:11 <[exa]> hm yeah putN could probably be implemented a bit more efficiently, knowing how much buffer space is left ahead
19:48:30 × Merfont quits (~Kaiepi@156.34.44.192) (Remote host closed the connection)
19:48:47 Merfont joins (~Kaiepi@156.34.44.192)
19:50:10 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
19:50:16 <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
19:51:30 <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
19:54:16 alx741 joins (~alx741@186.178.108.145)
19:54:27 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:ac04:a5c:ba91:d865)
19:54:58 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
19:55:55 fossdd joins (~fossdd@sourcehut/user/fossdd)
19:58:54 Guest9 joins (~Guest9@103.240.169.29)
20:00:03 jakalx joins (~jakalx@base.jakalx.net)
20:00:48 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
20:00:48 allbery_b joins (~geekosaur@xmonad/geekosaur)
20:00:52 allbery_b is now known as geekosaur
20:02:55 × Merfont quits (~Kaiepi@156.34.44.192) (Remote host closed the connection)
20:03:17 Merfont joins (~Kaiepi@156.34.44.192)
20:10:34 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
20:11:35 fossdd joins (~fossdd@sourcehut/user/fossdd)
20:11:39 <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?
20:13:32 nate3 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
20:13:49 MorrowM joins (~MorrowM_@bzq-110-168-31-106.red.bezeqint.net)
20:19:43 × Erutuon quits (~Erutuon@user/erutuon) (Quit: WeeChat 2.8)
20:19:46 × fresheyeball quits (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
20:22:04 × reumeth quits (~reumeth@user/reumeth) (Ping timeout: 272 seconds)
20:26:22 × curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 256 seconds)
20:27:59 × nuncanada quits (~dude@179.235.162.215) (Read error: Connection reset by peer)
20:28:14 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
20:28:23 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
20:29:21 roboguy__ joins (~roboguy_@2605:a601:afe7:9f00:8cab:6f70:b160:7f9)
20:30:42 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
20:31:14 <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.
20:31:34 × Merfont quits (~Kaiepi@156.34.44.192) (Ping timeout: 272 seconds)
20:32:28 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
20:32:48 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:ac04:a5c:ba91:d865) (Ping timeout: 250 seconds)
20:34:29 Kaiepi joins (~Kaiepi@156.34.44.192)
20:34:30 <janus> i have been converting monochrom's Cont into a transformer. but i can't seem to define yieldGet for it
20:34:40 Erutuon joins (~Erutuon@user/erutuon)
20:34:45 <janus> is there some underlying theoretical reason for that? or should it be possible?
20:34:57 <ixlun> Here's some more info with a code snippet: https://pastebin.com/YzX8XWi6
20:36:06 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2)
20:36:14 <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.
20:36:23 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
20:36:27 mdunnio joins (~textual@205.178.28.97)
20:36:47 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
20:36:51 <ixlun> Ohh right, because I'm sending the value 'downstream' in the proxy?
20:37:28 × mdunnio quits (~textual@205.178.28.97) (Read error: Connection reset by peer)
20:38:08 <ixlun> dsal: in which case, why does this work? https://pastebin.com/dG2N6mAU
20:38:24 <ixlun> there's no error on that code, and I've not froze the vector, but that compiles fine.
20:38:49 <dsal> You're lifting in the code that errors.
20:38:51 <ixlun> (using the `mapM_` was an attempt to clean that piece of code up)
20:39:08 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
20:39:14 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
20:39:18 nuncanada joins (~dude@179.235.162.215)
20:39:32 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
20:40:34 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
20:41:40 fossdd joins (~fossdd@sourcehut/user/fossdd)
20:41:40 × nuncanada quits (~dude@179.235.162.215) (Client Quit)
20:42:23 <ixlun> Ah okay, so, the issue is that in: `mapM_ f v = forI_ v $ \i -> f =<< unsafeRead v i` the `unsafeRead` isn't lifted?
20:42:35 gehmehgeh joins (~user@user/gehmehgeh)
20:42:42 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 240 seconds)
20:42:49 tommd joins (~tommd@cpe-76-179-204-251.maine.res.rr.com)
20:43:23 wroathe joins (~wroathe@96-88-30-181-static.hfc.comcastbusiness.net)
20:43:40 Orimendix joins (~kevin@162-221-219-5.lxtnkya3.metronetinc.net)
20:44:52 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
20:46:42 × Kaiepi quits (~Kaiepi@156.34.44.192) (Ping timeout: 265 seconds)
20:51:10 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2)
20:51:47 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
20:55:02 severen joins (~severen@202.36.179.72)
20:56:34 × tommd quits (~tommd@cpe-76-179-204-251.maine.res.rr.com) (Ping timeout: 240 seconds)
20:56:38 × Guest9 quits (~Guest9@103.240.169.29) (Quit: Connection closed)
21:00:58 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
21:01:01 acidjnk_new joins (~acidjnk@p200300d0c72b9501c19bd88441742b9a.dip0.t-ipconnect.de)
21:01:13 fossdd joins (~fossdd@sourcehut/user/fossdd)
21:01:22 severen is now known as severenr
21:02:05 Kaiepi joins (~Kaiepi@156.34.44.192)
21:02:18 severenr is now known as koyaa
21:02:30 koyaa is now known as severen
21:10:50 × elias_ quits (~elias@154.27.37.188.rev.vodafone.pt) (Ping timeout: 272 seconds)
21:13:09 × Kaiepi quits (~Kaiepi@156.34.44.192) (Read error: Connection reset by peer)
21:13:15 curiousgay joins (~curiousga@77-120-186-48.kha.volia.net)
21:13:16 × Guest1599 quits (~Guest15@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Ping timeout: 246 seconds)
21:13:24 Kaiepi joins (~Kaiepi@156.34.44.192)
21:14:03 <raehik> Any way to have Show print actual UTF-8 characters instead of their decimal codepoint?
21:14:17 <geekosaur> nope
21:14:17 <monochrom> putStr
21:14:34 <c_wraith> that's exactly what show is intended to prevent
21:14:37 <raehik> monochrom: dealing with a Show, not a String
21:14:59 <c_wraith> If it's displaying codepoints, the input was a String
21:15:13 <c_wraith> (or some component of it was a String)
21:15:22 <monochrom> "the Show must go on"
21:15:23 <raehik> yes, a component
21:15:53 <monochrom> Well that's too bad. Don't use Show. Write your own function.
21:16:27 × HotblackDesiato quits (~HotblackD@gateway/tor-sasl/hotblackdesiato) (Ping timeout: 244 seconds)
21:16:41 <raehik> yes sir :(
21:16:50 <c_wraith> in general, if you care about formatting at all, Show is the wrong interface
21:17:09 <raehik> Right right I know, it was just for debugging
21:17:20 <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.
21:17:47 <severen> It would be nice if there was a Display/Debug split as in Rust
21:17:56 <monochrom> Yes absolutely.
21:18:21 <monochrom> For debugging, a programmer shouldn't mind escape codes all that much.
21:18:34 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
21:18:55 <monochrom> http://www.vex.net/~trebla/haskell/string-print-show-read.xhtml
21:19:01 <raehik> I need to check that the strings are correct/what I'm expecting
21:19:23 <monochrom> Use == ?
21:19:59 <raehik> no sorry I just mean I want to take a quick look (heh) to check that the data is all good
21:19:59 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
21:20:23 <raehik> it's Japanese in UTF-8, escape codes aren't really handy
21:20:28 <monochrom> copy-paste to putStr
21:20:47 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
21:21:06 <raehik> ahhhh ofc! obvious to me now
21:21:27 <raehik> need to write a prettyprinter anyway I guess. waaaah
21:22:16 × bruceleewees quits (~bruceleew@83.24.236.64.ipv4.supernova.orange.pl) (Read error: Connection reset by peer)
21:22:24 HotblackDesiato joins (~HotblackD@gateway/tor-sasl/hotblackdesiato)
21:22:54 bruceleewees joins (~bruceleew@83.24.236.64.ipv4.supernova.orange.pl)
21:22:54 elias_ joins (~elias@154.27.37.188.rev.vodafone.pt)
21:22:55 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
21:24:10 × nate3 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
21:24:36 <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?
21:25:59 <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?
21:27:06 <raehik> the unicode-show package attempts to fix my problem albeit being wobbly and incredibly slow!
21:28:08 <monochrom> Heh wobble and slow are bad.
21:28:31 × Kaiepi quits (~Kaiepi@156.34.44.192) (Remote host closed the connection)
21:30:12 Kaiepi joins (~Kaiepi@156.34.44.192)
21:30:27 takuan joins (~takuan@178-116-218-225.access.telenet.be)
21:30:31 <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?
21:30:59 <dsal> janus: I don't want a tuple per se, I just want two of my things.
21:31:45 <boxscape> ah, it works if I write hiding (Datatype1(view), Datatype2(view))
21:31:59 <boxscape> strange that it hides one field but not the other otherwise
21:32:08 <janus> dsal: you could make a "genTwo" which would be everything after the forAll in your example? that would be pretty compact in use...
21:32:43 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
21:33:32 <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.
21:33:52 phma_ is now known as phma
21:36:58 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 265 seconds)
21:37:51 <janus> but there is nothing preventing you from having gen combinators, so i don't understand why this is a problem
21:38:15 choucavalier_ is now known as choucavalier
21:38:39 Orimendix parts (~kevin@162-221-219-5.lxtnkya3.metronetinc.net) (Konversation terminated!)
21:38:43 nate3 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
21:38:48 × choucavalier quits (~choucaval@peanutbuttervibes.com) (Changing host)
21:38:48 choucavalier joins (~choucaval@user/choucavalier)
21:39:36 × hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1)
21:40:08 hendursaga joins (~weechat@user/hendursaga)
21:40:50 <dsal> It just feels like more work that's more explicit so far. I've only just started, though.
21:42:50 <boxscape> (Okay, looks like a ghc bug, I was able to replicate it on a small scale)
21:42:55 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
21:42:57 <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
21:44:41 doyougnu joins (~user@c-73-25-202-122.hsd1.or.comcast.net)
21:46:58 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
21:47:11 × severen quits (~severen@202.36.179.72) (Quit: WeeChat 3.2)
21:47:16 fossdd joins (~fossdd@sourcehut/user/fossdd)
21:47:21 <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
21:48:35 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
21:50:07 × doyougnu quits (~user@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection)
21:50:09 <dsal> Weird. The test is failing. Maybe that's good...
21:51:31 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:549a:3ebc:6e:7e3d)
21:53:19 doyougnu joins (~user@c-73-25-202-122.hsd1.or.comcast.net)
21:53:23 <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
21:53:27 lavaman joins (~lavaman@98.38.249.169)
21:54:18 × mikoto-chan quits (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) (Ping timeout: 240 seconds)
21:54:42 × roboguy__ quits (~roboguy_@2605:a601:afe7:9f00:8cab:6f70:b160:7f9) (Ping timeout: 240 seconds)
21:57:42 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 272 seconds)
21:58:20 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
22:01:10 × zeenk quits (~zeenk@2a02:2f04:a008:d600:18f2:3421:bac6:8f38) (Quit: Konversation terminated!)
22:01:46 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
22:02:03 fossdd joins (~fossdd@sourcehut/user/fossdd)
22:03:13 Null_A joins (~null_a@67-207-96-2.static.wiline.com)
22:04:08 × Null_A quits (~null_a@67-207-96-2.static.wiline.com) (Client Quit)
22:05:49 × kuribas quits (~user@ptr-25vy0i7fhp3jdg2nokv.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
22:06:38 Null_A joins (~null_a@67-207-96-2.static.wiline.com)
22:09:13 × Null_A quits (~null_a@67-207-96-2.static.wiline.com) (Read error: Connection reset by peer)
22:09:26 × curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 250 seconds)
22:09:26 Null_A joins (~null_a@67-207-96-2.static.wiline.com)
22:13:11 × Melantha quits (~pyon@user/pyon) (Ping timeout: 268 seconds)
22:13:40 Melantha joins (~pyon@user/pyon)
22:15:09 jess joins (~jess@libera/staff/jess)
22:17:15 jgeerds joins (~jgeerds@55d45555.access.ecotel.net)
22:19:56 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:549a:3ebc:6e:7e3d) (Remote host closed the connection)
22:20:30 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:549a:3ebc:6e:7e3d)
22:20:46 <dsal> Well, failures are kind of bad here. I'm not sure what I did wrong, but the only output I get in my test is `Exception: arithmetic underflow`... which I guess suggests the problem is in my generator.
22:24:40 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
22:24:53 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
22:25:29 <Ariakenom> oh interesting. underflow as an error? where from
22:25:34 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:549a:3ebc:6e:7e3d) (Ping timeout: 272 seconds)
22:26:10 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
22:27:01 Guest9130 joins (~Guest91@2603-8080-6d0d-35bb-0000-0000-0000-0aa5.res6.spectrum.com)
22:27:10 fossdd joins (~fossdd@sourcehut/user/fossdd)
22:27:28 lavaman joins (~lavaman@98.38.249.169)
22:28:12 <dsal> The problem was that my generator was generating an invalid geometry. I think my Arbitrary instance *could* have done that, but it didn't.
22:28:53 <dsal> On one hand, it might be that I just don't understand how to use these hedgehog things.
22:28:55 <Ariakenom> what number type was it that gave that error?
22:29:06 <dsal> Double, I think.
22:30:40 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2)
22:31:35 <Ariakenom> makes sense. just wondering since underflow is usually not an error
22:32:04 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
22:33:39 × egoist quits (~egoist@186.235.82.100) (Quit: WeeChat 3.2)
22:34:41 <Ariakenom> in case someone didnt know it's when a float can't represent a small number, small in magnitude, and rounds it to zero. which means the relative error broke the bounds that otherwise hold
22:35:59 × amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 252 seconds)
22:39:11 <dsal> This code scales one geometry into another. If you try to make a geometry with 0 length, the scaling isn't valid.
22:42:02 × wroathe quits (~wroathe@96-88-30-181-static.hfc.comcastbusiness.net) (Ping timeout: 272 seconds)
22:44:58 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
22:45:11 fossdd joins (~fossdd@sourcehut/user/fossdd)
22:48:29 × Kaiepi quits (~Kaiepi@156.34.44.192) (Read error: Connection reset by peer)
22:48:42 <dsal> Well, converted my tests to hedgehog. So far... similar. Slightly less ergonomic. These tests don't benefit much from the things that hedgehog is best at, but it's a bit of practice.
22:48:51 Kaiepi joins (~Kaiepi@156.34.44.192)
22:52:51 × jgeerds quits (~jgeerds@55d45555.access.ecotel.net) (Ping timeout: 265 seconds)
22:53:46 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
22:54:04 × acidjnk_new quits (~acidjnk@p200300d0c72b9501c19bd88441742b9a.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
22:57:52 × MorrowM quits (~MorrowM_@bzq-110-168-31-106.red.bezeqint.net) (Read error: Connection reset by peer)
23:00:15 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:549a:3ebc:6e:7e3d)
23:01:34 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:549a:3ebc:6e:7e3d) (Remote host closed the connection)
23:02:06 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:549a:3ebc:6e:7e3d)
23:06:10 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:549a:3ebc:6e:7e3d) (Ping timeout: 240 seconds)
23:10:34 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
23:10:46 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
23:11:04 × mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
23:12:29 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
23:12:47 × dudek quits (~dudek@185.150.236.155) (Quit: Leaving)
23:13:18 Ailrk joins (~Ailrk@node-1w7jr9umlq4q5zsu67z73tx37.ipv6.telus.net)
23:15:30 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
23:16:05 × Ailrk quits (~Ailrk@node-1w7jr9umlq4q5zsu67z73tx37.ipv6.telus.net) (Quit: WeeChat 3.2)
23:17:09 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:549a:3ebc:6e:7e3d)
23:18:14 × dhil quits (~dhil@195.213.192.47) (Ping timeout: 252 seconds)
23:20:31 × Ariakenom quits (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Quit: Leaving)
23:20:42 × nate3 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
23:21:34 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: Lost terminal)
23:23:05 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
23:24:31 × Guest9130 quits (~Guest91@2603-8080-6d0d-35bb-0000-0000-0000-0aa5.res6.spectrum.com) (Ping timeout: 246 seconds)
23:25:43 × koz quits (~koz@121.99.240.58) (Ping timeout: 265 seconds)
23:26:33 koz joins (~koz@121.99.240.58)
23:27:44 Guest9133 joins (~Guest91@2603-8080-6d0d-35bb-0000-0000-0000-0aa5.res6.spectrum.com)
23:29:20 sweater joins (~sweater@206.81.18.26)
23:30:38 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: Lost terminal)
23:31:52 Ailrk joins (~Ailrk@node-1w7jr9umlq4q5zsu67z73tx37.ipv6.telus.net)
23:32:04 × koz quits (~koz@121.99.240.58) (Ping timeout: 272 seconds)
23:33:23 koz joins (~koz@121.99.240.58)
23:36:48 <Guest9133> Is it possible to convert a heterogeneous tuple to a heterogeneous typed list (specifically [this one](https://hackage.haskell.org/package/hvect-0.4.0.0/docs/Data-HVect.html))? I tried type families to resolve the `HVect` type, but it seems type families + fundeps won't resolve the base case (as in [this SO
23:36:49 <Guest9133> post](https://stackoverflow.com/questions/45360959/illegal-type-synonym-family-application-in-instance-with-functional-dependency)).
23:37:02 retro_ joins (~retro@5ec19a54.skybroadband.com)
23:37:13 lavaman joins (~lavaman@98.38.249.169)
23:39:18 <Guest9133> Actually my bad, it was this SO post: https://stackoverflow.com/questions/36175839/type-ambiguity-in-haskell-type-families
23:39:46 × retroid_ quits (~retro@5ec19a54.skybroadband.com) (Ping timeout: 240 seconds)
23:40:17 vicfred joins (~vicfred@user/vicfred)
23:41:30 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
23:45:46 × neceve quits (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 240 seconds)
23:46:26 nate3 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
23:46:50 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
23:49:48 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
23:51:59 × Ailrk quits (~Ailrk@node-1w7jr9umlq4q5zsu67z73tx37.ipv6.telus.net) (Quit: WeeChat 3.2)
23:52:20 × nate3 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)

All times are in UTC on 2021-07-31.