Home liberachat/#haskell: Logs Calendar

Logs on 2021-10-29 (liberachat/#haskell)

00:00:39 × mc47 quits (~mc47@xmonad/TheMC47) (Quit: Leaving)
00:05:05 <aegon> i shouldn't have put any sort of initial set of calls in the same place as creating the other half of the continuations, another tick in my worry bucket about making IO accessable too many places
00:06:55 × terrorjack quits (~terrorjac@static.3.200.12.49.clients.your-server.de) (Quit: Ping timeout (120 seconds))
00:07:54 terrorjack joins (~terrorjac@static.3.200.12.49.clients.your-server.de)
00:08:07 sprout_ joins (~quassel@2a02:a467:ccd6:1:21d2:19c0:e01b:f66c)
00:08:22 <remexre> is there a way to get either tuple syntax or list syntax for hlists?
00:08:40 × sprout quits (~quassel@2a02:a467:ccd6:1:319c:b1d4:3651:39a5) (Ping timeout: 268 seconds)
00:09:03 <remexre> or are hlists "dead" and do people use something else to get generic computations over tuples of unknown length
00:10:13 <awpr> you mean make `[5, "hi"]` work as an `HList [Int, String]`? not currently. I've been considering making a GHC plugin that could do that, but it's vaporware and would take substantial work even if I did decide to prioritize it
00:10:38 <awpr> I should say, not that I know of
00:11:02 <remexre> I guess alternatively-and-isomorphically, is there a good way to get n-ary curried functions?
00:11:25 dajoer joins (~david@user/gvx)
00:11:36 <remexre> in this case, where each argument has a certain trait, and the final return is polymorphic (but doesn't depend on the arg types)
00:11:41 <remexre> er, typeclass*
00:11:41 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
00:11:58 <remexre> I've been writing Rust for the last couple years instead of Haskell :)
00:12:01 <awpr> there's the trick used by `printf` where it always returns a `forall r. FormatResult r => r` at each step, or something to that effect
00:12:10 <awpr> sounds like it has some hope of being applicable here
00:12:23 MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com)
00:12:30 <remexre> I'll take a look at that; is that Text.Printf.printf?
00:12:52 <awpr> yeah, s/FormatResult/PrintfType/
00:13:36 × guniberas quits (~guniberas@42.191.188.121) (Ping timeout: 268 seconds)
00:13:36 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
00:13:57 <remexre> huh, okay, its approach makes sense, I think
00:14:01 <remexre> I'll try that, thanks!
00:15:31 MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com)
00:17:27 Farzad joins (~FarzadBek@185.131.125.100)
00:18:59 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
00:19:17 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 264 seconds)
00:21:47 Lord_of_Life_ is now known as Lord_of_Life
00:23:47 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
00:29:16 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Ping timeout: 245 seconds)
00:31:00 × sprout_ quits (~quassel@2a02:a467:ccd6:1:21d2:19c0:e01b:f66c) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
00:31:40 sprout joins (~quassel@2a02:a467:ccd6:1:21d2:19c0:e01b:f66c)
00:32:08 <remexre> oh ugh, breaks when the return type is a monad typeclass
00:32:20 <remexre> because (a -> m ()) is a monad too
00:32:31 <remexre> er
00:33:17 <remexre> because typeclass resolution doesn't figure out that really only one instance matches
00:33:54 <remexre> between Func f => Func (a -> f) and (Func f, Monad m, a ~ ()) => Func (m a)
00:37:08 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:90ed:9a10:88ac:8dca) (Remote host closed the connection)
00:37:55 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
00:38:10 lavaman joins (~lavaman@98.38.249.169)
00:38:17 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
00:39:59 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
00:40:08 MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com)
00:40:09 <remexre> oh, right, {-# OVERLAPPING #-} exists
00:41:33 × CannabisIndica quits (~herb@user/mesaboogie) (Quit: ZNC - https://znc.in)
00:48:52 bitmapper joins (uid464869@id-464869.lymington.irccloud.com)
00:50:48 euandreh joins (~euandreh@2804:14c:33:9fe5:eba7:95bb:d099:a7d8)
00:51:40 × lbseale quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
00:54:27 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:90ed:9a10:88ac:8dca)
00:55:11 v01d4lph4 joins (~v01d4lph4@user/v01d4lph4)
00:55:30 CannibisIndica joins (~herb@user/mesaboogie)
00:58:02 bongobrown joins (~bongobrow@cpe-76-185-215-2.satx.res.rr.com)
00:59:55 × v01d4lph4 quits (~v01d4lph4@user/v01d4lph4) (Ping timeout: 260 seconds)
01:01:54 × kupi quits (uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
01:03:48 × alx741 quits (~alx741@186.178.109.79) (Quit: alx741)
01:08:48 lavaman joins (~lavaman@98.38.249.169)
01:12:35 × d0ku quits (~d0ku@178.43.15.137.ipv4.supernova.orange.pl) (Ping timeout: 246 seconds)
01:13:01 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 245 seconds)
01:13:43 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:14:27 × neurocyte0132889 quits (~neurocyte@user/neurocyte) (Ping timeout: 260 seconds)
01:16:50 × mmhat quits (~mmh@55d4b856.access.ecotel.net) (Ping timeout: 260 seconds)
01:19:50 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:20:39 MoC_ joins (~moc@user/moc)
01:21:21 × MoC quits (~moc@user/moc) (Ping timeout: 245 seconds)
01:23:24 × a6a45081-2b83 quits (~aditya@2601:249:4300:1296:88ec:cc73:84d4:1507) (Remote host closed the connection)
01:30:20 mmhat joins (~mmh@55d4bea4.access.ecotel.net)
01:36:45 × Farzad quits (~FarzadBek@185.131.125.100) (Quit: Leaving)
01:38:26 × mmhat quits (~mmh@55d4bea4.access.ecotel.net) (Ping timeout: 245 seconds)
01:43:08 × alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection)
01:45:16 × xff0x quits (~xff0x@2001:1a81:525b:da00:1097:4d57:43e2:986f) (Ping timeout: 260 seconds)
01:46:26 lavaman joins (~lavaman@98.38.249.169)
01:47:01 xff0x joins (~xff0x@2001:1a81:529e:f300:b22f:69e6:aa77:fd2f)
01:51:02 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
01:52:16 alzgh joins (~alzgh@user/alzgh)
01:55:19 myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net)
02:01:18 × ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
02:03:39 × alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection)
02:17:23 × abrantesasf quits (~abrantesa@187.36.170.211) (Remote host closed the connection)
02:18:05 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 260 seconds)
02:20:43 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:24:30 × bongobrown quits (~bongobrow@cpe-76-185-215-2.satx.res.rr.com) (Ping timeout: 260 seconds)
02:25:49 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
02:25:49 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
02:25:49 wroathe joins (~wroathe@user/wroathe)
02:26:47 × fizzsegfaultbuzz quits (~segfaultf@135-180-0-138.static.sonic.net) (Ping timeout: 260 seconds)
02:28:12 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
02:30:25 MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com)
02:30:52 brainfreeze joins (~brainfree@2a03:1b20:4:f011::20d)
02:38:47 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 264 seconds)
02:40:20 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
02:51:45 mbuf joins (~Shakthi@171.61.174.60)
02:54:06 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
02:54:19 × td_ quits (~td@94.134.91.221) (Ping timeout: 260 seconds)
02:55:57 td_ joins (~td@muedsl-82-207-238-132.citykom.de)
02:56:00 × waleee quits (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 260 seconds)
02:57:53 × burnsidesLlama quits (~burnsides@dhcp168-026.wadham.ox.ac.uk) (Remote host closed the connection)
03:12:26 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
03:17:22 Guest3764 joins (~fedora@59.98.57.201)
03:19:06 × Guest3764 quits (~fedora@59.98.57.201) (Client Quit)
03:19:13 zzz is now known as onion
03:26:29 × harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
03:26:47 × mvk quits (~mvk@2607:fea8:5cc1:300::d3fb) (Ping timeout: 264 seconds)
03:29:52 nikshalark joins (~nikshalar@c-73-110-102-193.hsd1.in.comcast.net)
03:55:32 bgamari joins (~bgamari@64.223.157.117)
03:55:49 × bgamari_ quits (~bgamari@64.223.175.225) (Ping timeout: 252 seconds)
03:56:26 v01d4lph4 joins (~v01d4lph4@user/v01d4lph4)
03:58:25 × bgamari quits (~bgamari@64.223.157.117) (Client Quit)
04:00:56 × v01d4lph4 quits (~v01d4lph4@user/v01d4lph4) (Ping timeout: 245 seconds)
04:02:20 bgamari joins (~bgamari@64.223.227.106)
04:10:24 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
04:11:02 MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com)
04:21:23 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 264 seconds)
04:23:31 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
04:23:31 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
04:23:31 wroathe joins (~wroathe@user/wroathe)
04:31:44 v01d4lph4 joins (~v01d4lph4@223.190.95.48)
04:31:44 × v01d4lph4 quits (~v01d4lph4@223.190.95.48) (Changing host)
04:31:44 v01d4lph4 joins (~v01d4lph4@user/v01d4lph4)
04:35:10 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 260 seconds)
04:38:10 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
04:43:15 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
04:50:23 × nikshalark quits (~nikshalar@c-73-110-102-193.hsd1.in.comcast.net) (Quit: Lost terminal)
04:50:56 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:00:20 × v01d4lph4 quits (~v01d4lph4@user/v01d4lph4) (Ping timeout: 260 seconds)
05:01:09 v01d4lph4 joins (~v01d4lph4@user/v01d4lph4)
05:02:09 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
05:25:06 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
05:26:41 × idnar quits (sid12240@debian/mithrandi) (Read error: Connection reset by peer)
05:26:47 × gonz___ quits (sid304396@lymington.irccloud.com) (Ping timeout: 264 seconds)
05:26:47 × bw quits (sid2730@user/betawaffle) (Ping timeout: 264 seconds)
05:26:47 × bjs quits (sid190364@user/bjs) (Ping timeout: 264 seconds)
05:26:47 × scav quits (sid309693@helmsley.irccloud.com) (Ping timeout: 264 seconds)
05:26:47 × tnks quits (sid412124@helmsley.irccloud.com) (Ping timeout: 264 seconds)
05:26:49 × gmc quits (sid58314@ilkley.irccloud.com) (Read error: Connection reset by peer)
05:26:50 idnar joins (sid12240@debian/mithrandi)
05:26:58 gmc joins (sid58314@id-58314.ilkley.irccloud.com)
05:26:59 Guest39 joins (~Guest39@103.142.31.135)
05:27:06 × SanchayanMaity quits (sid478177@hampstead.irccloud.com) (Read error: Connection reset by peer)
05:27:07 × glowcoil quits (sid3405@tinside.irccloud.com) (Read error: Connection reset by peer)
05:27:14 glowcoil joins (sid3405@id-3405.tinside.irccloud.com)
05:27:15 SanchayanMaity joins (sid478177@id-478177.hampstead.irccloud.com)
05:27:16 scav joins (sid309693@id-309693.helmsley.irccloud.com)
05:27:18 bjs joins (sid190364@user/bjs)
05:27:23 × ysh quits (sid6017@ilkley.irccloud.com) (Ping timeout: 264 seconds)
05:27:23 × rtpg quits (sid443069@ilkley.irccloud.com) (Ping timeout: 264 seconds)
05:27:23 × taktoa[c] quits (sid282096@tinside.irccloud.com) (Ping timeout: 264 seconds)
05:27:51 <Guest39> When testing a function with HUnit how do I mock the database connection and the query response
05:27:59 × aarchi quits (sid486183@uxbridge.irccloud.com) (Ping timeout: 264 seconds)
05:27:59 × cbarrett quits (sid192934@helmsley.irccloud.com) (Ping timeout: 264 seconds)
05:27:59 × lightandlight quits (sid135476@helmsley.irccloud.com) (Ping timeout: 264 seconds)
05:27:59 × systemfault quits (sid267009@uxbridge.irccloud.com) (Ping timeout: 264 seconds)
05:27:59 × bbhoss quits (sid18216@tinside.irccloud.com) (Ping timeout: 264 seconds)
05:28:16 rtpg joins (sid443069@id-443069.ilkley.irccloud.com)
05:28:22 fizzsegfaultbuzz joins (~segfaultf@135-180-0-138.static.sonic.net)
05:28:35 × alinab quits (sid468903@helmsley.irccloud.com) (Read error: Connection reset by peer)
05:28:35 × edmundnoble quits (sid229620@helmsley.irccloud.com) (Ping timeout: 264 seconds)
05:28:35 × ephemient quits (uid407513@lymington.irccloud.com) (Ping timeout: 264 seconds)
05:28:40 bbhoss joins (sid18216@id-18216.tinside.irccloud.com)
05:28:43 alinab joins (sid468903@id-468903.helmsley.irccloud.com)
05:28:48 taktoa[c] joins (sid282096@id-282096.tinside.irccloud.com)
05:28:49 gonz___ joins (sid304396@id-304396.lymington.irccloud.com)
05:28:51 × Ferdirand quits (~somebody@2001:4c78:2012:5000::2) (Ping timeout: 245 seconds)
05:28:59 bw joins (sid2730@user/betawaffle)
05:29:04 cbarrett joins (sid192934@id-192934.helmsley.irccloud.com)
05:29:10 lightandlight joins (sid135476@id-135476.helmsley.irccloud.com)
05:29:12 ysh joins (sid6017@id-6017.ilkley.irccloud.com)
05:29:14 Ferdirand joins (~somebody@2001:4c78:2012:5000::2)
05:29:15 ephemient joins (uid407513@id-407513.lymington.irccloud.com)
05:29:15 edmundnoble joins (sid229620@id-229620.helmsley.irccloud.com)
05:29:45 tnks joins (sid412124@id-412124.helmsley.irccloud.com)
05:29:47 × hamishmack quits (sid389057@hampstead.irccloud.com) (Ping timeout: 264 seconds)
05:29:47 × awpr quits (uid446117@lymington.irccloud.com) (Ping timeout: 264 seconds)
05:30:02 systemfault joins (sid267009@id-267009.uxbridge.irccloud.com)
05:30:23 × integral quits (sid296274@user/integral) (Ping timeout: 264 seconds)
05:30:23 × Pent quits (sid313808@lymington.irccloud.com) (Ping timeout: 264 seconds)
05:30:44 aarchi joins (sid486183@id-486183.uxbridge.irccloud.com)
05:31:20 × v01d4lph4 quits (~v01d4lph4@user/v01d4lph4) (Remote host closed the connection)
05:32:17 awpr joins (uid446117@id-446117.lymington.irccloud.com)
05:32:38 <Axman6> mocking a database cnnection seems difficult. mocking queries to the database seems doable though
05:32:59 <Guest39> could you tell me how I can accomplish that
05:32:59 hamishmack joins (sid389057@id-389057.hampstead.irccloud.com)
05:33:10 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:33:10 <Axman6> it would very much depend on your codebase
05:33:29 Pent joins (sid313808@id-313808.lymington.irccloud.com)
05:33:51 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds)
05:33:59 × jakesyl_ quits (sid56879@hampstead.irccloud.com) (Ping timeout: 264 seconds)
05:34:59 integral joins (sid296274@user/integral)
05:34:59 <Guest39> well iam just getting started learning so
05:35:11 <Guest39> I used postgresql-simple
05:36:43 × obviyus quits (sid415299@user/obviyus) (Read error: Connection reset by peer)
05:36:50 <Axman6> A common way to do this is to define a type class that contains functions which define the interface you need, and then make instances for that type class against the databse and as a mock instance
05:36:52 obviyus joins (sid415299@user/obviyus)
05:38:18 <Guest39> Understood I then create have mock implementation for everything that iam goingto use from the actual library
05:38:36 jakesyl_ joins (sid56879@id-56879.hampstead.irccloud.com)
05:38:45 <Guest39> but wont the code still be importing the library functions
05:39:00 <Guest39> how do i make it use my mock implementation temporarily
05:39:32 <Guest39> I mean only while running the test casess
05:45:00 × zebrag quits (~chris@user/zebrag) (Remote host closed the connection)
05:47:45 <Axman6> I haven't read the article, but skimming this looks like it may be a good introduction: https://making.pusher.com/unit-testing-io-in-haskell/
05:48:51 <Axman6> maybe this is a better one https://lexi-lambda.github.io/blog/2017/06/29/unit-testing-effectful-haskell-with-monad-mock/
05:49:42 <Axman6> this looks pretty cool actually
05:49:50 × fizzsegfaultbuzz quits (~segfaultf@135-180-0-138.static.sonic.net) (Ping timeout: 260 seconds)
05:52:07 × myShoggoth quits (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 260 seconds)
05:55:00 <Guest39> thank you
05:55:25 × aegon quits (~mike@174.127.249.180) (Remote host closed the connection)
05:57:08 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
05:58:46 × phma quits (~phma@host-67-44-208-16.hnremote.net) (Read error: Connection reset by peer)
06:02:14 _xor joins (~xor@72.49.199.147)
06:02:45 phma joins (~phma@host-67-44-208-251.hnremote.net)
06:08:05 × Kaiepi quits (~Kaiepi@156.34.44.192) (Remote host closed the connection)
06:11:19 sagax joins (~sagax_nb@user/sagax)
06:12:36 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 245 seconds)
06:16:20 jakalx parts (~jakalx@base.jakalx.net) ()
06:19:10 max22- joins (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr)
06:19:38 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
06:19:59 Sgeo joins (~Sgeo@user/sgeo)
06:29:13 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
06:29:13 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
06:29:13 wroathe joins (~wroathe@user/wroathe)
06:33:59 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 264 seconds)
06:34:11 × fendor quits (~fendor@178.165.166.121.wireless.dyn.drei.com) (Read error: Connection reset by peer)
06:34:16 michalz joins (~michalz@185.246.204.109)
06:36:39 fendor joins (~fendor@178.165.166.121.wireless.dyn.drei.com)
06:37:58 × brainfreeze quits (~brainfree@2a03:1b20:4:f011::20d) (Remote host closed the connection)
06:41:18 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
06:42:06 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds)
06:44:19 geekosaur joins (~geekosaur@xmonad/geekosaur)
06:48:15 × Guest39 quits (~Guest39@103.142.31.135) (Quit: Client closed)
06:49:26 lortabac joins (~lortabac@atoulouse-256-1-14-70.w92-136.abo.wanadoo.fr)
06:55:33 lavaman joins (~lavaman@98.38.249.169)
06:55:39 jakalx joins (~jakalx@base.jakalx.net)
06:57:53 neurocyte0132889 joins (~neurocyte@46.243.81.22)
06:57:53 × neurocyte0132889 quits (~neurocyte@46.243.81.22) (Changing host)
06:57:53 neurocyte0132889 joins (~neurocyte@user/neurocyte)
06:57:54 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
06:58:32 MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com)
06:58:41 comandingo joins (~drever@ipb218f985.dynamic.kabel-deutschland.de)
06:59:03 × comandingo quits (~drever@ipb218f985.dynamic.kabel-deutschland.de) (Client Quit)
07:00:23 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
07:07:06 gehmehgeh joins (~user@user/gehmehgeh)
07:08:05 Kaiepi joins (~Kaiepi@156.34.44.192)
07:11:06 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:19:10 hololeap joins (~hololeap@user/hololeap)
07:22:16 bontaq` joins (~user@ool-45779fe5.dyn.optonline.net)
07:25:51 × MoC_ quits (~moc@user/moc) (Quit: Konversation terminated!)
07:27:10 dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be)
07:27:17 MoC joins (~moc@user/moc)
07:29:49 × hendursaga quits (~weechat@user/hendursaga) (Remote host closed the connection)
07:30:37 hendursaga joins (~weechat@user/hendursaga)
07:30:53 chele joins (~chele@user/chele)
07:31:53 gehmehgeh_ joins (~user@user/gehmehgeh)
07:32:57 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
07:34:01 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
07:35:15 zincy_ joins (~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e)
07:35:24 × gehmehgeh quits (~user@user/gehmehgeh) (Ping timeout: 276 seconds)
07:38:04 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
07:38:19 acidjnk_new joins (~acidjnk@p200300d0c7238d78f12f2b4aa168a17a.dip0.t-ipconnect.de)
07:39:41 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
07:43:14 × zincy_ quits (~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e) (Remote host closed the connection)
07:47:55 jumper149 joins (~jumper149@80.240.31.34)
07:51:58 × unit73e quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Remote host closed the connection)
07:58:28 ubert joins (~Thunderbi@178.165.162.187.wireless.dyn.drei.com)
08:00:05 × Cajun quits (~Cajun@user/cajun) (Quit: Client closed)
08:00:45 × fendor quits (~fendor@178.165.166.121.wireless.dyn.drei.com) (Remote host closed the connection)
08:06:55 hendursa1 joins (~weechat@user/hendursaga)
08:08:33 × hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 276 seconds)
08:12:30 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:90ed:9a10:88ac:8dca) (Remote host closed the connection)
08:14:38 d0ku joins (~d0ku@178.43.150.25.ipv4.supernova.orange.pl)
08:16:46 × hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection)
08:16:54 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Read error: Connection reset by peer)
08:17:38 geekosaur joins (~geekosaur@xmonad/geekosaur)
08:18:09 hololeap joins (~hololeap@user/hololeap)
08:20:51 bontaq` is now known as bontaq
08:27:16 × phma quits (~phma@host-67-44-208-251.hnremote.net) (Read error: Connection reset by peer)
08:28:32 phma joins (~phma@host-67-44-208-63.hnremote.net)
08:32:37 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
08:32:58 vpan joins (~0@212.117.1.172)
08:35:18 cfricke joins (~cfricke@user/cfricke)
08:38:20 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 258 seconds)
08:40:42 alzgh joins (~alzgh@user/alzgh)
08:40:52 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
08:42:53 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
09:07:01 × bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
09:11:26 peterhil joins (~peterhil@mobile-access-5672f1-161.dhcp.inet.fi)
09:12:07 rond_ joins (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438)
09:12:54 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:90ed:9a10:88ac:8dca)
09:17:47 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:90ed:9a10:88ac:8dca) (Ping timeout: 264 seconds)
09:19:15 × jumper149 quits (~jumper149@80.240.31.34) (Ping timeout: 260 seconds)
09:19:59 jumper149 joins (~jumper149@80.240.31.34)
09:21:15 mmhat joins (~mmh@55d4be4b.access.ecotel.net)
09:22:22 gehmehgeh_ is now known as gehmehgeh
09:23:04 v01d4lph4 joins (~v01d4lph4@user/v01d4lph4)
09:25:15 × LiaoTao quits (~LiaoTao@gateway/tor-sasl/liaotao) (Ping timeout: 276 seconds)
09:25:16 × poljar quits (~poljar@93-139-113-226.adsl.net.t-com.hr) (Ping timeout: 252 seconds)
09:25:57 LiaoTao joins (~LiaoTao@gateway/tor-sasl/liaotao)
09:26:05 × MoC quits (~moc@user/moc) (Quit: Konversation terminated!)
09:26:57 × shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit)
09:27:13 poljar joins (~poljar@78-3-31-140.adsl.net.t-com.hr)
09:38:29 × peterhil quits (~peterhil@mobile-access-5672f1-161.dhcp.inet.fi) (Ping timeout: 264 seconds)
09:42:33 peterhil joins (~peterhil@mobile-access-5672f1-161.dhcp.inet.fi)
09:44:10 Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
09:45:12 × alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection)
09:45:32 alzgh joins (~alzgh@user/alzgh)
09:57:59 × lortabac quits (~lortabac@atoulouse-256-1-14-70.w92-136.abo.wanadoo.fr) (Ping timeout: 264 seconds)
10:02:11 × peterhil quits (~peterhil@mobile-access-5672f1-161.dhcp.inet.fi) (Ping timeout: 264 seconds)
10:11:17 lortabac joins (~lortabac@atoulouse-256-1-14-70.w92-136.abo.wanadoo.fr)
10:12:08 __monty__ joins (~toonn@user/toonn)
10:12:58 × v01d4lph4 quits (~v01d4lph4@user/v01d4lph4) (Remote host closed the connection)
10:16:04 wonko joins (~wjc@user/wonko)
10:17:53 × gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection)
10:18:42 gehmehgeh joins (~user@user/gehmehgeh)
10:21:19 jjrol joins (~jjrol@n122-104-58-147.sun4.vic.optusnet.com.au)
10:22:21 jjrol parts (~jjrol@n122-104-58-147.sun4.vic.optusnet.com.au) ()
10:24:32 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
10:35:47 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
10:36:05 × acidjnk_new quits (~acidjnk@p200300d0c7238d78f12f2b4aa168a17a.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
10:36:31 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:39:36 × johnjay quits (~pi@192.142.100.50) (Ping timeout: 260 seconds)
10:42:05 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
10:42:22 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:45:31 dcl^ joins (~dcl@wsip-98-188-242-6.mc.at.cox.net)
10:46:22 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 258 seconds)
10:47:36 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
10:48:01 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:48:23 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 264 seconds)
10:53:47 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
10:54:00 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:55:56 × ubert quits (~Thunderbi@178.165.162.187.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
10:56:25 Cajun joins (~Cajun@user/cajun)
10:57:19 lavaman joins (~lavaman@98.38.249.169)
11:02:00 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 260 seconds)
11:03:02 × faultline quits (~christian@nat-eduroam-01.scc.kit.edu) (Ping timeout: 246 seconds)
11:03:46 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
11:03:52 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
11:05:09 img joins (~img@user/img)
11:05:26 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:12:48 AlexNoo_ joins (~AlexNoo@178.34.163.209)
11:14:35 × Alex_test quits (~al_test@178.34.150.219) (Ping timeout: 260 seconds)
11:15:05 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
11:15:32 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.3)
11:15:49 × AlexNoo_ quits (~AlexNoo@178.34.163.209) (Client Quit)
11:16:00 × AlexZenon quits (~alzenon@178.34.150.219) (Ping timeout: 260 seconds)
11:16:03 AlexNoo_ joins (~AlexNoo@178.34.163.209)
11:16:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
11:16:35 × AlexNoo quits (~AlexNoo@178.34.150.219) (Ping timeout: 264 seconds)
11:16:48 AlexZenon joins (~alzenon@178.34.163.209)
11:16:49 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:16:59 Alex_test joins (~al_test@178.34.163.209)
11:17:31 ubert joins (~Thunderbi@178.165.162.187.wireless.dyn.drei.com)
11:17:50 AlexNoo_ is now known as AlexNoo
11:19:16 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds)
11:19:19 talismanick joins (~talismani@76.78.246.111)
11:20:01 <talismanick> Realized I didn't have Haskell yet on my computer, so I curl'd ghcup, ran it, and got... an error?
11:20:10 <maerwald> talismanick: which one
11:20:51 <talismanick> maerwald: Version of ghcup? Whichever's latest from the website - I didn't pipe directly to sh, but into a script which I then executed
11:21:06 <maerwald> which error
11:21:25 <talismanick> I looked at config.log in /tmp, and it was calling GCC with flags which don't exist, like -V
11:21:58 <maerwald> that's not ghcup, that's the GHC configure script
11:22:01 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
11:22:14 <maerwald> so it failed during installing the bindist?
11:22:32 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:22:43 <talismanick> yeah
11:22:57 <maerwald> can you reproduce the error when running configure?
11:23:25 <talismanick> maerwald: Correct. I tried it 2x.
11:23:42 <maerwald> what's the exact error then?
11:24:01 <maerwald> not all errors in config.log are fatal
11:24:48 <talismanick> https://0x0.st/-nTw.log
11:25:15 <talismanick> maerwald: Yeah, but it does list 2 errors as "fatal"
11:25:46 <maerwald> it's just probing your gcc for cli flags afaik
11:26:04 <maerwald> error: cannot run C compiled programs.
11:26:07 <maerwald> this looks relevant
11:26:59 <tomsmeding> in particular that "permission denied"
11:27:13 <tomsmeding> is your /tmp on a partition which does not allow executing executables?
11:27:13 <talismanick> I don't remember running it with sudo
11:27:26 tomsmeding thinks that's the noexec mount option, but might remember incorrectly
11:28:03 <talismanick> tomsmeding: Well, I remember setting tmp with "nosuid" in /etc/fstab not long ago
11:28:09 <talismanick> Here's the whole line: tmpfs /tmp tmpfs defaults,nosuid,nodev 0 0
11:28:13 <maerwald> talismanick: run the script with TMPDIR=$HOME/.ghcup-tmp or so set
11:28:49 <maerwald> I believe cabal itself will bail out badly too if it can't execute binaries in /tmp
11:28:51 johnjay joins (~pi@192.142.100.50)
11:29:08 <tomsmeding> talismanick: try what maerwald suggests; if that does work, 'mount | grep /tmp' and see what flags are there (I have nosuid too, works fine)
11:29:15 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
11:30:37 img joins (~img@user/img)
11:31:11 <talismanick> tomsmeding: Good call - there is indeed a noexec flag set
11:31:18 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
11:31:29 <tomsmeding> no idea how that might end up there, but that's probably the issue here
11:31:43 <maerwald> it's an odd choice
11:31:54 <maerwald> I don't see that improving security
11:32:12 <talismanick> tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noexec,noatime,size=6291456k,inode64)
11:32:38 <talismanick> I don't remember ever writing that explicitly - could it be that btrfs put it there?
11:32:38 geekosaur joins (~geekosaur@xmonad/geekosaur)
11:32:51 × dcl^ quits (~dcl@wsip-98-188-242-6.mc.at.cox.net) (Remote host closed the connection)
11:33:00 <maerwald> at any rate, check out https://www.haskell.org/ghcup/guide/#env-variables
11:33:23 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
11:33:32 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:35:06 <talismanick> maerwald: I think I've seen that at some point - I have the XDG option set in ~/.bash_profile already
11:35:13 <hpc> it stops a lot of lazy malware - /tmp is one of those places every user needs to write to, so it's a good place to drop the next stage of an attack after you have disk access
11:36:14 <maerwald> malware?
11:36:20 <maerwald> like ghcup? :D
11:36:40 <hpc> like php :D
11:36:51 <talismanick> write and compile hello_world.c => "Windows detected malware and deleted it"
11:39:44 dsrt^ joins (~dsrt@wsip-98-188-242-6.mc.at.cox.net)
11:40:02 × rond_ quits (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Quit: Client closed)
11:44:25 <bontaq> lmao
11:45:29 <talismanick> Anyways, I remounted /tmp with "exec" in the args, and it works fine now
11:46:22 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
11:48:46 tomsmeding wonders why a tmpfs has noatime set -- that's for increasing performance due to not performing additional non-sequential writes for each file update, right? But tmpfs is an in-memory file system, so that shouldn't matter much
11:49:37 <hpc> atime is access time?
11:49:43 <hpc> it probably improves read performance enough to be worth it
11:49:46 <geekosaur> tmpfs is more complicated than that iirc. in particular it can use otherwise free swap space
11:50:18 <tomsmeding> ah
11:50:20 <talismanick> hpc: Don't ask me, I don't know why. I posted the tmpfs line in /etc/fstab, which is roughly what you'd expect
11:50:28 zincy_ joins (~zincy@host86-181-60-139.range86-181.btcentralplus.com)
11:50:38 <tomsmeding> talismanick: hpc responded to me I think :p
11:50:48 <talismanick> oh, duh
11:50:50 <talismanick> tired
11:50:56 peterhil joins (~peterhil@mobile-access-5672f1-161.dhcp.inet.fi)
11:51:21 oxide joins (~lambda@user/oxide)
11:53:03 <hpc> :P
11:59:20 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
11:59:29 × max22- quits (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Ping timeout: 264 seconds)
11:59:35 × JimL quits (~quassel@89-162-2-132.fiber.signal.no) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
11:59:54 JimL joins (~quassel@89-162-2-132.fiber.signal.no)
12:00:27 × JimL quits (~quassel@89-162-2-132.fiber.signal.no) (Client Quit)
12:00:45 JimL joins (~quassel@89-162-2-132.fiber.signal.no)
12:04:55 guniberas joins (~guniberas@42.191.188.121)
12:06:33 bongobrown joins (~bongobrow@cpe-76-185-215-2.satx.res.rr.com)
12:19:59 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Quit: Leaving)
12:21:11 geekosaur joins (~geekosaur@xmonad/geekosaur)
12:24:41 × peterhil quits (~peterhil@mobile-access-5672f1-161.dhcp.inet.fi) (Ping timeout: 264 seconds)
12:27:39 slowButPresent joins (~slowButPr@user/slowbutpresent)
12:31:22 cfricke joins (~cfricke@user/cfricke)
12:31:27 × zincy_ quits (~zincy@host86-181-60-139.range86-181.btcentralplus.com) (Remote host closed the connection)
12:32:03 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
12:36:04 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
12:37:27 img joins (~img@user/img)
12:38:56 CiaoSen joins (~Jura@p200300c95730dd002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
12:42:45 × dsrt^ quits (~dsrt@wsip-98-188-242-6.mc.at.cox.net) (Remote host closed the connection)
12:44:40 peterhil joins (~peterhil@mobile-access-5672f1-161.dhcp.inet.fi)
12:56:41 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
12:56:56 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
12:57:07 lavaman joins (~lavaman@98.38.249.169)
12:58:37 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
12:58:59 Vajb joins (~Vajb@n8vwdu04eps78g521-2.v6.elisa-mobile.fi)
13:01:55 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 260 seconds)
13:05:47 × peterhil quits (~peterhil@mobile-access-5672f1-161.dhcp.inet.fi) (Ping timeout: 264 seconds)
13:06:58 <maerwald> I can't coerce if the target data constructor is not in scope?
13:07:26 <merijn> maerwald: You mean newtype constructor, presumably? And correct
13:07:35 <maerwald> yes
13:07:39 peterhil joins (~peterhil@mobile-access-5672f1-161.dhcp.inet.fi)
13:08:05 <merijn> Can't coerce without visible constructor (to allow abstract datatypes that can't be coerced)
13:08:21 <maerwald> is there a hack to make it work?
13:08:27 <merijn> unsafeCoerce? :p
13:09:05 × hpc quits (~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 260 seconds)
13:10:53 hpc joins (~juzz@ip98-169-35-13.dc.dc.cox.net)
13:11:02 kn07_ joins (~kn07_@86.121.23.168)
13:12:07 <maerwald> well, that was easy
13:12:22 <maerwald> packages not exposing internal modules are annoying
13:14:42 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds)
13:15:33 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
13:15:39 Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
13:16:01 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
13:17:53 <Tisoxin> There aren't any laws for the Alternative type class, are there?
13:18:19 azimut joins (~azimut@gateway/tor-sasl/azimut)
13:19:27 × CiaoSen quits (~Jura@p200300c95730dd002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Quit: CiaoSen)
13:20:14 yrlnry joins (~mjd@pool-74-109-22-90.phlapa.fios.verizon.net)
13:23:09 × hendursa1 quits (~weechat@user/hendursaga) (Ping timeout: 276 seconds)
13:23:30 <Tisoxin> nvm
13:24:57 hendursa1 joins (~weechat@user/hendursaga)
13:27:40 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
13:28:19 jpds joins (~jpds@gateway/tor-sasl/jpds)
13:36:21 × jumper149 quits (~jumper149@80.240.31.34) (Quit: WeeChat 3.2)
13:37:17 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
13:38:29 shriekingnoise joins (~shrieking@186.137.144.80)
13:38:30 MQ-17J joins (~MQ-17J@8.6.144.203)
13:38:44 amazigh parts (~amirouche@user/amirouche) (WeeChat 2.8)
13:39:17 fendor joins (~fendor@178.115.69.86.wireless.dyn.drei.com)
13:39:50 <lortabac> Tisoxin: that's a good question, I would say it should have the same laws as Monoid, but perhaps different laws are also possible and no agreement has been reached
13:40:11 × wonko quits (~wjc@user/wonko) (Ping timeout: 246 seconds)
13:41:00 <lortabac> it would be interesting to read the discussions that led to the absence of laws in the documentation
13:42:16 <lortabac> maybe, given the superclass constraint, the Applicative laws are enough?
13:43:40 <merijn> Alternative laws are associativity + identity
13:43:42 <merijn> So same as monoid
13:43:51 <merijn> That part is uncontroversial, afaik
13:44:02 <merijn> The controversy is the relation between Alternative/MonadPlus
13:44:08 <maerwald> anyone tried GHC under wine?
13:44:28 <lortabac> merijn: but why aren't they mentioned in the documentation?
13:44:29 <maerwald> I'm getting tired of coding inside a windows VM
13:45:28 <merijn> lortabac: They are? "A monoid on applicative functors." and empty says "The identity of <|>" and <|> says "An associative binary operation"
13:45:38 × gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection)
13:46:07 <merijn> lortabac: The real controversy is mzero/mplus
13:46:23 gehmehgeh joins (~user@user/gehmehgeh)
13:46:33 <merijn> lortabac: Specifically the docs say: "v >> mzero = mzero" but does that mean the effects of 'v' happened or not?
13:46:55 <lortabac> merijn: right, I was looking for an explicit list of laws as the other classes
13:47:25 <merijn> lortabac: Yeah, I recall that existing in the past (but maybe I imagined it?), should be easy for someone to add that, though
13:48:31 × Kaiepi quits (~Kaiepi@156.34.44.192) (Remote host closed the connection)
13:49:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Quit: restart)
13:50:31 <geekosaur> might check the Typeclassopedia
13:51:02 <geekosaur> although if it's there then someone should really add it to the class docs
13:51:47 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:52:51 <lortabac> I'm reading the Typeclassopedia, it explains the problem well
13:56:29 × peterhil quits (~peterhil@mobile-access-5672f1-161.dhcp.inet.fi) (Ping timeout: 264 seconds)
13:58:40 × ubert quits (~Thunderbi@178.165.162.187.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
14:00:34 peterhil joins (~peterhil@mobile-access-5672f1-161.dhcp.inet.fi)
14:00:59 × dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3)
14:04:00 × MQ-17J quits (~MQ-17J@8.6.144.203) (Ping timeout: 260 seconds)
14:07:49 MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com)
14:09:32 × lortabac quits (~lortabac@atoulouse-256-1-14-70.w92-136.abo.wanadoo.fr) (Quit: WeeChat 2.8)
14:12:16 acidjnk_new joins (~acidjnk@p200300d0c7238d78f12f2b4aa168a17a.dip0.t-ipconnect.de)
14:13:08 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
14:17:28 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:90ed:9a10:88ac:8dca)
14:21:46 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:90ed:9a10:88ac:8dca) (Ping timeout: 245 seconds)
14:22:59 faultline joins (~christian@193.27.14.21)
14:24:32 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.3)
14:25:16 <Tisoxin> <merijn> "lortabac: Specifically the..." <- i stumpled upon this controvery due to megaparsecs ParsecT: https://hackage.haskell.org/package/megaparsec-9.2.0/docs/Text-Megaparsec.html#t:ParsecT
14:27:20 <merijn> Well, it's not a law in the docs, because people can't agree on it :p
14:27:30 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Quit: relog)
14:27:57 <Tisoxin> yeah
14:30:48 zer0bitz joins (~zer0bitz@dsl-hkibng31-54fae3-116.dhcp.inet.fi)
14:32:42 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
14:36:53 <adamCS> maerwald: Thanks again for all the help yesterday! Using the ByteString functions as a Streamly unfold ends up 3 times faster than Text.hGetline. I can see from all your fine tuned inline pragmas that there's some subtlety to inlining well for streamly. Any place you would go to read/learn about that? I'm onto to optimizing another bit that I would like to fuse as nicely as possible...
14:37:57 <maerwald> adamCS: https://github.com/composewell/streamly/blob/master/docs/optimizing.md
14:38:53 <maerwald> what do you mean with "ByteString functions as Streamly unfold"? Did you use streamly-bytestring with the elemIndex?
14:39:21 <adamCS> No. Just used your function to feed Streamly.Unfold.unfoldr
14:39:23 Sgeo joins (~Sgeo@user/sgeo)
14:39:24 <adamCS> more or less
14:39:56 <maerwald> https://hackage.haskell.org/package/streamly-0.8.0/docs/Streamly-Prelude.html#v:unfoldr
14:39:59 <maerwald> that way?
14:40:40 <maerwald> I still feel it's kinda a hack
14:40:52 <maerwald> Because we're relying on lazy bytestring
14:41:00 <adamCS> https://gist.github.com/adamConnerSax/f115bb26a15e597d1199d42af2645568
14:41:42 <adamCS> Sure. I'm just trying to make a thing faster though, so it's a win. 10 times faster than Pipes using Pipes.Text and feeding Pipes via that same function didn't speed that up much. Which is confusing.
14:41:50 <maerwald> yeah, but we're not using streamly to read the file now, which is sad
14:42:33 <maerwald> although we could: https://hackage.haskell.org/package/streamly-bytestring-0.1.3/docs/Streamly-External-ByteString-Lazy.html
14:42:44 × peterhil quits (~peterhil@mobile-access-5672f1-161.dhcp.inet.fi) (Ping timeout: 260 seconds)
14:42:48 <merijn> adamCS: I mean, bytestring being faster than Text is kinda obvious, though? You save a lot of effort if you don't bother decoding the data
14:42:59 <maerwald> merijn: not necessarily
14:42:59 × Vajb quits (~Vajb@n8vwdu04eps78g521-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer)
14:43:09 <maerwald> the reason it's faster is only because we use `elemIndex` and nothing else
14:43:09 <merijn> maerwald: Not necessarily what?
14:43:15 <maerwald> which uses memchr
14:43:21 <adamCS> merijn: But I do decode it, after it's broken into lines as ByteString
14:43:23 <maerwald> some other bytestring functions don't
14:43:47 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
14:43:50 <maerwald> in fact, most bytestring functions have their own hot loop with pointer aritmetic
14:43:55 <maerwald> which is much slower than memchr
14:44:33 <maerwald> abusing elemIndex is also how chris made the fast xml parser: https://chrisdone.com/posts/fast-haskell-c-parsing-xml/
14:44:46 <maerwald> which is faster than most C implementations even
14:45:02 <maerwald> now... if we could trick streamly into using elemIndex in our parser
14:45:21 <maerwald> that would be really cool... because then we have the speed of the xeno approach, but with an API that doesn't suck
14:45:48 <maerwald> (internal API, but still... did you look at the xeno code? ugh.)
14:47:21 <maerwald> but I'm susprised that a very simple char-by-char Fold in streamly is faster than attoparsec
14:47:30 surgeon[m] joins (~surge9nma@2001:470:69fc:105::f585)
14:47:38 max22- joins (~maxime@2a01cb08833598004910fadca795f245.ipv6.abo.wanadoo.fr)
14:47:51 <maerwald> but it's true this feels more like experimentation than a stable API
14:48:41 <adamCS> Yeah. I'm going to be sad if Unfold disappears. Is to be replaced by "Producer" or something else? Just the move from 0.7 to 0.8 was sorta painful. My own fault for using all sorts of "Internal" modules.
14:49:20 peterhil joins (~peterhil@mobile-access-5672f1-161.dhcp.inet.fi)
14:49:21 <maerwald> they don't have funding for streamly... this is something HF should address imo
14:49:31 × peterhil quits (~peterhil@mobile-access-5672f1-161.dhcp.inet.fi) (Read error: Connection reset by peer)
14:49:31 <maerwald> it needs a lot of work
14:49:53 peterhil joins (~peterhil@mobile-access-5672f1-161.dhcp.inet.fi)
14:50:58 myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net)
14:51:07 <adamCS> And I find the performance good but mysterious. I worked for a bit yesterday to take a thing I do a lot: load from csv to Text lines, turn each text line into a Vinyl record, transform the record into a different record, possibly filtering, so (Record rs -> Maybe (Record rs')) and then load that into Frames in-core AoS representation.
14:51:57 <adamCS> Each step is streamly, unfold to Text, scan to process headers and then tokenize and convert the lines, map to do the transformation and then a fold into the AoS structure.
14:52:05 × kn07_ quits (~kn07_@86.121.23.168) (Quit: Leaving)
14:52:32 <adamCS> But the version that uses separate functions is faster. Which is inexplicable to me unless I have an inlining issue. Which I probably do.
14:52:49 × vpan quits (~0@212.117.1.172) (Quit: Leaving.)
14:53:12 bitmapper joins (uid464869@id-464869.lymington.irccloud.com)
14:58:45 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
15:00:08 mc47 joins (~mc47@xmonad/TheMC47)
15:05:35 <maerwald> adamCS: I still think there's a problem that needs to be solved in streamly. Namely chunked parsing... because you can only say "backtrack an entire element", but you can't say "drop the element, but then prepend this to the input of the next parser"
15:06:09 <maerwald> I think this is due to how nested backtracking works
15:06:32 <maerwald> I briefly lookd at the code and it doesn't seem there's an easy hack
15:06:46 <adamCS> Yes. That seems like it would be useful, that the next element you process should be produced by a function of the current state and the next element in the stream.
15:07:42 <maerwald> my suspicion is that using elemIndex within chunk boundaries and then forwarding to the next chunk will be as fast as the same on lazy ByteString
15:08:32 <maerwald> also, Folds will get a monadic interface
15:08:50 mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
15:08:51 <maerwald> they seem to be generally faster than parsers, probably due to lack of backtracking
15:09:11 <maerwald> (even if you don't use the backtracking)
15:20:38 × acidjnk_new quits (~acidjnk@p200300d0c7238d78f12f2b4aa168a17a.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
15:24:02 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:90ed:9a10:88ac:8dca)
15:28:24 cfricke joins (~cfricke@user/cfricke)
15:31:43 <Boarders> is there a way to get around "Unrecognised pragma for {#- HLINT ignore #-} ?
15:32:19 <merijn> Not currently
15:32:27 <merijn> Besides "don't use the pragma syntax"
15:32:50 <Boarders> I'll see if hlint has an option to turn off all checks in a module using yaml
15:33:17 <Boarders> I think it does
15:33:24 fizzsegfaultbuzz joins (~segfaultf@135-180-0-138.static.sonic.net)
15:34:22 <monochrom> Which program is giving the "Unrecognised pragma" message? GHC? hlint?
15:34:32 <Boarders> GHC via ghcid
15:35:04 <merijn> GHC
15:35:21 <geekosaur> it's a warning, I believe
15:35:26 <merijn> Anything using the {-# #-} pragma syntax that GHC doesn't know produces a warning
15:36:07 <merijn> There was a big discussion on how to handle tool pragmas like hlint a while (several years, possibly) ago, but not sure what the end conclusion was
15:36:59 × peterhil quits (~peterhil@mobile-access-5672f1-161.dhcp.inet.fi) (Ping timeout: 264 seconds)
15:37:22 <geekosaur> the battle between the tools folks and the LANGAUGE folks :þ
15:37:38 <monochrom> haha
15:38:01 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:90ed:9a10:88ac:8dca) (Remote host closed the connection)
15:38:52 <remexre> am I understanding correctly if it seems like (in the "instance resolution is Prolog" metaphor) every rule has a cut?
15:39:09 peterhil joins (~peterhil@mobile-access-5672f1-161.dhcp.inet.fi)
15:39:16 <monochrom> Yes.
15:39:17 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:90ed:9a10:88ac:8dca)
15:39:43 <remexre> is there a way to... not have that?
15:39:50 <monochrom> No.
15:40:59 <remexre> any suggestings for making a printf-like that "finally" returns an arbitrary MonadIO? Right now I have instances {-# OVERLAPPING #-} (LogFunction func, ToJSON a) => LogFunction (a -> func) and {-# OVERLAPPABLE #-} (MonadIO m, a ~ ()) => LogFunction (m a)
15:41:00 <monochrom> Or yes if you reimagine Haskell to defer resolution to link time and therefore you enjoy a CWA therefore backtracking makes sense again.
15:41:09 <remexre> CWA?
15:41:15 <monochrom> closed-world assumption
15:41:25 <monochrom> the anti-thesis to separate compilation
15:41:39 <monochrom> You do know Prolog, right? RIGHT?
15:41:49 <remexre> yes, but not for AI, for logic :P
15:41:59 × Franciman quits (~Franciman@mx1.fracta.dev) (Remote host closed the connection)
15:42:12 <monochrom> I learned CWA in the context of "prolog as a logic" too.
15:42:42 <monochrom> It is why "negation" "makes" "sense" in Prolog.
15:42:45 <remexre> I've heard the term (though idk if it was from Prolog or general AI stuff), but never seen the acronym before, prolog or otherwise... anyway
15:42:47 Franciman joins (~Franciman@mx1.fracta.dev)
15:42:54 <remexre> I guess I'd need something to prevent a (MonadIO (r -> a)) instance from being written
15:43:06 <remexre> er, (MonadIO ((->) r)))
15:45:27 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
15:45:48 <monochrom> Often we create newtypes to get it going.
15:45:56 × Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 245 seconds)
15:47:36 × zer0bitz quits (~zer0bitz@dsl-hkibng31-54fae3-116.dhcp.inet.fi) (Ping timeout: 260 seconds)
15:48:19 <remexre> hm, any way to do that without changing the signature? This works with a concrete IO instead of the MonadIO, but avoiding needing to use liftIO every time is "the point"
15:49:26 × d0ku quits (~d0ku@178.43.150.25.ipv4.supernova.orange.pl) (Remote host closed the connection)
15:52:28 fendor_ joins (~fendor@178.115.69.81.wireless.dyn.drei.com)
15:54:15 <monochrom> onoes GHC 9.2.1
15:54:20 <monochrom> I mean oyes :)
15:54:55 <shapr> oyes!
15:54:55 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
15:55:02 × fendor quits (~fendor@178.115.69.86.wireless.dyn.drei.com) (Ping timeout: 268 seconds)
15:55:13 MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com)
15:56:10 <monochrom> Haha GHC2021 in lieu of Haskell2021
15:56:24 × dajoer quits (~david@user/gvx) (Quit: leaving)
15:58:17 <monochrom> Ben ends the message with "happy testing". This is how confident the GHC devs are about this haha.
15:59:00 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
15:59:01 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.3)
15:59:14 <sprout> I can relate!
15:59:28 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
15:59:36 × Midjak quits (~Midjak@82-65-111-221.subs.proxad.net) (Quit: This computer has gone to sleep)
16:00:09 × monadfritz[m] quits (~ahdytmatr@2001:470:69fc:105::e1f1) (Quit: You have been kicked for being idle)
16:02:06 <monochrom> I am now tempted to end all my emails with "Good luck with that, \n <my name>"
16:02:40 <monochrom> Example:
16:02:51 lbseale joins (~lbseale@user/ep1ctetus)
16:03:36 <monochrom> A student emails me to ask "is it OK for me to use do-notation on the exam, even though you didn't teach it?"
16:03:58 <monochrom> Reply: "Yes you may. \n \n Good luck with that, \n <my name>"
16:04:55 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 258 seconds)
16:11:04 × chele quits (~chele@user/chele) (Remote host closed the connection)
16:11:05 × talismanick quits (~talismani@76.78.246.111) (Remote host closed the connection)
16:12:48 × NinjaTrappeur quits (~ninja@user/ninjatrappeur) (Quit: WeeChat 3.3)
16:15:00 igghibu joins (~igghibu@37.120.201.125)
16:16:55 igghibu parts (~igghibu@37.120.201.125) ()
16:20:11 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
16:20:11 <myShoggoth> "Govern yourself accordingly,"
16:20:46 hyiltiz joins (~quassel@31.220.5.250)
16:21:39 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:23:07 NinjaTrappeur joins (~ninja@user/ninjatrappeur)
16:27:06 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
16:27:24 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:32:23 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
16:33:02 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:34:09 × MidAutumnMoon quits (~MidAutumn@user/midautumnmoon) (Quit: Ping timeout (120 seconds))
16:34:10 chexum_ joins (~quassel@gateway/tor-sasl/chexum)
16:34:20 MidAutumnMoon joins (~MidAutumn@user/midautumnmoon)
16:34:32 × son0p quits (~ff@181.136.122.143) (Ping timeout: 244 seconds)
16:34:33 × mrianbloom quits (sid350277@ilkley.irccloud.com) (Ping timeout: 244 seconds)
16:34:33 × vito quits (sid1962@user/vito) (Ping timeout: 244 seconds)
16:34:33 × supersven quits (sid501114@ilkley.irccloud.com) (Ping timeout: 244 seconds)
16:34:43 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
16:35:04 × S11001001 quits (sid42510@ilkley.irccloud.com) (Ping timeout: 244 seconds)
16:35:04 × JSharp quits (sid4580@lymington.irccloud.com) (Ping timeout: 244 seconds)
16:35:04 × hendi quits (sid489601@lymington.irccloud.com) (Ping timeout: 244 seconds)
16:35:10 × orcus quits (~orcus@user/brprice) (Quit: ZNC 1.8.1 - https://znc.in)
16:35:30 orcus joins (~orcus@user/brprice)
16:35:35 × sa1 quits (sid7690@ilkley.irccloud.com) (Ping timeout: 244 seconds)
16:35:35 × bradparker quits (sid262931@uxbridge.irccloud.com) (Ping timeout: 244 seconds)
16:36:36 hendi joins (sid489601@id-489601.lymington.irccloud.com)
16:36:37 vito joins (sid1962@user/vito)
16:36:44 bradparker joins (sid262931@id-262931.uxbridge.irccloud.com)
16:36:49 sa1 joins (sid7690@id-7690.ilkley.irccloud.com)
16:36:56 JSharp joins (sid4580@id-4580.lymington.irccloud.com)
16:37:42 supersven joins (sid501114@id-501114.ilkley.irccloud.com)
16:37:43 mrianbloom joins (sid350277@id-350277.ilkley.irccloud.com)
16:38:14 S11001001 joins (sid42510@id-42510.ilkley.irccloud.com)
16:38:27 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
16:39:46 × hiruji quits (~hiruji@user/hiruji) (Ping timeout: 252 seconds)
16:40:45 × ft quits (~ft@shell.chaostreff-dortmund.de) (Ping timeout: 244 seconds)
16:41:42 ft joins (~ft@shell.chaostreff-dortmund.de)
16:42:20 harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
16:42:41 aegon joins (~mike@174.127.249.180)
16:45:36 zincy_ joins (~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e)
16:49:13 burnsidesLlama joins (~burnsides@dhcp168-040.wadham.ox.ac.uk)
16:55:13 × hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1)
16:55:40 hendursaga joins (~weechat@user/hendursaga)
16:56:11 fendor_ is now known as fendor
16:57:10 Bleant joins (~Bleant@2804:7f7:d68c:6ec3:f145:b950:2a0e:7ea8)
16:58:23 lavaman joins (~lavaman@98.38.249.169)
16:58:27 × Bleant quits (~Bleant@2804:7f7:d68c:6ec3:f145:b950:2a0e:7ea8) (Remote host closed the connection)
16:59:57 × zincy_ quits (~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e) (Remote host closed the connection)
17:03:23 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
17:04:12 hiruji joins (~hiruji@user/hiruji)
17:04:59 Katarushisu5 joins (~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net)
17:05:51 agander_m_ joins (sid407952@id-407952.tinside.irccloud.com)
17:05:52 meinside_ joins (uid24933@id-24933.helmsley.irccloud.com)
17:05:52 manicennui_ joins (uid349235@id-349235.tinside.irccloud.com)
17:05:52 pepeiborra_ joins (sid443799@id-443799.ilkley.irccloud.com)
17:05:52 aria_ joins (sid380617@id-380617.lymington.irccloud.com)
17:05:55 dpratt__ joins (sid193493@id-193493.helmsley.irccloud.com)
17:06:15 × bongobrown quits (~bongobrow@cpe-76-185-215-2.satx.res.rr.com) (Ping timeout: 258 seconds)
17:07:15 carbolymer_ joins (~carbolyme@dropacid.net)
17:08:06 cross_ joins (~cross@spitfire.i.gajendra.net)
17:08:20 × guniberas quits (~guniberas@42.191.188.121) (Ping timeout: 260 seconds)
17:08:48 motherfs1 joins (~motherfsc@user/motherfsck)
17:10:06 Guest6 joins (~Guest6@2a01cb0d04e290000a0027fffe32ed70.ipv6.abo.wanadoo.fr)
17:11:20 × peterhil quits (~peterhil@mobile-access-5672f1-161.dhcp.inet.fi) (Ping timeout: 265 seconds)
17:13:19 × motherfsck quits (~motherfsc@user/motherfsck) (*.net *.split)
17:13:19 × Katarushisu quits (~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net) (*.net *.split)
17:13:19 × Ekho quits (~Ekho@user/ekho) (*.net *.split)
17:13:20 × carbolymer quits (~carbolyme@dropacid.net) (*.net *.split)
17:13:20 × cross quits (~cross@spitfire.i.gajendra.net) (*.net *.split)
17:13:20 × pepeiborra quits (sid443799@ilkley.irccloud.com) (*.net *.split)
17:13:20 × manicennui quits (uid349235@tinside.irccloud.com) (*.net *.split)
17:13:20 × aria quits (sid380617@lymington.irccloud.com) (*.net *.split)
17:13:20 × meinside quits (uid24933@helmsley.irccloud.com) (*.net *.split)
17:13:20 × agander_m quits (sid407952@tinside.irccloud.com) (*.net *.split)
17:13:20 × dpratt_ quits (sid193493@helmsley.irccloud.com) (*.net *.split)
17:13:20 Katarushisu5 is now known as Katarushisu
17:13:20 dpratt__ is now known as dpratt_
17:13:20 pepeiborra_ is now known as pepeiborra
17:13:20 meinside_ is now known as meinside
17:13:20 manicennui_ is now known as manicennui
17:13:20 aria_ is now known as aria
17:13:20 agander_m_ is now known as agander_m
17:15:00 Ekho- joins (~Ekho@user/ekho)
17:16:17 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:16:28 zincy_ joins (~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e)
17:21:00 × zincy_ quits (~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e) (Ping timeout: 265 seconds)
17:23:11 Pickchea joins (~private@user/pickchea)
17:23:15 econo joins (uid147250@user/econo)
17:23:41 Ekho- is now known as Ekho
17:31:40 lavaman joins (~lavaman@98.38.249.169)
17:32:39 <lbseale> can I automatically derive NFData for an arbitrary record type?
17:33:03 <maerwald> with Generic
17:33:22 <lbseale> nice
17:33:58 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:90ed:9a10:88ac:8dca) (Remote host closed the connection)
17:34:34 Kaiepi joins (~Kaiepi@156.34.44.192)
17:34:40 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: djvksd)
17:35:46 × harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Ping timeout: 258 seconds)
17:39:48 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
17:40:00 lavaman joins (~lavaman@98.38.249.169)
17:40:58 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
17:41:11 × hiruji quits (~hiruji@user/hiruji) (Ping timeout: 264 seconds)
17:41:46 chomwitt joins (~chomwitt@2a02:587:dc12:b600:12c3:7bff:fe6d:d374)
17:43:14 jil joins (~user@160.155.45.49)
17:43:19 <jil> hello
17:44:29 <jil> I'm a begginer, learning haskell and I would like to define a type for different sets of digit.
17:46:43 <pavonia> Welcome
17:47:57 <jil> I could do `data Digit2 = Zero | One` or `data Digit6 = Zero | One | ... | Five` but I would like a more generic approche using Exiting Int or Char. For exemple `data Digits n` would be '0' | '1' | ... | nth -1 symbol of a predefined sequence
17:48:17 × Guest6 quits (~Guest6@2a01cb0d04e290000a0027fffe32ed70.ipv6.abo.wanadoo.fr) (Ping timeout: 256 seconds)
17:49:20 <jil> How do I do that ? and Why can't I do `data Digit2 = 0 | 1` ? I want a Digit2 to be an Int and it's successor .
17:49:29 <jil> hello pavonia
17:49:58 zincy_ joins (~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e)
17:50:06 <jil> or Digit2 to be two successive Char
17:50:47 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
17:51:10 <yrlnry> `Data` defines a new data type. If it let you `data Digit2 = 0 | 1`, then when the Haskell compiler saw a `0` in your code, it wouldn't know whether you meant the Data2 value 0 or the integer value 0.
17:52:40 <yrlnry> You can do `Data2 = D0 | D1`. Or you can tell Haskell that `Data2` is an instance of `Num`, and then define a `fromInteger` function for it that says how Haskell should interpret a `0` or a `1` that is being used in a place where it expected a `Digit2`.
17:53:16 <dsal> That gets partial if it's not modular, though. Because what does `4 :: Digit2` mean?
17:53:35 <awpr> it means "good luck debugging this with no stack trace" :)
17:53:54 <awpr> partial Num instances cause unbounded pain
17:53:58 <yrlnry> Presumably for this application partial is acceptable, it should complain `4 is not a permitted digit` or something.
17:54:41 <dsal> Partial functions are more desirable in the beginning. :)
17:54:47 <monochrom> Worse than that. Most Num methods make no sense for the "digit" concept.
17:55:14 <awpr> an error sounds okay at first glance, but there's no way to find out where the problem came from without making a profiling build and using the RTS' stack traces
17:55:34 <yrlnry> What would be a better approach?
17:55:41 <awpr> not having a Num instance
17:55:57 <monochrom> Don't make the digit type a Num instance in the first place.
17:56:05 <jil> ok
17:56:07 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
17:56:07 <dsal> You can make an e-Num type. That's more high tech anyway.
17:56:12 <monochrom> Enum ought to be enough for that.
17:56:42 <awpr> I wrote this entire library and GHC plugin fueled by frustration with exactly this problem: https://hackage.haskell.org/package/dependent-literals-plugin
17:57:03 <yrlnry> Enum is probably a better idea, thanks.
17:57:16 <awpr> to make it possible to make numeric literals work with Fin, without ruining somebody's week whenever someone uses an out-of-range literal
17:57:48 <monochrom> Enum is precisely for "my type is just 10 constructors flat".
17:57:55 <awpr> (incidentally, `DigitN` is `Fin N`)
17:58:25 × zincy_ quits (~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e) (Ping timeout: 260 seconds)
17:59:00 × burnsidesLlama quits (~burnsides@dhcp168-040.wadham.ox.ac.uk) (Remote host closed the connection)
17:59:03 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:d4e:dbb8:1851:3894)
17:59:31 burnsidesLlama joins (~burnsides@dhcp168-040.wadham.ox.ac.uk)
18:00:11 × hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection)
18:00:57 <monochrom> Haha now I understand the e-Num joke.
18:02:30 hololeap joins (~hololeap@user/hololeap)
18:03:41 <pavonia> @quote beginner
18:03:41 <lambdabot> JohnHughes says: I would guess that the majority if compiler runs for beginners (and perhaps for the rest of us too!) end in a type error
18:04:15 × burnsidesLlama quits (~burnsides@dhcp168-040.wadham.ox.ac.uk) (Ping timeout: 260 seconds)
18:04:46 <pavonia> Wasn't there a quote about beginners asking an innocent question and being overwhelmed with type theory answers?
18:04:55 awpr hides
18:06:00 × yrlnry quits (~mjd@pool-74-109-22-90.phlapa.fios.verizon.net) (Ping timeout: 260 seconds)
18:07:53 × max22- quits (~maxime@2a01cb08833598004910fadca795f245.ipv6.abo.wanadoo.fr) (Ping timeout: 264 seconds)
18:07:54 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
18:08:20 MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com)
18:08:31 Farzad joins (~FarzadBek@37.49.150.10)
18:08:42 <geekosaur> @quote type.theory
18:08:42 <lambdabot> ggVGc says: haskell also has the gotcha of starting to write a program and ending up with a ultra-generic library for some new type theory concepts you just learnt
18:08:49 <geekosaur> @quote type.theory
18:08:49 <lambdabot> ggVGc says: haskell also has the gotcha of starting to write a program and ending up with a ultra-generic library for some new type theory concepts you just learnt
18:08:53 <geekosaur> hm
18:09:57 justsomeguy joins (~justsomeg@user/justsomeguy)
18:09:58 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
18:10:08 <shapr> @quote first-year
18:10:08 <lambdabot> TacticalGrace says: #haskell in action: discussion about first-year teaching turns into an argument about CT and Kan extensions
18:10:11 <shapr> that one?
18:10:23 × mbuf quits (~Shakthi@171.61.174.60) (Quit: Leaving)
18:10:34 MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com)
18:10:57 <shapr> @quote category theory
18:10:57 <lambdabot> No quotes for this person. You untyped fool!
18:11:00 <shapr> @quote category.theory
18:11:00 <lambdabot> mjrosenb says: <3 #haskell; "why doesn't this program typecheck?" ; 5 hours of category theory later, op left 4 hours ago
18:11:05 <shapr> @quote category.theory
18:11:05 <lambdabot> Botje says: the line between madness and category theory is a fine one indeed.
18:11:13 <shapr> too many category theory quotes
18:11:32 lavaman joins (~lavaman@98.38.249.169)
18:11:54 <earthy> there's no such thing as to many category theory... is there? :)
18:12:30 <monochrom> 2-many 2-category theory
18:14:14 × hololeap quits (~hololeap@user/hololeap) (Read error: Connection reset by peer)
18:14:17 <jil> awpr it's not clear exactly how to use you librari but I will try. I think It answer my question.
18:14:54 <pavonia> shapr: Hhm, maybe it was this first-year quote
18:15:08 <jil> I have another innocent beginner question.
18:15:13 <awpr> tbh it's probably too complicated for this use case if you're not willing to go to great lengths to get literals working
18:15:31 <jil> how do yo know in what package to find a specific function ?
18:15:33 hololeap joins (~hololeap@user/hololeap)
18:16:11 <geekosaur> hoogle
18:16:17 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
18:16:17 <awpr> hmm, if I added a `Wrapped Finite` impl, it might actually become easy...
18:16:27 <jil> in ghci :doc read will point to readMaybe. If one does not have acess to internet how can he find readMaybe is in Data.Text (from memory)
18:17:13 <awpr> `data Digit2 = D0 | D1 deriving Generic deriving Finite via Wrapped Generic Digit2 deriving HasIntLiterals via Wrapped Finite Digit2` isn't too bad.
18:17:25 <sm> jil, you can do what you just said, in ghci ?
18:17:27 <jil> wouhao !
18:17:33 <sm> you can also set up hoogle to work locally
18:18:00 <awpr> but I still think dependent-literals is overkill for this, honestly. I'd probably just use D0 and D1 directly
18:18:25 <jil> awpr but what about Fin 16, Fin 32 ect..
18:18:33 <jil> :doc read
18:19:00 <jil> points to readMaybe
18:19:06 <sm> or you can set up a more fancy local docs tool like `dash` or similar
18:19:11 <awpr> yeah, those are a bit more meaningful. if you want a lot of different radixes, I'd maybe find an existing Fin library (e.g. `fin-int` is one I maintain)
18:20:06 <jil> sm ok, I need a better IDE setup. any suggestion for a ghci runing in emacs ?
18:20:21 <sm> M-x shell, ghci
18:20:29 <jil> I'm not familliar with dash.
18:20:36 <awpr> that comes with dependent-literals support, but you can also just say `fin 5` if you don't want to deal with the plugin. (and that has a HasCallStack constraint, so if you call it on an out-of-range number, it'll at least tell you where)
18:20:37 <jil> sm That's what I use
18:20:50 <sm> also don't miss ghcid, it's great
18:21:10 <jil> ok sm. Thank you.
18:23:20 <sm> jil I also recommend spending a half hour to skim the haddocks for all of base and a few other main libraries (containers, mtl, text, safe, ...) - most of us did not do it and it can save a lot of time
18:23:41 <sm> likewise for the GHC user guide
18:24:45 thblt joins (~thblt@user/thblt)
18:24:47 <jil> :) ok.
18:24:56 <sm> oh and the stack and cabal user guides :)
18:25:08 <sm> THEN you'll be fine
18:26:30 <thblt> Is there a file manipulation library in Haskell that signals errors with types rather than exceptions? (Eg open :: FilePath -> IO (Either FileError Handle))
18:27:16 <monochrom> You can use Control.Exception's "try".
18:27:17 <jil> sm I'm trying to finish Hutton_G_Programming_in_Haskell-Cambridge_University_Press_2018.pdf
18:27:39 <sm> good one
18:27:59 <sm> he has more recent lessons on youtube also
18:28:48 <sm> @where HTAC
18:28:48 <sm> is also good
18:29:22 <sm> @where HTAC , I say
18:29:22 <lambdabot> "Haskell Tutorial and Cookbook" by Mark Watson in 2017-09-04 at <https://leanpub.com/haskell-cookbook>
18:30:22 × oxide quits (~lambda@user/oxide) (Quit: oxide)
18:31:48 alx741 joins (~alx741@186.178.109.79)
18:34:29 unit73e joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
18:35:16 <thblt> monochrom: thanks
18:36:03 zincy_ joins (~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e)
18:36:24 max22- joins (~maxime@2a01cb0883359800df57ac14517550fc.ipv6.abo.wanadoo.fr)
18:37:40 ubert joins (~Thunderbi@178.115.53.120.wireless.dyn.drei.com)
18:39:47 burnsidesLlama joins (~burnsides@dhcp168-040.wadham.ox.ac.uk)
18:44:37 × burnsidesLlama quits (~burnsides@dhcp168-040.wadham.ox.ac.uk) (Ping timeout: 268 seconds)
18:45:59 × motherfs1 quits (~motherfsc@user/motherfsck) (Quit: quit)
18:47:15 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
18:49:14 ubert1 joins (~Thunderbi@178.115.53.120.wireless.dyn.drei.com)
18:49:39 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:d4e:dbb8:1851:3894) (Remote host closed the connection)
18:59:06 × zincy_ quits (~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e) (Remote host closed the connection)
19:01:43 vicfred joins (~vicfred@user/vicfred)
19:01:54 motherfsck joins (~motherfsc@user/motherfsck)
19:02:03 <maerwald> whats the conversion from `NominalDiffTime` to `EpochTime`? fromIntegral?
19:04:01 <monochrom> I have a feeling that realToFrac is closer.
19:04:10 <maerwald> doesn't work
19:04:23 <maerwald> No Instance for Fractional Epochtime
19:04:35 zincy_ joins (~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e)
19:04:48 <monochrom> Ah right. But NominalDiffTime is not Integral either.
19:07:00 <monochrom> Perhaps truncate or round. NominalDiffTime is sub-seconds, but its integral part means seconds.
19:07:06 Null_A joins (~null_a@2601:645:8700:2290:19ff:7d99:67c6:79e3)
19:07:43 <maerwald> that doesn't sound too sure :D
19:08:06 <maerwald> there's `nominalDiffTimeToSeconds`, but then I got Pico, wtf
19:08:15 <monochrom> Well, in the first place, I am not sure that NominalDiffTime and EpochTime stand for the same idea.
19:09:24 <monochrom> One is a duration, the other is an absolute point.
19:09:44 <monochrom> Although you could wing it and say "I just mean CTime"
19:09:45 <maerwald> well, type POSIXTime = NominalDiffTime
19:10:05 <maerwald> I have UTCTime and want EpochTime (which is CTime)
19:10:12 <maerwald> so: utcTimeToPOSIXSeconds :: UTCTime -> POSIXTime
19:10:18 <maerwald> then I'm stuck with NominalDiffTime
19:10:43 <maerwald> CTime is Real and Num
19:10:44 <monochrom> Pico is just another Fractional instance that you can use truncate/round on.
19:11:38 <maerwald> well, then I have an Integral
19:11:40 wootehfoot joins (~wootehfoo@user/wootehfoot)
19:11:50 <maerwald> CTime isn't
19:11:52 <monochrom> Well, on all known GHC platforms that have System.Posix, CTime is also just a newtype around Int64.
19:12:28 <maerwald> I wish there was a time library that isn't awful
19:12:56 <monochrom> Plus, "According to POSIX, it shall be an integer type." from a linux man page about time_t
19:13:03 × hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection)
19:13:04 × zincy_ quits (~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e) (Remote host closed the connection)
19:13:17 <monochrom> Me, I wish there were no pretended abstractions like this.
19:13:32 <maerwald> `fromInteger . floor . nominalDiffTimeToSeconds . utcTimeToPOSIXSeconds`
19:13:38 <maerwald> but now I really have no idea what that does
19:13:46 <monochrom> "Oh CTime is platform-dependent we can't tell you it's an integer". Platform-dependent my ass.
19:14:00 <maerwald> I'm just gonna assume it's correct
19:14:17 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:d4e:dbb8:1851:3894)
19:14:30 hololeap joins (~hololeap@user/hololeap)
19:14:52 yrlnry joins (~mjd@pool-74-109-22-90.phlapa.fios.verizon.net)
19:15:18 <maerwald> this is where I miss javascript
19:15:30 <maerwald> don't care, just throw it in, it'll be fine!
19:17:36 <monochrom> Pretty sure you don't need nominalDiffTimeToSeconds
19:18:01 <monochrom> NomimalDiffTime is just a newtype around Pico. nominalDiffTimeToSeconds just unwraps.
19:18:29 <monochrom> This is why whereas Pico is Fractional, so is NominalDiffTime.
19:20:28 <maerwald> those are all really interesing things... but why can't we have a simple tables with those conversions, which also clearly indicates if you lose precision etc.
19:21:30 <monochrom> FWIW why do you have UTCTime in the first place? If you called getCurrentTime, perhaps replace with epochTime?
19:22:11 <maerwald> EpochTime is unix-specific isn't it?
19:22:22 <maerwald> I want to be cross-platform
19:23:08 <monochrom> OK, you are converting something to EpochTime for cross-platform?
19:23:30 <maerwald> yes, that's the unix module
19:23:36 <maerwald> but the type must not leak
19:23:38 <monochrom> I would think sticking to UTCTime and NominalDiffTime was the cross-platform way.
19:23:45 <monochrom> Ah OK.
19:24:09 burnsidesLlama joins (~burnsides@dhcp168-040.wadham.ox.ac.uk)
19:24:47 <maerwald> I'm becoming a fan of DList
19:24:57 <monochrom> Oh well yeah use rounding and use the "forbidden" knowledge that EpochTime = CTime = newtype of Int32/64/doesn't matter.
19:25:19 <maerwald> `fromInteger . floor . utcTimeToPOSIXSeconds` typechecks
19:25:38 <maerwald> users will tell me if it does the correct thing after their systems crashed
19:27:23 × emf quits (~emf@2620:10d:c090:400::5:5ca4) (Ping timeout: 264 seconds)
19:27:23 <monochrom> But yeah a table would be nice.
19:27:47 <maerwald> DList.toList is nicely lazy, so you can append in O(1) in your fold and then turn it back almost zero-cost, right?
19:28:04 <maerwald> neglecting the memory overhead
19:29:05 <monochrom> Yes, to a large extent, all those "ByteString.Builder" "Text.Builder" "Foo.Builder" "Bar.Builder" are DLists.
19:29:30 emf joins (~emf@c-73-97-137-43.hsd1.wa.comcast.net)
19:29:36 × emf quits (~emf@c-73-97-137-43.hsd1.wa.comcast.net) (Client Quit)
19:31:00 × Farzad quits (~FarzadBek@37.49.150.10) (Quit: Leaving)
19:34:03 <hololeap> I'm running on Gentoo with the haskell repo and so I have all of my packages installed at a system level (ultimately using cabal packages converted to gentoo packages)
19:34:27 <hololeap> I'm experimenting with running hoogle as a systemd service
19:35:05 <hololeap> when a package is done installing, I have a hook that runs: /usr/bin/hoogle generate --local -- $n
19:35:16 <hololeap> where $n is the name of the cabal package
19:35:25 <shapr> hololeap: I'm running hoogle in nix and working my way towards nix-copy-closure to 'deploy' the server.
19:36:01 <hololeap> the problem is that hoogle crashes when I try to connect after this and only resumes after doing a full generate
19:36:02 <shapr> and yeah, a systemd service for restarting
19:36:39 <shapr> hololeap: I switched to nix because stack hoogle things have several layers of broken
19:36:42 <shapr> are you using cabal?
19:37:11 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 246 seconds)
19:37:20 zincy_ joins (~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e)
19:37:27 <hololeap> shapr: sort of kind of? gentoo uses Setup.hs behind the scenes to run configure, build, test, etc
19:38:36 <hololeap> I'm wondering how hoogle.haskell.org updates when there is a new version/package pushed to hackage
19:38:56 <hololeap> because it doesn't seem to like this style of incremental update
19:39:02 <shapr> We have 500kloc (excluding whitespace lines) of Haskell in our monorepo, a hoogle server makes it easier to find things.
19:39:26 <shapr> oh, your question is whether hoogle supports incremental updates?
19:39:31 <shapr> I always have to do a full rebuild.
19:39:35 <hololeap> more or less
19:39:50 <monochrom> I don't know hoogle, but I would think the safe default thing to do is: kill the server before generate, start the server after.
19:40:04 <shapr> I'd bet changing haddocks could be done incrementally, but I don't know about reindexing to build the hoogle db
19:41:34 <hololeap> monochrom: the package manager doesn't have permission to do this, I don't think. maybe that could be changed...
19:41:34 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
19:41:59 MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com)
19:42:03 <hololeap> *to kill/start the hoogle server running through systemd
19:42:44 <hololeap> actually the hook system must be running as root
19:43:14 <hololeap> I could try it, but so far it seems like you have to re-index _everything_ after something has been changed
19:45:47 <monochrom> I'm thinking of this other Goldberg machine: The hoogle server is watched over by a watchdog, this watchdog waits for DB change and restarts the hoogle server.
19:46:12 <monochrom> With some luck, this watchdog can be written in systemd syntax too.
19:46:34 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:d4e:dbb8:1851:3894) (Remote host closed the connection)
19:46:34 <monochrom> or s/can be written/may be writable/
19:46:51 <hololeap> monochrom: that's kind of how I have it set up now, just because it crashes after I update a single package
19:47:03 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
19:48:27 <monochrom> Hrm haha, do you mean that I can skip the step "wait for changes"? >:)
19:49:00 <hololeap> pretty much
19:49:04 × zincy_ quits (~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e) (Remote host closed the connection)
19:49:05 <monochrom> "the server crashes" serves as notification for "now is a good time to respawn"
19:49:35 × xff0x quits (~xff0x@2001:1a81:529e:f300:b22f:69e6:aa77:fd2f) (Ping timeout: 264 seconds)
19:49:43 <monochrom> This is consistent with my policy of "don't work until it's really urgent" >:)
19:50:37 <hololeap> https://github.com/gentoo-haskell/gentoo-haskell/blob/bb70927ef3bc753bc899f589b69586b34b90d0f9/dev-util/hoogle/files/hoogle.service
19:50:44 <hololeap> https://github.com/gentoo-haskell/gentoo-haskell/blob/bb70927ef3bc753bc899f589b69586b34b90d0f9/dev-util/hoogle/files/hoogle-generate.service
19:51:21 <hololeap> since I have Restart=always and Requires=hoogle-generate.service, when hoogle crashes it regenerates the DB and restarts the service
19:51:29 hiruji joins (~hiruji@user/hiruji)
19:52:17 zincy_ joins (~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e)
19:53:35 <hololeap> but this takes longer and longer each time I add a new package to the system
19:54:21 <hololeap> I asked in #haskell-infrastructure ... maybe someone in there knows how the main hoogle service operates
20:05:11 × juhp quits (~juhp@128.106.188.220) (Ping timeout: 264 seconds)
20:07:01 juhp joins (~juhp@128.106.188.220)
20:08:25 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
20:09:07 acidjnk_new joins (~acidjnk@p200300d0c7238d89cc95ba723fa3afc9.dip0.t-ipconnect.de)
20:14:05 xff0x joins (~xff0x@2001:1a81:529e:f300:b22f:69e6:aa77:fd2f)
20:15:41 × alx741 quits (~alx741@186.178.109.79) (Ping timeout: 264 seconds)
20:17:11 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:d4e:dbb8:1851:3894)
20:21:20 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
20:25:04 × zincy_ quits (~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e) (Remote host closed the connection)
20:25:35 zincy_ joins (~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e)
20:25:55 waleee joins (~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
20:27:19 fluffyballoon joins (~user@131.93.208.196)
20:29:10 alx741 joins (~alx741@181.196.69.253)
20:46:11 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:d4e:dbb8:1851:3894) (Remote host closed the connection)
20:46:17 × OscarH quits (~OscarH@90.201.86.195) (Ping timeout: 264 seconds)
20:46:54 <shapr> hololeap: this is brilliant and sneaky, I love it
20:47:22 <hololeap> shapr: it wasn't really intentional, I swear D:
20:47:28 <dsal> Is DeriveAnyClass a terrible idea?
20:47:56 <hololeap> no, but it can be misused to a certain extent
20:48:23 <dsal> I file like it makes thing slightly better in this one case.
20:48:39 <hololeap> it's basically the same as `instance Blah T` without the `where` or the following definition block
20:49:15 <shapr> hololeap: if only it would crash as soon as you update a package instead of when you next speak to the hoogle server
20:49:28 <hololeap> so for some classes, it makes sense... for instance Exception
20:50:12 <geekosaur> also for any class that can use a Generic instance in its default implementation, which is IIRC the intended use case
20:50:53 <hololeap> ^ beat me to it
20:51:00 <hpc> i forsee a https://xkcd.com/1172/ style bug report in hoogle's future
20:51:27 <dsal> Well, hlint won't me do it. That's lame.
20:52:22 Guest17 joins (~Guest17@94-255-217-215.cust.bredband2.com)
20:52:23 <hololeap> it won't let you?
20:53:17 <dsal> Precommit hook with a bunch of predefined decisions.
20:54:11 × mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 260 seconds)
20:54:16 <hololeap> hm, bummer. it forbids that extension?
20:55:04 <dsal> Yeah. I guess someone did a thing somewhere and it was wrong or something.
20:55:30 <dsal> It's unfortunate it covers several syntaxes. I'm using deriving strategies here and I'd think that'd be OK because, you know, I meant to do it.
20:55:44 <dsal> I think there's something about newtype vs. any doing something different for aeson or something.
20:55:54 <hololeap> I suppose it makes sense, because you can shoot yourself in the foot if you aren't paying attention. if you want to use it, it's a good idea to have DerivingStrategies enabled and use them everywhere
20:56:06 <dsal> Yeah, I don't know if we can say that.
20:56:38 <geekosaur> yeh, strategies exist because if DeriveAnyClass is enabled it overrides GeneralisedNewtypeDeriving
20:56:54 <geekosaur> so you get something other than what you intended for a newtype
20:58:54 <dsal> Oh interesting. Yeah, I guess there needed to be a tie breaker.
20:59:26 × Guest17 quits (~Guest17@94-255-217-215.cust.bredband2.com) (Quit: Client closed)
21:01:12 × ubert1 quits (~Thunderbi@178.115.53.120.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
21:02:08 × ubert quits (~Thunderbi@178.115.53.120.wireless.dyn.drei.com) (Ping timeout: 268 seconds)
21:04:14 proboscis joins (~proboscis@115-189-129-117.mobile.spark.co.nz)
21:05:24 wootehfoot joins (~wootehfoo@user/wootehfoot)
21:06:57 × proboscis quits (~proboscis@115-189-129-117.mobile.spark.co.nz) (Client Quit)
21:08:30 proboscis joins (~proboscis@115-189-129-117.mobile.spark.co.nz)
21:09:25 Farzad joins (~FarzadBek@37.49.150.10)
21:27:53 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:d4e:dbb8:1851:3894)
21:30:35 × michalz quits (~michalz@185.246.204.109) (Remote host closed the connection)
21:30:52 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:31:17 × chomwitt quits (~chomwitt@2a02:587:dc12:b600:12c3:7bff:fe6d:d374) (Ping timeout: 246 seconds)
21:40:11 nehsou^ joins (~nehsou@wsip-98-188-242-6.mc.at.cox.net)
21:41:56 × zincy_ quits (~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e) (Remote host closed the connection)
21:44:11 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 264 seconds)
21:45:11 zincy_ joins (~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e)
21:47:08 × zincy_ quits (~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e) (Remote host closed the connection)
21:47:57 kn07_ joins (~kn07_@86.121.23.168)
21:52:32 × xsperry quits (~xs@user/xsperry) (Ping timeout: 260 seconds)
21:53:04 × Farzad quits (~FarzadBek@37.49.150.10) (Quit: Leaving)
21:53:05 × shailangsa quits (~shailangs@host217-39-45-200.range217-39.btcentralplus.com) (Remote host closed the connection)
21:59:44 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Remote host closed the connection)
22:02:04 zincy_ joins (~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e)
22:07:58 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
22:09:34 × xff0x quits (~xff0x@2001:1a81:529e:f300:b22f:69e6:aa77:fd2f) (Ping timeout: 268 seconds)
22:09:43 justsomeguy joins (~justsomeg@user/justsomeguy)
22:10:18 xff0x joins (~xff0x@2001:1a81:529e:f300:d3c7:e134:91d9:4541)
22:11:40 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 260 seconds)
22:16:51 Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
22:17:31 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
22:19:01 × kn07_ quits (~kn07_@86.121.23.168) (Quit: Leaving)
22:19:04 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
22:19:04 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
22:19:04 wroathe joins (~wroathe@user/wroathe)
22:19:56 wootehfoot joins (~wootehfoo@user/wootehfoot)
22:22:54 mcglk_ joins (~mcglk@131.191.49.120)
22:23:32 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
22:23:47 × mcglk quits (~mcglk@131.191.49.120) (Ping timeout: 260 seconds)
22:24:05 jespada joins (~jespada@181.28.253.200)
22:26:45 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 260 seconds)
22:29:47 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 258 seconds)
22:30:27 jil parts (~user@160.155.45.49) (ERC (IRC client for Emacs 27.2))
22:31:09 × proboscis quits (~proboscis@115-189-129-117.mobile.spark.co.nz) (Read error: Connection reset by peer)
22:31:22 proboscis joins (~proboscis@115-189-129-117.mobile.spark.co.nz)
22:32:50 × hyiltiz quits (~quassel@31.220.5.250) (Quit: hyiltiz)
22:33:41 hyiltiz joins (~quassel@31.220.5.250)
22:35:22 × jespada quits (~jespada@181.28.253.200) (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:37:18 × proboscis quits (~proboscis@115-189-129-117.mobile.spark.co.nz) (Read error: Connection reset by peer)
22:37:27 proboscis joins (~proboscis@115-189-129-117.mobile.spark.co.nz)
22:39:01 f-a joins (f2a@f2a.jujube.ircnow.org)
22:39:56 harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
22:40:00 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
22:40:27 <f-a> I am writing a small haskell program, is there a way GHC can show me *unused* top-level functions in my src/ when I run the program?
22:40:43 ubert joins (~Thunderbi@178.115.53.120.wireless.dyn.drei.com)
22:42:50 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Quit: Lost terminal)
22:45:59 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
22:47:38 <hpc> not at runtime
22:47:50 <hpc> ghc has various -Wunused-* flags you can pass
22:47:58 <hpc> or maybe hlint
22:50:36 <f-a> thanks
22:55:40 kupi joins (uid212005@id-212005.hampstead.irccloud.com)
22:59:33 × hyiltiz quits (~quassel@31.220.5.250) (Quit: hyiltiz)
23:06:05 × fluffyballoon quits (~user@131.93.208.196) (Ping timeout: 268 seconds)
23:06:42 <clever> f-a: also, unused top-level functions will only be warned about if you have explicit exports
23:06:53 <clever> if you export everything, then it cant know what is unused in other modules
23:07:07 × zincy_ quits (~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e) (Remote host closed the connection)
23:07:20 <f-a> argh, I see
23:07:52 Farzad joins (~FarzadBek@37.49.150.10)
23:13:35 × burnsidesLlama quits (~burnsides@dhcp168-040.wadham.ox.ac.uk) (Remote host closed the connection)
23:14:07 burnsidesLlama joins (~burnsides@dhcp168-040.wadham.ox.ac.uk)
23:14:12 × proboscis quits (~proboscis@115-189-129-117.mobile.spark.co.nz) (Ping timeout: 260 seconds)
23:14:23 proboscis joins (~proboscis@115-189-132-172.mobile.spark.co.nz)
23:17:07 × max22- quits (~maxime@2a01cb0883359800df57ac14517550fc.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
23:18:24 <dsal> Explicit exports are kind of bad, but generating lots of stuff with TH and having to type up a bunch of exports for code that doesn't exist in the file can be annoying.
23:18:24 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
23:18:42 <dsal> Er, not having explicit exports is kind of bad.
23:18:59 <Cajun> also exporting potentially unsafe constructors is obviously not good
23:18:59 × burnsidesLlama quits (~burnsides@dhcp168-040.wadham.ox.ac.uk) (Ping timeout: 264 seconds)
23:19:36 × unit73e quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Remote host closed the connection)
23:19:59 MQ-17J joins (~MQ-17J@8.6.144.203)
23:21:40 × tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 260 seconds)
23:22:50 tomboy64 joins (~tomboy64@user/tomboy64)
23:24:18 <energizer> why is there no dynamic language with haskell syntax?
23:25:24 <geekosaur> define 'dynamic language'
23:25:58 <aegon> maybe they mean interpreted?
23:26:00 <energizer> i know it when i see it
23:26:19 <aegon> like a ghci vm :?
23:26:25 <hpc> you could always defer type errors :D
23:26:33 <geekosaur> hugs?
23:26:56 <geekosaur> if you mean dynamic typing, there's small issues like pattern matching fundamentally relying on strict typing
23:28:46 <geekosaur> also "i know it when i see it" basiclaly makes your question unanswerable, because we can't get into your head to see what you really want
23:29:08 <energizer> i think many of us know it when we see it
23:29:17 <energizer> what is "strict typing"?
23:29:29 <hpc> you'd be surprised how many people are able to see things without knowing them
23:29:46 <aegon> i see things without knowing them every day :P
23:29:55 <aegon> i'm seeing a screen right now, i could say how it works, but i don't know it
23:29:56 <hpc> strict means "types must match", static means "at compile time"
23:30:01 <aegon> lets get nit picky!!! :D
23:30:08 <energizer> now try this schtick when i say python is statically typed
23:30:13 <hpc> (strict typing is also called strong typing)
23:30:32 <hpc> weak typing is "the language will do what it can to make things work"
23:30:42 <hpc> python is strict and dynamic typed
23:30:47 <hpc> haskell is strict and static typed
23:31:03 <hpc> perl is weak and static typed
23:31:05 <energizer> yeah so pattern matching depending on types seems irrelevant
23:31:17 <energizer> since dynamic languages can have strong types
23:31:25 <hpc> (its compile-time types are $, @, %, &, and *)
23:31:38 <hpc> (when you use the wrong one, it might do something like give you the length of a list, or make a list of one element)
23:31:57 <hpc> C is weak and static typed
23:32:20 <hpc> its types are sizes, and if you use the wrong size it can sometimes figure things out for you
23:32:55 <hpc> (byte = 1, int = cpu-dependent, struct = sum of all field sizes, etc)
23:34:03 <monochrom> Racket has pattern matching, yes.
23:34:11 <hpc> python has pattern matching
23:35:11 × proboscis quits (~proboscis@115-189-132-172.mobile.spark.co.nz) (Ping timeout: 260 seconds)
23:35:14 Domino[m] joins (~dominothe@2001:470:69fc:105::1:271b)
23:35:40 proboscis joins (~proboscis@115-189-83-58.mobile.spark.co.nz)
23:35:58 <monochrom> But histo-socially, users of dynamic typing don't want haskell syntax in the first place.
23:37:21 <hololeap> I don't understand what function composition would look like in a dynamically typed language
23:37:22 <geekosaur> I should have specified Haskell's pattern matching, which I consider part of its syntax
23:37:32 × wrengr quits (~wrengr@150.12.83.34.bc.googleusercontent.com) (Quit: leaving)
23:37:41 <hololeap> just passing strings around?
23:37:55 wrengr joins (~wrengr@150.12.83.34.bc.googleusercontent.com)
23:38:05 <monochrom> But I brought up Racket pattern matching because it's a superset of Haskell pattern matching.
23:38:57 <hololeap> hm, nvm that was dumb of me
23:39:18 <hololeap> I've used ruby before :p
23:39:31 <monochrom> And function composition in Racket looks like (compose f g)
23:39:50 shailangsa joins (~shailangs@host217-39-45-200.range217-39.btcentralplus.com)
23:39:55 × ubert quits (~Thunderbi@178.115.53.120.wireless.dyn.drei.com) (Remote host closed the connection)
23:40:57 <hololeap> energizer: when you say "dynamic languages", do you mean so-called "interpreted languages"?
23:41:29 <hololeap> https://en.wikipedia.org/wiki/List_of_programming_languages_by_type
23:41:47 <hololeap> there's no "dynamic language" section here, so it's hard to pin down a definition
23:43:18 <energizer> let's say language with runtime types
23:43:57 <monochrom> OK, so dynamic typing.
23:44:06 <energizer> regardless of whether it also has static types, like python does
23:45:17 fef joins (~thedawn@user/thedawn)
23:45:34 <monochrom> Anyone wanna state that Haskell is a dynamic language with Haskell syntax on account that Typeable is runtime type information? >:)
23:47:06 <hololeap> or because of typeclasses/polymorphic literals
23:47:39 <monochrom> But type classes are completely resolved at link time.
23:48:23 × MQ-17J quits (~MQ-17J@8.6.144.203) (Ping timeout: 264 seconds)
23:48:42 MQ-17J joins (~MQ-17J@8.6.144.203)
23:48:50 × cads quits (~cads@ip-64-72-99-234.lasvegas.net) (Quit: Leaving)
23:48:56 <monochrom> Err that contradicts what I said about Typeable haha.
23:57:07 × acidjnk_new quits (~acidjnk@p200300d0c7238d89cc95ba723fa3afc9.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)

All times are in UTC on 2021-10-29.