Home liberachat/#haskell: Logs Calendar

Logs on 2021-08-23 (liberachat/#haskell)

00:00:16 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84)
00:01:34 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84) (Remote host closed the connection)
00:02:06 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84)
00:02:44 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:05:03 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84) (Remote host closed the connection)
00:05:16 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84)
00:06:34 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84) (Remote host closed the connection)
00:07:06 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84)
00:11:40 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84) (Ping timeout: 240 seconds)
00:16:00 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84)
00:26:27 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84) (Remote host closed the connection)
00:27:04 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84)
00:28:08 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
00:28:08 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
00:28:08 wroathe joins (~wroathe@user/wroathe)
00:31:10 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84) (Ping timeout: 240 seconds)
00:32:52 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds)
00:33:01 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2)
00:33:27 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84)
00:34:01 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 252 seconds)
00:35:07 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
00:35:07 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
00:35:07 wroathe joins (~wroathe@user/wroathe)
00:36:00 Erutuon joins (~Erutuon@user/erutuon)
00:36:46 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
00:37:21 × nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 248 seconds)
00:39:00 thornAvery joins (~thorn@137.147.64.16)
00:39:20 <thornAvery> whats the best way to get a version number for a --version flag+
00:41:03 <Axma47030> In the past I have used https://hackage.haskell.org/package/configuration-tools which provides a few really nice things by default - version of the app and all its libraries and their licences
00:41:19 <Axma47030> licenses*
00:41:27 Axma47030 is now known as Axman6
00:41:32 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84) (Ping timeout: 250 seconds)
00:42:50 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
00:43:08 geekosaur joins (~geekosaur@xmonad/geekosaur)
00:48:33 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 248 seconds)
00:56:36 ikex1 joins (ash@user/ikex)
00:57:07 × ikex quits (~ash@user/ikex) (Ping timeout: 245 seconds)
00:57:22 ikex1 is now known as ikex
00:58:08 meinside_ joins (uid24933@id-24933.brockwell.irccloud.com)
00:58:33 <thornAvery> Axman6: thanks ill have a look at it
01:11:19 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:12:25 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:16:12 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84)
01:16:14 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
01:16:14 allbery_b joins (~geekosaur@xmonad/geekosaur)
01:16:17 allbery_b is now known as geekosaur
01:17:35 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84) (Remote host closed the connection)
01:18:22 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84)
01:21:15 × abrantesasf quits (~abrantesa@2804:14d:b086:4b3c:2e56:dcff:fedb:62f) (Quit: Leaving)
01:22:46 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84) (Ping timeout: 258 seconds)
01:25:49 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
01:29:09 geekosaur joins (~geekosaur@xmonad/geekosaur)
01:32:57 × Kaiepi quits (~Kaiepi@156.34.44.192) (Read error: Connection reset by peer)
01:33:06 Kaiepi joins (~Kaiepi@156.34.44.192)
01:35:00 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:6515:9257:f76:9654)
01:37:08 kimjetwav joins (~user@2607:fea8:235f:9730:b47e:9266:a80c:4549)
01:39:36 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:6515:9257:f76:9654) (Ping timeout: 250 seconds)
01:43:40 × xff0x quits (~xff0x@2001:1a81:52ba:f800:f347:6f1f:6209:b9ad) (Ping timeout: 240 seconds)
01:45:41 xff0x joins (~xff0x@2001:1a81:52f9:3300:ba09:60b5:ba3:60da)
01:48:05 × Kaiepi quits (~Kaiepi@156.34.44.192) (Read error: Connection reset by peer)
01:48:12 Kaipi joins (~Kaiepi@156.34.44.192)
01:49:24 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:6515:9257:f76:9654)
01:51:51 × Kaipi quits (~Kaiepi@156.34.44.192) (Read error: Connection reset by peer)
01:51:54 Merfont joins (~Kaiepi@156.34.44.192)
01:54:29 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84)
01:54:49 × cjb quits (~cjb@user/cjb) (Ping timeout: 256 seconds)
01:56:56 × Merfont quits (~Kaiepi@156.34.44.192) (Ping timeout: 250 seconds)
01:58:33 Kaiepi joins (~Kaiepi@156.34.44.192)
02:03:00 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84) (Ping timeout: 250 seconds)
02:08:41 nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
02:12:15 Kaipi joins (~Kaiepi@156.34.44.192)
02:12:20 × Kaiepi quits (~Kaiepi@156.34.44.192) (Read error: Connection reset by peer)
02:13:34 × nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
02:14:40 <glguy> thornAvery, This is what I do to get my version information: https://github.com/glguy/irc-core/blob/v2/src/Client/Options.hs#L135-L176
02:15:53 lavaman joins (~lavaman@98.38.249.169)
02:18:27 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:18:27 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (cadmium.libera.chat (Nickname regained by services)))
02:18:27 finn_elija is now known as FinnElija
02:19:46 cjb joins (~cjb@user/cjb)
02:25:40 × ikex quits (ash@user/ikex) (Ping timeout: 252 seconds)
02:25:46 ikex1 joins (~ash@user/ikex)
02:26:26 ikex1 is now known as ikex
02:33:20 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:38:19 × td_ quits (~td@muedsl-82-207-238-124.citykom.de) (Ping timeout: 252 seconds)
02:40:05 td_ joins (~td@94.134.91.226)
02:43:32 × alx741 quits (~alx741@181.196.68.94) (Quit: alx741)
02:45:15 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84)
02:46:34 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84) (Remote host closed the connection)
02:47:33 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84)
02:48:13 × Kaipi quits (~Kaiepi@156.34.44.192) (Remote host closed the connection)
02:50:02 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
02:51:58 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84) (Ping timeout: 250 seconds)
02:52:24 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 250 seconds)
02:56:51 × [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
02:57:33 × neo quits (~neo3@cpe-292712.ip.primehome.com) (Quit: Leaving)
03:00:15 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84)
03:01:04 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84) (Remote host closed the connection)
03:02:03 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84)
03:06:10 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84) (Ping timeout: 240 seconds)
03:07:28 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
03:14:19 travv0 parts (sid293381@user/travv0) ()
03:19:16 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
03:22:03 × ham quits (~ham4@user/ham) (Ping timeout: 276 seconds)
03:22:44 × otto_s quits (~user@p4ff27b55.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
03:24:35 otto_s joins (~user@p4ff270c5.dip0.t-ipconnect.de)
03:34:07 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84)
03:36:11 lavaman joins (~lavaman@98.38.249.169)
03:39:38 × waleee quits (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 250 seconds)
03:41:40 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:2d0e:8bc:c41d:5a84) (Ping timeout: 240 seconds)
04:01:58 × Natch quits (~natch@c-e070e255.014-297-73746f25.bbcust.telenor.se) (Remote host closed the connection)
04:07:21 Natch joins (~natch@c-e070e255.014-297-73746f25.bbcust.telenor.se)
04:17:11 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
04:19:44 dschrempf joins (~dominik@2a01-036d-0118-46d4-79db-0a5e-b5da-2db0.pool6.digikabel.hu)
04:21:53 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 248 seconds)
04:25:54 <sm> glguy, is that using https://hackage.haskell.org/package/githash ?
04:26:20 <glguy> glirc --full-version | grep git
04:26:20 <glguy> gitrev-1.3.1
04:26:33 <sm> ah
04:26:59 <sm> I think githash is just newer version of that
04:27:09 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:6dae:281c:ef98:c686)
04:27:42 × Topsi quits (~Tobias@dyndsl-095-033-019-235.ewe-ip-backbone.de) (Quit: Leaving.)
04:27:52 <glguy> oh, maybe I need to update
04:27:57 lotuseater parts (~user@p200300e7871bf00038fb8d6cf7d8260d.dip0.t-ipconnect.de) (ERC (IRC client for Emacs 27.2))
04:30:24 safe joins (~safe@cpe-74-64-165-24.nj.res.rr.com)
04:31:25 <sm> Axma47030: does that package let you print the version of all deps the program was built with ?
04:35:10 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:6dae:281c:ef98:c686) (Ping timeout: 240 seconds)
04:35:44 vysn joins (~vysn@user/vysn)
04:36:16 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
04:42:28 × dschrempf quits (~dominik@2a01-036d-0118-46d4-79db-0a5e-b5da-2db0.pool6.digikabel.hu) (Ping timeout: 250 seconds)
04:44:37 dschrempf joins (~dominik@92-249-199-97.pool.digikabel.hu)
04:45:27 LambdaDu1k joins (~anka@ksit.fixme.fi)
04:45:28 Hecate_ joins (~mariposa@163.172.211.189)
04:45:29 alinab_ joins (sid468903@id-468903.brockwell.irccloud.com)
04:45:30 peutri_ joins (~peutri@ns317027.ip-94-23-46.eu)
04:45:37 × nshepperd quits (nshepperd@2600:3c03::f03c:92ff:fe28:92c9) (*.net *.split)
04:45:37 × m4lvin_ quits (~m4lvin@w4eg.de) (*.net *.split)
04:45:37 × codedmart quits (codedmart@2600:3c01::f03c:92ff:fefe:8511) (*.net *.split)
04:45:37 × a1paca_ quits (~a1paca@user/a1paca) (*.net *.split)
04:45:37 × nerdypepper quits (~nerdypepp@user/nerdypepper) (*.net *.split)
04:45:37 × ouroboros quits (~ouroboros@user/ouroboros) (*.net *.split)
04:45:37 × glider quits (~glider@user/glider) (*.net *.split)
04:45:37 × tolt quits (~weechat-h@li219-154.members.linode.com) (*.net *.split)
04:45:37 × orzo quits (joe@lasker.childrenofmay.org) (*.net *.split)
04:45:37 × damien3 quits (~damien@248.ip-149-56-13.net) (*.net *.split)
04:45:37 × LambdaDuck quits (~anka@ksit.fixme.fi) (*.net *.split)
04:45:37 × choucavalier quits (~choucaval@user/choucavalier) (*.net *.split)
04:45:37 × wrunt quits (~ajc@vmx14030.hosting24.com.au) (*.net *.split)
04:45:37 × yahb quits (xsbot@user/mniip/bot/yahb) (*.net *.split)
04:45:37 × peutri quits (~peutri@ns317027.ip-94-23-46.eu) (*.net *.split)
04:45:37 × Hecate quits (~mariposa@user/hecate) (*.net *.split)
04:45:37 × alinab quits (sid468903@id-468903.brockwell.irccloud.com) (*.net *.split)
04:45:37 × defanor quits (~defanor@tart.uberspace.net) (*.net *.split)
04:45:37 defanor_ joins (~defanor@tart.uberspace.net)
04:45:38 orzo_ joins (joe@lasker.childrenofmay.org)
04:45:38 codedmart_ joins (codedmart@2600:3c01::f03c:92ff:fefe:8511)
04:45:38 alinab_ is now known as alinab
04:45:43 m4lvin joins (~m4lvin@w4eg.de)
04:45:44 choucavalier_ joins (~choucaval@peanutbuttervibes.com)
04:45:44 damien3 joins (~damien@248.ip-149-56-13.net)
04:45:45 glider_ joins (~glider@user/glider)
04:45:47 wrunt joins (~ajc@vmx14030.hosting24.com.au)
04:45:48 nshepper1 joins (nshepperd@2600:3c03::f03c:92ff:fe28:92c9)
04:45:50 uroboros joins (~ouroboros@user/ouroboros)
04:46:14 uroboros is now known as ouroboros
04:46:27 aegon joins (~mike@174.127.249.180)
04:46:37 yahb joins (xsbot@user/mniip/bot/yahb)
04:46:40 a1paca joins (~a1paca@user/a1paca)
04:47:04 tolt joins (~weechat-h@li219-154.members.linode.com)
04:47:43 nerdypepper joins (~nerdypepp@user/nerdypepper)
04:48:50 × lechner quits (~lechner@debian/lechner) (*.net *.split)
04:48:50 × awth13 quits (~awth13@user/awth13) (*.net *.split)
04:48:50 × dminuoso quits (~dminuoso@user/dminuoso) (*.net *.split)
04:48:50 × frobnicator quits (~frobnicat@185-227-75-147.dsl.cambrium.nl) (*.net *.split)
04:48:50 × Eoco quits (~ian@x-160-94-179-157.acm.umn.edu) (*.net *.split)
04:48:50 × Techcable_ quits (~Techcable@168.235.93.147) (*.net *.split)
04:48:50 × polux quits (~polux@51.15.169.172) (*.net *.split)
04:48:50 × mniip quits (mniip@libera/staff/mniip) (*.net *.split)
04:48:50 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (*.net *.split)
04:48:50 × ent quits (entgod@kapsi.fi) (*.net *.split)
04:48:50 × megaTherion quits (~therion@unix.io) (*.net *.split)
04:48:50 × Sqaure quits (~a@178.62.91.8) (*.net *.split)
04:48:50 × arkeet quits (arkeet@moriya.ca) (*.net *.split)
04:48:50 × laman quits (laman@2600:3c02::f03c:92ff:fe3e:c08d) (*.net *.split)
04:48:50 × mrus quits (~mrus@2001:19f0:5:1535:5400:3ff:fe7d:10ae) (*.net *.split)
04:48:50 × bastelfreak quits (~bastelfre@basteles-bastelknecht.bastelfreak.org) (*.net *.split)
04:48:50 × mstruebing quits (~maex@2001:41d0:8:93c7::1) (*.net *.split)
04:48:50 × meridion quits (~meridion@punt.hetgrotebos.org) (*.net *.split)
04:48:50 × drewolson quits (~drewolson@user/drewolson) (*.net *.split)
04:48:50 × meejah quits (~meejah@rutas.meejah.ca) (*.net *.split)
04:48:50 × enikar quits (~enikar@user/enikar) (*.net *.split)
04:48:50 × Dykam quits (Dykam@dykam.nl) (*.net *.split)
04:48:54 panda_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
04:48:54 meridion_ joins (~meridion@punt.hetgrotebos.org)
04:48:55 ent- joins (entgod@kapsi.fi)
04:48:58 arkeet` joins (arkeet@moriya.ca)
04:49:00 meejah_ joins (~meejah@rutas.meejah.ca)
04:49:02 mniip joins (mniip@libera/staff/mniip)
04:49:03 drewolson1 joins (~drewolson@user/drewolson)
04:49:04 mstruebing joins (~maex@2001:41d0:8:93c7::1)
04:49:18 Eoco joins (~ian@x-160-94-179-157.acm.umn.edu)
04:49:18 laman joins (laman@2600:3c02::f03c:92ff:fe3e:c08d)
04:49:19 bastelfreak joins (~bastelfre@basteles-bastelknecht.bastelfreak.org)
04:49:22 arkeet` is now known as arkeet
04:49:23 frobnicator joins (~frobnicat@185-227-75-147.dsl.cambrium.nl)
04:49:25 polux joins (~polux@51.15.169.172)
04:49:25 lechner joins (~lechner@letbox-vps.us-core.com)
04:49:36 Dykam joins (Dykam@dykam.nl)
04:49:36 × lechner quits (~lechner@letbox-vps.us-core.com) (Changing host)
04:49:36 lechner joins (~lechner@debian/lechner)
04:49:43 mrus joins (~mrus@2001:19f0:5:1535:5400:3ff:fe7d:10ae)
04:49:47 Techcable joins (~Techcable@168.235.93.147)
04:50:07 awth13 joins (~awth13@user/awth13)
04:50:17 enikar joins (~enikar@user/enikar)
04:50:47 nshepper1 is now known as nshepperd
04:50:59 <aegon> when using things like --dump-simpl or profiling with haskell stack, where should i be looking for the core files?
04:51:04 dminuoso joins (~dminuoso@user/dminuoso)
04:52:51 Square joins (~a@178.62.91.8)
05:06:53 × xsperry quits (~as@user/xsperry) ()
05:09:42 fresheyeball joins (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net)
05:09:44 <fresheyeball> ok, so I have a quandry
05:09:51 <fresheyeball> and it's going deeper than I would like
05:09:59 <fresheyeball> but, what is the right way to code a login form?
05:10:11 <fresheyeball> the server should set cookies I believe
05:10:21 <fresheyeball> but that means a redirect on each form submission
05:10:26 <fresheyeball> which is bad ux
05:10:38 <fresheyeball> So far the best I can think of is to have 2 login endpoints
05:10:53 <fresheyeball> one the checks creds and can give an error via AJAX
05:11:08 <fresheyeball> and the other that actually sets cookies, via redirect after the first endpoint approves
05:11:38 mei joins (~mei@user/mei)
05:11:55 × fresheyeball quits (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) (Client Quit)
05:12:35 keutoi joins (~keutoi@157.48.197.78)
05:15:06 × cjb quits (~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50)
05:22:26 ham joins (~ham4@user/ham)
05:25:22 × stefan-_ quits (~cri@42dots.de) (Ping timeout: 250 seconds)
05:30:10 stefan-_ joins (~cri@42dots.de)
05:37:40 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:6dae:281c:ef98:c686)
05:42:40 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:6dae:281c:ef98:c686) (Ping timeout: 240 seconds)
05:45:40 × xff0x quits (~xff0x@2001:1a81:52f9:3300:ba09:60b5:ba3:60da) (Ping timeout: 240 seconds)
05:46:43 xff0x joins (~xff0x@2001:1a81:52f9:3300:b5f:b00c:7918:3d13)
05:51:28 defanor_ is now known as defanor
05:52:11 <edwardk> dumb q: as someone just now tuning into how icfp is running this year, uh, where are the chat rooms and the like that there have been in years past? did they do away with them entirely?
05:57:06 PinealGlandOptic joins (~PinealGla@37.115.210.35)
06:00:21 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:6dae:281c:ef98:c686)
06:00:52 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:6dae:281c:ef98:c686) (Client Quit)
06:00:59 reumeth joins (~reumeth@user/reumeth)
06:01:58 PinealGlandOptic parts (~PinealGla@37.115.210.35) ()
06:05:28 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
06:05:38 dsrt^ joins (~dsrt@12.16.129.111)
06:06:43 xsperry joins (~as@user/xsperry)
06:09:44 mnrmnaugh joins (~mnrmnaugh@68.162.206.56)
06:11:54 × mnrmnaugh quits (~mnrmnaugh@68.162.206.56) (Client Quit)
06:15:38 × Vajb quits (~Vajb@2001:999:252:4e3c:27f9:d93:655e:583) (Read error: Connection reset by peer)
06:15:57 Vajb joins (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
06:16:40 × sim590 quits (~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 240 seconds)
06:17:32 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
06:22:27 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
06:24:13 × sagax quits (~sagax@213.138.71.146) (Remote host closed the connection)
06:25:24 × timCF quits (~timCF@m91-129-108-244.cust.tele2.ee) (Quit: leaving)
06:27:09 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
06:30:22 × dschrempf quits (~dominik@92-249-199-97.pool.digikabel.hu) (Ping timeout: 250 seconds)
06:30:35 × favonia quits (~favonia@user/favonia) (Ping timeout: 258 seconds)
06:35:23 <Axman6> sm: I thhink so, but I don't remember - pretty sure it prints versions along with the license
06:35:49 fef joins (~thedawn@user/thedawn)
06:45:44 × aegon quits (~mike@174.127.249.180) (Quit: leaving)
06:50:44 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds)
06:51:10 Hecate_ is now known as Hecate
06:51:12 × Hecate quits (~mariposa@163.172.211.189) (Changing host)
06:51:12 Hecate joins (~mariposa@user/hecate)
06:54:45 dschrempf joins (~dominik@92-249-199-97.pool.digikabel.hu)
06:55:56 × Sgeo quits (~Sgeo@user/sgeo) (Ping timeout: 268 seconds)
06:57:52 dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be)
07:02:12 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
07:02:40 × zmt01 quits (~zmt00@user/zmt00) (Ping timeout: 240 seconds)
07:04:57 cfricke joins (~cfricke@user/cfricke)
07:05:17 × Natch quits (~natch@c-e070e255.014-297-73746f25.bbcust.telenor.se) (Remote host closed the connection)
07:08:35 jtomas joins (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net)
07:08:36 × azeem quits (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) (Read error: Connection reset by peer)
07:08:56 enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
07:09:03 azeem joins (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it)
07:10:23 Natch joins (~natch@c-e070e255.014-297-73746f25.bbcust.telenor.se)
07:11:53 fendor joins (~fendor@91.141.64.241.wireless.dyn.drei.com)
07:12:40 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 240 seconds)
07:13:39 × bastelfreak quits (~bastelfre@basteles-bastelknecht.bastelfreak.org) (Quit: WeeChat 3.2)
07:13:48 bastelfreak joins (~bastelfre@basteles-bastelknecht.bastelfreak.org)
07:16:19 takuan joins (~takuan@178-116-218-225.access.telenet.be)
07:24:39 Morrow_ joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net)
07:25:28 × safe quits (~safe@cpe-74-64-165-24.nj.res.rr.com) (Quit: Leaving)
07:28:13 gehmehgeh joins (~user@user/gehmehgeh)
07:31:13 kuribas joins (~user@ptr-25vy0iajat4u154jc6g.18120a2.ip6.access.telenet.be)
07:31:38 acidjnk joins (~acidjnk@p200300d0c72b9558d9d86757fde39a6c.dip0.t-ipconnect.de)
07:32:49 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
07:33:37 fef joins (~thedawn@user/thedawn)
07:34:34 megaTherion joins (~therion@unix.io)
07:39:59 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
07:40:05 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
07:43:36 × Morrow_ quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Read error: Connection reset by peer)
07:44:52 Morrow_ joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net)
07:45:27 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:47:06 × jtomas quits (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection)
07:51:46 sagax joins (~sagax@213.138.71.146)
07:52:25 ubert joins (~Thunderbi@178.165.179.240.wireless.dyn.drei.com)
07:54:01 d0ku joins (~d0ku@178.43.19.40.ipv4.supernova.orange.pl)
07:56:41 jtomas joins (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net)
07:57:23 burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk)
07:57:41 <kuribas> I removed more type families from my mysql library. Now only one type family left.
07:58:03 <kuribas> Not much fancy haskell left now. Unless you count light usage of DataKinds as phantom types...
07:58:24 <kuribas> And generics...
07:59:28 <Hecate> kuribas: hurray for improved compilation times :D
07:59:44 <kuribas> Hecate: oh, and template haskell :)
07:59:48 <kuribas> but it's optional.
08:01:11 Boomerang joins (~Boomerang@xd520f68c.cust.hiper.dk)
08:02:14 mc47 joins (~mc47@xmonad/TheMC47)
08:03:40 × dschrempf quits (~dominik@92-249-199-97.pool.digikabel.hu) (Ping timeout: 240 seconds)
08:03:48 <Hecate> kuribas: you should make a companion library with -th if you really have that many optional features implemented in TH :)
08:03:57 <Hecate> helps with portability as well
08:04:04 <kuribas> why?
08:04:08 × burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection)
08:04:15 <kuribas> you don't need to use it...
08:05:46 jgeerds joins (~jgeerds@55d4b311.access.ecotel.net)
08:05:46 hendursa1 joins (~weechat@user/hendursaga)
08:07:32 <kuribas> If you are using the typed layer, the TH is very recommended...
08:07:54 <kuribas> I could however split the package into hasqlator-mysql and hasqlator-typed-mysql...
08:08:56 × hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds)
08:11:11 __monty__ joins (~toonn@user/toonn)
08:12:05 × hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
08:12:33 oxide joins (~lambda@user/oxide)
08:14:04 burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk)
08:17:39 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
08:17:39 allbery_b joins (~geekosaur@xmonad/geekosaur)
08:17:42 allbery_b is now known as geekosaur
08:18:58 jakalx parts (~jakalx@base.jakalx.net) ()
08:21:55 jakalx joins (~jakalx@base.jakalx.net)
08:24:16 × oxide quits (~lambda@user/oxide) (Quit: oxide)
08:24:28 dschrempf joins (~dominik@92-249-199-97.pool.digikabel.hu)
08:33:26 × cpape`` quits (~user@2a01:4f9:c010:632d::1) (Quit: ERC (IRC client for Emacs 25.2.2))
08:33:48 cpape joins (~user@2a01:4f9:c010:632d::1)
08:34:27 <merijn> !!!
08:34:37 <merijn> Breaking news that dramatically improves my life further!
08:34:45 <merijn> SQLite now supports strong typing!
08:34:48 <merijn> \o/
08:35:25 <dminuoso> merijn: Source?
08:36:43 <merijn> dminuoso: https://www.sqlite.org/draft/stricttables.html
08:37:19 <dminuoso> Neat. :)
08:37:30 <merijn> Now I can shill SQLite *even harder*
08:41:41 notzmv joins (~zmv@user/notzmv)
08:45:13 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:6515:9257:f76:9654) (Remote host closed the connection)
08:46:05 <Rembane_> Sweet!
08:46:17 <Rembane_> SQLite be like: *flex!*
08:47:34 × lavaman quits (~lavaman@98.38.249.169) (Read error: Connection reset by peer)
08:47:34 awschnap joins (~lavaman@98.38.249.169)
08:48:05 × gustik quits (~gustik@2a01:c844:2410:9020:63ab:4bb6:83d2:e11b) (Quit: Leaving)
08:50:36 <wz1000> merijn: which version will this show up in?
08:52:09 <tdammers> "As far as we know, SQLite is the only SQL database engine that supports this advanced capability."
08:52:12 <tdammers> talk about flexing
08:58:31 Gurkenglas joins (~Gurkengla@dslb-088-064-053-140.088.064.pools.vodafone-ip.de)
08:59:18 <merijn> wz1000: Planned for 3.37
08:59:21 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
08:59:36 meridion_ is now known as meridion
09:02:57 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 268 seconds)
09:05:36 × amirouche quits (~amirouche@user/amirouche) (Quit: WeeChat 2.8)
09:05:40 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:6515:9257:f76:9654)
09:05:48 amirouche joins (~amirouche@user/amirouche)
09:10:10 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:6515:9257:f76:9654) (Ping timeout: 240 seconds)
09:12:03 amirouche is now known as babelbot
09:13:37 × azeem quits (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) (Ping timeout: 248 seconds)
09:13:54 azeem joins (~azeem@176.201.15.223)
09:14:23 drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
09:16:05 babelbot is now known as amirouche
09:18:39 <merijn> On an entirely different topic, given a (simple, if that helps) numerical function of N inputs. Which algorithms/techniques do I want to find the inputs with maximum output?
09:19:16 × amk quits (~amk@109.255.169.126) (Ping timeout: 252 seconds)
09:21:26 <kuribas> merijn: multivariate optimization algorithm?
09:22:50 <kuribas> oh neat, I can use recordWildCards with other assignments :)
09:23:11 <kuribas> this works: Foo { foo = foo + 1, bar = bar <> "bar", ..}
09:23:16 × burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection)
09:23:30 <merijn> kuribas: Yes, but machine learning feels overkill the equations I'm dealing with
09:23:43 <kuribas> merijn: I wasn't talking about machine learning :)
09:24:06 <merijn> kuribas: Most results for multivariate optimisation return a billion ML things :p
09:24:17 <Rembane_> merijn: Is N big enough that a maximum [arg_1, ... arg_N] isn't feasible?
09:24:24 <kuribas> https://hackage.haskell.org/package/hmatrix-0.15.2.0/docs/Numeric-GSL-Minimization.html
09:24:32 <kuribas> merijn: because it's the same problem?
09:25:11 <merijn> Rembane_: number of values isn't super big, but the values are continuous
09:26:25 amk joins (~amk@109.255.169.126)
09:26:29 <merijn> kuribas: Incidentally, that doesn't appear to be in recent hmatrix releases anymore
09:27:11 <merijn> But I guess I want hmatrix-gsl
09:27:50 <Rembane_> merijn: Oh, okay.
09:28:20 <dminuoso> tdammers: My software also has this advanced capability of putting out smileys if you ask it nicely enough.
09:28:25 <dminuoso> It's the only known software that does this.
09:28:36 burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk)
09:29:47 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:b41a:667a:d6f9:5ad8)
09:30:36 <merijn> dminuoso: I've seen lots of software do that :p
09:30:39 daeng joins (~daeng@2401:3c00:18e:e603:bec7:e31f:ee15:3296)
09:30:56 <merijn> Hell, entire Discord bots seem to function by smiley reactions to messages, so... :p
09:31:01 <dminuoso> But one does it as well as mine does.
09:31:05 <dminuoso> none, even.
09:32:38 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 244 seconds)
09:33:10 jippiedoe joins (~david@2a02-a44c-e14e-1-bfe4-3f38-b8a5-8c39.fixed6.kpn.net)
09:33:24 <int-e> @botsnack
09:33:24 <lambdabot> :)
09:33:25 × shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit)
09:34:06 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:b41a:667a:d6f9:5ad8) (Ping timeout: 250 seconds)
09:34:22 <int-e> merijn: see, it's just continuing a trend started on #haskell ;-)
09:35:04 × awschnap quits (~lavaman@98.38.249.169) (Remote host closed the connection)
09:43:18 × zaquest quits (~notzaques@5.128.210.178) (Quit: Leaving)
09:44:04 × azeem quits (~azeem@176.201.15.223) (Ping timeout: 250 seconds)
09:49:08 azeem joins (~azeem@176.201.15.223)
09:50:09 jpds joins (~jpds@gateway/tor-sasl/jpds)
09:58:28 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:3051:894e:a7f0:13fc)
09:59:55 eggplant_ joins (~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f)
10:00:07 × azeem quits (~azeem@176.201.15.223) (Ping timeout: 240 seconds)
10:02:40 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:3051:894e:a7f0:13fc) (Ping timeout: 240 seconds)
10:03:42 rosariopulella[m joins (~rosariopu@2001:470:69fc:105::a57)
10:04:10 × eggplant_ quits (~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f) (Ping timeout: 240 seconds)
10:05:37 lavaman joins (~lavaman@98.38.249.169)
10:05:53 × burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection)
10:06:25 azeem joins (~azeem@176.201.15.223)
10:06:48 keutoi_ joins (~keutoi@106.208.52.176)
10:07:21 burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk)
10:07:33 × keutoi quits (~keutoi@157.48.197.78) (Ping timeout: 258 seconds)
10:07:57 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
10:08:10 lavaman joins (~lavaman@98.38.249.169)
10:08:17 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
10:13:10 × azeem quits (~azeem@176.201.15.223) (Ping timeout: 240 seconds)
10:13:26 azeem joins (~azeem@176.201.15.223)
10:16:01 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 248 seconds)
10:16:53 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:21:46 × LambdaDu1k quits (~anka@ksit.fixme.fi) (Ping timeout: 250 seconds)
10:22:05 LambdaDuck joins (~anka@ksit.fixme.fi)
10:22:12 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
10:22:47 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:22:50 × opqdonut quits (opqdonut@pseudo.fixme.fi) (Ping timeout: 256 seconds)
10:22:57 opqdonut joins (opqdonut@pseudo.fixme.fi)
10:23:25 aguapesada joins (~aguapesad@191.177.175.57)
10:25:43 <tdammers> frankly, I would love a bot that actively eradicates all smileys and other emoji nonsense from the face of the earth
10:27:47 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
10:28:38 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:33:47 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
10:34:29 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:35:27 × nvmd quits (~nvmd@user/nvmd) (Ping timeout: 268 seconds)
10:35:37 zaquest joins (~notzaques@5.128.210.178)
10:39:27 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
10:40:21 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:41:05 × azeem quits (~azeem@176.201.15.223) (Ping timeout: 248 seconds)
10:42:49 × burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection)
10:44:28 azeem joins (~azeem@176.201.15.223)
10:45:37 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
10:46:31 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:55:54 acidjnk_new joins (~acidjnk@p200300d0c72b9556a59b812708dd2de4.dip0.t-ipconnect.de)
10:57:10 × acidjnk quits (~acidjnk@p200300d0c72b9558d9d86757fde39a6c.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
10:57:18 × azeem quits (~azeem@176.201.15.223) (Ping timeout: 250 seconds)
10:58:00 azeem joins (~azeem@176.201.15.223)
10:58:21 dminuoso[m] parts (~dminuosom@2001:470:69fc:105::33bb) ()
10:58:57 timCF joins (~timCF@m91-129-108-244.cust.tele2.ee)
10:59:34 <timCF> Hello! Does anybody know how to remove imports/definitions/aliases from ghci session?
11:01:00 alx741 joins (~alx741@181.196.68.94)
11:01:51 <timCF> Just to clear current scope from defined things
11:02:15 lavaman joins (~lavaman@98.38.249.169)
11:03:20 <merijn> Not even sure that's possible, tbh
11:03:32 <dminuoso> You can remove imports
11:03:44 <merijn> Sure, but not definitions inside ghci, I think?
11:03:49 <merijn> Or does :reload reset thos?
11:03:59 <dminuoso> https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/ghci.html#controlling-what-is-in-scope-with-the-module-command
11:04:15 <dminuoso> timCF: ^-
11:07:42 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
11:07:55 <timCF> merijn: dminuoso: thanks!
11:08:43 × azeem quits (~azeem@176.201.15.223) (Ping timeout: 252 seconds)
11:10:37 azeem joins (~azeem@176.201.15.223)
11:12:17 burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk)
11:12:31 × burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection)
11:12:59 burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk)
11:17:31 × burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 252 seconds)
11:19:37 keutoi_ is now known as keutoi
11:27:10 <timCF> I do have some "noob" problems with `microlens`. I'm using this library as consequence of usage of `proto-lens` which is the best protobuf library for Haskell I guess. Problem with `microlens` in my team is that for not very experienced Haskell programmers they are very confusing. For example there are 2 different access operators `^.` and `^?` and intuitevly second should be used for `Maybe` values. But
11:27:16 <timCF> it's not working as expected without `_Just` prism. For example `x ^? Msg.maybe'ok` will produce `Just Nothing` which will always return True with isJust (case where we just checking that response is ok or not). To make it work as expected, we should use `x ^? Msg.maybe'ok . _Just` or `x ^. Msg.maybe'ok`. And type system is not helping that much in case of this kind of errors. I thought maybe I can solve
11:27:22 <timCF> the issue if `^?` is not imported, then developers are forced to use `^.` but seems like it's not working with nested fields, for example `x ^. Msg.maybe'ok . _Just . Msg.maybe'user` will fail to compile with some strange error about Monoid instances. I don'
11:27:36 <timCF> I don't like solution like "triple check what you are actually writing" and prefer type system to help
11:27:54 <dminuoso> timCF: Switch to `optics` then.
11:27:58 × azeem quits (~azeem@176.201.15.223) (Ping timeout: 252 seconds)
11:27:58 <timCF> Are there any suggestions how to fix this kind of issue?
11:28:04 <dminuoso> The underlying problem is roughly this:
11:28:58 <dminuoso> % :t view
11:28:59 <yahb> dminuoso: MonadReader s m => Getting a s a -> m a
11:29:01 <dminuoso> % :i Getting
11:29:02 <yahb> dminuoso: type Getting :: * -> * -> * -> *; type Getting r s a = (a -> Const r a) -> s -> Const r s; -- Defined in `Control.Lens.Getter'
11:29:09 azeem joins (~azeem@176.201.15.223)
11:29:34 <dminuoso> % :t _Just . _1
11:29:34 <yahb> dminuoso: (Applicative f, Field1 a1 b1 a2 b2) => (a2 -> f b2) -> Maybe a1 -> f (Maybe b1)
11:30:14 <dminuoso> timCF: Notice how we have this `Applicative` constraint?
11:30:30 <dminuoso> Essentially what this all ends up doing is:
11:30:47 <dminuoso> In `lens` we can `view` through a Fold, and it will just `mappend` all targets together
11:30:52 <dminuoso> If no target exist, you get `mempty` back
11:30:57 <dminuoso> e.g.:
11:31:12 <dminuoso> % view folded [Product 1, Product 2, Product 3, Product 4]
11:31:13 <yahb> dminuoso: Product {getProduct = 24}
11:31:34 <dminuoso> This may not be what you intended, and its one of those things why I dont like `lens` either.
11:31:47 × drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 240 seconds)
11:32:23 <dibblego> timCF: a lens composed with a prism gives you a traversal
11:33:08 <timCF> dminuoso: I see. Does `optics` "solves" it somehow? Not sure is it bug or feature)
11:33:14 <dminuoso> Yes.
11:33:29 <dminuoso> Let me quickly give you the output
11:34:18 × vysn quits (~vysn@user/vysn) (Remote host closed the connection)
11:34:25 <dminuoso> timCF: https://gist.github.com/dminuoso/58f816500a5cd9fa4affff440e301af6
11:34:49 <dminuoso> So if you wanted the behavior of `lens`, you'd have to explicitly use `foldOf`
11:35:03 <dminuoso> Otherwise you get very well written customed type errors
11:36:08 <dminuoso> Or perhaps, as a comparable example:
11:36:23 <dminuoso> % view (_Just . _1) (Just ("foo", bar))
11:36:25 <yahb> dminuoso: ; <interactive>:13:33: error:; * Variable not in scope: bar; * Perhaps you meant `Sym.var' (imported from Data.Number.Symbolic)
11:36:28 <dminuoso> % view (_Just . _1) (Just ("foo", 1))
11:36:29 <yahb> dminuoso: "foo"
11:37:00 <dminuoso> https://gist.github.com/dminuoso/4195934615b775b3ef7514f97b63dcc7
11:37:07 <dminuoso> The output you'd get in optics
11:37:40 <dminuoso> (The output here means, that the composition of `_Just % _1` is an AffineTraversal, but `view` demands a Getter
11:37:40 × dschrempf quits (~dominik@92-249-199-97.pool.digikabel.hu) (Ping timeout: 240 seconds)
11:37:50 lavaman joins (~lavaman@98.38.249.169)
11:38:57 <timCF> dminuoso: Thanks! I'll try this! I hope `optics` will be compatible with `proto-lens`
11:39:25 <dminuoso> timCF: Mmm not directly.
11:40:02 <dminuoso> I mean you can trivially convert between lens-style and optics-style optics, but its additional work
11:40:18 <Jack> Anyone ever taken a look at C++'s "functional" library?
11:42:22 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
11:44:17 <[exa]> Jack: yes
11:46:37 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
11:47:23 cheater1__ joins (~Username@user/cheater)
11:47:36 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
11:47:37 cheater1__ is now known as cheater
11:49:55 <Jack> It's kind of adorable, isn't it
11:51:49 doyougnu joins (~user@c-73-25-202-122.hsd1.or.comcast.net)
11:51:57 <[exa]> depends on the kind of adorable you're after
11:52:07 <[exa]> std::bind is often a lifesaver
11:52:47 <Rembane_> [exa]: Is std::bind like $ in Haskell?
11:53:09 <[exa]> literally like ' ', yea
11:53:18 favonia joins (~favonia@user/favonia)
11:53:52 <[exa]> afaik it implements a pretty good static representation of the closure
11:54:32 <Rembane_> Do you get that sweet lisp scoping when you use std::bind?
11:54:58 <[exa]> lisp scope is structural or lexical?
11:55:03 <[exa]> (I can never remember)
11:55:14 <Rembane_> Me neither, so I guess we're stuck now. :)
11:55:25 <[exa]> anyway the scope is perfectly c++ish
11:55:41 <Rembane_> If everything works as expected it's fine imo
11:56:08 <[exa]> yeah it really works, if you want to do a partial application std::bind is the way
11:57:03 <[exa]> or a std::thunk <-- fiction
11:57:06 × haskl quits (~haskl@user/haskl) (Remote host closed the connection)
11:59:05 haskl joins (~haskl@98.37.78.63)
11:59:09 <Rembane_> It's a good thunk.
12:00:35 × azeem quits (~azeem@176.201.15.223) (Read error: Connection reset by peer)
12:00:54 × haskl quits (~haskl@98.37.78.63) (Changing host)
12:00:54 haskl joins (~haskl@user/haskl)
12:01:12 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f)
12:01:54 azeem joins (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it)
12:03:51 <timCF> dminuoso: I also thought maybe I can avoid `^?` using monadic nature of maybe, so `x ^? maybe'foo . _Just . maybe'bar . _Just` can be rewritten as `x ^. maybe'foo >>= (^. maybe'bar)` but I'm afraid it's even more confusing. But maybe not :)
12:04:29 Ariakenom joins (~patrik@c83-255-154-140.bredband.tele2.se)
12:05:46 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f) (Ping timeout: 250 seconds)
12:07:27 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
12:11:49 pbrisbin joins (~patrick@174-081-116-011.res.spectrum.com)
12:13:54 × Ariakenom quits (~patrik@c83-255-154-140.bredband.tele2.se) (Quit: WeeChat 3.1)
12:14:08 Ariakenom joins (~patrik@c83-255-154-140.bredband.tele2.se)
12:20:32 dschrempf joins (~dominik@92-249-199-97.pool.digikabel.hu)
12:31:24 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 244 seconds)
12:35:43 jakalx joins (~jakalx@base.jakalx.net)
12:36:04 × urdh quits (~urdh@user/urdh) (Quit: Boom!)
12:36:50 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
12:37:04 burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk)
12:38:16 jacks2 joins (~bc8167eb@217.29.117.252)
12:38:49 <jacks2> hi. given parsec's someParser :: Parser a, is it possible to get current line number in someParser?
12:42:07 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
12:42:11 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit)
12:42:27 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
12:42:51 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit)
12:44:17 × keutoi quits (~keutoi@106.208.52.176) (Ping timeout: 248 seconds)
12:44:57 × markpythonicbtc quits (~textual@2601:647:5a00:35:d936:f2de:ef6:f0f4) (Quit: My MacBook has gone to sleep. ZZZzzz…)
12:45:13 urdh joins (~urdh@user/urdh)
12:47:29 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
12:49:40 × hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1)
12:50:18 hendursaga joins (~weechat@user/hendursaga)
12:52:16 <[exa]> Jack: not sure about parsec but megaparsec has `getSourcePos`
12:52:33 amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
12:53:54 <[exa]> ha, parsec has equivalent `getPosition`
12:55:56 keutoi joins (~keutoi@157.48.226.59)
12:59:12 shriekingnoise joins (~shrieking@186.137.144.80)
13:00:37 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
13:01:53 × burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection)
13:07:46 × tremon_ quits (~tremon@217-63-61-89.cable.dynamic.v4.ziggo.nl) (Ping timeout: 240 seconds)
13:09:17 drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
13:10:58 markpythonicbtc joins (~textual@50.228.44.6)
13:11:10 <ggVGc> isn't it about time Haskell gets one officially standard parsing library
13:12:14 <tdammers> "official" by whose authority?
13:12:57 <merijn> We already have an official standard parsing library in base :p
13:13:03 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
13:13:11 <merijn> Actually, two, I think
13:13:15 <merijn> And they suck :p
13:13:25 <tdammers> readP?
13:13:34 <merijn> and readS
13:13:40 <tdammers> ah yes
13:15:10 × Ariakenom quits (~patrik@c83-255-154-140.bredband.tele2.se) (Ping timeout: 240 seconds)
13:22:02 × acidjnk_new quits (~acidjnk@p200300d0c72b9556a59b812708dd2de4.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
13:22:35 <[exa]> ggVGc: y tho
13:22:38 Ariakenom joins (~patrik@c83-255-154-140.bredband.tele2.se)
13:25:55 sim590 joins (~simon@modemcable090.207-203-24.mc.videotron.ca)
13:27:00 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
13:27:09 <merijn> If I've learned anything from my time in python, it's that "officially blessed and in the standard library" has a 100% fatality rate on libraries :p
13:28:06 × Ariakenom quits (~patrik@c83-255-154-140.bredband.tele2.se) (Ping timeout: 250 seconds)
13:28:07 byorgey joins (~byorgey@155.138.238.211)
13:31:23 <ggVGc> I just wish that wasn't the case
13:31:45 <ggVGc> imagine if we could collectively stop writing and rewriting 20 versions of the same things all the time
13:35:08 <[exa]> producing quality packages requires training on other ones
13:35:49 <maerwald> yeah, I will support streamly based parsers in base
13:35:52 burnsidesLlama joins (~burnsides@client-8-88.eduroam.oxuni.org.uk)
13:35:59 keutoi_ joins (~keutoi@223.238.95.231)
13:36:29 <merijn> ggVGc: That seems an orthogonal issue
13:36:33 × keutoi quits (~keutoi@157.48.226.59) (Killed (lithium.libera.chat (Nickname regained by services)))
13:36:33 keutoi_ is now known as keutoi
13:36:43 <merijn> ggVGc: If there is a good and adequate parser library, what's stopping you from using it
13:37:11 <merijn> Like, how would an "officially blessed and in base" version of megaparsec be better than, just megaparsec?
13:37:42 <[exa]> also I guess we can kinda agree that almost all SI-prefixed variants of parsec have their own place
13:37:46 <maerwald> well... haskell is really bad at composition
13:37:47 × burnsidesLlama quits (~burnsides@client-8-88.eduroam.oxuni.org.uk) (Remote host closed the connection)
13:37:53 <maerwald> more stuff in base can improve that
13:37:54 <ggVGc> I believe the possible positive outcomes are always more focused efforts, and better documentation
13:37:55 slowButPresent joins (~slowButPr@user/slowbutpresent)
13:38:02 <merijn> maerwald: So is pretty much every mainstream language :p
13:38:06 <maerwald> merijn: no
13:38:20 <maerwald> the weaker the types, the easier the composition, sometimes
13:38:32 <maerwald> since haskells API is all very type heavy, you can't easily exchange implementations
13:38:53 <maerwald> that's often less of an issue in, say, Go
13:39:10 <maerwald> because the few types they use are everywhere
13:39:13 <[exa]> can we count in the debugging time? :D
13:39:26 <merijn> maerwald: Depends how you define "easier", sure you can combine more things, but I assumed we only cared about *bugfree* combinations :p
13:40:05 <maerwald> merijn: you don't have bugfree anywhere
13:40:19 <merijn> maerwald: I also disagree that's an inherent flaw in Haskell, it's just a flaw in Haskell *programmers* to make their API's types inconvenient
13:40:45 <maerwald> sure, it's an ecosystem effect, but the language is more convenient for it
13:40:48 <maerwald> so it's both sides
13:40:49 × jgeerds quits (~jgeerds@55d4b311.access.ecotel.net) (Ping timeout: 248 seconds)
13:41:04 × azeem quits (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) (Ping timeout: 252 seconds)
13:42:02 <maerwald> people thought backpack might solve this, but lol
13:42:14 azeem joins (~azeem@176.201.15.223)
13:42:22 <merijn> I blame pytorch hijacking ezyang
13:42:24 <maerwald> you still have to agree on an API, like... what's parsing, what's streaming etc
13:44:06 <maerwald> and looking at conduit and streamly, the APIs are already incompatible
13:44:07 <maerwald> inherently
13:44:25 <maerwald> so backpack is not the solution
13:45:22 <maerwald> if we had an actual functioning CLC that is working on base actively, I don't think it would be an issue to broaden the scope
13:45:29 acidjnk_new joins (~acidjnk@p200300d0c72b9556a59b812708dd2de4.dip0.t-ipconnect.de)
13:45:50 <[exa]> ...write a grant?
13:46:10 × drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 240 seconds)
13:46:23 <maerwald> money solves it?
13:46:27 <[exa]> honestly I think e.g. MS research would not think twice about this precise ecosystem improvement
13:46:32 <[exa]> well, you need people to do that
13:46:37 <maerwald> HF has money
13:46:47 <merijn> I mean, base's problem is that it can't move fast without breaking *everything*
13:46:58 <merijn> Not to mention, significant parts are in the report
13:47:31 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
13:47:58 <[exa]> maerwald: still it somehow chooses to work on other stuff
13:48:02 <maerwald> yes
13:48:15 burnsidesLlama joins (~burnsides@client-8-88.eduroam.oxuni.org.uk)
13:48:27 <[exa]> maerwald: anyway the issue might just be more problematic, driven by actual programming deficiency than just people being lazy
13:48:35 <maerwald> they're more concerned with broadening Haskell adoption in industry I think... at least that's what I gather from their mission statement discussion
13:49:11 <[exa]> writing super-compatible stuff that still has types and not just "FromResult a => IO a" takes insane amounts of abstraction
13:49:18 × burnsidesLlama quits (~burnsides@client-8-88.eduroam.oxuni.org.uk) (Remote host closed the connection)
13:49:27 <maerwald> broadening adoption is more about building a brand/an image, providing consulting services, etc etc
13:49:31 <maerwald> less about improving ecosystem
13:49:36 <[exa]> monkeypatching stuff together (python/ruby way yay) certainly works but that's one thing we wanted to prevent right?
13:50:07 <[exa]> adoption broads itself with killer apps
13:51:22 <[exa]> anyway I'd certainly vote for having the internals of the packages exposed a bit more, having some way of recombining them in a little different way/with different glue types in case it's needed
13:51:51 <[exa]> the problem is that there's no such now, except for 1] having 100x more type variables 2] backpack, kinda
13:52:07 <[exa]> *no such standardized way to do that
13:52:36 <[exa]> not standardized -- not even available
13:55:28 <[exa]> hm now that's a research topic, assurance of some api compatibility without standardization
13:55:33 <[exa]> ...let's write a grant?
13:56:49 × aguapesada quits (~aguapesad@191.177.175.57) (Ping timeout: 248 seconds)
13:57:15 burnsidesLlama joins (~burnsides@client-8-88.eduroam.oxuni.org.uk)
13:59:46 × enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
14:00:37 × burnsidesLlama quits (~burnsides@client-8-88.eduroam.oxuni.org.uk) (Remote host closed the connection)
14:01:55 <jacks2> [exa], nice, thanks!
14:02:37 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f)
14:02:42 × jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
14:02:47 × xff0x quits (~xff0x@2001:1a81:52f9:3300:b5f:b00c:7918:3d13) (Ping timeout: 240 seconds)
14:03:10 drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
14:05:21 jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
14:05:36 burnsidesLlama joins (~burnsides@client-8-88.eduroam.oxuni.org.uk)
14:06:40 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f) (Ping timeout: 240 seconds)
14:07:27 × azeem quits (~azeem@176.201.15.223) (Ping timeout: 240 seconds)
14:07:42 azeem joins (~azeem@176.201.15.223)
14:10:04 xff0x joins (~xff0x@2001:1a81:52f9:3300:b5f:b00c:7918:3d13)
14:16:22 neo joins (~neo3@cpe-292712.ip.primehome.com)
14:17:04 × Guest8337 quits (~chris@81.96.113.213) (Ping timeout: 250 seconds)
14:18:43 codedmart_ is now known as codedmart
14:18:59 Sgeo joins (~Sgeo@user/sgeo)
14:20:04 chris joins (~chris@81.96.113.213)
14:20:07 chris is now known as Guest5712
14:20:33 × azeem quits (~azeem@176.201.15.223) (Read error: Connection reset by peer)
14:20:46 azeem joins (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it)
14:21:54 chris joins (~chris@81.96.113.213)
14:21:54 × Guest5712 quits (~chris@81.96.113.213) (Read error: Connection reset by peer)
14:21:58 chris is now known as Guest2290
14:22:10 × acidjnk_new quits (~acidjnk@p200300d0c72b9556a59b812708dd2de4.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
14:25:18 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
14:26:26 × zfnmxt quits (~zfnmxtzfn@2001:470:69fc:105::2b32) (Changing host)
14:26:26 zfnmxt joins (~zfnmxtzfn@user/zfnmxt)
14:26:37 × zfnmxt quits (~zfnmxtzfn@user/zfnmxt) (Quit: Reconnecting)
14:26:53 zfnmxt joins (~zfnmxtzfn@2001:470:69fc:105::2b32)
14:27:42 × zfnmxt quits (~zfnmxtzfn@2001:470:69fc:105::2b32) (Changing host)
14:27:42 zfnmxt joins (~zfnmxtzfn@user/zfnmxt)
14:28:09 geekosaur joins (~geekosaur@xmonad/geekosaur)
14:28:10 × reumeth quits (~reumeth@user/reumeth) (Ping timeout: 240 seconds)
14:28:39 MoC joins (~moc@user/moc)
14:28:50 × burnsidesLlama quits (~burnsides@client-8-88.eduroam.oxuni.org.uk) (Remote host closed the connection)
14:29:46 burnsidesLlama joins (~burnsides@client-8-88.eduroam.oxuni.org.uk)
14:30:33 mal1 is now known as lieven
14:30:36 × timCF quits (~timCF@m91-129-108-244.cust.tele2.ee) (Quit: leaving)
14:33:10 × pgib quits (~textual@173.38.117.86) (Ping timeout: 240 seconds)
14:36:23 VoidNoir0 joins (~VoidNoir0@72.80.203.52)
14:36:44 hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com)
14:40:51 × burnsidesLlama quits (~burnsides@client-8-88.eduroam.oxuni.org.uk) (Remote host closed the connection)
14:42:52 × markpythonicbtc quits (~textual@50.228.44.6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:43:10 burnsidesLlama joins (~burnsides@client-8-88.eduroam.oxuni.org.uk)
14:43:28 markpythonicbtc joins (~textual@50.228.44.6)
14:43:58 × markpythonicbtc quits (~textual@50.228.44.6) (Client Quit)
14:43:59 × dschrempf quits (~dominik@92-249-199-97.pool.digikabel.hu) (Quit: WeeChat 3.2)
14:44:07 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
14:44:42 cheater joins (~Username@user/cheater)
14:45:42 × burnsidesLlama quits (~burnsides@client-8-88.eduroam.oxuni.org.uk) (Remote host closed the connection)
14:45:58 × Boomerang quits (~Boomerang@xd520f68c.cust.hiper.dk) (Ping timeout: 252 seconds)
14:49:01 Ariakenom joins (~patrik@c83-255-154-140.bredband.tele2.se)
14:50:51 burnsidesLlama joins (~burnsides@client-8-88.eduroam.oxuni.org.uk)
14:52:15 zmt01 joins (~zmt00@user/zmt00)
14:53:07 × burnsidesLlama quits (~burnsides@client-8-88.eduroam.oxuni.org.uk) (Remote host closed the connection)
14:54:23 jgeerds joins (~jgeerds@55d4b311.access.ecotel.net)
14:55:25 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
15:02:28 Square is now known as Sqaure
15:03:52 jose03 joins (~a@p200300ef9702383b45b8de8f8152bf35.dip0.t-ipconnect.de)
15:04:16 × Ariakenom quits (~patrik@c83-255-154-140.bredband.tele2.se) (Quit: WeeChat 3.1)
15:05:57 burnsidesLlama joins (~burnsides@client-8-88.eduroam.oxuni.org.uk)
15:06:21 <jose03> ghcup has nice terminal user interface. Does anybody know which haskell library they used for the UI? Or is it a C program?
15:07:10 × daeng quits (~daeng@2401:3c00:18e:e603:bec7:e31f:ee15:3296) (Quit: Leaving)
15:08:29 <[exa]> jose03: apparently Options.Applicative and Brick
15:08:36 <[exa]> see code https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/app/ghcup/Main.hs
15:09:07 × azeem quits (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) (Ping timeout: 240 seconds)
15:09:16 × burnsidesLlama quits (~burnsides@client-8-88.eduroam.oxuni.org.uk) (Remote host closed the connection)
15:12:49 azeem joins (~azeem@176.201.15.223)
15:13:02 burnsidesLlama joins (~burnsides@client-8-88.eduroam.oxuni.org.uk)
15:14:46 × burnsidesLlama quits (~burnsides@client-8-88.eduroam.oxuni.org.uk) (Remote host closed the connection)
15:15:13 burnsidesLlama joins (~burnsides@client-8-88.eduroam.oxuni.org.uk)
15:16:04 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.2)
15:17:31 × burnsidesLlama quits (~burnsides@client-8-88.eduroam.oxuni.org.uk) (Remote host closed the connection)
15:17:31 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
15:17:31 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
15:17:31 wroathe joins (~wroathe@user/wroathe)
15:19:22 <maerwald> jose03: brick
15:20:27 <maerwald> https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/app/ghcup/BrickMain.hs
15:20:47 <maerwald> barely 500 LOC
15:20:58 × rmo quits (~rmo@user/msr) (Read error: Connection reset by peer)
15:20:59 <maerwald> only downside is it doesn't support windows
15:21:46 hexfive joins (~eric@50.35.83.177)
15:22:30 markpythonicbtc joins (~textual@2601:647:5a00:35:f45e:90a7:31f1:d8ef)
15:23:27 × MidAutumnMoon quits (~MidAutumn@user/midautumnmoon) (Quit: Leaving for a break - theLounge)
15:23:28 × azeem quits (~azeem@176.201.15.223) (Read error: Connection reset by peer)
15:23:48 <merijn> optparse-applicative for commandline arguments/flags
15:23:55 <merijn> brick for anything TUI like
15:23:59 MidAutumnMoon joins (~MidAutumn@user/midautumnmoon)
15:24:14 × hexfive quits (~eric@50.35.83.177) (Client Quit)
15:25:10 azeem joins (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it)
15:26:56 <jose03> [exa]: maerwald: merijn: thank you
15:29:22 nvmd joins (~nvmd@user/nvmd)
15:39:18 nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
15:43:35 × jippiedoe quits (~david@2a02-a44c-e14e-1-bfe4-3f38-b8a5-8c39.fixed6.kpn.net) (Quit: Leaving)
15:44:01 × dsrt^ quits (~dsrt@12.16.129.111) (Remote host closed the connection)
15:45:18 epolanski joins (uid312403@id-312403.brockwell.irccloud.com)
15:45:47 × xff0x quits (~xff0x@2001:1a81:52f9:3300:b5f:b00c:7918:3d13) (Ping timeout: 240 seconds)
15:46:01 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
15:46:07 chexum_ joins (~quassel@gateway/tor-sasl/chexum)
15:46:46 xff0x joins (~xff0x@2001:1a81:52f9:3300:b601:7649:8935:742b)
15:50:19 × azeem quits (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) (Read error: Connection reset by peer)
15:51:26 azeem joins (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it)
15:55:09 × ubert quits (~Thunderbi@178.165.179.240.wireless.dyn.drei.com) (Read error: Connection reset by peer)
15:55:32 ubert joins (~Thunderbi@178.165.179.240.wireless.dyn.drei.com)
15:56:52 frtdlteo^ joins (~frtdlteo@12.16.129.111)
15:56:53 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f)
16:02:53 chexum_ is now known as chexum
16:03:35 burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk)
16:08:07 × burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 250 seconds)
16:08:51 Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com)
16:09:10 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
16:09:40 × nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
16:12:41 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:17:58 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
16:19:33 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 268 seconds)
16:22:18 × betelgeuse quits (~betelgeus@94-225-47-8.access.telenet.be) (Ping timeout: 250 seconds)
16:25:56 × hrnz quits (~ulli@irc.plumbing) (Quit: das ist mir zu bld hier; bb)
16:26:19 hrnz joins (~ulli@irc.plumbing)
16:26:26 × hrnz quits (~ulli@irc.plumbing) (Client Quit)
16:26:51 hrnz joins (~ulli@irc.plumbing)
16:27:19 × hrnz quits (~ulli@irc.plumbing) (Client Quit)
16:27:31 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Quit: WeeChat 3.2)
16:27:45 hrnz joins (~ulli@irc.plumbing)
16:29:04 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
16:29:35 hyiltiz joins (~quassel@31.220.5.250)
16:38:05 burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk)
16:40:26 <siers> I'm trying to understand the difference between {,G}ADTs. They both inductively create more elements in the set from old elements, but with GADTs you can restrict which elements you may use to to construct the next one, if you wish?
16:41:59 <Lycurgus> what does {,G} signify over what G does?
16:42:01 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
16:42:35 <siers> ah, that is a stupid shellism
16:42:43 <siers> echo {,G}ADTs
16:42:45 <siers> ADTs GADTs
16:42:49 <Lycurgus> i c
16:43:27 × burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
16:43:56 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
16:44:21 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:45:29 jess joins (~jess@libera/staff/jess)
16:49:17 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
16:50:28 × jgeerds quits (~jgeerds@55d4b311.access.ecotel.net) (Ping timeout: 250 seconds)
16:51:47 × neo quits (~neo3@cpe-292712.ip.primehome.com) (Ping timeout: 240 seconds)
16:52:02 × dajoer quits (~david@user/gvx) (Quit: leaving)
16:53:18 ubert1 joins (~Thunderbi@178.165.201.23.wireless.dyn.drei.com)
16:53:56 <Drew[m]> siers: This may be an oversimplification but my understanding is that GADTs let you define datatypes with type parameters, where what fills the parameter is decided by which constructor you constructed the datatype with.
16:53:58 <Drew[m]> If the constructor you use fixes a type parameter in a type then the reverse is also true: fixing the type parameter also fixes what data constructor you can construct a value in that type with.
16:54:44 <Lycurgus> like extra virgin olive oil, in this case extra abstact
16:54:47 × ubert quits (~Thunderbi@178.165.179.240.wireless.dyn.drei.com) (Ping timeout: 240 seconds)
16:54:47 ubert1 is now known as ubert
16:56:26 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
16:58:26 <monochrom> The GHC User's Guide has an example in its GADT section.
16:59:00 <monochrom> Generally 99% of the time the GHC User's Guide should be your first go-to source for this kind of consultations.
16:59:23 <monochrom> Has examples. Pinpointing. Cuts to the mustard.
17:02:15 zebrag joins (~chris@user/zebrag)
17:02:17 obs\ joins (~obscur1ty@156.192.129.164)
17:02:17 × obs\ quits (~obscur1ty@156.192.129.164) (Changing host)
17:02:17 obs\ joins (~obscur1ty@user/obs/x-5924898)
17:02:57 × kuribas quits (~user@ptr-25vy0iajat4u154jc6g.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
17:07:13 <Lycurgus> *abstract
17:08:24 econo joins (uid147250@user/econo)
17:12:01 × pbrisbin quits (~patrick@174-081-116-011.res.spectrum.com) (Ping timeout: 248 seconds)
17:13:55 Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
17:14:01 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f) (Remote host closed the connection)
17:14:10 pbrisbin joins (~patrick@199.66.179.206)
17:18:59 pavonia joins (~user@user/siracusa)
17:19:07 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:19:52 × Morrow_ quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Read error: Connection reset by peer)
17:20:27 Morrow_ joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net)
17:22:39 × ubert quits (~Thunderbi@178.165.201.23.wireless.dyn.drei.com) (Ping timeout: 250 seconds)
17:23:08 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f)
17:29:51 jakalx joins (~jakalx@base.jakalx.net)
17:30:26 Kaiepi joins (~Kaiepi@156.34.44.192)
17:33:50 ubert joins (~Thunderbi@178.165.201.23.wireless.dyn.drei.com)
17:34:15 lavaman joins (~lavaman@98.38.249.169)
17:35:15 <maerwald[m]> GHC user guide is often better than haskell wiki
17:37:27 × drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 240 seconds)
17:38:27 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
17:38:37 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
17:39:02 × defanor quits (~defanor@tart.uberspace.net) (Quit: .)
17:39:13 × azeem quits (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) (Ping timeout: 248 seconds)
17:41:33 fendor_ joins (~fendor@77.119.197.208.wireless.dyn.drei.com)
17:43:47 × fendor quits (~fendor@91.141.64.241.wireless.dyn.drei.com) (Ping timeout: 240 seconds)
17:45:09 drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
17:46:01 azeem joins (~azeem@176.201.15.223)
17:46:37 fresheyeball joins (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net)
17:47:01 <siers> monochrom, I am trying to describe it with my own words differently after reading the user guide already.
17:47:14 <fresheyeball> is there a way to use CPP to special case code for test suites?
17:47:27 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
17:48:07 <fresheyeball> basically I want Arbitrary instances to be local to the type, not orphans, but not to have a dependency on QuickCheck in the exe
17:50:13 <monochrom> I think no.
17:50:41 <tomsmeding> fresheyeball: see also: https://www.michaelpj.com/blog/2020/10/29/your-orphans-are-fine.html
17:51:00 <tomsmeding> for some nuance regarding orphans
17:51:06 × jose03 quits (~a@p200300ef9702383b45b8de8f8152bf35.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
17:51:18 <sm> sure ? you can define a cpp var in the test component ?
17:52:02 burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk)
17:52:06 <sm> should you ? maybe not ?
17:53:03 × burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection)
17:53:09 <fresheyeball> tomsmeding: I have more problems than just orphans to be fair
17:53:25 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
17:54:50 trcc joins (~trcc@130.225.0.251)
17:55:03 panda_man is now known as koala_man
17:55:30 aegon joins (~mike@174.127.249.180)
17:56:12 <aegon> I see how the ffi works with basic characters, is there a way to use it to marshell haskell types into structs or structs into haskell types or keep a reference to an opaque type exposed by a c lib / what does that look like?
17:57:02 × pbrisbin quits (~patrick@199.66.179.206) (Read error: Connection reset by peer)
17:58:16 <fresheyeball> I figured out a solution
17:58:31 <fresheyeball> cpp-options: -DTEST
17:58:36 <fresheyeball> in the suite is all that is needed
17:58:41 <fresheyeball> but I wish it was built in
18:00:20 <aegon> https://stackoverflow.com/questions/30026843/haskell-data-instance-for-opaque-data-type found this for opaque types but having trouble finding things on passing / parsing structs across the ffi
18:02:29 pbrisbin joins (~patrick@174-081-116-011.res.spectrum.com)
18:02:30 × Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
18:03:28 Erutuon joins (~Erutuon@user/erutuon)
18:04:06 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
18:04:07 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
18:04:07 wroathe joins (~wroathe@user/wroathe)
18:05:16 <pavonia> aegon: Have you read the wiki page on the FFI? https://wiki.haskell.org/Foreign_Function_Interface#Marshalling_data
18:05:52 <aegon> pavonia: nope, and that looks like it has everything i'm pondering spelled out
18:06:23 neo joins (~neo3@cpe-292712.ip.primehome.com)
18:07:04 fendor_ is now known as fendor
18:08:17 × Adran quits (adran@botters/adran) (Quit: Este é o fim.)
18:08:28 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds)
18:10:38 Adran joins (~adran@botters/adran)
18:10:47 defanor joins (~defanor@tart.uberspace.net)
18:14:22 × keutoi quits (~keutoi@223.238.95.231) (Quit: leaving)
18:15:27 <maerwald> do we have some fuzzy function/class to determine if a list is null-ish? like ["", ""]
18:15:31 × drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 250 seconds)
18:15:57 <maerwald> I'm not striving for clear semantics, since the input isn't
18:16:16 <monochrom> I think no one has thought of it before.
18:16:51 × azeem quits (~azeem@176.201.15.223) (Read error: Connection reset by peer)
18:17:28 <monochrom> My understanding is that this is a job more suitable for humans, in particular some of my weaker students who conflate 0, the empty set, the empty list, and the non-empty list that contains the non-empty set that contains the empty list.
18:18:15 vysn joins (~vysn@user/vysn)
18:18:52 azeem joins (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it)
18:19:07 <monochrom> s/weaker/very weak/
18:19:36 <maerwald> I can imagine this working with a class that just gets called recursively. As with `Default`, of course it's subject to heavy abuse
18:20:27 <monochrom> If you ever codify something into code, then unless there is non-determinism, you will end up with one clear semantics.
18:20:51 <monochrom> This is why for fuzzy things I would refer to weak humans.
18:21:51 <maerwald> you mean plug in your students neural network into my binary?
18:22:09 <aegon> maerwald: imo that type of problem points to bad data parsing / sanitizing, I'm trying to think of a place where this would be benificial to do in the middle of a computation as apposed to during injestion. If it's happening in the middle of a computation couldn't you use Maybe to signify possible failure or some other thing to be more explicit about the meaning of "nullish"
18:22:33 <maerwald> aegon: yes, I don't control the data
18:22:35 <monochrom> For example I wouldn't be against a simple recursive algorithm "is_nullish xs = every element of xs is_nullish". At the same time, I have zero confidence that this agrees with your user's expectation.
18:23:16 <aegon> maerwald: can you sanity check it at the IO layer where your consuming it? in that case you could write the sanity check into the parser
18:23:38 <maerwald> aegon: why would I sanity check? I want to accept as much junk as possible
18:23:54 <aegon> why do you want junk?
18:23:58 <maerwald> this is about supporting as many curl versions as possible and their funky output
18:24:33 betelgeuse joins (~betelgeus@94-225-47-8.access.telenet.be)
18:24:49 <maerwald> so I'm doing half-assed parsing, not proper parsing
18:26:38 <maerwald> the real fix would have been to use `--suppress-connect-headers`, but of course, not all versions have it
18:29:21 <[exa]> maerwald: what about `not . any isAlphaNum . show` ? (might save time)
18:30:04 <[exa]> (counter-example: `map (flip replicate "" . ord) "oh hello there"`)
18:30:22 burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk)
18:30:54 <maerwald> yeah, for my use case T.stripEnd is enough with a later filter on `not . null`
18:32:23 × juri_ quits (~juri@178.63.35.222) (Remote host closed the connection)
18:33:12 <maerwald> until a new curl version does something new :p
18:33:25 <[exa]> \o/
18:33:41 <maerwald> wget seems much more stable
18:33:44 <maerwald> although a lot slower too
18:34:05 <[exa]> wget's got some internal machinery to make stuff faster, you can pipe URLs to it
18:34:39 <maerwald> wget performs REALLY bad with etags
18:34:46 <[exa]> whats etags
18:35:07 <maerwald> https://en.wikipedia.org/wiki/HTTP_ETag
18:35:27 × burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 250 seconds)
18:36:07 <maerwald> compare: wget -q -S --header 'If-None-Match: "612388b3-1bc72"' https://www.haskell.org/ghcup/data/ghcup-0.0.6.yaml
18:36:17 <maerwald> curl -H 'If-None-Match: "612388b3-1bc72"' https://www.haskell.org/ghcup/data/ghcup-0.0.6.yaml
18:36:25 × sim590 quits (~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 252 seconds)
18:36:27 <maerwald> curl is twice as fast
18:36:32 <maerwald> at least here
18:37:56 <[exa]> hm interesting, right ~600ms curl vs ~800 for wget here
18:38:08 <maerwald> curl is 480ms here
18:38:24 <[exa]> +- a lot, σ~=100ms I'd say
18:38:32 <maerwald> but noticable
18:38:43 <[exa]> what does Dr. Strace say?
18:39:23 <maerwald> he's too chatty :p
18:41:29 <[exa]> well let's see actually, I'm interested
18:41:50 <[exa]> chances are that wget is doing something for free for some vaguely userfriendly reason
18:43:27 × Morrow_ quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 240 seconds)
18:44:28 <maerwald> wouldn't be surprised if it makes a full download and then decides to show 304
18:44:51 <maerwald> but that's quick to test
18:45:57 × derelict quits (~derelict@user/derelict) (Quit: WeeChat 3.2)
18:46:45 <maerwald> doesn't seem so... I'm also having vastly different timings to downloads.haskell.org compared to www.haskell.org
18:46:56 × frtdlteo^ quits (~frtdlteo@12.16.129.111) (Remote host closed the connection)
18:47:04 lavaman joins (~lavaman@98.38.249.169)
18:48:03 <[exa]> so, wget loads faster by like 20ms here
18:49:40 <maerwald> comparsion: wget -q -S --header 'If-None-Match: "61140ad8-3cbea20"' https://downloads.haskell.org/~ghcup/0.1.16.2/aarch64-apple-darwin-ghcup-0.1.16.2
18:49:43 sim590 joins (~simon@modemcable090.207-203-24.mc.videotron.ca)
18:49:45 <maerwald> this finishes in 200ms here
18:49:59 <maerwald> seems like a configuration issue
18:50:12 <maerwald> both should be cached
18:54:29 <[exa]> strace says the difference is really just in waiting for the replies from the server, guess there's something ugly in the headers
18:57:19 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
18:57:37 × hrdl quits (~hrdl@mail.hrdl.eu) (Ping timeout: 248 seconds)
18:57:46 × maerwald quits (~maerwald@user/maerwald) (Quit: gone)
18:57:51 hrdl joins (~hrdl@mail.hrdl.eu)
18:58:02 Morrow_ joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net)
18:58:04 maerwald joins (~maerwald@mail.hasufell.de)
18:58:21 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
18:58:32 chexum joins (~quassel@gateway/tor-sasl/chexum)
18:58:36 × lisq quits (~quassel@lis.moe) (Remote host closed the connection)
18:58:54 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 244 seconds)
18:59:18 × maerwald quits (~maerwald@mail.hasufell.de) (Changing host)
18:59:18 maerwald joins (~maerwald@user/maerwald)
18:59:32 ChaiTRex joins (~ChaiTRex@user/chaitrex)
18:59:44 <maerwald> [exa]: odd
18:59:45 lisq joins (~quassel@lis.moe)
19:00:38 <[exa]> maerwald: curl uses http/2
19:02:10 × jacks2 quits (~bc8167eb@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout))
19:03:38 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
19:04:12 <[exa]> hm got it, for me it's gnutls vs openssl
19:04:21 <[exa]> gnutls's got a bit more aggressive crypto in place by default
19:05:00 teo joins (~teo@137.220.120.222)
19:05:11 <[exa]> timing of `gnutls-cli` vs `openssl s_client` is consistent with what you see there
19:05:41 <[exa]> roughly the 800 vs 600 ms
19:06:11 <maerwald> hm, I should try curl linked against polarssl
19:06:44 <[exa]> there's also gnutls curl somewhere
19:06:47 <[exa]> at least debian has some
19:08:46 jakalx joins (~jakalx@base.jakalx.net)
19:11:22 jtomas_ joins (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net)
19:12:32 × trcc quits (~trcc@130.225.0.251) ()
19:13:47 × jtomas quits (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Ping timeout: 240 seconds)
19:14:45 peutri_ is now known as peutri
19:18:51 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:5b4:1bf2:3392:8995)
19:19:41 <carter> i've been having fun figuruing out what monad transformer helpers are best for writing a snazzy interpreter / compiler lately
19:23:34 <[exa]> "snazzy"? :D
19:24:07 juri_ joins (~juri@178.63.35.222)
19:25:28 <[exa]> (I learned a new word)
19:27:53 <maerwald> carter: MonadChronicle?
19:28:08 <carter> maerwald: ooo, that sounds fun
19:28:10 <[exa]> maerwald: I can't dig what's openssl using for KEX but not expecting problems there; changing gnutls ciphersuites didn't help much. I guess it's dark magicks
19:28:20 <carter> maerwald: what would that do
19:28:23 <carter> [exa]: glad i could help
19:28:27 <carter> not a native speaker?
19:28:27 <maerwald> carter: express warnings and failure
19:28:44 <maerwald> it's like These
19:28:55 <maerwald> would probably be fun if you make it an open sum type, heh
19:29:10 <carter> oh that looks fun
19:29:27 <carter> thats probably the right thing for type checking a sect of SCC's
19:29:53 wootehfoot joins (~wootehfoo@user/wootehfoot)
19:30:05 × teo quits (~teo@137.220.120.222) (Quit: Lost terminal)
19:30:16 <maerwald> I think I'm a believer of cabal-docspec now
19:30:53 <carter> oh
19:31:53 <maerwald> no need to have a doctest target
19:31:55 <carter> is that in cabal 3.6 yet?
19:31:58 <maerwald> no
19:32:05 <maerwald> one of phadejs hidden projects
19:32:14 <carter> https://github.com/phadej/cabal-extras/tree/master/cabal-docspec this one?
19:32:21 <maerwald> ya
19:32:42 <maerwald> I can run it without a doctest target, without a Main, just over my codebase
19:33:02 derelict joins (~derelict@user/derelict)
19:33:14 <maerwald> it just needs the project to be built before, probably needs plan.json etc
19:33:42 <maerwald> but can change comments without recompiling and it will still pick them up
19:34:58 × bgamari quits (~bgamari@2001:470:e438::1) (Quit: ZNC 1.8.1 - https://znc.in)
19:35:18 bgamari joins (~bgamari@2001:470:e438::1)
19:35:25 <carter> oh thats nice
19:35:35 <carter> how do you script it in?
19:35:47 × neo quits (~neo3@cpe-292712.ip.primehome.com) (Ping timeout: 240 seconds)
19:36:12 <carter> hrmm
19:36:15 <maerwald> carter: https://github.com/hasufell/shortbytestring/blob/219b6f0f48bb29ec20015a36db5ad97eab072e64/.github/workflows/haskell.yml#L53
19:36:18 <carter> would be nice if it was cabal-ized
19:36:41 <carter> oh nice
19:37:16 <maerwald> carter: I whined about it here https://github.com/haskell/cabal/issues/2327
19:43:16 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
19:44:14 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 250 seconds)
19:44:33 Lord_of_Life_ is now known as Lord_of_Life
19:48:23 × venue quits (~venue@user/venue) (Quit: was tired)
19:49:07 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
19:49:47 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
19:51:22 × mei quits (~mei@user/mei) (Ping timeout: 258 seconds)
19:52:23 × MoC quits (~moc@user/moc) (Quit: Konversation terminated!)
19:59:29 <maerwald> ,
19:59:36 <tomsmeding> !
20:03:08 <maerwald> `traverseFold f = foldl (\mb a -> (<>) <$> mb <*> f a) (pure mempty)` -- I don't remember why I wrote this function
20:03:11 <maerwald> and it's confusing
20:03:31 <maerwald> try `traverseFold (:[]) ["1","2","3","4","5"]` vs `traverseFold (:[","]) ["1","2","3","4","5"]` lol
20:04:09 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
20:04:09 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
20:04:09 wroathe joins (~wroathe@user/wroathe)
20:05:31 × juhp quits (~juhp@128.106.188.220) (Ping timeout: 252 seconds)
20:07:33 juhp joins (~juhp@128.106.188.220)
20:08:11 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
20:09:27 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 240 seconds)
20:09:33 ent- is now known as ent
20:11:21 <maerwald> don't use list monad :p
20:11:41 Erutuon joins (~Erutuon@user/erutuon)
20:15:41 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f) (Remote host closed the connection)
20:16:46 chisui joins (~chisui@200116b868b0580051414fea9b4eac83.dip.versatel-1u1.de)
20:18:24 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
20:18:41 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 248 seconds)
20:18:53 <fresheyeball> can I set cpp-options in hie.yaml?
20:20:09 jgeerds joins (~jgeerds@55d4b311.access.ecotel.net)
20:21:27 <maerwald> fresheyeball: why?
20:21:39 <fresheyeball> well I set it in the cabal file
20:21:43 <fresheyeball> and everything compiles fine
20:21:56 <fresheyeball> but hls is acting like those options are not set for the target
20:22:10 <maerwald> cabal.project?
20:22:21 <fresheyeball> I don't have one of those
20:22:28 <maerwald> create one
20:22:44 tommd joins (~tommd@75-164-130-101.ptld.qwest.net)
20:23:32 <fresheyeball> ok done
20:23:39 <fresheyeball> I enumerate my three exes
20:23:42 <fresheyeball> and set tests: True
20:23:47 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
20:24:17 <fresheyeball> now hls just crashes
20:24:27 <tommd> I've been wanting to get into haskell.nix for a while now (for build time improvements on large projects) but quickly run into issues such as `error: attribute 'cabal-to-nix' missing, at ...`. How should I learn up on Nix?
20:24:48 <tommd> That is, nix + Haskell to be quite clear. Less learning nix and more applying to improve my Haskell experience.
20:24:58 × chisui quits (~chisui@200116b868b0580051414fea9b4eac83.dip.versatel-1u1.de) (Quit: Client closed)
20:25:27 <fresheyeball> maerwald: actually what would it even be in my case? I just have 1 cabal file
20:25:45 <maerwald> fresheyeball: package foo\n\tghc-options: -optPFOO
20:25:48 <maerwald> or sth?
20:25:53 <maerwald> you also need `packages: ./`
20:26:44 chisui joins (~chisui@200116b868b05800c65627e740591fd3.dip.versatel-1u1.de)
20:26:45 <fresheyeball> ok so now cabal is not building it
20:26:53 <fresheyeball> now cabal is not seeing that I set this in the cabal file
20:26:57 <fresheyeball> it was before cabal.project
20:27:00 <fresheyeball> I am confused
20:27:04 <maerwald> too vague, links
20:29:14 <geekosaur> -optP-DFOO perhaps? although I thinkk ghc itself accepts -DFOO
20:29:59 <maerwald> yeah
20:30:16 <maerwald> https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/phases.html#ghc-flag--D%E2%9F%A8symbol%E2%9F%A9[=%E2%9F%A8value%E2%9F%A9]
20:31:32 <fresheyeball> ok so sorta a red hering
20:31:44 <fresheyeball> the cabal.project file actually has no effect on hls
20:31:57 <fresheyeball> I figured out what was wrong with cabal, I just didn't import something
20:32:16 <fresheyeball> but still hls is not picking up that I have cpp-options set in the cabal file
20:32:43 <fresheyeball> http://ix.io/3wLR
20:32:46 <fresheyeball> here is the cabal file
20:33:39 <fresheyeball> here is the hie.yml http://ix.io/3wLT
20:33:49 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f)
20:34:03 <fresheyeball> cabal.project http://ix.io/3wLS
20:35:25 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
20:35:25 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
20:35:25 wroathe joins (~wroathe@user/wroathe)
20:37:17 abrantesasf joins (~abrantesa@2804:14d:b086:4b3c:2e56:dcff:fedb:62f)
20:40:10 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
20:40:58 × immae quits (~immae@2a01:4f8:141:53e7::) (Ping timeout: 240 seconds)
20:40:58 × JeHugawa quits (~jehugawa@2a01:4f9:c010:4649::1) (Ping timeout: 240 seconds)
20:42:11 JeHugawa joins (~jehugawa@2a01:4f9:c010:4649::1)
20:42:23 immae joins (~immae@2a01:4f8:141:53e7::)
20:44:36 <maerwald> try to set it in cabal.project
20:46:33 <fresheyeball> maerwald: how?
20:46:40 <fresheyeball> https://cabal.readthedocs.io/en/latest/cabal-projectindex.html#cap-cabal.project%20fields
20:46:45 <fresheyeball> I don't see it as an option
20:47:04 <maerwald> fresheyeball: we described it earlier
20:47:28 <maerwald> https://cabal.readthedocs.io/en/3.4/cabal-project.html?highlight=ghc-options#package-configuration-options
20:47:46 hseg joins (~gesh@IGLD-84-228-238-79.inter.net.il)
20:49:23 <hseg> hi. have a type (of multisets) that can be given a Num instance, except that (*) requirs some constraints on tyvars. which forces me to constrain the entire instance. which locks me out of using linear operations on the type at types failing the constraint. advice?
20:49:57 <hseg> (in particular, need (*) :: Monoid a => MSet a -> MSet a -> MSet a, but would like (+) :: MSet a -> MSet a -> MSet a)
20:50:20 <glguy> You can use a different class/operator for the unconstrained + operation
20:50:46 <fresheyeball> yay!
20:50:48 <fresheyeball> that worked
20:51:17 <hseg> yeah, but that's ugly and duplicates names
20:51:29 <fresheyeball> http://ix.io/3wLY
20:51:31 <fresheyeball> this did the trick
20:51:36 <fresheyeball> now hls is working for test suites
20:51:43 <fresheyeball> maerwald:++
20:52:19 <glguy> hseg: perhaps, but you can't have different constraints for the different methods of Num, so you'll need a solution that isn't Num for that
20:52:29 <hseg> shame
20:52:56 <hseg> current solution is to just fmap (fromJust . getFirst) . ... . fmap (First . Just)
20:53:41 <hseg> which is annoying, and since my underlying implementation uses Data.Map, cannot be turned into coercions
20:54:38 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
20:56:16 <hseg> not to mention that this doesn't generalize well -- if I need to tag all the parameters to a function, lift a retagging, etc I need a new combinator
20:56:24 dsrt^ joins (~dsrt@12.16.129.111)
20:56:38 <hseg> unlike coerce, which I can fit to the usecase with judicious tyapps
20:58:47 <dminuoso> hseg: By the way, did you make any progress with your tyfam errors last night?
20:59:56 <hseg> y, reported, mpickering suggested it might be due to ANN interacting with binding groups https://gitlab.haskell.org/ghc/ghc/-/issues/20265
21:02:17 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
21:02:17 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
21:02:17 wroathe joins (~wroathe@user/wroathe)
21:03:10 elf_fortrez joins (~elf_fortr@adsl-72-50-4-39.prtc.net)
21:03:13 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
21:03:29 <hseg> hm. could live with the retagging if I could write sth like retag @(MSet :.: MSet) @MSet :: (forall f. Monoid (f l) => MSet (MSet (f k)) -> MSet (f l)) -> MSet (MSet k) -> MSet l
21:05:05 × d0ku quits (~d0ku@178.43.19.40.ipv4.supernova.orange.pl) (Ping timeout: 248 seconds)
21:05:27 <hseg> ... iow, want retag @f1 @f2 @f3 ... :: (forall f. Monoid (f r) => f1 (f x1) -> f2 (f x2) -> ... -> fn (f r)) -> f1 x1 -> f2 x2 -> ... fn r
21:05:41 acidjnk_new joins (~acidjnk@p200300d0c72b9556a59b812708dd2de4.dip0.t-ipconnect.de)
21:06:08 <hseg> ... which might be doable with a combination of the van laarhoven trick, the printf trick, and a fundep
21:06:17 <dminuoso> Interesting
21:06:29 retroid_ joins (~retro@5ec19a54.skybroadband.com)
21:09:11 × retro_ quits (~retro@5ec19a54.skybroadband.com) (Ping timeout: 258 seconds)
21:09:54 <hseg> ... actually printf=van laarhoven here
21:11:14 × Hobbyboy quits (Hobbyboy@hobbyboy.co.uk) (Quit: The BNC has broken!)
21:11:26 Hobbyboy joins (Hobbyboy@hobbyboy.co.uk)
21:12:10 × megaTherion quits (~therion@unix.io) (Ping timeout: 240 seconds)
21:12:34 × farn quits (~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505) (Ping timeout: 240 seconds)
21:12:34 × kawzeg quits (kawzeg@2a01:7e01::f03c:92ff:fee2:ec34) (Ping timeout: 240 seconds)
21:12:53 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f) (Remote host closed the connection)
21:12:58 × jocke-l quits (jocke-l@a.x0.is) (Ping timeout: 240 seconds)
21:13:45 farn joins (~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505)
21:13:49 kawzeg joins (kawzeg@2a01:7e01::f03c:92ff:fee2:ec34)
21:15:03 jocke-l joins (jocke-l@a.x0.is)
21:18:55 batch12 joins (~user@192.152.118.97)
21:20:17 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
21:23:26 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f)
21:23:42 Guest86 joins (~Guest86@68.233.176.29)
21:23:58 <Guest86> is this the correct place to get support for haskell vscode extension?
21:25:04 <batch12> How do I put a constraint on a type-level list?
21:25:04 <batch12> I have: class Thing a
21:25:04 <batch12> and a GADT: data Carrier (is :: [i])
21:25:04 <batch12> I know I can say: data Carrier (is :: [Nat])
21:25:07 <batch12> But I want to say that any i that is allowed to be in that type-level list, must have a Thing instance.
21:25:11 <batch12> Something like: data Carrier (is :: [forall i => Thing i])
21:25:14 <batch12> Any idea about how to do this?
21:26:19 <dminuoso> batch12: newtype it
21:26:34 × jtomas_ quits (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection)
21:26:36 <dminuoso> Or use a GADT
21:27:06 <dminuoso> % data IsShow where Show a => a -> IsShow
21:27:06 <yahb> dminuoso: ; <interactive>:15:24: error: parse error on input `a'
21:27:13 <dminuoso> % data IsShow where MkShow :: Show a => a -> IsShow
21:27:14 <yahb> dminuoso:
21:27:47 × amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 240 seconds)
21:28:53 <batch12> So I can do that, and that's what I would do at the value level. But why do I need to do that here? It's already a list of types holding any type of kind * (so a heterogeneous list)
21:29:14 megaTherion joins (~therion@coruscant.unix.io)
21:29:44 <batch12> It feels like an existential type is solving an entirely different problem
21:30:05 × ubert quits (~Thunderbi@178.165.201.23.wireless.dyn.drei.com) (Ping timeout: 250 seconds)
21:31:28 × dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2)
21:32:39 <dminuoso> mmm
21:33:02 <dminuoso> % type T = '[Show i => i]
21:33:02 <yahb> dminuoso: ; <interactive>:17:17: error: Not in scope: type variable `i'; <interactive>:17:22: error: Not in scope: type variable `i'
21:33:06 <dminuoso> % type T = '[forall i. Show i => i]
21:33:07 <yahb> dminuoso: ; <interactive>:18:1: error:; * Illegal polymorphic type: forall i. Show i => i; GHC doesn't yet support impredicative polymorphism; * In the type synonym declaration for `T'
21:33:16 <dminuoso> batch12: ^- here. impredicativity is the issue
21:33:41 <dminuoso> being in a type list doesnt help, as under the hood its all TypeInType
21:33:54 <hseg> btw, ghci has stopped listing loaded modules recently. anyone know what's up with that?
21:34:43 <dminuoso> hseg: http://downloads.haskell.org/~ghc/latest/docs/html/users_guide/9.0.1-notes.html#ghci
21:34:56 <sm> a long awaited ux fix
21:35:29 <tomsmeding> hseg: :set prompt "%s> "
21:35:45 <dminuoso> batch12: With quick look (9.2?), you should be able to use that in the future.
21:35:52 <dminuoso> batch12: and mind you, an existential is just an encoding of the same fact.
21:35:54 <hseg> ok, fair, has annoyed me in the past
21:36:11 <hseg> but is there a way to list all loaded modules, then?
21:37:17 <dminuoso> % :show imports -- hseg
21:37:18 <yahb> dminuoso: syntax: :show [args | prog | editor | stop | imports | modules | bindings | linker | breaks | context | packages | paths | language | targets]
21:37:20 <dminuoso> % :show imports
21:37:21 <yahb> dminuoso: import Control.Applicative; import Control.Arrow; import Control.Concurrent; import Control.Concurrent.Chan; import Control.Concurrent.MVar; import Control.Concurrent.STM; import Control.Concurrent.STM.TChan; import Control.Concurrent.STM.TVar; import Control.Comonad.Store; import Control.Exception; import Control.Exception.Lens; import Control.Monad; import Control.Monad.Cont; import Control.Monad.Except; impo
21:37:32 <hseg> awesome, thanks
21:37:44 <dminuoso> hseg: Try using the GHC manual more! It's superb :)
21:37:57 <dminuoso> One of the few manuals that are really well maintained
21:38:03 <batch12> @dminuoso Thanks. Yeah, the variant with the constraint there leads to impredicative types. But this problem doesn't have anything to do with impredicativity. Given that you can write '[Nat] there, which is a kind of constraint already, I don't see why having a type class constraint would be any different?
21:38:03 <lambdabot> Unknown command, try @list
21:38:12 <hseg> usually do! didn't find this one though
21:38:28 <dminuoso> batch12: The problem has nothing to do with the constraint, it has to do with the quantification.
21:38:37 <dminuoso> Consider:
21:38:43 <dminuoso> [forall a. a]
21:38:43 <batch12> dminuoso: but the quantification always exists even with [Nat]
21:38:45 × elf_fortrez quits (~elf_fortr@adsl-72-50-4-39.prtc.net) (Quit: Client closed)
21:38:53 <dminuoso> No, Nat is not quantified.
21:39:18 <batch12> data Carrier (is :: [Nat]); is allowing for a type list that contains any type of kind Nat
21:39:27 × pbrisbin quits (~patrick@174-081-116-011.res.spectrum.com) (Ping timeout: 240 seconds)
21:39:37 <dminuoso> batch12: The key thing here is that given `type T = [forall a. a]`, with impredicativity you are allowed to instantiate `a` at T.
21:39:59 roboguy__ joins (~roboguy_@2605:a601:afe7:9f00:20c9:56f0:4ff9:be7b)
21:40:08 elf_fortrez joins (~elf_fortr@adsl-72-50-6-134.prtc.net)
21:40:13 <dminuoso> batch12: but with `data All where All :: a -> All`, [All] no longer has that self referential property
21:40:41 <batch12> That's at the type level, but this is a kind annotation instead
21:40:55 <dminuoso> With TypeInType there's no difference
21:41:03 <dminuoso> We no longer have kinds
21:41:34 <dminuoso> 23:39:18 batch12 | data Carrier (is :: [Nat]); is allowing for a type list that contains any type of kind Nat
21:41:41 <dminuoso> Yes, there is still no quantification on Nat.
21:41:52 × roboguy__ quits (~roboguy_@2605:a601:afe7:9f00:20c9:56f0:4ff9:be7b) (Client Quit)
21:42:56 <dminuoso> batch12: TypeInType is on the brink of deprecation I think, because under the hood its been TypeInType for a few years even!
21:43:05 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:5b4:1bf2:3392:8995) (Ping timeout: 250 seconds)
21:43:16 <batch12> Right, it's deprecated for PolyKinds already
21:43:39 <batch12> But I don't see why quantification is needed here at all. There should be some other approach that avoids this issue
21:43:45 <dminuoso> you want a constraint
21:43:57 <dminuoso> Which type variable do you want a constraint on?
21:44:13 <dminuoso> Or do you want a nullary constraint like
21:44:17 <elf_fortrez> Turkey?
21:45:04 <batch12> dminuoso: The answer is probably to write a type family that takes the list and provides a Constraint which enforces that they're all members of this type class
21:45:15 <dminuoso> batch12: Ohh hold on I think I misunderstood what you're trying to do.
21:45:38 lavaman joins (~lavaman@98.38.249.169)
21:45:56 <dminuoso> batch12: Wouldn't that be a lifted GADT?
21:46:07 <dminuoso> Not sure whether that is even a thing
21:46:26 <dminuoso> % :set -XDataKinds
21:46:26 <yahb> dminuoso:
21:46:29 <dminuoso> % :set -XGADTs
21:46:29 <yahb> dminuoso:
21:46:45 <elf_fortrez> kind is child in germa
21:46:56 <elf_fortrez> German
21:46:57 <dminuoso> % data F where MkF :: Num a => a -> F
21:46:57 <yahb> dminuoso:
21:47:07 <elf_fortrez> Therefore Kinder
21:47:11 <dminuoso> % :k F
21:47:11 <yahb> dminuoso: *
21:47:17 <dminuoso> % :k MkF
21:47:17 <yahb> dminuoso: ; <interactive>:1:1: error:; * Data constructor `MkF' cannot be used here (it has an unpromotable context `Num a'); * In the type `MkF'
21:49:22 <monochrom> I feel left out that all #haskell questions are now type-level programming questions.
21:49:45 <dminuoso> % data G = forall a. Num a => MkG
21:49:45 <yahb> dminuoso: ; <interactive>:14:10: error:; * Could not deduce (Num a0); from the context: Num a; bound by the type of the constructor `MkG':; forall a. Num a => G; at <interactive>:14:10-31; The type variable `a0' is ambiguous; * In the ambiguity check for `MkG'; To defer the ambiguity check to use sites, enable AllowAmbiguousTypes; In the definition of
21:49:50 <monochrom> (To clarify, I haven't studied or practiced that.)
21:49:56 <dminuoso> Uh what?
21:50:01 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
21:50:03 <dminuoso> % :q
21:50:03 <yahb> dminuoso:
21:50:05 <dminuoso> % data G = forall a. Num a => MkG
21:50:06 <yahb> dminuoso: ; <interactive>:1:10: error:; * Could not deduce (Num a0); from the context: Num a; bound by the type of the constructor `MkG':; forall a. Num a => G; at <interactive>:1:10-31; The type variable `a0' is ambiguous; * In the ambiguity check for `MkG'; To defer the ambiguity check to use sites, enable AllowAmbiguousTypes; In the definition of d
21:50:34 <dminuoso> Oh
21:50:36 <dminuoso> % data G = forall a. Num a => MkG a
21:50:37 <yahb> dminuoso:
21:50:40 <dminuoso> % :k MkG
21:50:40 <yahb> dminuoso: ; <interactive>:1:1: error:; * Data constructor `MkG' cannot be used here (it has an unpromotable context `Num a'); * In the type `MkG'
21:50:54 <dminuoso> % class Foo (i :: k)
21:50:54 <yahb> dminuoso:
21:50:58 <dminuoso> % data G = forall a. Foo a => MkG a
21:50:59 <yahb> dminuoso:
21:51:01 <dminuoso> % :k MkG
21:51:02 <yahb> dminuoso: ; <interactive>:1:1: error:; * Data constructor `MkG' cannot be used here (it has an unpromotable context `Foo a'); * In the type `MkG'
21:51:06 <monochrom> Or I should be happy that the reason there are no more value-level programming questions is because everyone is already an expert in Haskell value-level programming. :)
21:51:20 <dminuoso> batch12: No idea. But you'd need this.
21:51:37 <dminuoso> batch12: Or, you can just wait for quick look in GHC 9.2, flip on impredicativity and enjoy the rest.
21:51:52 <hseg> monochrom: what kind of questions are you missing?
21:52:06 <monochrom> Value-level programming questions.
21:52:32 <monochrom> "How do I traverse a list at the value level only?"
21:52:56 <dminuoso> https://aphyr.com/posts/342-typing-the-technical-interview
21:53:04 <dminuoso> monochrom: You knew this was coming, didn't you?
21:53:05 <hseg> oh that's a classic
21:54:52 <monochrom> I enjoyed that one as a joke. Didn't think of it as prophecy though. Well, I guess I didn't have foresight.
21:55:48 <monochrom> But yeah some of that could be improved by type families today.
21:56:41 <monochrom> On second thought, I didn't study type-level programming, I don't actually know whether type families would help that one.
21:58:23 <monochrom> And then you can also criticize me for turning down term-level questions when they actually come up, such as yesterday, with "I can't believe that your prof's course material didn't show examples".
22:00:18 <dminuoso> Or "I can't believe that your prof's course material didn't start off with type families"
22:00:26 <dminuoso> That's where your job is headed.
22:00:46 <dminuoso> Soon we will abolish code generation in GHC.
22:01:29 <batch12> dminuoso: This does the job:
22:01:29 <batch12> type family IsShow (a :: [*]) :: Constraint where
22:01:29 <batch12> IsShow '[] = ()
22:01:29 <batch12> IsShow (h:t) = (Show h, IsShow t)
22:01:59 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f) (Remote host closed the connection)
22:02:28 <dminuoso> % type family IsShow (a :: [*]) :: Constraint where IsShow '[] = (); IsShow (h:t) = (Show h, IsShow t)
22:02:28 <yahb> dminuoso:
22:03:01 <dminuoso> And how do you intend to use this?
22:04:58 <batch12> I'm maintaining a stack of operations that are attached to some values
22:05:43 <batch12> (the actual class is not show..)
22:05:57 <batch12> Thanks for the help!
22:08:18 <fresheyeball> ok I got another quandry
22:08:25 <fresheyeball> postgresql simple
22:08:35 <fresheyeball> Incompatible {errSQLType = "record", errSQLTableOid = Nothing, errSQLField = "row", errHaskellType = "Text", errMessage = "types incompatible"}
22:08:44 <fresheyeball> The column has type text
22:08:49 <fresheyeball> and the haskell type is Text
22:08:53 <fresheyeball> I am at a loss
22:09:25 <dminuoso> fresheyeball: can you show the code?
22:09:55 <hpc> can the column be null?
22:09:58 <fresheyeball> dminuoso: http://ix.io/3wMj
22:10:05 <fresheyeball> no it cannot be null
22:10:27 <fresheyeball> http://ix.io/3wMk
22:10:31 <fresheyeball> this is the schema
22:12:06 <dminuoso> fresheyeball: Is there valid utf8 in there?
22:12:16 benin036932 joins (~benin@183.82.178.142)
22:12:41 <dminuoso> I expect not.
22:13:34 <fresheyeball> dminuoso: I am not sure, it's being generated by an Arbitrary instance
22:14:07 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
22:14:19 <fresheyeball> ok I hard coded it to "user" and "pass" and the error persists
22:14:23 <fresheyeball> those are both utf8
22:15:27 × batch12 quits (~user@192.152.118.97) (Ping timeout: 240 seconds)
22:17:21 <dminuoso> errSQLField = "row"
22:17:37 <fresheyeball> ?
22:18:12 <dminuoso> I find that curious
22:18:19 <dminuoso> It should mention the column name
22:18:58 <fresheyeball> It was the parens in the query
22:19:19 <dminuoso> fresheyeball: Does this trigger on insert or select?
22:19:28 <fresheyeball> select
22:19:53 <dminuoso> 00:18:58 fresheyeball | It was the parens in the query
22:19:55 <dminuoso> Yeah.
22:19:59 <dminuoso> That explains it.
22:20:30 <dminuoso> Also why there's no table oid, or SQLType "record"
22:20:47 <fresheyeball> well onto the next error
22:20:54 d0ku joins (~d0ku@37.30.113.168.nat.umts.dynamic.t-mobile.pl)
22:21:06 <fresheyeball> apparently my createUser query doesn't make a user that is fount by my lookupHashByUsername function
22:22:26 <dminuoso> fresheyeball: the order of columns is swapped around in the insert.
22:22:33 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f)
22:22:35 <fresheyeball> so
22:22:39 <dminuoso> or not?
22:22:52 <fresheyeball> I don't understand why it matters the order
22:22:55 <fresheyeball> they are named
22:23:20 <dminuoso> fresheyeball: what does the ToField instance for User look like?
22:23:31 <fresheyeball> it's derived from a newtype of Text
22:24:13 <dminuoso> Anyway. Enable debugging in your postgresql server
22:24:20 <dminuoso> That way you can see what queries your database is actually getting
22:24:25 <dminuoso> This can be a gods end with postgresql-simple
22:26:27 <fresheyeball> well I looked in the db
22:26:33 <fresheyeball> and there is in fact a user there
22:26:35 <fresheyeball> oh shit
22:26:37 <fresheyeball> I see
22:26:51 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f) (Ping timeout: 250 seconds)
22:27:23 <aegon> fresheyeball: does the flow your trying to emulate in haskell work in raw sql?
22:27:31 <fresheyeball> user_name needs UNIQUE
22:27:57 Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com)
22:28:31 <fresheyeball> ok tests run now atleast
22:28:53 <dminuoso> fresheyeball: Btw, you might want to use cryptonite rather if security is important to you. :)
22:29:06 <dminuoso> Argh
22:29:09 <dminuoso> I meant libsodium,
22:29:11 <fresheyeball> what is wrong with Data.Password.Argon2
22:29:13 <fresheyeball> ?
22:29:15 <dminuoso> Im really tired and need to go to bed.
22:29:19 <dminuoso> No I meant libsodium
22:29:35 <dminuoso> fresheyeball: libsodium is written by crypto experts with a keen focus on avoiding side channels
22:29:35 <fresheyeball> well apparently Data.Password cannot handle all strings
22:29:38 <dminuoso> all these haskell libraries are not.
22:29:47 × d0ku quits (~d0ku@37.30.113.168.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds)
22:30:40 <dminuoso> There's not even published papers on side channels in haskell semantics, the code that GHC produces, the way its optimized works, how this affects cache lines, CPU instructions, and everything
22:31:44 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f)
22:32:22 × Tuplanolla quits (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
22:32:24 <fresheyeball> ok
22:32:28 <fresheyeball> this is good enough for now
22:32:31 <fresheyeball> I will look into it
22:32:49 <fresheyeball> either way, it's actually the user check that is failing now
22:32:58 <fresheyeball> "L\NUL'\"?Dk"
22:32:59 <fresheyeball> expected: "L\NUL'\"?Dk"
22:33:01 <fresheyeball> but got: "L"
22:33:22 <fresheyeball> utf8 problem?
22:34:19 <dminuoso> Postgresql does not permit NUL bytes in text
22:34:41 <dminuoso> It's surprising this gets truncated silently
22:35:54 <fresheyeball> ok well I seriously doubt that users are going manage to get a NUL byte into a webform
22:37:05 <dminuoso> And this is how bugs and security issues are born
22:37:34 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 250 seconds)
22:37:43 <dminuoso> I seriously doubt someone is named "; DROP ALL TABLES"
22:38:03 <hseg> (except for bobby tables)
22:38:52 <dminuoso> fresheyeball: Ignoring these types of bugs can have surprising results
22:39:00 <dminuoso> Consider the case where a user might call themselves
22:39:04 <dminuoso> a\BELdmin
22:39:31 <dminuoso> And suddenly this becomes `admin` after roundtripping say through the database, or some rendering engine
22:40:07 × jgeerds quits (~jgeerds@55d4b311.access.ecotel.net) (Ping timeout: 240 seconds)
22:41:03 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
22:43:03 <fresheyeball> dminuoso: ouch
22:43:12 × ham quits (~ham4@user/ham) (Quit: Leaving)
22:43:29 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
22:50:07 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
22:52:15 cjb joins (~cjb@user/cjb)
22:53:42 × haykam quits (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
22:53:56 haykam joins (~haykam@static.100.2.21.65.clients.your-server.de)
22:54:00 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
22:57:13 × elf_fortrez quits (~elf_fortr@adsl-72-50-6-134.prtc.net) (Quit: Client closed)
22:59:31 elf_fortrezz joins (~elf_fortr@adsl-72-50-6-134.prtc.net)
23:00:02 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
23:01:31 × acidjnk_new quits (~acidjnk@p200300d0c72b9556a59b812708dd2de4.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
23:01:38 × forell quits (~forell@user/forell) (Ping timeout: 268 seconds)
23:01:50 × elf_fortrezz quits (~elf_fortr@adsl-72-50-6-134.prtc.net) (Client Quit)
23:02:12 elf_fortrez joins (~elf_fortr@adsl-72-50-6-134.prtc.net)
23:03:42 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
23:04:30 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
23:06:58 lavaman joins (~lavaman@98.38.249.169)
23:07:48 × dsrt^ quits (~dsrt@12.16.129.111) (Remote host closed the connection)
23:08:30 dsrt^ joins (~dsrt@12.16.129.111)
23:11:07 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
23:11:43 × chisui quits (~chisui@200116b868b05800c65627e740591fd3.dip.versatel-1u1.de) (Ping timeout: 246 seconds)
23:12:06 × elf_fortrez quits (~elf_fortr@adsl-72-50-6-134.prtc.net) (Quit: Client closed)
23:16:04 forell joins (~forell@user/forell)
23:17:39 teo joins (~teo@137.220.120.222)
23:17:52 × hseg quits (~gesh@IGLD-84-228-238-79.inter.net.il) (Ping timeout: 250 seconds)
23:18:20 × Katarushisu quits (~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net) (Quit: Ping timeout (120 seconds))
23:19:37 × teo quits (~teo@137.220.120.222) (Remote host closed the connection)
23:21:04 dajoer joins (~david@user/gvx)
23:23:14 venue joins (~venue@user/venue)
23:27:27 × vysn quits (~vysn@user/vysn) (Ping timeout: 240 seconds)
23:34:31 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
23:34:40 <Cajun> yeah anything that has to do with user entry should be essentially babied from your code. sanitize it in every possible way
23:35:10 <Cajun> as much as script injection/ACE is fun to mess with, its not fun when someone messes with it on your platform :P
23:35:52 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
23:36:30 × Gurkenglas quits (~Gurkengla@dslb-088-064-053-140.088.064.pools.vodafone-ip.de) (Ping timeout: 250 seconds)
23:36:46 × ft quits (~ft@shell.chaostreff-dortmund.de) (Ping timeout: 268 seconds)
23:41:24 d0ku joins (~d0ku@178.43.56.75.ipv4.supernova.orange.pl)
23:45:26 × Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
23:45:44 ft joins (~ft@shell.chaostreff-dortmund.de)
23:54:50 × fresheyeball quits (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
23:55:44 batch12 joins (~user@192.152.118.97)

All times are in UTC on 2021-08-23.