Home freenode/#haskell: Logs Calendar

Logs on 2020-11-03 (freenode/#haskell)

00:00:01 × ffej quits (~ffej@195.206.169.184) ()
00:01:18 <Axma45768> gobbleguy: that's a great explanation, nice work
00:02:10 Axma45768 is now known as Axman6
00:02:43 <gobbleguy> Using glirc?
00:03:35 <Axman6> I'm using glirc
00:03:37 <gobbleguy> If you want to avoid my conservative nickname fallback code you can add more nicknames to your list of alternatives :)
00:03:52 <Axman6> I was surprised how good that fallback was actually
00:04:12 <Axman6> gobbleguy = glguy?
00:04:14 <gobbleguy> yeah
00:04:28 <Axman6> everything makes sense
00:04:35 <gobbleguy> turn on "show-accounts: yes" so you don't have to guess :)
00:04:58 <gobbleguy> >>> 16:01 Axma45768(axman6): gobbleguy: that's a great explanation, nice work
00:05:20 mbomba joins (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca)
00:08:45 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
00:09:15 <monochrom> Yikes, gobbleguy, is it Thanksgiving turkey theme now? :)
00:09:45 <monochrom> "Yeah after Steam Halloween Sale we're looking forward to Steam Autumn Sale!"
00:10:06 <Axman6> it's Spring tho
00:10:16 <gobbleguy> I just want IRC to be fun ^_^ What's more fun than seasonal nicknames?
00:10:25 <koz_> Axman6: Damn that Northern Hemisphere centrism.
00:10:55 <Axman6> i reckon, bloody seppos
00:10:57 × PerseusPlease quits (~{mikey}@212.86.35.157) (Quit: Leaving)
00:11:03 <gobbleguy> Does Steam show that it's an Autum Sale in the southern hemisphere?
00:11:08 <gobbleguy> +n
00:11:50 <Axman6> our internet isn't fast enough to get steam
00:12:18 <gobbleguy> Warm-water Autumn Sale!
00:12:23 vacm joins (~vacwm@70.23.92.191)
00:16:38 howdoi joins (uid224@gateway/web/irccloud.com/x-gtoygnwcsyvwpslb)
00:17:09 × gxt quits (~gxt@gateway/tor-sasl/gxt) (Remote host closed the connection)
00:17:53 gxt joins (~gxt@gateway/tor-sasl/gxt)
00:19:11 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
00:21:52 × elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
00:24:48 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
00:27:18 × tsrt^ quits (tsrt@ip98-184-89-2.mc.at.cox.net) ()
00:27:23 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
00:29:17 emnmauiigw^ joins (emnmauiigw@ip98-184-89-2.mc.at.cox.net)
00:29:50 nbloomf joins (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48)
00:31:19 × Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
00:32:20 fendor__ joins (~fendor@91.141.3.235.wireless.dyn.drei.com)
00:32:39 × mbomba quits (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Quit: WeeChat 2.9)
00:34:36 × fendor_ quits (~fendor@91.141.1.122.wireless.dyn.drei.com) (Ping timeout: 256 seconds)
00:36:22 × mimi1vx quits (~mimi@tulipan.habr.nat.praha12.net) (Ping timeout: 256 seconds)
00:39:56 Jeanne-Kamikaze joins (~Jeanne-Ka@68.235.43.142)
00:41:30 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) (Quit: My MacBook has gone to sleep. ZZZzzz…)
00:46:54 × vacm quits (~vacwm@70.23.92.191) (Quit: My MacBook has gone to sleep. ZZZzzz…)
00:47:52 nbloomf joins (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48)
00:48:32 vacm joins (~vacwm@70.23.92.191)
00:48:57 × psygate quits (~psygate@unaffiliated/psygate) (Quit: Leaving)
00:49:25 Axman6 considers /nick Axmurderman6
00:50:10 × ahmr88 quits (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection)
00:52:18 × Jeanne-Kamikaze quits (~Jeanne-Ka@68.235.43.142) (Quit: Leaving)
00:52:52 plutoniix joins (~q@175.176.222.7)
00:59:08 dbmikus_ joins (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
01:00:27 × Deide quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa)
01:00:45 × ps-auxw quits (~arneb@p548c6f52.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
01:02:35 mimi1vx joins (~mimi@2a01:490:16:1026:90cd:be5f:a52c:e47e)
01:02:35 × carlomagno quits (~cararell@148.87.23.11) (Remote host closed the connection)
01:04:05 carlomagno joins (~cararell@148.87.23.4)
01:04:23 × hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
01:04:30 hackage ttc 0.3.0.0 - Textual Type Classes https://hackage.haskell.org/package/ttc-0.3.0.0 (TravisCardwell)
01:06:00 hackage predicate-typed 0.7.4.2 - Predicates, Refinement types and Dsl https://hackage.haskell.org/package/predicate-typed-0.7.4.2 (gbwey)
01:06:13 <bqv> writing to a tchan is nonblocking, right?
01:06:26 <bqv> linked list, surely it is
01:06:30 hekkaidekapus joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
01:06:34 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
01:06:49 ps-auxw joins (~arneb@p548d590b.dip0.t-ipconnect.de)
01:07:15 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Quit: geowiesnot)
01:11:17 × ps-auxw quits (~arneb@p548d590b.dip0.t-ipconnect.de) (Disconnected by services)
01:11:26 ps-auxw joins (~arneb@p548d571d.dip0.t-ipconnect.de)
01:22:48 <edwardk> for some reason whenever i see tchan i think 4chan
01:22:58 × wroathe quits (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
01:23:48 <bqv> if we assume the *chans are counting in base32 it's a possibility
01:24:27 Lord_of_Life joins (~Lord@46.217.218.100)
01:25:30 × Lord_of_Life_ quits (~Lord@46.217.223.45) (Ping timeout: 272 seconds)
01:26:15 <monochrom> Yes TChan is a mutable linked list.
01:26:25 × vacm quits (~vacwm@70.23.92.191) (Quit: My MacBook has gone to sleep. ZZZzzz…)
01:27:10 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
01:27:13 Jeanne-Kamikaze joins (~Jeanne-Ka@68.235.43.86)
01:29:33 × xff0x quits (~fox@2001:1a81:537c:3e00:9b11:58b1:f4d:830a) (Ping timeout: 268 seconds)
01:29:55 xff0x joins (~fox@2001:1a81:537c:3e00:5a39:1b16:9de1:d497)
01:31:18 vacm joins (~vacwm@70.23.92.191)
01:35:48 thir joins (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
01:36:13 × theorb quits (~theorb@cpc81860-swin19-2-0-cust166.3-1.cable.virginm.net) (Ping timeout: 264 seconds)
01:36:16 × vacm quits (~vacwm@70.23.92.191) (Ping timeout: 272 seconds)
01:37:45 × xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 240 seconds)
01:40:07 danso joins (~dan@69-165-210-185.cable.teksavvy.com)
01:40:17 <dmwit> What does "blocking" mean to you in the context of STM?
01:40:44 × mimi1vx quits (~mimi@2a01:490:16:1026:90cd:be5f:a52c:e47e) (Ping timeout: 240 seconds)
01:42:03 <dmwit> Perhaps one sensible meaning would be "calls retry explicitly" (as opposed to retrying because of staleness in the transaction log).
01:42:50 <dmwit> If that's the meaning you like, then you can just read the whole source of `writeTChan` (it's only four lines long!) and see that it doesn't mention retry.
01:42:56 <dmwit> https://hackage.haskell.org/package/stm-2.5.0.0/docs/src/Control.Concurrent.STM.TChan.html#writeTChan
01:43:44 × thir quits (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
01:44:33 × akad_ quits (~akad@109107030050.radomsko.vectranet.pl) (Ping timeout: 260 seconds)
01:45:29 <dsal> e.g., go chan writes block until something is ready to receive from the channel.
01:45:33 theorbtwo joins (~theorb@cpc81822-swin19-2-0-cust3.3-1.cable.virginm.net)
01:45:45 <dsal> But yeah, reading STM code makes me a little teary eyed.
01:49:16 <bqv> i think my question makes less sense than i realised, reading that
01:51:49 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds)
01:53:03 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
01:54:38 oats is now known as noats
01:56:19 × Foritus quits (~buggery@cpc91334-watf11-2-0-cust153.15-2.cable.virginm.net) (Quit: ლ(ಠ益ಠლ) .:. <Ashley> my porn is hidden in a folder called "BBC Micro Emulator")
01:57:10 Foritus joins (~buggery@cpc91334-watf11-2-0-cust153.15-2.cable.virginm.net)
01:57:24 × Foritus quits (~buggery@cpc91334-watf11-2-0-cust153.15-2.cable.virginm.net) (Remote host closed the connection)
01:58:02 conal joins (~conal@64.71.133.70)
01:58:11 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 265 seconds)
01:58:12 Foritus joins (~buggery@cpc91334-watf11-2-0-cust153.15-2.cable.virginm.net)
02:01:58 bitmapper joins (uid464869@gateway/web/irccloud.com/x-xutwnldhztnzggtn)
02:02:52 noats is now known as oats
02:03:40 V3ct0r joins (~V3ct0r@185.163.110.116)
02:07:08 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
02:08:24 × Amras quits (~Amras@unaffiliated/amras0000) (Ping timeout: 268 seconds)
02:12:33 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
02:13:10 <dsal> STM is super composable, so you can make such an exchange (with timeout) if you need it.
02:14:33 <dsal> Which, I guess is just TMVar
02:15:44 × acidjnk_new2 quits (~acidjnk@p200300d0c718f623ecaa4caf6803be45.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
02:17:30 hackage gargoyle-postgresql 0.2.0.1 - Manage PostgreSQL servers with gargoyle https://hackage.haskell.org/package/gargoyle-postgresql-0.2.0.1 (abrar)
02:20:33 guest113 joins (~user@49.5.6.87)
02:21:05 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:21:44 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
02:23:33 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
02:27:05 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
02:27:45 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) (Quit: My MacBook has gone to sleep. ZZZzzz…)
02:28:35 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
02:30:47 nbloomf joins (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48)
02:31:04 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) (Client Quit)
02:33:44 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds)
02:34:45 nbloomf joins (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48)
02:41:45 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
02:42:05 xerox_ joins (~xerox@unaffiliated/xerox)
02:42:13 <ski> "type families are not injective" -- unless declared to be
02:44:00 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) (Quit: My MacBook has gone to sleep. ZZZzzz…)
02:46:25 nbloomf joins (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48)
02:47:11 Stanley00 joins (~stanley00@unaffiliated/stanley00)
02:47:24 × sveit quits (~sveit@45.77.0.246) (Quit: Bye)
02:47:33 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
02:47:41 sveit joins (~sveit@45.77.0.246)
02:49:12 conal joins (~conal@64.71.133.70)
02:51:57 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) (Quit: My MacBook has gone to sleep. ZZZzzz…)
02:54:13 DataComputist joins (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
02:55:37 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
02:55:44 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
02:56:24 drbean joins (~drbean@TC210-63-209-59.static.apol.com.tw)
02:56:30 × xff0x quits (~fox@2001:1a81:537c:3e00:5a39:1b16:9de1:d497) (Ping timeout: 268 seconds)
02:56:31 nbloomf joins (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48)
02:56:37 × borne quits (~fritjof@200116b864ec3c00c8b76624f4b75a13.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
02:57:17 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) (Client Quit)
02:57:31 dusty_pacer joins (~pi@2600:6c50:80:2f4a:e9d0:6569:1cea:d1d4)
02:58:07 xff0x joins (~fox@2001:1a81:53b4:ba00:23ce:a11d:3032:dba3)
02:58:20 × ddellacosta quits (~dd@86.106.121.168) (Ping timeout: 258 seconds)
03:00:01 × V3ct0r quits (~V3ct0r@185.163.110.116) ()
03:00:32 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 265 seconds)
03:01:24 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
03:02:29 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
03:02:51 christo joins (~chris@81.96.113.213)
03:03:24 ddellacosta joins (~dd@86.106.121.168)
03:06:24 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
03:08:24 lagothrix is now known as Guest44571
03:08:24 × Guest44571 quits (~lagothrix@unaffiliated/lagothrix) (Killed (card.freenode.net (Nickname regained by services)))
03:08:33 lagothrix joins (~lagothrix@unaffiliated/lagothrix)
03:08:45 × ddellacosta quits (~dd@86.106.121.168) (Ping timeout: 265 seconds)
03:09:02 mimi1vx joins (~mimi@2a01:490:16:1026:90cd:be5f:a52c:e47e)
03:09:13 × olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 264 seconds)
03:09:57 <monochrom> Hahaha, go chan has writer's block, haskell MVar has reader's block.
03:10:38 <ezzieyguywuf> I'm going to try converting my beancount journal to hledger today
03:10:40 <ezzieyguywuf> wish me luck!
03:11:09 borne joins (~fritjof@200116b864ec3c00c8b76624f4b75a13.dip.versatel-1u1.de)
03:11:12 <monochrom> More puns in #haskell-offtopic
03:11:36 christo joins (~chris@81.96.113.213)
03:12:39 × machinedgod quits (~machinedg@207.253.244.210) (Ping timeout: 260 seconds)
03:12:49 × macrover quits (~macrover@ip70-189-231-35.lv.lv.cox.net) (Ping timeout: 264 seconds)
03:15:04 × urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna)
03:15:14 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
03:17:21 christo joins (~chris@81.96.113.213)
03:17:55 wei2912 joins (~wei2912@unaffiliated/wei2912)
03:18:25 <MarcelineVQ> ezzieyguywuf: ask in #hledger if you get stuck
03:18:38 × borne quits (~fritjof@200116b864ec3c00c8b76624f4b75a13.dip.versatel-1u1.de) (Ping timeout: 264 seconds)
03:18:42 nbloomf joins (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48)
03:20:32 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
03:21:21 × conal quits (~conal@64.71.133.70) (Read error: Connection reset by peer)
03:21:54 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) (Client Quit)
03:21:57 <ezzieyguywuf> MarcelineVQ: 👍
03:24:48 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
03:26:28 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
03:27:34 conal joins (~conal@64.71.133.70)
03:27:35 × theDon quits (~td@muedsl-82-207-238-028.citykom.de) (Ping timeout: 260 seconds)
03:29:23 theDon joins (~td@94.134.91.45)
03:29:28 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 246 seconds)
03:32:26 × jespada quits (~jespada@90.254.245.49) (Ping timeout: 264 seconds)
03:33:11 × dxld quits (~dxld@2a01:4f8:201:89ff:7479:df6a:7ab8:8305) (Quit: Bye)
03:33:15 toorevitimirp joins (~tooreviti@117.182.183.132)
03:33:42 jespada joins (~jespada@90.254.245.49)
03:33:53 × acowley quits (~acowley@c-68-83-22-43.hsd1.nj.comcast.net) (Ping timeout: 256 seconds)
03:34:57 dxld joins (~dxld@2a01:4f8:201:89ff:7479:df6a:7ab8:8305)
03:35:50 nbloomf joins (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48)
03:37:50 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:783b:3352:9af0:3d48) (Client Quit)
03:38:32 christo joins (~chris@81.96.113.213)
03:39:21 × yinfeng quits (~yinfeng@2001:250:5002:8100::5e0b) (Quit: WeeChat 2.9)
03:40:17 thir joins (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
03:41:30 hackage crdt-event-fold 1.1.0.0 - Garbage collected event folding CRDT. https://hackage.haskell.org/package/crdt-event-fold-1.1.0.0 (rickowens)
03:41:58 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
03:43:45 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
03:43:50 × mimi1vx quits (~mimi@2a01:490:16:1026:90cd:be5f:a52c:e47e) (Ping timeout: 264 seconds)
03:45:02 × thir quits (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
03:45:54 z0_ joins (~z0@188.250.0.59)
03:46:36 × z0_ quits (~z0@188.250.0.59) (Client Quit)
03:48:35 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
03:51:39 nbloomf joins (~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae)
03:51:45 christo joins (~chris@81.96.113.213)
03:52:52 chediak joins (b14cf9ce@177.76.249.206)
03:53:39 × chediak quits (b14cf9ce@177.76.249.206) (Remote host closed the connection)
03:55:14 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
03:55:31 BrunoNapoleao joins (~BrunoNapo@185.163.110.116)
03:56:33 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
03:57:16 acowley joins (~acowley@c-68-83-22-43.hsd1.nj.comcast.net)
03:59:02 × dbmikus_ quits (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 260 seconds)
03:59:35 × acowley quits (~acowley@c-68-83-22-43.hsd1.nj.comcast.net) (Read error: Connection reset by peer)
04:00:07 christo joins (~chris@81.96.113.213)
04:01:22 christo_ joins (~chris@81.96.113.213)
04:01:22 × christo quits (~chris@81.96.113.213) (Read error: Connection reset by peer)
04:01:29 acowley joins (~acowley@c-68-83-22-43.hsd1.nj.comcast.net)
04:01:50 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds)
04:02:07 × stef204 quits (~stef204@unaffiliated/stef-204/x-384198) (Quit: WeeChat 2.9)
04:02:16 × SupaYoshi quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
04:03:01 SupaYoshi joins (~supayoshi@213-10-140-13.fixed.kpn.net)
04:05:24 × christo_ quits (~chris@81.96.113.213) (Ping timeout: 240 seconds)
04:08:56 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
04:12:27 × xff0x quits (~fox@2001:1a81:53b4:ba00:23ce:a11d:3032:dba3) (Ping timeout: 260 seconds)
04:12:52 × Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 260 seconds)
04:13:19 xff0x joins (~fox@2001:1a81:53b4:ba00:fd62:d0fd:829a:1233)
04:14:12 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
04:16:43 slack1256 joins (~slack1256@181.203.83.173)
04:19:52 × Sheilong quits (uid293653@gateway/web/irccloud.com/x-faekvzqkhmohaswr) ()
04:21:17 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
04:23:19 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
04:25:13 Saukk joins (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4)
04:25:14 × toorevitimirp quits (~tooreviti@117.182.183.132) (Remote host closed the connection)
04:25:36 × slack1256 quits (~slack1256@181.203.83.173) (Ping timeout: 265 seconds)
04:25:40 toorevitimirp joins (~tooreviti@117.182.183.132)
04:25:45 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds)
04:26:10 dbmikus_ joins (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
04:30:43 × dbmikus_ quits (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 258 seconds)
04:31:41 × lucasb quits (uid333435@gateway/web/irccloud.com/x-pojwugqdpwttxqdq) (Quit: Connection closed for inactivity)
04:32:16 alp joins (~alp@2a01:e0a:58b:4920:4ce:2344:89cc:fe25)
04:33:38 Guest26530 joins (83e40214@131.228.2.20)
04:34:18 christo joins (~chris@81.96.113.213)
04:35:43 × teardown quits (~user@gateway/tor-sasl/mrush) (Ping timeout: 240 seconds)
04:36:02 brodie joins (~textual@207.53.253.137)
04:36:13 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
04:43:12 teardown joins (~user@gateway/tor-sasl/mrush)
04:44:01 × shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection)
04:44:19 shatriff joins (~vitaliish@176.52.219.10)
04:44:49 × shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection)
04:45:06 shatriff joins (~vitaliish@176.52.219.10)
04:45:13 × sh9 quits (~sh9@softbank060116136158.bbtec.net) (Quit: sh9)
04:45:38 × shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection)
04:45:59 shatriff joins (~vitaliish@176.52.219.10)
04:46:26 × shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection)
04:46:42 shatriff joins (~vitaliish@176.52.219.10)
04:47:13 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
04:47:14 × shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection)
04:47:57 christo joins (~chris@81.96.113.213)
04:48:44 × guest113 quits (~user@49.5.6.87) (Ping timeout: 268 seconds)
04:51:43 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
04:52:24 coot joins (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl)
04:54:21 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
04:54:54 × renzhi quits (~renzhi@2607:fa49:655f:e600::28da) (Ping timeout: 268 seconds)
04:57:44 justan0theruser joins (~justanoth@unaffiliated/justanotheruser)
04:58:04 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 240 seconds)
04:59:47 guest113 joins (~user@49.5.6.87)
04:59:50 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 268 seconds)
05:00:11 mimi1vx joins (~mimi@2a01:490:16:1026:90cd:be5f:a52c:e47e)
05:00:55 × kupi quits (uid212005@gateway/web/irccloud.com/x-izotevyprbcyotcz) (Quit: Connection closed for inactivity)
05:03:58 × Saukk quits (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection)
05:06:58 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
05:11:40 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 246 seconds)
05:12:47 × xff0x quits (~fox@2001:1a81:53b4:ba00:fd62:d0fd:829a:1233) (Ping timeout: 268 seconds)
05:13:30 xff0x joins (~fox@2001:1a81:53b4:ba00:2eff:cd6c:5e2b:7580)
05:14:52 <bradparker> ski: thanks :) (TIL https://gitlab.haskell.org/ghc/ghc/-/wikis/injective-type-families). So it's more accurate to say that the the `Proxy api` argument is needed because the type family `ServerT` is not injective.
05:19:40 dbmikus_ joins (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
05:24:47 × dbmikus_ quits (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 260 seconds)
05:25:52 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
05:28:40 emmanuel_erc joins (~user@2604:2000:1382:ce03:de4:8c90:4e56:e115)
05:34:59 × mimi1vx quits (~mimi@2a01:490:16:1026:90cd:be5f:a52c:e47e) (Ping timeout: 268 seconds)
05:42:57 day_ joins (~Unknown@unaffiliated/day)
05:46:25 × day quits (~Unknown@unaffiliated/day) (Ping timeout: 264 seconds)
05:46:25 day_ is now known as day
05:47:06 yinfeng joins (~yinfeng@2001:250:5002:8100::2:b4d5)
05:47:09 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
05:50:52 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 246 seconds)
05:52:00 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
05:54:01 hackage egison-pattern-src 0.2.1.2 - Manipulating Egison patterns: abstract syntax, parser, and pretty-printer https://hackage.haskell.org/package/egison-pattern-src-0.2.1.2 (coord_e)
05:55:03 hackage egison-pattern-src-th-mode 0.2.1.2, egison-pattern-src-haskell-mode 0.2.1.2 (coord_e): https://qbin.io/look-gothic-x917
06:00:02 × BrunoNapoleao quits (~BrunoNapo@185.163.110.116) ()
06:05:12 × alp quits (~alp@2a01:e0a:58b:4920:4ce:2344:89cc:fe25) (Ping timeout: 268 seconds)
06:06:34 × noecho quits (~noecho@2a01:4f8:1c0c:80ee::4223) (Quit: ZNC - http://znc.in)
06:07:05 noecho joins (~noecho@2a01:4f8:1c0c:80ee::4223)
06:10:08 × justan0theruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 268 seconds)
06:11:06 mnrmnaugh is now known as ringzero
06:11:42 ringzero is now known as mnrmnaugh
06:13:48 dbmikus_ joins (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
06:14:01 × blissful quits (~azuline@unaffiliated/azuline) (Quit: The Lounge - https://thelounge.chat)
06:18:43 × dbmikus_ quits (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 260 seconds)
06:20:19 × dilinger quits (~dilinger@spindle.queued.net) (Remote host closed the connection)
06:29:42 × Jeanne-Kamikaze quits (~Jeanne-Ka@68.235.43.86) (Quit: Leaving)
06:31:54 sord937 joins (~sord937@gateway/tor-sasl/sord937)
06:35:35 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
06:39:49 <bqv> phew
06:39:54 <bqv> been fiddling with types for 5 hours
06:40:00 <bqv> finally got it to compile again
06:40:33 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
06:40:34 <yushyin> the pleasure of haskell :)
06:40:43 <bqv> indeed :D
06:41:23 christo joins (~chris@81.96.113.213)
06:41:26 sord937 joins (~sord937@gateway/tor-sasl/sord937)
06:43:08 danvet joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
06:45:50 jbox joins (~atlas@unaffiliated/jbox)
06:46:14 × teardown quits (~user@gateway/tor-sasl/mrush) (Remote host closed the connection)
06:46:31 teardown joins (~user@gateway/tor-sasl/mrush)
06:47:41 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
06:51:18 mimi1vx joins (~mimi@2a01:490:16:1026:90cd:be5f:a52c:e47e)
06:51:46 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
06:53:25 christo joins (~chris@81.96.113.213)
06:53:37 ocamel joins (3263cbdb@50.99.203.219)
06:56:24 alp joins (~alp@2a01:e0a:58b:4920:adca:d707:6534:9087)
06:56:30 × ocamel quits (3263cbdb@50.99.203.219) (Remote host closed the connection)
06:56:51 secdragon1 joins (~secdragon@185.204.1.185)
06:57:32 × emnmauiigw^ quits (emnmauiigw@ip98-184-89-2.mc.at.cox.net) ()
06:58:36 tsrt^ joins (tsrt@ip98-184-89-2.mc.at.cox.net)
06:59:09 takuan joins (~takuan@178-116-218-225.access.telenet.be)
07:00:42 × p-core quits (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Ping timeout: 268 seconds)
07:01:21 mimi_vx joins (~mimi@tulipan.habr.nat.praha12.net)
07:03:26 dilinger joins (~dilinger@spindle.queued.net)
07:03:38 × mimi1vx quits (~mimi@2a01:490:16:1026:90cd:be5f:a52c:e47e) (Ping timeout: 264 seconds)
07:05:55 danvet_ joins (~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453)
07:06:37 × danso quits (~dan@69-165-210-185.cable.teksavvy.com) (Quit: WeeChat 2.9)
07:06:57 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
07:11:23 × howdoi quits (uid224@gateway/web/irccloud.com/x-gtoygnwcsyvwpslb) (Quit: Connection closed for inactivity)
07:20:26 thc202 joins (~thc202@unaffiliated/thc202)
07:22:21 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:23:19 m0rphism joins (~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de)
07:26:26 × alp quits (~alp@2a01:e0a:58b:4920:adca:d707:6534:9087) (Ping timeout: 264 seconds)
07:27:20 × Jonno_FTW quits (~come@api.carswap.me) (Ping timeout: 265 seconds)
07:28:51 × jedws quits (~jedws@101.184.150.81) (Quit: My MacBook has gone to sleep. ZZZzzz…)
07:34:08 Jonno_FTW joins (~come@api.carswap.me)
07:36:46 <dminuoso> The annoying part of this, it promotes yak shaving!
07:37:03 <dminuoso> "Refactor half your codebase? Easier done than said"
07:41:42 thir joins (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
07:41:42 × zaquest quits (~notzaques@5.128.210.178) (Quit: Leaving)
07:43:02 <bqv> I couldn't care less. Programming is my hobby, I'll happily shave yaks all day long
07:46:20 × thir quits (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
07:46:28 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
07:50:11 chele joins (~chele@ip5b416ea2.dynamic.kabel-deutschland.de)
07:51:23 christo joins (~chris@81.96.113.213)
07:52:45 Franciman joins (~francesco@host-79-36-167-172.retail.telecomitalia.it)
07:53:41 zaquest joins (~notzaques@5.128.210.178)
07:55:50 × christo quits (~chris@81.96.113.213) (Ping timeout: 264 seconds)
07:55:53 dhouthoo joins (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be)
07:56:27 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
07:57:40 × mnrmnaugh quits (~mnrmnaugh@unaffiliated/mnrmnaugh) (Remote host closed the connection)
08:00:09 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
08:03:59 invaser joins (~Thunderbi@31.148.23.125)
08:05:28 teardown_ joins (~user@gateway/tor-sasl/mrush)
08:06:47 jelleke joins (~jelle@2a01:7c8:aac1:50d:5054:ff:fe3b:9b7d)
08:07:29 × vicfred quits (~vicfred@unaffiliated/vicfred) (Remote host closed the connection)
08:07:56 vicfred joins (~vicfred@unaffiliated/vicfred)
08:08:43 × teardown quits (~user@gateway/tor-sasl/mrush) (Ping timeout: 240 seconds)
08:09:06 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
08:12:50 × Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection)
08:13:15 alp joins (~alp@88.126.45.36)
08:13:45 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds)
08:16:14 <merijn> bqv: Good news, I've got a whole list for you, then ;)
08:17:39 × Sgeo quits (~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer)
08:20:01 kritzefitz joins (~kritzefit@fw-front.credativ.com)
08:21:25 × jbox quits (~atlas@unaffiliated/jbox) (Quit: gn o/)
08:21:41 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
08:23:09 sdrodge joins (~sdrodge@unaffiliated/sdrodge)
08:24:08 × guest113 quits (~user@49.5.6.87) (Quit: ERC (IRC client for Emacs 27.1))
08:26:38 idhugo joins (~idhugo@users-1190.st.net.au.dk)
08:26:42 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
08:28:13 <dminuoso> Is there a name for an invertible map?
08:28:18 × Lord_of_Life quits (~Lord@46.217.218.100) (Changing host)
08:28:18 Lord_of_Life joins (~Lord@unaffiliated/lord-of-life/x-0885362)
08:28:45 <opqdonut> dminuoso: I've seen bimap used
08:29:14 <opqdonut> looks like boost and guava use that term, at least
08:29:18 <opqdonut> https://en.wikipedia.org/wiki/Bidirectional_map
08:29:35 <opqdonut> oh, even a haskell package http://hackage.haskell.org/package/bimap-0.4.0/docs/Data-Bimap.html
08:29:51 borne joins (~fritjof@200116b86457d500641bd1d418d012e1.dip.versatel-1u1.de)
08:29:55 <opqdonut> unfortunately there's a risk of confusion with https://hackage.haskell.org/package/bifunctors-5/docs/Data-Bifunctor.html#v:bimap
08:29:57 <dminuoso> Ah that seems to fit. I guess bimap in the sense of bijective map
08:30:03 <opqdonut> yeah
08:30:08 <opqdonut> or bidirectional map
08:30:15 <dminuoso> Gotcha, I just need a descriptive term for haddock, so "bijective map" it is
08:30:19 <dminuoso> Thanks!
08:33:07 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
08:37:37 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
08:38:06 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae) (Quit: My MacBook has gone to sleep. ZZZzzz…)
08:39:18 × invaser quits (~Thunderbi@31.148.23.125) (Ping timeout: 260 seconds)
08:41:10 Varis joins (~Tadas@unaffiliated/varis)
08:45:02 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
08:45:24 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
08:45:35 invaser joins (~Thunderbi@31.148.23.125)
08:48:28 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
08:48:30 shatriff joins (~vitaliish@176.52.219.10)
08:49:22 × vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
08:49:38 todda7 joins (~torstein@ppp-2-84-30-242.home.otenet.gr)
08:49:59 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 265 seconds)
08:50:27 texasmynsted joins (~texasmyns@99.96.221.112)
08:53:32 jonathanx joins (~jonathan@dyn-8-sc.cdg.chalmers.se)
08:54:41 × drbean quits (~drbean@TC210-63-209-59.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin1 - https://znc.in)
08:57:10 ahmr88 joins (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
08:57:27 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
09:00:02 × secdragon1 quits (~secdragon@185.204.1.185) ()
09:00:07 × materialfuture[m quits (materialfu@gateway/shell/matrix.org/x-jvhencngpnxshide) (Quit: Idle for 30+ days)
09:00:08 × steve[m] quits (stevetrout@gateway/shell/matrix.org/x-fkuthzdpqeujhzmp) (Quit: Idle for 30+ days)
09:02:26 fendor__ is now known as fendor
09:02:33 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 265 seconds)
09:03:56 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
09:07:23 × Nachtgespenst quits (~user@unaffiliated/siracusa) (Quit: Bye!)
09:09:22 yumh joins (~yumh@mail.xglobe.in)
09:09:53 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
09:11:04 mananamenos joins (~mananamen@84.122.202.215.dyn.user.ono.com)
09:11:28 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Read error: Connection reset by peer)
09:11:36 mokulus joins (~mat@176.111.230.96)
09:11:55 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
09:13:17 × xff0x quits (~fox@2001:1a81:53b4:ba00:2eff:cd6c:5e2b:7580) (Ping timeout: 268 seconds)
09:13:40 xff0x joins (~fox@2001:1a81:53b4:ba00:27c3:328a:48d4:3117)
09:15:17 jonatanb joins (~jonatanb@83.24.9.26.ipv4.supernova.orange.pl)
09:15:52 × mokulus quits (~mat@176.111.230.96) (Client Quit)
09:17:22 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 246 seconds)
09:22:29 × ahmr88 quits (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection)
09:22:30 hackage protocol-buffers-descriptor 2.4.15 - Text.DescriptorProto.Options and code generated from the Google Protocol Buffer specification https://hackage.haskell.org/package/protocol-buffers-descriptor-2.4.15 (k_bx)
09:22:59 britva joins (~britva@2a02:aa13:7240:2980:292a:d07d:3ab9:26ba)
09:23:30 hackage hprotoc 2.4.15 - Parse Google Protocol Buffer specifications https://hackage.haskell.org/package/hprotoc-2.4.15 (k_bx)
09:25:43 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
09:26:10 Amras joins (~Amras@unaffiliated/amras0000)
09:27:21 mokulus joins (~mat@176.111.230.96)
09:29:24 jedws joins (~jedws@101.184.150.81)
09:30:40 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
09:32:11 __monty__ joins (~toonn@unaffiliated/toonn)
09:33:32 × jedws quits (~jedws@101.184.150.81) (Client Quit)
09:33:58 × Guest26530 quits (83e40214@131.228.2.20) (Remote host closed the connection)
09:35:09 jedws joins (~jedws@101.184.150.81)
09:35:32 × jedws quits (~jedws@101.184.150.81) (Client Quit)
09:38:08 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
09:40:31 hackage HsOpenSSL 0.11.5 - Partial OpenSSL binding for Haskell https://hackage.haskell.org/package/HsOpenSSL-0.11.5 (VladimirShabanov)
09:41:40 chaosmasttter joins (~chaosmast@p200300c4a7117c01c482e1943d10d298.dip0.t-ipconnect.de)
09:42:53 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
09:44:35 × danvet_ quits (~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453) (Quit: Leaving)
09:44:42 × hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-jbpkroausxoplpus) (Quit: Connection closed for inactivity)
09:45:03 × toorevitimirp quits (~tooreviti@117.182.183.132) (Ping timeout: 258 seconds)
09:45:51 jonatan joins (~nate@h77-53-70-163.cust.a3fiber.se)
09:48:18 kuribas joins (~user@ptr-25vy0i7uknzjtc6w9zh.18120a2.ip6.access.telenet.be)
09:48:55 <kuribas> regarding the "simple haskell movement", would servant be considered "fancy"?
09:49:09 <c_wraith> very much so
09:49:18 <kuribas> then what is the alternative?
09:49:49 <dminuoso> scotty?
09:49:50 <kuribas> for creating a REST API with formal specification?
09:49:52 <c_wraith> there's nothing else that does everything servant does
09:50:07 <dminuoso> "with formal specifications" is very tough in a haskelly sense without enabling extensions
09:50:12 <dminuoso> You'd have to do a runtime OpenAPI thing
09:50:20 <dminuoso> (Which I guess is contrary to what haskellers usually do)
09:50:32 × yinfeng quits (~yinfeng@2001:250:5002:8100::2:b4d5) (Quit: WeeChat 2.9)
09:50:37 <c_wraith> I mean, I don't give simple haskell much credit, because no one can agree on what's simple anyway
09:50:58 <dminuoso> Or just not do HTTP REST APIs.
09:51:09 <dminuoso> Which I guess is the real crux, it's a very poor language
09:51:24 <kuribas> would, say, f# be better than simple haskell?
09:51:48 <dminuoso> define "better"
09:52:31 <kuribas> I mean in a company context where the steep learning curve of haskell is a problem.
09:52:56 <c_wraith> and there are things no one would ever call simple (like Data.Generics.Labels from generic-lens) that are worth far more than they cost
09:53:28 <kuribas> c_wraith: yeah. Isn't that because most of the complexity is in the library implementation though?
09:53:39 <kuribas> generic-lens doesn't seem so hard to use
09:53:40 <maerwald> kuribas: servant is for cases where you want to autogenerate clients (or consume the haskell types directly). Most cases of servant I've seen in production do neither. That falls under the "unnecessary complexity" category
09:54:15 <kuribas> maerwald: indeed. If you make a non-REST web-app, I would say servant is a mistake.
09:54:19 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
09:54:20 <c_wraith> kuribas: it's *very* easy to use. The complexity isn't hidden away exactly, though, as it relies on things like IncoherentInstances
09:54:50 <maerwald> But ppl don't choose their tools based on careful cost-benefit analysis, especially in haskell. They base it on the latest reddit thread about dependent types :)
09:55:24 <kuribas> I absolutely agree that a lot of haskell is overly complicated, for example database libraries.
09:55:32 <maerwald> It's almost as if haskellers get anxiety attacks if they don't keep up with the latest esoteric approaches
09:55:42 ByronT joins (~ByronT@154.13.1.56)
09:55:53 <kuribas> maerwald: I think it's more like having a nice new shiny toy to play with
09:56:09 o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
09:56:21 <maerwald> for some, for others its burnout, trying to keep up with the design space... and it's already too large imo
09:56:42 <kuribas> I just think that many extensions, like overloadedLabels, type-applications, aren't that complicated, mostly syntactic sugar.
09:57:07 <maerwald> But most programmers only care about a use case they can tackle with a new language feature. They don't consider the whole design space the feature opens and what the impact on the ecosystem is
09:57:16 × z0 quits (~z0@188.250.0.59) (Ping timeout: 246 seconds)
09:57:40 <kuribas> maerwald: well, there is no shortage to java jobs, so if you want a simple language, that mostly does the job, you can go to java.
09:57:54 <maerwald> That's a way to make a language fail. But we can argue about whether or not C++ is a failure. I consider it one
09:58:14 <maerwald> kuribas: Java isn't simple at all
09:58:48 <maerwald> Getting generics right in Java isn't easy. Inheritance is massively complicated
09:59:14 z0 joins (~z0@188.251.73.190)
09:59:34 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
09:59:38 z0 is now known as Guest77983
09:59:56 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
10:00:57 <kuribas> whatever language you pick, you need to take a subset that fits beset with your workflow.
10:01:01 <maerwald> Simple also doesn't mean "dumb". How many ppl know that you can use guards in a case expression? You don't see it often. Many don't know all haskell2010 features.
10:01:51 acidjnk_new2 joins (~acidjnk@p200300d0c718f623ecaa4caf6803be45.dip0.t-ipconnect.de)
10:01:55 <dminuoso> c_wraith: IncoherentInstances?
10:01:56 <kuribas> also, if you use "simple" haskell, then you are limited to "simple" libraries.
10:01:59 <dminuoso> Why/how is this useful?
10:02:14 <dminuoso> Ive been trying to understand the justification for that extension
10:02:39 <int-e> > let x | let y = 42 in y in x
10:02:41 <maerwald> I'm not arguing for either. I'm arguing that ppl have no real process on how to choose complex vs simple haskell for a problem at hand.
10:02:42 <lambdabot> <hint>:1:25: error: <hint>:1:25: error: parse error on input ‘in’
10:02:47 <c_wraith> Think of it as "even more overlapping instances"
10:02:54 <int-e> > let x | let y = 42 = y in x
10:02:57 <lambdabot> 42
10:03:00 <maerwald> simple vs complex haskell is a nonsense decision
10:03:06 <dminuoso> c_wraith: Sure, but IncoherentInstances gives me in effect random choice of instances.
10:03:28 <dminuoso> This would make sense if the instances are equivalent, but at that point why have them at all
10:03:41 <int-e> (That we have `let` inside guards is one Haskell2010 feature I was blissfully unaware of until... hmm, 2 months ago?)
10:04:00 <dminuoso> int-e: Indeed, Im quite fond of it :)
10:04:15 <[exa]> oh wow
10:04:21 <c_wraith> dminuoso: not when you carefully set up your instances so that the only type variable that's treated incoherently also doesn't matter to the behavior.
10:04:28 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
10:04:32 <int-e> let x | y <- 42 = y in x -- I prefer these most of the time
10:04:50 minus[m] parts (minusblobc@gateway/shell/matrix.org/x-hhdwstlyzyfgkvud) ("User left")
10:04:58 <dminuoso> int-e: That requires an extension *and* has subtly different meaning. It can more easily lead to bugs.
10:04:59 <maerwald> kuribas: but what I read in the current reddit thread is somewhere between naive and arrogant, imo
10:05:23 <c_wraith> dminuoso: pattern guards are part of Haskell 2010, too
10:05:26 <dminuoso> Oh
10:05:36 <int-e> dminuoso: well, the let thing can also lead to subtle bugs... for pretty much the same reason.
10:05:37 <merijn> dminuoso: Everyone always forgets that
10:05:42 <dminuoso> int-e: Say, you have some `newtype T = T Int`, with some `let x | letT t <- x ...`, if you later refactor that into a data type, it will compile just fine but might not mean what you want it to
10:06:02 <dminuoso> In that example no, because a let will generate missing pattern errors
10:06:08 <dminuoso> uhh
10:06:13 <dminuoso> `let x | T t <- x ...`
10:06:24 <dminuoso> `let x | let T t = x ...`
10:06:33 <dminuoso> If you switch T from newtype to data, one of them will warn the other will not
10:06:43 <merijn> I like how the survey blindly copies all GHC -X flags as extensions and thus includes things that are, in fact, already enabled by default because their Haskell2010 :p
10:07:10 <int-e> Well, I did have variable patterns in mind.
10:07:15 <merijn> maerwald: I agree. I see value in "simple Haskell", it's just that blindly saying "these extensions are ok" and "these are not" is way to simplistic for defining simple Haskell :p
10:07:44 <merijn> It's mostly a matter of "do these extensions 'pull their weight'", which unfortunately isn't something you can define a simple universal heuristic for
10:07:50 <idnar> dminuoso: do you mean switch and add more constructors?
10:07:56 <dminuoso> idnar: Right
10:08:04 <int-e> In any case, the point was that it's really easy to miss a corner of the Haskell syntax for years without missing anything.
10:08:05 <kuribas> merijn: that's my take on it too.
10:08:06 <idnar> dminuoso: ahh
10:08:42 wwwww joins (~wwwww@unaffiliated/wwwww)
10:08:45 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
10:09:08 <kuribas> merijn: avoid fancy haskell if you can, use it if you can't
10:09:12 <maerwald> I think snoyman approaches the problem from the right angle. Problem focused. But I just think his decisions are mostly wrong :)
10:09:30 <yushyin> haha
10:10:12 <[exa]> merijn: people can still vote against the defaults :]
10:14:15 <merijn> [exa]: I meant that they are not extensions
10:14:26 <idnar> regarding fancy Haskell, it's perfectly possible to make an overcomplicated inscrutable mess without extensions; if you can't easily bring a junior colleague up to speed on the code you're writing (in any language) then consider simplifying the code and/or revising your hiring practices
10:14:49 <merijn> [exa]: Like -XPatternGuards is not an extension in Haskell2010. It's an extension to Haskell98 which (hopefully) no one writes anymore
10:15:03 <maerwald> idnar: not hiring practices... mentoring practices
10:15:46 <idnar> maerwald: well, both :)
10:15:48 <kuribas> idnar: not making an inscrutable mess should be a no-brainer in any language, but sadly it isn't...
10:15:48 <maerwald> if you can't get a junior up to speed, then that's a management and team failurea
10:16:55 <int-e> kuribas: I'm not sure what you mean by no-brainer... it usually requires quite some thought :P
10:17:18 <kuribas> I think getting someone up to speed with an application is way easier in haskell, due to the type system.
10:17:28 <kuribas> int-e: right :)
10:17:45 lucente joins (~lucente@31.170.86.76)
10:18:02 <kuribas> int-e: I guess what I meant was, taking the effort to clean up technical dept...
10:18:06 <[exa]> merijn: yeah, but it will show how many people may be unaware of the fact
10:18:14 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
10:18:21 <kuribas> int-e: the effort itself is non trivial of course
10:18:38 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
10:18:40 <int-e> kuribas: I knew what you meant.
10:18:57 <lucente> I'm having hard time solving this tulpa problem: [(String, Int)] -> [String] where I'm checking whenever [("A", 100)] whenever the Int is greater that 0 I add its tulpa's string to an output. Example [("A", 100), ("B", -1), ("C",36) = ["A", "C"]
10:18:59 <__monty__> I agree, I can't count the number of times I've had to look for a function in a python project, which turns out to be a __call__ method on an object that's "cast" to something else three times before use 😭
10:19:13 <hc> win3 0
10:19:15 <hc> sry
10:19:43 <idnar> kuribas: yeah, it seems like people don't want to take responsibility for the social aspects of programming, but instead replace that with some mindless overly simplistic rules
10:20:08 × plutoniix quits (~q@175.176.222.7) (Quit: Leaving)
10:20:48 <__monty__> lucente: Maybe split the problem into pieces. Can you just get rid of the tuples with a value <= 0?
10:20:48 × ambiso9 quits (~ambiso@209.182.239.205) (Quit: The Lounge - https://thelounge.chat)
10:22:13 <idnar> kuribas: I can understand why, given the dysfunctional culture at many companies, but…
10:22:52 <lucente> I need to solve it as it's defined [(String, Int)] -> [String]
10:23:09 ambiso9 joins (~ambiso@209.182.239.205)
10:23:16 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
10:23:24 <lucente> would be glad if you gave me an exp of what you mean
10:23:29 <__monty__> lucente: Sure, but if you can't solve the entire thing at once, divide and conquer.
10:23:39 <maerwald> idnar: yep and with the presented attitude "if you can't understand my haskell, you need to try harder" we're not exactly making positive advertisement
10:23:41 <kuribas> idnar: I came from such a company, and I never want to go back
10:24:01 <kuribas> idnar: I got fired after 6 month for saying my opinion
10:24:13 <__monty__> lucente: Try turning your input from [("A", 100), ("B", -1), ("C",36)] into [("A", 100), ("C",36)].
10:24:31 <maerwald> kuribas: doesn't take six months for me (saying my opinion) :)
10:24:59 <kuribas> maerwald: and getting fired?
10:25:08 <maerwald> haha
10:26:26 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
10:27:57 <kuribas> idnar: I see that with a colleage of mine. He's a brilliant programmer, the program architecture is very nice. However there is hardly any documentation, he's the only one that knows the framework he wrote himself.
10:28:32 <kuribas> idnar: he also wants to write everything in that framework.
10:29:10 <kuribas> it's just that the code he writes is for himself
10:29:29 <maerwald> in some industries that might be okay
10:29:41 <maerwald> because you don't maintain software everywhere
10:32:34 <idnar> maerwald: yeah; my position is usually more like "if you can't understand my haskell (or python, or…), let me explain it to you" and if I can't do that I probably need to change my code, not my colleagues
10:32:37 <kuribas> this isn't a one-time script, it's a long running daemon.
10:33:36 <kuribas> idnar: I'd say if you cannot understand my code (and you are a capable programmer), I need to either rewrite it or add documentation.
10:33:51 <xsperry> > (map fst . filter ((>0) . snd)) [("A", 100), ("B", -1), ("C",36)]
10:33:53 <lambdabot> ["A","C"]
10:34:18 <xsperry> > [x | (x,y) <- [("A", 100), ("B", -1), ("C",36)], y > 0]
10:34:20 <lambdabot> ["A","C"]
10:34:25 <__monty__> xsperry: Providing solutions doesn't help much with learning.
10:34:40 × wei2912 quits (~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
10:35:16 × invaser quits (~Thunderbi@31.148.23.125) (Ping timeout: 256 seconds)
10:37:00 hackage core-text 0.3.0.0 - A rope type based on a finger tree over UTF-8 fragments https://hackage.haskell.org/package/core-text-0.3.0.0 (AndrewCowie)
10:38:00 hackage unbeliever 0.10.0.8, core-program 0.2.6.0, core-data 0.2.1.9 (AndrewCowie)
10:40:00 olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber)
10:44:04 LKoen joins (~LKoen@79.160.9.109.rev.sfr.net)
10:46:01 hackage vulkan 3.6.12 - Bindings to the Vulkan graphics API. https://hackage.haskell.org/package/vulkan-3.6.12 (jophish)
10:46:48 × alp quits (~alp@88.126.45.36) (Remote host closed the connection)
10:47:01 hackage hsemail 2.2.1 - Parsec parsers for the Internet Message format (e-mail) https://hackage.haskell.org/package/hsemail-2.2.1 (PeterSimons)
10:47:10 alp joins (~alp@2a01:e0a:58b:4920:95d4:1b57:ed86:fe54)
10:48:30 hackage update-nix-fetchgit 0.2.2 - A program to update fetchgit values in Nix expressions https://hackage.haskell.org/package/update-nix-fetchgit-0.2.2 (jophish)
10:50:36 invaser joins (~Thunderbi@31.148.23.125)
10:52:04 christo joins (~chris@81.96.113.213)
10:52:25 raichoo joins (~raichoo@213.240.178.58)
10:52:49 bergsans joins (~bergsans@c80-217-8-29.bredband.comhem.se)
10:55:10 × lucente quits (~lucente@31.170.86.76) (Quit: Leaving)
11:04:50 ubert joins (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
11:06:04 × alp quits (~alp@2a01:e0a:58b:4920:95d4:1b57:ed86:fe54) (Ping timeout: 240 seconds)
11:08:17 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
11:09:20 alp joins (~alp@2a01:e0a:58b:4920:65ec:1bbd:4b97:e92d)
11:13:03 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
11:15:13 whatisRT joins (~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f)
11:17:13 × LKoen quits (~LKoen@79.160.9.109.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
11:17:39 × shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection)
11:17:44 × Alleria_ quits (~AllahuAkb@2604:2000:1484:26:7d65:3be5:43eb:ba0c) (Quit: Textual IRC Client: www.textualapp.com)
11:17:55 shatriff joins (~vitaliish@176.52.219.10)
11:21:48 × idhugo quits (~idhugo@users-1190.st.net.au.dk) (Ping timeout: 256 seconds)
11:24:00 hackage registry 0.2.0.0 - data structure for assembling components https://hackage.haskell.org/package/registry-0.2.0.0 (etorreborre)
11:28:37 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
11:29:41 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:29:50 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
11:34:34 × rprije quits (~rprije@194-193-168-77.tpgi.com.au) (Ping timeout: 246 seconds)
11:34:37 × chaosmasttter quits (~chaosmast@p200300c4a7117c01c482e1943d10d298.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
11:34:44 christo joins (~chris@81.96.113.213)
11:35:12 × xff0x quits (~fox@2001:1a81:53b4:ba00:27c3:328a:48d4:3117) (Ping timeout: 260 seconds)
11:35:44 × perrier-jouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 2.9)
11:35:53 xff0x joins (~fox@2001:1a81:53b4:ba00:5006:d65a:90eb:4407)
11:36:22 × whatisRT quits (~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f) (Ping timeout: 260 seconds)
11:37:44 teardown joins (~user@gateway/tor-sasl/mrush)
11:38:36 × teardown_ quits (~user@gateway/tor-sasl/mrush) (Remote host closed the connection)
11:38:57 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
11:39:01 × Stanley00 quits (~stanley00@unaffiliated/stanley00) ()
11:39:38 × aarvar quits (~foewfoiew@50.35.43.33) (Ping timeout: 265 seconds)
11:39:38 × christo quits (~chris@81.96.113.213) (Ping timeout: 264 seconds)
11:39:47 petersen parts (~petersen@redhat/juhp) ()
11:40:08 CyB3rW0rm joins (~fedora@143.244.38.33)
11:43:10 thir joins (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
11:43:37 ahmr88 joins (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
11:44:03 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
11:44:19 perrier-jouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
11:46:23 Tario joins (~Tario@201.192.165.173)
11:46:40 obihann joins (~jhann@156.34.160.69)
11:47:57 × thir quits (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
11:50:09 × obihann quits (~jhann@156.34.160.69) (Client Quit)
11:51:17 obihann joins (~jhann@156.34.160.69)
11:51:18 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
11:52:08 LKoen joins (~LKoen@79.160.9.109.rev.sfr.net)
11:52:46 da39a3ee5e6b4b0d joins (~textual@n11211935170.netvigator.com)
11:53:10 × obihann quits (~jhann@156.34.160.69) (Client Quit)
11:53:50 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Read error: Connection reset by peer)
11:54:02 obihann joins (~jhann@156.34.160.69)
11:54:08 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
11:56:01 × Ranhir quits (~Ranhir@157.97.53.139) (Remote host closed the connection)
11:59:09 drbean joins (~drbean@TC210-63-209-173.static.apol.com.tw)
11:59:11 chaosmasttter joins (~chaosmast@p200300c4a7117c01c482e1943d10d298.dip0.t-ipconnect.de)
11:59:28 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 272 seconds)
12:00:01 × ByronT quits (~ByronT@154.13.1.56) ()
12:01:11 × chaosmasttter quits (~chaosmast@p200300c4a7117c01c482e1943d10d298.dip0.t-ipconnect.de) (Client Quit)
12:05:16 chaosmasttter joins (~chaosmast@p200300c4a7117c017972e6cd644c1b14.dip0.t-ipconnect.de)
12:06:23 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
12:07:27 pera joins (~pera@unaffiliated/pera)
12:07:59 MaoZeDong_ joins (~yuri@2a00:1370:8135:4003:f085:2e15:a839:240d)
12:11:01 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds)
12:13:04 × MaoZeDong_ quits (~yuri@2a00:1370:8135:4003:f085:2e15:a839:240d) (Ping timeout: 240 seconds)
12:15:58 × Kaiepi quits (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
12:17:00 idhugo joins (~idhugo@users-1190.st.net.au.dk)
12:17:03 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
12:17:04 × obihann quits (~jhann@156.34.160.69) (Quit: Lost terminal)
12:17:28 obihann joins (~jhann@156.34.160.69)
12:17:53 Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
12:18:12 Deide joins (~Deide@217.155.19.23)
12:19:24 Kaeipi joins (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
12:20:13 × Kaiepi quits (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
12:20:45 × TMA quits (tma@twin.jikos.cz) (Ping timeout: 240 seconds)
12:21:56 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
12:22:05 × olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 240 seconds)
12:24:19 miladz68 joins (~manjaro-u@static.84.147.251.148.clients.your-server.de)
12:24:35 × perrier-jouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 2.9)
12:25:07 <miladz68> hi everyone
12:26:38 <miladz68> I have a code that I cannot make to type check. can someone help me here. I also dont know how to copy the code here. I was told this is the best place to ask these kinf of questions if not I would be happy to be pointed to the right place
12:26:46 <dminuoso> @where paste
12:26:47 <lambdabot> Help us help you: please paste full code, input and/or output at eg https://paste.tomsmeding.com
12:27:42 <miladz68> thank you for your responses. here is the code https://paste.tomsmeding.com/dV1xjvgF
12:28:08 <dminuoso> miladz68: Feel free to use the button "+ Add another file" and then include the type error there
12:29:38 <miladz68> I added the error
12:29:46 <dminuoso> miladz68: Ah I see!
12:29:54 <dminuoso> miladz68: You can't have `Con a` like that
12:30:04 <dminuoso> You could say `Con Int` instead
12:30:09 <dminuoso> % newtype Fix f = Fix (f (Fix f))
12:30:09 <yahb> dminuoso:
12:30:18 <dminuoso> % data Mex a = Con Int | Ad a a
12:30:19 <yahb> dminuoso:
12:30:36 <dminuoso> % v :: Fix Mex; v = Fix (Con 12)
12:30:37 <yahb> dminuoso:
12:30:56 <miladz68> what if I want Con to be generic and not specific on Int ?
12:31:11 <dminuoso> % ex :: Fix Mex; ex = Fx (Fx (Con 2) `Ad` Fx (Con 3))
12:31:12 <yahb> dminuoso: ; <interactive>:23:21: error:; * Data constructor not in scope: Fx :: Mex a2 -> Fix Mex; * Perhaps you meant one of these: `F#' (imported from GHC.Exts), `Data.Functor.Foldable.Fix' (imported from Data.Functor.Foldable), `Ghci7.Fix' (imported from Ghci7); <interactive>:23:25: error:; * Data constructor not in scope: Fx :: Mex a0 -> a2; * Perhaps you meant one of these: `F#' (imported fr
12:31:27 <dminuoso> miladz68: Then you must add another type parameter
12:31:34 <dminuoso> % data Mex t a = Con t | Ad a a
12:31:34 <yahb> dminuoso:
12:31:50 <dminuoso> % ex :: Fix Mex; ex = Fix (Fix (Con 2) `Ad` Fix (Con 3))
12:31:50 <yahb> dminuoso: ; <interactive>:25:11: error:; * Expecting one more argument to `Mex'; Expected kind `* -> *', but `Mex' has kind `* -> * -> *'; * In the first argument of `Fix', namely `Mex'; In the type signature: ex :: Fix Mex
12:31:51 <dminuoso> err
12:31:55 <dminuoso> % ex :: Fix (Mex Int); ex = Fix (Fix (Con 2) `Ad` Fix (Con 3))
12:31:55 <yahb> dminuoso:
12:31:58 Aquazi joins (uid312403@gateway/web/irccloud.com/x-cxspimotkygwnrbt)
12:32:19 <miladz68> Ok thanks
12:33:17 <miladz68> another question though. I Seem unable to understand how ghc resolves types, what is the best place to learn about this? is there a book ?
12:34:05 <dminuoso> miladz68: Mmm, the best literature I know of is Pierces TaPL
12:34:12 <merijn> miladz68: From a basic "I wanna write Haskell" perspective or from "I wanna make this myself" perspective?
12:34:14 <dminuoso> But depending on what you want to learn it could be a bit heavy
12:34:42 <merijn> TaPL is more for the latter perspective :p
12:34:45 <dminuoso> Although..
12:34:51 <dminuoso> Actually there is a very very good talk
12:35:01 <dminuoso> miladz68: https://www.youtube.com/watch?v=x3evzO8O9e8
12:35:13 <dminuoso> There's nobody more qualified to explain how GHCs type inference works than SPJ himself. :)
12:35:23 <merijn> miladz68: For practical "writing Haskell" is sufficient to think of as an equation solver
12:35:23 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
12:35:54 <miladz68> I want to know how haskell type system works why my code didn't type check and how to write more advanced type level haskell code
12:36:05 × alp quits (~alp@2a01:e0a:58b:4920:65ec:1bbd:4b97:e92d) (Ping timeout: 272 seconds)
12:36:26 <merijn> miladz68: The most confusing effect of that equation solving is that, unlike stuff you see in Java/C++/etc. the type checking is bidirectional
12:36:35 <dminuoso> miladz68: the specific example I can talk you through
12:36:42 <dminuoso> It's not complicated, it's rather simple, actually
12:36:49 <dminuoso> % newtype Fix f = Fix (f (Fix f))
12:36:49 <yahb> dminuoso:
12:36:50 <kuribas> isn't type checking more like logic programming, but without backtracking?
12:36:55 <dminuoso> % data Mex a = Con a | Ad a a
12:36:56 <yahb> dminuoso:
12:37:08 <dminuoso> % t :: Fix Mex; t = Fix (Con 2)
12:37:08 <yahb> dminuoso: ; <interactive>:29:28: error:; * No instance for (Num (Fix Mex)) arising from the literal `2'; * In the first argument of `Con', namely `2'; In the first argument of `Fix', namely `(Con 2)'; In the expression: Fix (Con 2)
12:37:14 <merijn> kuribas: I would argue the "logic programming without backtracking" is just "solving systems of equations"
12:37:38 <kuribas> makes sense
12:37:52 <kuribas> as unification is assigning values to variables
12:37:55 <merijn> miladz68: FWIW, I think wanting to "writing more advanced type level Haskell" is a beginners mistake that leads to more pain than productivity :)
12:37:57 <dminuoso> miladz68: For a somewhat detailed guide, check out the video of the talk I linked earlier.
12:38:18 <miladz68> dminuoso please continure. I want to if I can make sense of it
12:38:25 <dminuoso> Alright
12:38:45 <dminuoso> miladz68: What's the type of the *data* constructor `Fix` in the above expression bound to t?
12:38:49 <dminuoso> Monomorphized
12:38:55 <dminuoso> That is
12:39:03 <dminuoso> t :: Fix Mex; t = (Fix :: _) (Con 2)
12:39:05 <miladz68> merjin I am not a complete beginner, I have been wrestling with haskell for 2 years on and off
12:39:10 <dminuoso> What goes into the hole _ there?
12:39:20 alp joins (~alp@2a01:e0a:58b:4920:2923:faed:144a:c0cf)
12:39:33 <miladz68> let me check with the compiler
12:39:38 <dminuoso> Id rather you use your head
12:40:29 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 268 seconds)
12:40:33 × Kaeipi quits (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
12:40:53 <dminuoso> If you say "I dont know" that's fine, I can go one step back
12:40:54 <miladz68> dminuoso Fix :: Fix f is it corect ?
12:41:08 <merijn> miladz68: Even then, though. I'd consider myself an expert and even in my biggest codebase of like 10k LOC of Haskell, there's maybe 3 lines of advanced type level stuff?
12:41:14 <miladz68> i would appreciate going an step back
12:41:17 <dminuoso> Alright
12:41:23 <dminuoso> Let's start with a simpler example:
12:41:29 <merijn> Well, maybe a bit more if we count GADTs without type level shenanigans
12:41:31 <dminuoso> Just 'c'
12:41:46 <dminuoso> We could play human type inference engine, using intuitive rules we somehow carry in our head
12:41:58 × xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 260 seconds)
12:42:09 <dminuoso> We know that 'c' :: Char
12:42:10 <miladz68> merjin Oh OK. then i want to learn to understand the type system more
12:42:33 <dminuoso> Then, the data definition of `data Maybe a = Nothing | Just a` gives us `Just a :: a -> Maybe a`
12:42:55 <miladz68> dminuoso, I understan this
12:43:19 <dminuoso> So if we apply `Just` to 'c', that means ((Just :: Char -> Maybe Char) 'c') :: Maybe Char
12:43:24 <miladz68> Just :: a -> Maybe a
12:43:58 <miladz68> good so far
12:44:04 <dminuoso> miladz68: So one of the type inference rules GHC uses, is for instance, if we know `f :: S -> T` for some arbitrary choics of S and T, and we know that `x :: S`, then we can *deduce* that `f x :: T`
12:44:44 <dminuoso> Anyhow, lets go back!
12:45:24 <miladz68> I didnt get this part So one of the type inference rules GHC uses, is for instance, if we know `f :: S -> T` for some arbitrary choics of S and T, and we know that `x :: S`, then we can *deduce* that `f x :: T`
12:46:36 <dminuoso> miladz68: If `f is a function from S to T, and x is something of value S, then the expression `f applied to x` has type T
12:46:44 <dminuoso> It's a deducible fact
12:47:02 <miladz68> I understand that
12:47:32 hackage lsp-types 1.0.0.1 - Haskell library for the Microsoft Language Server Protocol, data types https://hackage.haskell.org/package/lsp-types-1.0.0.1 (luke_)
12:47:42 <dminuoso> miladz68: That rule can go in both directions, if it somehow figures out `f x :: T`, it can deduce that `f :: _ -> T`
12:47:44 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
12:48:07 × Amras quits (~Amras@unaffiliated/amras0000) (Ping timeout: 272 seconds)
12:48:44 <miladz68> I think I understand that
12:49:07 <miladz68> I understand it actually, makes sense
12:50:04 Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
12:50:49 <miladz68> dminuoso please continue if you can
12:51:09 × mmohammadi9812 quits (~mmohammad@188.210.118.100) (Quit: Quit)
12:51:10 <dminuoso> miladz68: So all of this was just unrelated, just wanted to nudge you into the mindset of GHC here.
12:51:24 mmohammadi9812 joins (~mmohammad@188.210.118.100)
12:51:37 <miladz68> dminuoso I understand so far
12:51:38 <dminuoso> Lets start off with a simpler but related example
12:51:47 <dminuoso> % f :: Maybe Char; f = 2
12:51:47 <yahb> dminuoso: ; <interactive>:30:22: error:; * No instance for (Num (Maybe Char)) arising from the literal `2'; * In the expression: 2; In an equation for `f': f = 2
12:51:50 <dminuoso> What happened here?
12:52:07 <dminuoso> So the first thing to understand, is that numbers are *polymorphic* values
12:52:25 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds)
12:52:26 <dminuoso> What this code really says is:
12:52:34 <dminuoso> f :: Maybe Char; f = fromInteger 2
12:52:39 × mmohammadi9812 quits (~mmohammad@188.210.118.100) (Client Quit)
12:52:42 <dminuoso> So now, if we look at
12:52:44 <dminuoso> % :t fromInteger
12:52:44 <yahb> dminuoso: Num a => Integer -> a
12:52:55 mmohammadi9812 joins (~mmohammad@188.210.118.100)
12:53:09 <dminuoso> This will instantiate the tpye variable `a` at `Maybe Char`, and that's *fine*, the type signature allows for this
12:53:21 piyush-kurur joins (~user@14.139.174.50)
12:53:22 <dminuoso> but that creates a constraint `Num (Maybe Char)` that we need to solve
12:53:36 <dminuoso> So GHC will look up in its knowledge base, but fail to find a matching instance
12:53:59 <dminuoso> >> This will instantiate the tpye variable `a` at `Maybe Char`,
12:54:09 <dminuoso> The reason GHC does this, is what I explained earlier
12:54:14 <dminuoso> from the type annotation
12:54:18 <dminuoso> f :: Maybe Char
12:54:19 <miladz68> dminuoso let me digest this. this is getting interesting
12:54:21 <dminuoso> It then sees
12:54:29 <dminuoso> fromInteger 2 :: Maybe Char
12:54:45 <dminuoso> So it knows the return type of `fromInteger` must be Maybe Char
12:55:17 <miladz68> dminuoso, so far so good. I understand
12:56:19 <dminuoso> miladz68: Afterwards, you should really watch the video I linked. Its a wonderful talk :)
12:56:25 ghghghgh joins (d4fc771c@212.252.119.28)
12:56:39 <dminuoso> miladz68: To introduce a new language, to make the *choice* of a type variable of a polymorphic thing apparent, we will write:
12:56:43 <dminuoso> % id @Int 1
12:56:44 <yahb> dminuoso: 1
12:56:52 <dminuoso> The @Int means "set the type variable to Int"
12:57:02 <dminuoso> So if we have `id :: a -> a`, then `id @Int :: Int -> Int`
12:57:04 <dminuoso> So far so good?
12:57:10 zoran119 joins (~zoran119@124-169-22-52.dyn.iinet.net.au)
12:57:27 <miladz68> dminuoso good so far
12:57:34 AlterEgo- joins (~ladew@124-198-158-163.dynamic.caiway.nl)
12:58:01 <dminuoso> miladz68: GHC does this internally everywhere, so it's not bad in this discussion.
12:58:12 <dminuoso> % t :: Fix Mex; t = Fix (Con 2)
12:58:17 <dminuoso> Let's think about what happens here
12:58:30 <dminuoso> First thing, we note that `f :: Fix Mex`
12:58:43 <dminuoso> And we see `t` being bound to `Fix` applied to something
12:58:53 <dminuoso> So using the same reasoning from above, we can therefore deduce
12:59:06 <dminuoso> % newtype Fix f = Fix (f (Fix f))
12:59:06 <yahb> dminuoso:
12:59:08 <dminuoso> % :t Fix
12:59:09 <yahb> dminuoso: f (Fix f) -> Fix f
12:59:18 <dminuoso> Since we know that's the type of Fix
12:59:40 <dminuoso> To solve for this, we set `f` to some as-of-yet unknown type, call it _t
12:59:52 <dminuoso> So our Fix has type `_t (Fix _t) -> Fix _t`
13:00:01 <dminuoso> We then know that
13:00:04 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
13:00:11 <dminuoso> Con 2 :: _t (Fix _t)
13:00:19 <dminuoso> (Because it appears as an argument to Fix)
13:00:27 <dminuoso> And we know that `Fix (Con 2) :: Fix _t`
13:01:10 <dminuoso> And we also know that `Fix (Con 2) :: Fix Mex`
13:01:20 <dminuoso> So we can deduce that `_t = Mex`
13:01:29 <dminuoso> If we go plug that knowledge in we notice that:
13:01:39 <dminuoso> Con 2 :: Mex (Fix Mex)
13:02:05 <dminuoso> So recall, how a numbers are polymorphic with that fromInteger:
13:02:13 <dminuoso> Con (fromInteger 2) :: Mex (Fix Mex)
13:02:50 <dminuoso> From the above data type definition we also have: Con :: a -> Mex a
13:02:52 p-core joins (~Thunderbi@193.165.236.104)
13:03:41 <miladz68> I still cannot see the error
13:03:44 <dminuoso> Hold on, almost there!
13:03:52 <dminuoso> miladz68: Did you follow so far?
13:03:53 cfricke joins (~cfricke@unaffiliated/cfricke)
13:04:00 <miladz68> dminusoso Yes
13:04:36 <dminuoso> So since that Con takes a type variable, we too instantiate some as-of-yet unknown type variable
13:04:44 <dminuoso> So `Con :: _u -> Mex _u
13:04:52 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
13:04:55 <dminuoso> so (fromInteger 2) :: _u
13:05:17 <dminuoso> But, we just established:
13:05:20 <dminuoso> 14:01:39 dminuoso | Con 2 :: Mex (Fix Mex)
13:05:23 <dminuoso> So we know that _u = Fix Mex
13:05:25 urodna joins (~urodna@unaffiliated/urodna)
13:05:34 <dminuoso> % :t fromInteger
13:05:34 <yahb> dminuoso: Num a => Integer -> a
13:05:46 <miladz68> Ok
13:05:47 <dminuoso> Here too we set `a` to some as-of-yet unknown type called _v
13:06:01 <dminuoso> So our use of fromInteger has type `Num _v => Integer _v`
13:06:04 <dminuoso> err
13:06:06 <dminuoso> So our use of fromInteger has type `Num _v => Integer -> _v`
13:06:12 × mmohammadi9812 quits (~mmohammad@188.210.118.100) (Ping timeout: 260 seconds)
13:06:28 <dminuoso> 14:04:55 dminuoso | so (fromInteger 2) :: _u
13:06:34 <dminuoso> 14:05:23 dminuoso | So we know that _u = Fix Mex
13:06:43 <dminuoso> so we have `(fromInteger 2) :: Fix Mex`
13:06:52 <dminuoso> So we know that `_v = Fix Mex`
13:07:03 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
13:07:16 <dminuoso> We're all done now, but we need `Num (Fix Mex)`
13:07:16 <miladz68> there is no instance for fromInteger 2 :: Fix Mex ?
13:07:24 <dminuoso> But no such instance exists
13:07:28 <dminuoso> So GHC bails out
13:07:45 × alp quits (~alp@2a01:e0a:58b:4920:2923:faed:144a:c0cf) (Ping timeout: 272 seconds)
13:07:47 × ghghghgh quits (d4fc771c@212.252.119.28) (Remote host closed the connection)
13:08:20 <dminuoso> miladz68: If you type annotated `2 :: Int` you'd get a better diagnostic. The problem in your case is that numbers are *so* polymorphic, that they keep the type inference going much longer. :)
13:08:47 <miladz68> dminusoso wow, I actually understand it :). thanks. you saved me a week of frustrations
13:08:56 <dminuoso> miladz68: Btw, in that above algorithm, if we are left with any "as-of-yet unknown types" at the end, we will just quantify them back!
13:09:00 mmohammadi9812 joins (~mmohammad@188.210.118.100)
13:09:06 <dminuoso> for instance if we wrote:
13:09:39 <dminuoso> `f x = x` we'd say `x :: _u`, so `f :: _u -> _u`, done! Then we generalize back, give the type variable some random name, and then we have `f :: x -> x`
13:10:02 <dminuoso> miladz68: And that in principle is how type inference in GHC works.
13:10:07 <dminuoso> Do watch the video! :)
13:10:56 × ahmr88 quits (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Read error: Connection reset by peer)
13:10:59 <miladz68> dminusoso I wil for sure. I feel much confortable with GHC now. Thanks a lot.
13:11:02 × Rudd0 quits (~Rudd0@185.189.115.98) (Ping timeout: 272 seconds)
13:11:52 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
13:12:10 <dminuoso> miladz68: Interesting to note, the consequences of this type inference algorithm, is that GHC can make wrong assumptions about types, sometimes giving unification errors in really strange places.
13:12:32 CyB3rW0rm parts (~fedora@143.244.38.33) ("Leaving")
13:12:34 xerox_ joins (~xerox@unaffiliated/xerox)
13:12:41 ahmr88 joins (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
13:12:50 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
13:13:21 <dminuoso> (The consequence is not that it will fail to report on errors, but it can lead GHC to just assume a fact, and then go on and keep applying inference rules with that fact)
13:13:38 <dminuoso> If it doesnt work out it *will* error out, but not necessarily in the place you expect it to
13:13:54 <dminuoso> So adding type annotations helps limit how far inference can go
13:14:05 <dminuoso> (So if you ever have strange type errors you cant figure out, add type annotations/ascriptions!)
13:14:35 <miladz68> dminusoso like adding ::Int next to 2 in my example
13:14:40 <dminuoso> Right.
13:14:50 <miladz68> dminusoso and one more question, did you learn all this by watching that one video ?
13:14:58 <dminuoso> % t :: Fix Mex; t = Fix (Con 2)
13:14:59 <yahb> dminuoso: ; <interactive>:36:28: error:; * No instance for (Num (Fix Mex)) arising from the literal `2'; * In the first argument of `Con', namely `2'; In the first argument of `Fix', namely `(Con 2)'; In the expression: Fix (Con 2)
13:15:02 <dminuoso> % t :: Fix Mex; t = Fix (Con (2 :: Int))
13:15:03 <yahb> dminuoso: ; <interactive>:37:24: error:; * Couldn't match type `Int' with `Fix Mex'; Expected type: Mex (Fix Mex); Actual type: Mex Int; * In the first argument of `Fix', namely `(Con (2 :: Int))'; In the expression: Fix (Con (2 :: Int)); In an equation for `t': t = Fix (Con (2 :: Int))
13:15:26 <dminuoso> miladz68: No, just things you pick up :)
13:15:30 macrover joins (~macrover@ip70-189-231-35.lv.lv.cox.net)
13:15:36 <dminuoso> And other folks in here who helped explain
13:15:52 <dminuoso> (Though I did use the video to understand some subtleties of the type inference involving GADTs)
13:16:54 <miladz68> I will watch the video and try to use my brain more instead of the compiler
13:17:45 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 265 seconds)
13:18:05 <dminuoso> miladz68: http://dev.stephendiehl.com/fun/006_hindley_milner.html is also a good read
13:18:24 <dminuoso> And if you want to dive into the theory and formal methods, Pierces Types and Programming Languages is an excellent read
13:18:44 lucasb joins (uid333435@gateway/web/irccloud.com/x-uaaedzwtlfjjcpgy)
13:21:00 <merijn> miladz68: Honestly, just doing type inference by hand on a piece of paper helps tons
13:21:16 <miladz68> dminusoso I will check them out both. I think I will checkout the book first. probably will more than a few months for someone without much background is CS theory
13:21:52 <dminuoso> As a cute excercise:
13:21:57 <dminuoso> % :t id
13:21:58 <yahb> dminuoso: a -> a
13:22:01 <dminuoso> % :t flip id
13:22:01 <yahb> dminuoso: b -> (b -> c) -> c
13:22:04 <dminuoso> % :t flip
13:22:04 <yahb> dminuoso: (a -> b -> c) -> b -> a -> c
13:22:14 <dminuoso> Figure out why `flip id` has the type it has! :)
13:22:39 <miladz68> merjin thank sounds exactly like what I would be interested in but I need to see examples of how it is done
13:24:56 <miladz68> dminusoso I can't believe that example you just mentioned. why is it so ? ok don't tell me. let me think
13:26:03 <merijn> miladz68: It helps to rename the type variables of id and 'flip' so they are unique and then just working out the equations
13:26:22 geekosaur joins (82659a09@host154-009.vpn.uakron.edu)
13:26:34 <dminuoso> merijn: Start like I did. Swap out type variables for "as-of-yet unknown types", perhaps start them with an underscore like I did?
13:26:50 <dminuoso> Write it down on paper or an editor :)
13:29:37 × piyush-kurur quits (~user@14.139.174.50) (Ping timeout: 264 seconds)
13:30:55 × cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
13:31:14 × p-core quits (~Thunderbi@193.165.236.104) (Ping timeout: 264 seconds)
13:33:35 revtintin joins (~revtintin@158.140.144.34)
13:35:40 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Quit: leaving)
13:35:50 × jonatanb quits (~jonatanb@83.24.9.26.ipv4.supernova.orange.pl) (Quit: Leaving...)
13:38:04 nbloomf joins (~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae)
13:39:16 × jonathanx quits (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
13:40:15 × britva quits (~britva@2a02:aa13:7240:2980:292a:d07d:3ab9:26ba) (Quit: This computer has gone to sleep)
13:42:24 britva joins (~britva@31-10-157-156.cgn.dynamic.upc.ch)
13:44:35 thir joins (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
13:47:02 privalovy_lekvar is now known as hexic
13:48:28 × drbean quits (~drbean@TC210-63-209-173.static.apol.com.tw) (Ping timeout: 260 seconds)
13:49:33 × thir quits (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
13:54:00 machinedgod joins (~machinedg@207.253.244.210)
13:57:02 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae) (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:57:38 nbloomf joins (~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae)
13:58:03 Ranhir joins (~Ranhir@157.97.53.139)
13:58:24 × acidjnk_new2 quits (~acidjnk@p200300d0c718f623ecaa4caf6803be45.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
13:59:33 × ubert quits (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Remote host closed the connection)
13:59:44 ubert joins (~Thunderbi@2a02:8109:9880:303c:e6b3:18ff:fe83:8f33)
14:00:34 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae) (Client Quit)
14:03:43 hyperisco joins (~hyperisco@d192-186-117-226.static.comm.cgocable.net)
14:05:28 jonathanx joins (~jonathan@dyn-8-sc.cdg.chalmers.se)
14:08:54 avdb joins (~avdb@ip-83-134-109-138.dsl.scarlet.be)
14:11:01 × thunderrd quits (~thunderrd@183.182.115.112) (Remote host closed the connection)
14:11:38 daydaynatation joins (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
14:11:44 × bitmapper quits (uid464869@gateway/web/irccloud.com/x-xutwnldhztnzggtn) (Quit: Connection closed for inactivity)
14:12:07 × xff0x quits (~fox@2001:1a81:53b4:ba00:5006:d65a:90eb:4407) (Ping timeout: 260 seconds)
14:12:15 <daydaynatation> I have installed the array package, yet when i try to load it into ghci, it still says it's in a hidden package
14:12:21 ggole joins (~ggole@2001:8003:8119:7200:4c8:75c2:97ad:422b)
14:12:34 <daydaynatation> import Data.Array
14:13:04 xff0x joins (~fox@2001:1a81:53b4:ba00:49d8:d2a:69a9:1ef4)
14:13:11 <dminuoso> daydaynatation: What do you mean by "installed the array package" exactly?
14:13:28 <daydaynatation> cabal install array
14:13:35 <daydaynatation> cabal install array --lib
14:13:47 <dminuoso> Yeah uh, and how did you start ghci?
14:13:56 <daydaynatation> cabal repl
14:13:59 alp joins (~alp@2a01:e0a:58b:4920:5584:7343:90a1:2565)
14:14:17 <dminuoso> Is your cwd inside a cabal project?
14:14:34 thunderrd joins (~thunderrd@183.182.115.112)
14:14:40 <daydaynatation> dminuoso: i see where the problem is. stupid me. i can simply run ghci
14:14:59 <daydaynatation> I had the habit of running stack ghci before
14:16:12 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
14:16:40 <miladz68> dminuoso :t flip :: (a -> b -> c) -> b -> a -> c now :t id :: z -> z so taking z as z=b->c replacing it into id we get id :: (b->c) -> (b->c) replacing into filp we get flip :: ( (b->c) -> b ->c) -> b -> (b->c) -> c and :t filp id :: b->(b->c) ->c
14:17:08 <dminuoso> miladz68: That seems a bit short
14:18:07 <merijn> You're skipping a step there, yeah :p
14:18:29 <dminuoso> miladz68: Let me give you a gist for the first step :)
14:18:56 × jjhoo quits (jahakala@dsl-trebng21-b048b5-171.dhcp.inet.fi) (Remote host closed the connection)
14:19:58 <miladz68> All did was to interpret id as :t id :: (b->c) -> b-> c and replace it into flip
14:20:13 <miladz68> dminuoso thanks
14:21:18 ddellacosta joins (~dd@86.106.121.168)
14:21:30 <tomsmeding> miladz68: sure, but why choose b->c? :)
14:22:50 <miladz68> :tomsmeding because b->c would type check, but I don't know how ghc figures that out. Is that the missing step ?
14:22:50 jjhoo joins (jahakala@dsl-trebng21-b048b5-171.dhcp.inet.fi)
14:23:12 <tomsmeding> it is :)
14:24:01 <miladz68> tomsmeding i will think more about it then
14:24:04 <tomsmeding> you're applying 'flip' to 'id'; this means that the first argument of 'flip', which has type 'a -> b -> c', must match the type of 'id', which is 'z -> z'
14:27:40 p-core joins (~Thunderbi@193.165.237.18)
14:27:49 <merijn> miladz68: You get "a -> b -> c = z -> z" which in turn leads to the equations "z = a" and "z = b -> c". Typechecking then consists of validating that none of your equations contradict each other
14:28:18 <merijn> "z = a" and "z = b -> c" is fine IFF "a = b -> c"
14:29:12 <miladz68> merjin thanks. I now see how ghc worked it out.
14:30:13 <dminuoso> miladz68: Im preparing a more slightly more formal write up
14:30:16 <dminuoso> That will probably help
14:30:21 acidjnk_new2 joins (~acidjnk@p200300d0c718f623ecaa4caf6803be45.dip0.t-ipconnect.de)
14:30:24 <miladz68> what is this process called ? type checking ? type inferrence ?
14:30:42 <miladz68> dminuoso thanks alot.
14:30:52 jil` parts (~user@45.86.162.6) ("ERC (IRC client for Emacs 26.1)")
14:31:03 elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
14:31:57 <dminuoso> miladz68: type inference is an integral part of type checking
14:33:07 <dminuoso> The important realization is that types are not a value level property, they are of syntactical nature. Values dont have types
14:33:10 <dminuoso> Expressions have types
14:33:15 <merijn> dminuoso: Eh, I disagree
14:33:28 <merijn> You can do type checking without inference, so clearly it's not an "integral part"
14:33:45 <merijn> It's just that both use the same machinery in Haskell
14:34:04 <dminuoso> merijn: You cant do much type checking without at least some type inference, really.
14:34:24 <dminuoso> Say, at the very minimum you likely want some kind of [App] inference rule
14:34:47 <dminuoso> I mean yeah. technically you could, its just that such a type system wouldn't do much for you
14:35:35 <dminuoso> Without inference, this could not be checked for instance: f :: Int; f = (g :: Char -> Float) (x :: Char)
14:35:45 <dminuoso> (Or you'd have to just accept it)
14:36:26 <merijn> wut
14:36:40 <merijn> How does that require inference?
14:37:11 <dminuoso> merijn: how do you infer what the type of `g applied to x` is?
14:37:16 pavonia joins (~user@unaffiliated/siracusa)
14:37:18 <dminuoso> How do you *know* it?
14:37:38 <merijn> You are conflating the English/logical meaning of infer with "type inference"
14:38:13 <merijn> "Char -> Float" applied to "Char" = "Float" isn't inferring anything
14:38:21 <dminuoso> Of course it is.
14:38:24 × chaosmasttter quits (~chaosmast@p200300c4a7117c017972e6cd644c1b14.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
14:38:48 <dminuoso> You have to encode the machinery into the type checker to *know* it can do that
14:38:51 <dminuoso> And that's inference
14:39:08 <merijn> You literally have to encode the machinery to type check into any type checker...
14:39:12 <dminuoso> In the above, `g x :: Char` is an inferred type
14:39:13 MaoZeDong_ joins (~yuri@2a00:1370:8135:4003:f085:2e15:a839:240d)
14:39:17 <merijn> That's what type checker are
14:39:18 <dminuoso> It's certainly not specified
14:39:34 <dminuoso> Hence my statement: type inference is an integral part of type checking
14:40:09 <merijn> Your usage of type inference does not conform to any common usage of type inference like in, say, TaPL
14:41:14 <dminuoso> It's quite as per TaPL
14:42:05 × daydaynatation quits (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Read error: No route to host)
14:42:44 christo joins (~chris@81.96.113.213)
14:43:29 <dminuoso> merijn: The reason you're allowed to assume `g x :: Char` in Haskell, is as per [App] rule in the damas milner type inference
14:43:35 × geekosaur quits (82659a09@host154-009.vpn.uakron.edu) (Remote host closed the connection)
14:43:43 <merijn> I refer you to the fact that type inference is discussed on...page 317 of TaPL and not needed for type checking, e.g. the simply typed lambda calculus
14:43:51 <merijn> Which, according to your definition, it would be
14:44:15 <merijn> dminuoso: There are type checking rules for function application too
14:44:48 <merijn> "Char -> Float" applied to "Char" = "Float" is a rule in even the simplest lambda calculus and doesn't require inference, just an application rule (which you need anyway)
14:45:09 <merijn> You only need inference for function application if you don't annotate functions with their argument types
14:45:15 <merijn> Which you already did
14:46:16 <merijn> I refer you to rule E-AppAbs on page 72 of TaPL :)
14:46:36 <merijn> oh, wait, that's the wrong one, hold on
14:47:21 <merijn> T-Abs and T-App on page 103
14:47:25 <dminuoso> merijn: an application rule *is* an inference rue
14:47:42 <merijn> TaPL disagrees
14:47:52 × PyroLagus quits (PyroLagus@i.have.ipv6.on.coding4coffee.org) (Ping timeout: 246 seconds)
14:48:08 PyroLagus joins (PyroLagus@i.have.ipv6.on.coding4coffee.org)
14:48:40 <merijn> type inference is the "act of computing a principal type for a term in which some or all annotations are left out"
14:48:58 <lortabac> IIRC most type systems presented in TAPL require no inference at all
14:49:07 <merijn> The fact that you can piggyback inference off of the typing rule for abstraction is orthogonal
14:49:10 <lortabac> STLC, System F...
14:49:31 <merijn> Consider the fact that you can't infer RankN types for functions, but you can still type check them
14:49:44 Eason0210 joins (~user@101.85.10.81)
14:49:48 × macrover quits (~macrover@ip70-189-231-35.lv.lv.cox.net) (Ping timeout: 258 seconds)
14:50:21 <merijn> You can think of the T-App rule as "a logical inference", but that's not what any of the literature means when they talk about type inference
14:51:59 <dminuoso> 15:47:42 merijn | TaPL disagrees
14:52:02 <dminuoso> Im really curious.
14:52:09 <dminuoso> What you call type inference, TaPL calls type reconstruction
14:52:33 <merijn> It even says "type inference, see type reconstruction"
14:52:33 <dminuoso> The term "type inference" for these "logical inference rules" is used from the beginning throughout the entire book
14:53:20 Guest8822 joins (562d675a@86-45-103-90-dynamic.agg2.ddk.dbc-mgr.eircom.net)
14:53:39 <lortabac> dminuoso: are you sure? that's not what I remember from reading that book
14:53:50 <dminuoso> lortabac: Im staring at it right now.
14:54:28 jokester joins (~mono@unaffiliated/jokester)
14:54:36 <lortabac> it is true that some people prefer saying "type reconstruction" or "synthesis" to avoid ambiguity
14:54:43 <dminuoso> I guess the book is really ambiguous about this
14:54:52 × domenkozar[m] quits (domenkozar@NixOS/user/domenkozar) (*.net *.split)
14:54:52 × cstrahan quits (sid36118@gateway/web/irccloud.com/x-mfvjnlhprdhvdyaw) (*.net *.split)
14:54:52 × eacameron quits (sid256985@gateway/web/irccloud.com/x-trisvivfbojkcgwh) (*.net *.split)
14:54:53 × jlv quits (jlvjustinl@gateway/shell/matrix.org/x-hqueevydwoadxbpz) (*.net *.split)
14:54:53 × ttc quits (tomtauma1@gateway/shell/matrix.org/x-kbtilopgzcxagitb) (*.net *.split)
14:54:53 × bonvoyage[m] quits (bonvoyageu@gateway/shell/matrix.org/x-pojfdsrdccxnmsub) (*.net *.split)
14:54:53 × iinuwa quits (iinuwamatr@gateway/shell/matrix.org/x-lpekgkdkfonfigtg) (*.net *.split)
14:54:53 × Fernando-Basso[m quits (fernando-b@gateway/shell/matrix.org/x-vwxyieictpjdswzt) (*.net *.split)
14:54:53 × theduke quits (thedukem1@gateway/shell/matrix.org/x-cbnzcbffqhkoxtel) (*.net *.split)
14:54:53 × Ericson2314 quits (ericson231@gateway/shell/matrix.org/x-eiodcepayzmtulvi) (*.net *.split)
14:54:53 × Klumben quits (Nsaiswatch@gateway/shell/panicbnc/x-dhcfdjwdfkfdqaso) (*.net *.split)
14:54:53 × whez quits (uid470288@gateway/web/irccloud.com/x-malcqwiljeridksp) (*.net *.split)
14:54:53 × yushyin quits (5rFdtsVUm7@karif.server-speed.net) (*.net *.split)
14:54:53 × sud0 quits (~Death@hackspaceuy/member/sud0) (*.net *.split)
14:54:53 × sm quits (~user@li229-222.members.linode.com) (*.net *.split)
14:54:55 <dminuoso> At some point TaPL says "type reconstruction, sometimes also called type inference"
14:55:06 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
14:55:24 × acidjnk_new2 quits (~acidjnk@p200300d0c718f623ecaa4caf6803be45.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
14:55:28 <dminuoso> but at the same type introduces "inference rules"
14:55:36 <dminuoso> Which are not for type reconstruction, i.e. type inference
14:55:49 <dminuoso> Ah well at any rate
14:55:56 domenkozar[m] joins (domenkozar@NixOS/user/domenkozar)
14:55:56 cstrahan joins (sid36118@gateway/web/irccloud.com/x-mfvjnlhprdhvdyaw)
14:55:56 eacameron joins (sid256985@gateway/web/irccloud.com/x-trisvivfbojkcgwh)
14:55:56 jlv joins (jlvjustinl@gateway/shell/matrix.org/x-hqueevydwoadxbpz)
14:55:56 Fernando-Basso[m joins (fernando-b@gateway/shell/matrix.org/x-vwxyieictpjdswzt)
14:55:56 iinuwa joins (iinuwamatr@gateway/shell/matrix.org/x-lpekgkdkfonfigtg)
14:55:56 theduke joins (thedukem1@gateway/shell/matrix.org/x-cbnzcbffqhkoxtel)
14:55:56 ttc joins (tomtauma1@gateway/shell/matrix.org/x-kbtilopgzcxagitb)
14:55:56 bonvoyage[m] joins (bonvoyageu@gateway/shell/matrix.org/x-pojfdsrdccxnmsub)
14:55:56 Ericson2314 joins (ericson231@gateway/shell/matrix.org/x-eiodcepayzmtulvi)
14:55:56 Klumben joins (Nsaiswatch@gateway/shell/panicbnc/x-dhcfdjwdfkfdqaso)
14:55:56 whez joins (uid470288@gateway/web/irccloud.com/x-malcqwiljeridksp)
14:55:56 yushyin joins (5rFdtsVUm7@karif.server-speed.net)
14:55:56 sud0 joins (~Death@hackspaceuy/member/sud0)
14:55:56 sm joins (~user@li229-222.members.linode.com)
14:56:10 × Ericson2314 quits (ericson231@gateway/shell/matrix.org/x-eiodcepayzmtulvi) (Max SendQ exceeded)
14:56:10 × Klumben quits (Nsaiswatch@gateway/shell/panicbnc/x-dhcfdjwdfkfdqaso) (Max SendQ exceeded)
14:56:41 × alp quits (~alp@2a01:e0a:58b:4920:5584:7343:90a1:2565) (Ping timeout: 272 seconds)
14:57:03 × maralorn quits (maralornma@gateway/shell/matrix.org/x-pkelfgrohvpzfolu) (Ping timeout: 244 seconds)
14:57:03 × mikr[m] quits (mikrdavral@gateway/shell/matrix.org/x-jnlucypbifmucvfy) (Ping timeout: 244 seconds)
14:57:03 × wrunt[m] quits (wruntmatri@gateway/shell/matrix.org/x-tobpdugmvlykanbe) (Ping timeout: 244 seconds)
14:57:03 × betrion[m] quits (betrionmat@gateway/shell/matrix.org/x-dsrbaapqpyafsbmj) (Ping timeout: 244 seconds)
14:57:03 × psydruid quits (psydruidma@gateway/shell/matrix.org/x-uodtpvngjfwtuggt) (Ping timeout: 244 seconds)
14:57:08 × michaelpj quits (michaelpjm@gateway/shell/matrix.org/x-oigadqxzdyumsikb) (Ping timeout: 246 seconds)
14:57:08 × tersetears[m] quits (tersetears@gateway/shell/matrix.org/x-njimwnsggeorbzzd) (Ping timeout: 246 seconds)
14:57:09 × sm[m] quits (simonmicma@gateway/shell/matrix.org/x-tilmtmvnszzwjtcv) (Ping timeout: 246 seconds)
14:57:09 × unclechu quits (unclechuma@gateway/shell/matrix.org/x-lcvlyrcvcccjaofs) (Ping timeout: 246 seconds)
14:57:10 × Fernando-Basso[m quits (fernando-b@gateway/shell/matrix.org/x-vwxyieictpjdswzt) (Ping timeout: 246 seconds)
14:57:17 × mmynsted[m] quits (mmynstedtc@gateway/shell/matrix.org/x-zszjcyokedzkvvvw) (Ping timeout: 260 seconds)
14:57:17 × chreekat[m] quits (chreekatma@gateway/shell/matrix.org/x-tbcdmvvmfcadbfxu) (Ping timeout: 260 seconds)
14:57:24 × jesser[m] quits (jessermatr@gateway/shell/matrix.org/x-fexhchkhagwtqfyl) (Ping timeout: 240 seconds)
14:57:26 × dyniec[m] quits (dyniecmatr@gateway/shell/matrix.org/x-bqlbscrkasptvecc) (Ping timeout: 240 seconds)
14:57:26 × alexfmpe quits (alexfmpema@gateway/shell/matrix.org/x-puehpfgruzmxylyx) (Ping timeout: 240 seconds)
14:57:26 × PotatoHatsue|T quits (berbermanm@gateway/shell/matrix.org/x-tramsdhygfziwosr) (Ping timeout: 240 seconds)
14:57:26 × texasmynsted[m]1 quits (mmynstedko@gateway/shell/matrix.org/x-vggryrjyagxthgpr) (Ping timeout: 240 seconds)
14:57:29 × wi[m] quits (w1gzmatrix@gateway/shell/matrix.org/x-yfarknebhuzfmgwp) (Ping timeout: 270 seconds)
14:57:29 × srid quits (sridmatrix@gateway/shell/matrix.org/x-mkesouyylxzbcafd) (Ping timeout: 244 seconds)
14:57:29 × themsay[m] quits (themsaymat@gateway/shell/matrix.org/x-bqmyhbzuevubqaxn) (Ping timeout: 244 seconds)
14:57:29 × jkaye[m] quits (jkayematri@gateway/shell/matrix.org/x-cptxfbojabslrjcy) (Ping timeout: 244 seconds)
14:57:29 × DeadComaGrayce[m quits (commagra1@gateway/shell/matrix.org/x-iuyehmrmzolqbndz) (Ping timeout: 270 seconds)
14:57:30 × jtojnar quits (jtojnarmat@gateway/shell/matrix.org/x-vxxxfyeqdpvmztqw) (Ping timeout: 270 seconds)
14:57:30 × siraben quits (sirabenmat@gateway/shell/matrix.org/x-bcyjzribfqthehto) (Ping timeout: 270 seconds)
14:57:30 × domenkozar[m] quits (domenkozar@NixOS/user/domenkozar) (Ping timeout: 246 seconds)
14:57:30 × iinuwa quits (iinuwamatr@gateway/shell/matrix.org/x-lpekgkdkfonfigtg) (Ping timeout: 246 seconds)
14:57:34 × jeffcasavant[m] quits (jeffcasava@gateway/shell/matrix.org/x-dhyacoeojdbhkueh) (Ping timeout: 244 seconds)
14:57:34 × micahsovereign[m quits (micahsover@gateway/shell/matrix.org/x-dxdibhjjyybodwbc) (Ping timeout: 244 seconds)
14:57:37 × lnxw37d4 quits (lnxw37d4ma@gateway/shell/matrix.org/x-amgtuukfolghuwuq) (Ping timeout: 260 seconds)
14:57:38 × Guest8822 quits (562d675a@86-45-103-90-dynamic.agg2.ddk.dbc-mgr.eircom.net) (Remote host closed the connection)
14:57:49 × nkly quits (~nkly@ip5b40d080.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds)
14:57:52 <miladz68> dminuoso and merjin I managed to fix my the problem in my original question. There was something about haskell's type system that I could not get for about a year now. THANK YOU GUYS !!! https://paste.tomsmeding.com/ufeE5VEv
14:58:12 × yushyin quits (5rFdtsVUm7@karif.server-speed.net) (Ping timeout: 241 seconds)
14:58:12 × MaoZeDong_ quits (~yuri@2a00:1370:8135:4003:f085:2e15:a839:240d) (Ping timeout: 260 seconds)
14:58:54 × bonvoyage[m] quits (bonvoyageu@gateway/shell/matrix.org/x-pojfdsrdccxnmsub) (Ping timeout: 246 seconds)
14:58:54 × theduke quits (thedukem1@gateway/shell/matrix.org/x-cbnzcbffqhkoxtel) (Ping timeout: 246 seconds)
14:58:55 × alvinsj[m] quits (alvinsjmat@gateway/shell/matrix.org/x-vcggqutodlsvbbci) (Ping timeout: 240 seconds)
14:59:08 × tttom[m] quits (tttommatri@gateway/shell/matrix.org/x-kshxzzwtqhpqbsjt) (Ping timeout: 244 seconds)
14:59:14 × bliminse quits (~bliminse@host109-156-197-211.range109-156.btcentralplus.com) (Ping timeout: 268 seconds)
14:59:15 × kadoban quits (kadobanmat@gateway/shell/matrix.org/x-ibzwjrmlfzihcpnq) (Ping timeout: 246 seconds)
14:59:15 × fgaz quits (fgazmatrix@gateway/shell/matrix.org/x-nobvbpoimoorjizw) (Ping timeout: 246 seconds)
14:59:15 × ComaGrayce[m] quits (commagrays@gateway/shell/matrix.org/x-hjwgivbycspfkazw) (Ping timeout: 246 seconds)
14:59:15 × PotatoHatsue quits (berbermanp@gateway/shell/matrix.org/x-bglrmgugemmlkftz) (Ping timeout: 246 seconds)
14:59:15 × kaychaks_riot quits (kaychaksma@gateway/shell/matrix.org/x-stbwfkzfrvvzbyzd) (Ping timeout: 246 seconds)
14:59:16 × jlv quits (jlvjustinl@gateway/shell/matrix.org/x-hqueevydwoadxbpz) (Ping timeout: 246 seconds)
14:59:16 × ttc quits (tomtauma1@gateway/shell/matrix.org/x-kbtilopgzcxagitb) (Ping timeout: 246 seconds)
14:59:22 × elpfen[m] quits (elpfenmatr@gateway/shell/matrix.org/x-qyxfulwurvxvqcrl) (Ping timeout: 260 seconds)
14:59:25 × loprakoa[m] quits (loprakoama@gateway/shell/matrix.org/x-xavaolgsmkbljkqt) (Ping timeout: 240 seconds)
14:59:25 × jiribenes1 quits (jbjiribene@gateway/shell/matrix.org/x-fxavqhwgliqrsecu) (Ping timeout: 240 seconds)
14:59:27 × rednaZ[m] quits (r3dnazmatr@gateway/shell/matrix.org/x-fbgpcbpvvdvwhhpb) (Ping timeout: 240 seconds)
14:59:33 × sureyeaah quits (shauryab98@gateway/shell/matrix.org/x-yafeivvctuhylrnm) (Ping timeout: 244 seconds)
14:59:37 bliminse joins (~bliminse@host109-156-197-211.range109-156.btcentralplus.com)
14:59:37 × hnOsmium0001[m] quits (hnosmium00@gateway/shell/matrix.org/x-sshchogyivlmgodc) (Ping timeout: 246 seconds)
14:59:38 × berberman|T quits (berberma4@gateway/shell/matrix.org/x-wnomaozyraumizpd) (Ping timeout: 244 seconds)
14:59:38 × ThaEwat quits (thaewraptm@gateway/shell/matrix.org/x-pssqkgzdxqqfosjg) (Ping timeout: 244 seconds)
14:59:39 × hsiktas[m] quits (hsiktasmat@gateway/shell/matrix.org/x-spblkboyxhqoardh) (Ping timeout: 244 seconds)
14:59:39 × zerstroyer[m] quits (zerstroyer@gateway/shell/matrix.org/x-yllnormoxnelwrvi) (Ping timeout: 244 seconds)
14:59:51 × pqwy[m] quits (pqwymatrix@gateway/shell/matrix.org/x-htkzhbylfcdwfzyr) (Ping timeout: 272 seconds)
14:59:51 × drozdziak1 quits (drozdziak1@gateway/shell/matrix.org/x-vtaixfecibczpgem) (Ping timeout: 272 seconds)
15:00:44 nkly joins (~nkly@ip5b40d080.dynamic.kabel-deutschland.de)
15:02:01 × Rembane quits (~Rembane@li346-36.members.linode.com) (Ping timeout: 264 seconds)
15:02:23 Rembane joins (~Rembane@li346-36.members.linode.com)
15:02:23 × lambdaclan quits (lambdaclan@gateway/shell/matrix.org/x-gzshwuftlgessnhs) (Ping timeout: 272 seconds)
15:03:01 × johnnyboy[m] quits (gifumatrix@gateway/shell/matrix.org/x-bwnfdzeafqubfksm) (Ping timeout: 272 seconds)
15:04:12 × mokulus quits (~mat@176.111.230.96) (Quit: WeeChat 2.9)
15:04:28 mokulus joins (~mat@176.111.230.96)
15:04:40 <dminuoso> miladz68: https://gist.github.com/dminuoso/79855d359ea2d21a8184e235870ecb44
15:04:51 <dminuoso> miladz68: Note that ~ denotes equality of types. :)
15:05:42 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
15:06:02 yushyin joins (bSs9syBAug@karif.server-speed.net)
15:06:17 <dminuoso> Please reload, just corrected a mistkae.
15:07:00 × da39a3ee5e6b4b0d quits (~textual@n11211935170.netvigator.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:07:08 × idhugo quits (~idhugo@users-1190.st.net.au.dk) (Ping timeout: 260 seconds)
15:09:00 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
15:09:26 MaoZeDong_ joins (~yuri@2a00:1370:8135:4003:a125:a313:30a7:dda3)
15:09:29 Klumben joins (Nsaiswatch@gateway/shell/panicbnc/x-mkcnlvblwjhyiwoj)
15:12:05 × refried_ quits (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Ping timeout: 240 seconds)
15:13:25 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds)
15:13:45 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
15:14:02 × p-core quits (~Thunderbi@193.165.237.18) (Ping timeout: 268 seconds)
15:15:32 <miladz68> dminuoso Thanks a million time
15:16:25 <miladz68> dminuoso I cannot view secret gist since github has banned people from Iran :(
15:16:30 <dminuoso> miladz68: Hold on
15:16:44 <dminuoso> miladz68: https://paste.tomsmeding.com/zyYW4txr
15:18:51 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 272 seconds)
15:19:20 × mimi_vx quits (~mimi@tulipan.habr.nat.praha12.net) (Remote host closed the connection)
15:21:18 bitmapper joins (uid464869@gateway/web/irccloud.com/x-glpnpeqsowfdqxrb)
15:21:28 jackgassett joins (~jackgasse@185.163.110.116)
15:22:53 × MaoZeDong_ quits (~yuri@2a00:1370:8135:4003:a125:a313:30a7:dda3) (Quit: Leaving)
15:22:57 knupfer joins (~Thunderbi@200116b82c33f500f4acd2fffe0c2764.dip.versatel-1u1.de)
15:22:58 × knupfer quits (~Thunderbi@200116b82c33f500f4acd2fffe0c2764.dip.versatel-1u1.de) (Client Quit)
15:23:11 Sgeo joins (~Sgeo@ool-18b982ad.dyn.optonline.net)
15:23:13 ulidtko joins (~ulidtko@193.111.48.79)
15:23:13 knupfer joins (~Thunderbi@i59F7FFF1.versanet.de)
15:23:40 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
15:23:53 <miladz68> dminuoso that is just beautiful. It all makes sense now. Haskell type system undestanding unlocked
15:26:43 texasmynsted[m]1 joins (mmynstedko@gateway/shell/matrix.org/x-hplokyjomowficph)
15:26:44 themsay[m] joins (themsaymat@gateway/shell/matrix.org/x-bonuvacpysczvweb)
15:26:50 siraben joins (sirabenmat@gateway/shell/matrix.org/x-pylemoygyzvfnqwz)
15:26:50 alexfmpe joins (alexfmpema@gateway/shell/matrix.org/x-glaqqlztankdgtop)
15:26:50 dyniec[m] joins (dyniecmatr@gateway/shell/matrix.org/x-hlniwidnojwpljwr)
15:26:51 sm[m] joins (simonmicma@gateway/shell/matrix.org/x-fnotdmzbnwicmhbr)
15:26:51 mikr[m] joins (mikrdavral@gateway/shell/matrix.org/x-dsykslkvwomhqqky)
15:26:51 wrunt[m] joins (wruntmatri@gateway/shell/matrix.org/x-idianarugrpsngxu)
15:26:52 tersetears[m] joins (tersetears@gateway/shell/matrix.org/x-xwkpjjikyvpgofyv)
15:26:52 wi[m] joins (w1gzmatrix@gateway/shell/matrix.org/x-qadybggtytyfvgiq)
15:26:52 michaelpj joins (michaelpjm@gateway/shell/matrix.org/x-qlfptiejrcydnwwk)
15:26:52 jkaye[m] joins (jkayematri@gateway/shell/matrix.org/x-lwpfhzdgppnfhaga)
15:26:52 betrion[m] joins (betrionmat@gateway/shell/matrix.org/x-axyffpqdcjljltip)
15:26:52 jesser[m] joins (jessermatr@gateway/shell/matrix.org/x-viisemtsepvgkslw)
15:26:53 jeffcasavant[m] joins (jeffcasava@gateway/shell/matrix.org/x-rqkxfgplxmrihcgx)
15:26:53 srid joins (sridmatrix@gateway/shell/matrix.org/x-egwyjxskwuhfbugd)
15:26:53 DeadComaGrayce[m joins (commagra1@gateway/shell/matrix.org/x-yxecycrnierjfljs)
15:26:53 mmynsted[m] joins (mmynstedtc@gateway/shell/matrix.org/x-yzuwbyvnpglbzbuy)
15:26:54 micahsovereign[m joins (micahsover@gateway/shell/matrix.org/x-tvaivucbnrwbatxd)
15:26:55 chreekat[m] joins (chreekatma@gateway/shell/matrix.org/x-llkuwfbcjnljizdi)
15:26:55 lnxw37d4 joins (lnxw37d4ma@gateway/shell/matrix.org/x-schvzqwnlrsjfkgy)
15:26:55 maralorn joins (maralornma@gateway/shell/matrix.org/x-hwtcfzlybldpjabd)
15:26:57 unclechu joins (unclechuma@gateway/shell/matrix.org/x-pzojqnawucwivbrx)
15:27:02 jtojnar joins (jtojnarmat@gateway/shell/matrix.org/x-elxfudyszzzuhhna)
15:27:48 psydruid joins (psydruidma@gateway/shell/matrix.org/x-ophphfesyzdfljdq)
15:27:48 TMA joins (tma@twin.jikos.cz)
15:28:17 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 246 seconds)
15:30:18 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
15:30:35 <dolio> "Inference rules" are indeed not the same thing as "type inference". They merely use the same word.
15:32:12 PotatoHatsue|T joins (berbermanm@gateway/shell/matrix.org/x-mnxsevwkuntepnch)
15:32:13 PotatoHatsue joins (berbermanp@gateway/shell/matrix.org/x-ueozaawewwujnohw)
15:32:32 × xff0x quits (~fox@2001:1a81:53b4:ba00:49d8:d2a:69a9:1ef4) (Ping timeout: 268 seconds)
15:32:35 <hyperisco> type inference is based on inference rules xd
15:32:56 <dolio> You could present type inference using inference rules, but not every inference rule has to do with type inference.
15:33:58 domenkozar[m] joins (domenkozar@NixOS/user/domenkozar)
15:34:52 iinuwa joins (iinuwamatr@gateway/shell/matrix.org/x-gxbjrfuwzerbbyfp)
15:35:27 solonarv joins (~solonarv@adijon-656-1-31-12.w90-13.abo.wanadoo.fr)
15:36:03 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
15:37:14 × Eason0210 quits (~user@101.85.10.81) (Quit: ERC (IRC client for Emacs 28.0.50))
15:38:15 bonvoyage[m] joins (bonvoyageu@gateway/shell/matrix.org/x-stbisqjpnwsozoeo)
15:38:17 theduke joins (thedukem1@gateway/shell/matrix.org/x-aqlsdouachfkrhez)
15:38:46 ttc joins (tomtauma1@gateway/shell/matrix.org/x-ekakabsstkyokkxj)
15:39:17 jlv joins (jlvjustinl@gateway/shell/matrix.org/x-wvbfemgwzknbgjod)
15:40:17 conal joins (~conal@64.71.133.70)
15:40:25 × o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection)
15:40:52 o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
15:40:53 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 246 seconds)
15:42:39 × o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection)
15:42:45 o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
15:43:30 loprakoa[m] joins (loprakoama@gateway/shell/matrix.org/x-tnuljvchikruvhvw)
15:43:31 jiribenes1 joins (jbjiribene@gateway/shell/matrix.org/x-axffvnsgpboxhtcg)
15:43:31 johnnyboy[m] joins (gifumatrix@gateway/shell/matrix.org/x-npyuwrvjfblnwfqj)
15:43:31 tttom[m] joins (tttommatri@gateway/shell/matrix.org/x-piwzfyinjzjgieef)
15:43:31 kaychaks_riot joins (kaychaksma@gateway/shell/matrix.org/x-srldqoniwbppskpm)
15:43:32 pqwy[m] joins (pqwymatrix@gateway/shell/matrix.org/x-utkkbuxvjzjrabza)
15:43:32 elpfen[m] joins (elpfenmatr@gateway/shell/matrix.org/x-fdpiaofjooaqrbtu)
15:43:32 ComaGrayce[m] joins (commagrays@gateway/shell/matrix.org/x-tdwomzfumhlkeioe)
15:43:33 alvinsj[m] joins (alvinsjmat@gateway/shell/matrix.org/x-usudjdrgxuyyqamj)
15:43:35 kadoban joins (kadobanmat@gateway/shell/matrix.org/x-btxwrgfxkibtqnsg)
15:43:44 rednaZ[m] joins (r3dnazmatr@gateway/shell/matrix.org/x-ybiigbogxoenpsye)
15:43:48 fgaz joins (fgazmatrix@gateway/shell/matrix.org/x-yxpvnieelsdvnidh)
15:43:50 × jonathanx quits (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
15:43:59 × sfvm quits (~sfvm@37.228.215.148) (Quit: off to the basement, mixing up the medicine)
15:45:31 Fernando-Basso[m joins (fernando-b@gateway/shell/matrix.org/x-yzwruqrfgsamuhyb)
15:47:01 × texasmynsted[m]1 quits (mmynstedko@gateway/shell/matrix.org/x-hplokyjomowficph) (Quit: Bridge terminating on SIGTERM)
15:47:01 × themsay[m] quits (themsaymat@gateway/shell/matrix.org/x-bonuvacpysczvweb) (Quit: Bridge terminating on SIGTERM)
15:47:01 × siraben quits (sirabenmat@gateway/shell/matrix.org/x-pylemoygyzvfnqwz) (Quit: Bridge terminating on SIGTERM)
15:47:01 × sm[m] quits (simonmicma@gateway/shell/matrix.org/x-fnotdmzbnwicmhbr) (Quit: Bridge terminating on SIGTERM)
15:47:01 × michaelpj quits (michaelpjm@gateway/shell/matrix.org/x-qlfptiejrcydnwwk) (Quit: Bridge terminating on SIGTERM)
15:47:01 × DeadComaGrayce[m quits (commagra1@gateway/shell/matrix.org/x-yxecycrnierjfljs) (Quit: Bridge terminating on SIGTERM)
15:47:01 × unclechu quits (unclechuma@gateway/shell/matrix.org/x-pzojqnawucwivbrx) (Quit: Bridge terminating on SIGTERM)
15:47:01 × tersetears[m] quits (tersetears@gateway/shell/matrix.org/x-xwkpjjikyvpgofyv) (Quit: Bridge terminating on SIGTERM)
15:47:01 × betrion[m] quits (betrionmat@gateway/shell/matrix.org/x-axyffpqdcjljltip) (Quit: Bridge terminating on SIGTERM)
15:47:01 × chreekat[m] quits (chreekatma@gateway/shell/matrix.org/x-llkuwfbcjnljizdi) (Quit: Bridge terminating on SIGTERM)
15:47:01 × maralorn quits (maralornma@gateway/shell/matrix.org/x-hwtcfzlybldpjabd) (Quit: Bridge terminating on SIGTERM)
15:47:01 × wi[m] quits (w1gzmatrix@gateway/shell/matrix.org/x-qadybggtytyfvgiq) (Quit: Bridge terminating on SIGTERM)
15:47:02 × lnxw37d4 quits (lnxw37d4ma@gateway/shell/matrix.org/x-schvzqwnlrsjfkgy) (Quit: Bridge terminating on SIGTERM)
15:47:02 × dyniec[m] quits (dyniecmatr@gateway/shell/matrix.org/x-hlniwidnojwpljwr) (Quit: Bridge terminating on SIGTERM)
15:47:02 × micahsovereign[m quits (micahsover@gateway/shell/matrix.org/x-tvaivucbnrwbatxd) (Quit: Bridge terminating on SIGTERM)
15:47:02 × psydruid quits (psydruidma@gateway/shell/matrix.org/x-ophphfesyzdfljdq) (Quit: Bridge terminating on SIGTERM)
15:47:02 × alexfmpe quits (alexfmpema@gateway/shell/matrix.org/x-glaqqlztankdgtop) (Quit: Bridge terminating on SIGTERM)
15:47:02 × jkaye[m] quits (jkayematri@gateway/shell/matrix.org/x-lwpfhzdgppnfhaga) (Quit: Bridge terminating on SIGTERM)
15:47:02 × mmynsted[m] quits (mmynstedtc@gateway/shell/matrix.org/x-yzuwbyvnpglbzbuy) (Quit: Bridge terminating on SIGTERM)
15:47:02 × wrunt[m] quits (wruntmatri@gateway/shell/matrix.org/x-idianarugrpsngxu) (Quit: Bridge terminating on SIGTERM)
15:47:02 × mikr[m] quits (mikrdavral@gateway/shell/matrix.org/x-dsykslkvwomhqqky) (Quit: Bridge terminating on SIGTERM)
15:47:02 × jesser[m] quits (jessermatr@gateway/shell/matrix.org/x-viisemtsepvgkslw) (Quit: Bridge terminating on SIGTERM)
15:47:02 × jtojnar quits (jtojnarmat@gateway/shell/matrix.org/x-elxfudyszzzuhhna) (Quit: Bridge terminating on SIGTERM)
15:47:02 × jeffcasavant[m] quits (jeffcasava@gateway/shell/matrix.org/x-rqkxfgplxmrihcgx) (Quit: Bridge terminating on SIGTERM)
15:47:02 × srid quits (sridmatrix@gateway/shell/matrix.org/x-egwyjxskwuhfbugd) (Quit: Bridge terminating on SIGTERM)
15:47:05 × PotatoHatsue|T quits (berbermanm@gateway/shell/matrix.org/x-mnxsevwkuntepnch) (Quit: Bridge terminating on SIGTERM)
15:47:06 × domenkozar[m] quits (domenkozar@NixOS/user/domenkozar) (Quit: Bridge terminating on SIGTERM)
15:47:06 × bonvoyage[m] quits (bonvoyageu@gateway/shell/matrix.org/x-stbisqjpnwsozoeo) (Quit: Bridge terminating on SIGTERM)
15:47:06 × theduke quits (thedukem1@gateway/shell/matrix.org/x-aqlsdouachfkrhez) (Quit: Bridge terminating on SIGTERM)
15:47:08 × kaychaks_riot quits (kaychaksma@gateway/shell/matrix.org/x-srldqoniwbppskpm) (Client Quit)
15:47:08 × elpfen[m] quits (elpfenmatr@gateway/shell/matrix.org/x-fdpiaofjooaqrbtu) (Client Quit)
15:47:08 × ComaGrayce[m] quits (commagrays@gateway/shell/matrix.org/x-tdwomzfumhlkeioe) (Client Quit)
15:47:08 × pqwy[m] quits (pqwymatrix@gateway/shell/matrix.org/x-utkkbuxvjzjrabza) (Client Quit)
15:47:08 × fgaz quits (fgazmatrix@gateway/shell/matrix.org/x-yxpvnieelsdvnidh) (Client Quit)
15:47:09 × alvinsj[m] quits (alvinsjmat@gateway/shell/matrix.org/x-usudjdrgxuyyqamj) (Client Quit)
15:47:09 × PotatoHatsue quits (berbermanp@gateway/shell/matrix.org/x-ueozaawewwujnohw) (Quit: Bridge terminating on SIGTERM)
15:47:09 × iinuwa quits (iinuwamatr@gateway/shell/matrix.org/x-gxbjrfuwzerbbyfp) (Quit: Bridge terminating on SIGTERM)
15:47:10 × jlv quits (jlvjustinl@gateway/shell/matrix.org/x-wvbfemgwzknbgjod) (Quit: Bridge terminating on SIGTERM)
15:47:10 × Fernando-Basso[m quits (fernando-b@gateway/shell/matrix.org/x-yzwruqrfgsamuhyb) (Client Quit)
15:47:10 × ttc quits (tomtauma1@gateway/shell/matrix.org/x-ekakabsstkyokkxj) (Quit: Bridge terminating on SIGTERM)
15:47:10 × rednaZ[m] quits (r3dnazmatr@gateway/shell/matrix.org/x-ybiigbogxoenpsye) (Client Quit)
15:47:10 × jiribenes1 quits (jbjiribene@gateway/shell/matrix.org/x-axffvnsgpboxhtcg) (Client Quit)
15:47:11 × kadoban quits (kadobanmat@gateway/shell/matrix.org/x-btxwrgfxkibtqnsg) (Client Quit)
15:47:11 × tttom[m] quits (tttommatri@gateway/shell/matrix.org/x-piwzfyinjzjgieef) (Client Quit)
15:47:11 × loprakoa[m] quits (loprakoama@gateway/shell/matrix.org/x-tnuljvchikruvhvw) (Client Quit)
15:47:11 × johnnyboy[m] quits (gifumatrix@gateway/shell/matrix.org/x-npyuwrvjfblnwfqj) (Client Quit)
15:48:23 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
15:49:58 × o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection)
15:50:38 <tomsmeding> where lies the boundary between type checking and type inference? Determining that '(f :: Char -> Bool) ('c' :: Char)' has type Bool may not be "type inference", but what about inferring the type of '\(f :: Char -> Bool) (x :: Char) -> f x'?
15:51:08 <merijn> tomsmeding: There's no inference there either since all intermediate types are annotated
15:51:29 vicfred joins (~vicfred@unaffiliated/vicfred)
15:51:31 <tomsmeding> what if 'x' had no annotation?
15:51:36 <merijn> "\f -> (f (x :: Char) :: Bool)" would require inference
15:51:42 <ziman> hello, what's the idiomatic way to match on impossible values in pattern clauses? currently i'm using an empty case expression but is there anything shorter, like agda's ()? i can't google up anything somehow
15:51:44 × miladz68 quits (~manjaro-u@static.84.147.251.148.clients.your-server.de) (Ping timeout: 240 seconds)
15:51:59 miladz68 joins (~manjaro-u@46.248.60.86)
15:52:04 <merijn> 'f :: Char -> Bool' in that example, but the argument type of 'f' nor its result type are specified
15:52:19 <merijn> tomsmeding: You have to reconstruct the argument and return type from context there
15:52:30 <tomsmeding> so it becomes type inference if there is a variable with no annotated type?
15:53:06 idhugo joins (~idhugo@80-62-116-101-mobile.dk.customer.tdc.net)
15:53:08 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 246 seconds)
15:53:16 nbloomf joins (~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae)
15:53:20 <tomsmeding> where annotating the type of a function is understood to also annotate the types of its arguments
15:53:23 <merijn> For example
15:54:19 <dminuoso> ziman: Void + absurd?
15:55:01 × brodie quits (~textual@207.53.253.137) (Quit: brodie)
15:55:07 p-core joins (~Thunderbi@80.95.114.184)
15:55:18 livvy joins (~livvy@gateway/tor-sasl/livvy)
15:55:31 sh9 joins (~sh9@softbank060116136158.bbtec.net)
15:55:31 hackage git-annex 8.20201103 - manage files with git, without checking their contents into git https://hackage.haskell.org/package/git-annex-8.20201103 (JoeyHess)
15:55:37 <ziman> my argument does not belong in Void, it belongs in a GADT with indices that make it empty
15:55:49 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
15:56:26 <dolio> Can't you just leave the case out, then?
15:56:38 JoelMcCracken[m] joins (joelmccrac@gateway/shell/matrix.org/x-hnsumqopegmivthi)
15:57:37 <ziman> it's an annoying coincidence: it's an instance with a single method with a single clause, so when i leave the clause out, it complains that i did not provide the definition for the method
15:58:08 alp joins (~alp@2a01:e0a:58b:4920:d16f:132:b740:cc6e)
15:58:20 <dolio> Well, I don't think there's anything you can do but empty case, then.
15:58:35 <ziman> right, thank you :)
15:58:43 <ziman> it's not too bad, i was mostly curious
15:58:51 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:00:06 × JoelMcCracken[m] quits (joelmccrac@gateway/shell/matrix.org/x-hnsumqopegmivthi) (Client Quit)
16:00:26 Rudd0 joins (~Rudd0@185.189.115.98)
16:00:36 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 244 seconds)
16:02:08 × jespada quits (~jespada@90.254.245.49) (Ping timeout: 268 seconds)
16:03:23 × ahmr88 quits (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection)
16:03:47 × kritzefitz quits (~kritzefit@fw-front.credativ.com) (Remote host closed the connection)
16:04:05 whatisRT joins (~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f)
16:04:30 hackage validationt 0.3.0 - Straightforward validation monad https://hackage.haskell.org/package/validationt-0.3.0 (typeable)
16:04:47 jespada joins (~jespada@90.254.245.49)
16:08:09 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
16:08:24 ttc joins (tomtauma1@gateway/shell/matrix.org/x-uquqcxspyycbvjvf)
16:08:24 pqwy[m] joins (pqwymatrix@gateway/shell/matrix.org/x-jqnrqlrbhxhwmhbz)
16:08:24 chreekat[m] joins (chreekatma@gateway/shell/matrix.org/x-wspbygjiuixcjxkc)
16:08:24 michaelpj joins (michaelpjm@gateway/shell/matrix.org/x-uoyfjnxjprdtbaxo)
16:08:24 themsay[m] joins (themsaymat@gateway/shell/matrix.org/x-ujpukaorocjskeoi)
16:08:24 jeffcasavant[m] joins (jeffcasava@gateway/shell/matrix.org/x-ydnhcjbfaimoibji)
16:08:24 Fernando-Basso[m joins (fernando-b@gateway/shell/matrix.org/x-xirzymulqroruhsm)
16:08:24 psydruid joins (psydruidma@gateway/shell/matrix.org/x-etfvogphrizepbip)
16:08:24 alvinsj[m] joins (alvinsjmat@gateway/shell/matrix.org/x-euntbxjpvrijrxmx)
16:08:24 domenkozar[m] joins (domenkozar@NixOS/user/domenkozar)
16:08:25 johnnyboy[m] joins (gifumatrix@gateway/shell/matrix.org/x-lixmcfpcxrvpqkwa)
16:08:25 hnOsmium0001[m] joins (hnosmium00@gateway/shell/matrix.org/x-pclxodnkmqnqfwxg)
16:08:25 PotatoHatsue joins (berbermanp@gateway/shell/matrix.org/x-hixqfsukphxkizxv)
16:08:25 iinuwa joins (iinuwamatr@gateway/shell/matrix.org/x-xxskiprlcirzxiga)
16:08:25 zerstroyer[m] joins (zerstroyer@gateway/shell/matrix.org/x-fjjxkkdhwczwidmj)
16:08:25 texasmynsted[m]1 joins (mmynstedko@gateway/shell/matrix.org/x-sbtmbpamgfechbux)
16:08:25 unclechu joins (unclechuma@gateway/shell/matrix.org/x-rgjtexmubckaxtft)
16:08:25 kaychaks_riot joins (kaychaksma@gateway/shell/matrix.org/x-iwzuktiocfdsoxtf)
16:08:25 siraben joins (sirabenmat@gateway/shell/matrix.org/x-hzunuwncbmmxlwie)
16:08:25 ThaEwat joins (thaewraptm@gateway/shell/matrix.org/x-edykdyerrvrnrhhy)
16:08:25 sureyeaah joins (shauryab98@gateway/shell/matrix.org/x-jedasmaebvvahvcj)
16:08:25 PotatoHatsue|T joins (berbermanm@gateway/shell/matrix.org/x-fuqecmssbwcwxfrb)
16:08:25 lambdaclan joins (lambdaclan@gateway/shell/matrix.org/x-wbdwuytzeyqyapvd)
16:08:26 micahsovereign[m joins (micahsover@gateway/shell/matrix.org/x-zqfuexwrnelqnfbx)
16:08:26 drozdziak1 joins (drozdziak1@gateway/shell/matrix.org/x-bgqlrpniadgtdery)
16:08:26 fgaz joins (fgazmatrix@gateway/shell/matrix.org/x-slmeyzgqwdnmdyrc)
16:08:26 hsiktas[m] joins (hsiktasmat@gateway/shell/matrix.org/x-zwvdtyuxfxztfmkc)
16:08:26 theduke joins (thedukem1@gateway/shell/matrix.org/x-nkqbunrnsxjskdpd)
16:08:26 lnxw37d4 joins (lnxw37d4ma@gateway/shell/matrix.org/x-wpsolapibmqshmip)
16:08:26 sm[m] joins (simonmicma@gateway/shell/matrix.org/x-wzcoftslnufebjph)
16:08:26 Ericson2314 joins (ericson231@gateway/shell/matrix.org/x-icankkfzqnonlrhh)
16:08:26 rednaZ[m] joins (r3dnazmatr@gateway/shell/matrix.org/x-uibvjwmgioaohlzd)
16:08:27 SlackIntegration joins (slackbotma@gateway/shell/matrix.org/x-caxtdscroghtasfp)
16:08:27 tersetears[m] joins (tersetears@gateway/shell/matrix.org/x-klvqbdrwhsqyopcd)
16:08:27 bonvoyage[m] joins (bonvoyageu@gateway/shell/matrix.org/x-wmphllysplyhuojb)
16:08:27 srid joins (sridmatrix@gateway/shell/matrix.org/x-qqeoewwaowpiqrub)
16:08:27 berberman|T joins (berberma4@gateway/shell/matrix.org/x-rqubmqczcsddvvhp)
16:08:27 maralorn joins (maralornma@gateway/shell/matrix.org/x-esbyrtfclugulpku)
16:08:27 jtojnar joins (jtojnarmat@gateway/shell/matrix.org/x-grllgvjiiizziklg)
16:08:27 io_r_us[m] joins (commandlin@gateway/shell/matrix.org/x-dcxofhcftbovwbst)
16:08:27 kadoban joins (kadobanmat@gateway/shell/matrix.org/x-xrrstobtgwfnvduc)
16:08:30 ComaGrayce[m] joins (commagrays@gateway/shell/matrix.org/x-kdchjrsktdbjqvop)
16:08:30 jkaye[m] joins (jkayematri@gateway/shell/matrix.org/x-xtwtcthsyrpjxlgx)
16:08:30 GuillaumeChrel[m joins (guillaumec@gateway/shell/matrix.org/x-yyvevfplzzioqnuc)
16:08:30 betrion[m] joins (betrionmat@gateway/shell/matrix.org/x-kjxsujwoqdjukewx)
16:08:31 jesser[m] joins (jessermatr@gateway/shell/matrix.org/x-xmfuuihwzdmwsxri)
16:08:31 Noughtmare[m] joins (naughtmare@gateway/shell/matrix.org/x-qgtfxiblcqwqvpjv)
16:08:31 ethercrow[m] joins (ethercrowm@gateway/shell/matrix.org/x-fwdkmrqysffhdlhg)
16:08:31 jiribenes1 joins (jbjiribene@gateway/shell/matrix.org/x-bgfmaawtdxevtslk)
16:08:31 alexfmpe joins (alexfmpema@gateway/shell/matrix.org/x-pkjrfqmejbphovey)
16:08:31 dyniec[m] joins (dyniecmatr@gateway/shell/matrix.org/x-upsuponuotpjoctt)
16:08:31 wrunt[m] joins (wruntmatri@gateway/shell/matrix.org/x-yyfnqwlidsridbox)
16:08:32 albestro[m] joins (albestroma@gateway/shell/matrix.org/x-qdbcqirfearydihj)
16:08:32 tttom[m] joins (tttommatri@gateway/shell/matrix.org/x-odejmlhnpwjjtcrh)
16:08:32 DeadComaGrayce[m joins (commagra1@gateway/shell/matrix.org/x-noidmvosphatipsa)
16:08:32 loprakoa[m] joins (loprakoama@gateway/shell/matrix.org/x-efkcigrtbzrnbnzq)
16:08:32 jlv joins (jlvjustinl@gateway/shell/matrix.org/x-ocncxbunlvivmawj)
16:08:33 mikr[m] joins (mikrdavral@gateway/shell/matrix.org/x-qmtbcoqsyfoubvgt)
16:08:33 elpfen[m] joins (elpfenmatr@gateway/shell/matrix.org/x-ptnaaevdfmtjzszs)
16:08:34 mmynsted[m] joins (mmynstedtc@gateway/shell/matrix.org/x-nsloajvwzkribhpr)
16:08:39 wi[m] joins (w1gzmatrix@gateway/shell/matrix.org/x-chkwkwpgxekzmeut)
16:09:09 × mokulus quits (~mat@176.111.230.96) (Quit: WeeChat 2.9)
16:10:01 macrover joins (~macrover@ip70-189-231-35.lv.lv.cox.net)
16:13:00 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 244 seconds)
16:14:37 xff0x joins (~fox@2001:1a81:53b4:ba00:49d8:d2a:69a9:1ef4)
16:16:25 × miladz68 quits (~manjaro-u@46.248.60.86) (Ping timeout: 240 seconds)
16:16:53 miladz68 joins (~manjaro-u@46.248.60.86)
16:17:43 × Unhammer quits (~Unhammer@gateway/tor-sasl/unhammer) (Ping timeout: 240 seconds)
16:18:00 Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas)
16:18:52 × raichoo quits (~raichoo@213.240.178.58) (Quit: Lost terminal)
16:19:24 × e quits (e@freenode/staff/spy.edk) (Disconnected by services)
16:19:30 × dhouthoo quits (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9)
16:19:55 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
16:20:17 × p-core quits (~Thunderbi@80.95.114.184) (Ping timeout: 272 seconds)
16:20:33 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
16:23:57 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
16:25:41 travv0 parts (sid293381@gateway/web/irccloud.com/x-ewehtgkfobxgucth) ()
16:25:59 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 272 seconds)
16:26:46 e joins (e@freenode/staff/spy.edk)
16:27:55 × conal quits (~conal@64.71.133.70) (Ping timeout: 240 seconds)
16:29:11 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
16:31:03 Unhammer joins (~Unhammer@gateway/tor-sasl/unhammer)
16:31:21 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:32:37 mokulus joins (~mat@176.111.230.96)
16:32:59 st8less joins (~st8less@2603:a060:11fd:0:357c:d497:b907:2901)
16:33:19 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
16:35:48 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
16:37:09 kritzefitz joins (~kritzefit@212.86.56.80)
16:37:28 × britva quits (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
16:38:26 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds)
16:38:44 × zyeri quits (zyeri@tilde.team/users/zyeri) (Ping timeout: 256 seconds)
16:39:04 × roconnor quits (~roconnor@host-192.252-162-14.dyn.295.ca) (Ping timeout: 246 seconds)
16:40:40 ahmr88 joins (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
16:40:48 o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
16:42:38 × Guest77983 quits (~z0@188.251.73.190) (Ping timeout: 264 seconds)
16:44:28 × darjeeling_ quits (~darjeelin@115.215.40.228) (Ping timeout: 272 seconds)
16:44:50 zyeri joins (zyeri@gateway/shell/tilde.team/x-snfyuqzcmwkjylvs)
16:44:51 × zyeri quits (zyeri@gateway/shell/tilde.team/x-snfyuqzcmwkjylvs) (Changing host)
16:44:51 zyeri joins (zyeri@tilde.team/users/zyeri)
16:45:05 × o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 240 seconds)
16:45:33 o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
16:45:45 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
16:47:32 × idhugo quits (~idhugo@80-62-116-101-mobile.dk.customer.tdc.net) (Ping timeout: 260 seconds)
16:48:08 × AlterEgo- quits (~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving)
16:48:27 AlterEgo- joins (~ladew@124-198-158-163.dynamic.caiway.nl)
16:50:10 × o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 272 seconds)
16:50:33 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 258 seconds)
16:50:38 nbloomf joins (~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae)
16:52:07 × nyaomi quits (~naomi@cpe-74-75-6-125.maine.res.rr.com) (Excess Flood)
16:52:35 nyaomi joins (~naomi@cpe-74-75-6-125.maine.res.rr.com)
16:53:37 hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-abxtjqjdzzifrxcr)
16:57:25 darjeeling_ joins (~darjeelin@115.215.43.51)
16:57:55 × nyaomi quits (~naomi@cpe-74-75-6-125.maine.res.rr.com) (Excess Flood)
16:58:19 nyaomi joins (~naomi@cpe-74-75-6-125.maine.res.rr.com)
16:59:01 cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
16:59:34 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
17:01:08 Chi1thangoo joins (~Chi1thang@87.112.60.168)
17:02:06 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:2543:65c:876:3dae) (Quit: My MacBook has gone to sleep. ZZZzzz…)
17:02:24 × ahmr88 quits (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Ping timeout: 260 seconds)
17:03:54 <ulidtko> what was the deal again with the mtl variation of lazy-IO problem?..
17:05:20 <ulidtko> i have this crappy piece of code built around an ExceptT-ReaderT-StateT-IO stack
17:05:24 <dolio> Huh?
17:05:26 × jlamothe quits (~jlamothe@198.251.55.207) (Quit: leaving)
17:05:32 <ulidtko> ... and in it, one action with liftIO's doesn't run any of the side effects
17:05:55 × whatisRT quits (~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f) (Ping timeout: 240 seconds)
17:06:25 <ulidtko> https://files.slack.com/files-pri/T7F1A4ZHB-F01DGL8QAPR/image.png if you can see that
17:06:32 × gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection)
17:07:19 <ulidtko> I do see the `trace` around the invocation of reportSubstepTimings
17:07:33 <ulidtko> I also see the invocation happening in ghci debugger (duh)
17:07:52 <ulidtko> but I don't the any output from the body of it
17:07:52 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
17:08:08 <ulidtko> could this be caused by laziness somehow?..
17:08:19 nbloomf joins (~nbloomf@2600:1700:ad14:3020:fc37:ff3f:9c12:2922)
17:10:31 Ariakenom joins (~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se)
17:10:34 <ulidtko> I've read the Michael Snoyman's stance on this, pretty agreeable https://www.fpcomplete.com/blog/2017/06/readert-design-pattern/
17:11:44 <dolio> Well, your image of (presumably) code is hidden behind a login screen.
17:11:53 wroathe joins (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
17:11:54 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:11:57 <ulidtko> sorry about that, one second
17:12:23 <dolio> trace is also not what people are usually talking about when they say lazy IO.
17:12:28 u0_a298 joins (~user@47.206.148.226)
17:12:37 <ulidtko> http://deaddrop.ftp.sh/il6g41Ic9QJg.png this should be publicly visible
17:13:02 <ulidtko> yeah, please see the code
17:13:43 acidjnk_new2 joins (~acidjnk@p200300d0c718f623213d210801ac68e4.dip0.t-ipconnect.de)
17:13:47 × ubert quits (~Thunderbi@2a02:8109:9880:303c:e6b3:18ff:fe83:8f33) (Remote host closed the connection)
17:13:54 <ulidtko> I've all of: liftIO . putText; traceIO; unsafePerformIO -- none of them run
17:14:30 <davean> why would they run?
17:14:36 <davean> Nothing there seems to want them to run
17:14:43 <ulidtko> haha
17:14:49 <ulidtko> I want the to run ;)
17:14:54 <ulidtko> pretty desperately in fact
17:15:00 <ulidtko> *them
17:15:32 <davean> so A) wow thats a lot of seperate ways to do unsafePerformIO, why not pick one? B) make it so that moving on at all is dependent on them being run, force them.
17:15:42 <davean> seq, bang, whatever
17:15:50 <dolio> Just don't use unsafePerformIO.
17:16:10 <davean> yah, I mean yes, its not a good thing to use
17:16:14 <davean> and you're using it wrong,
17:16:21 <merijn> @quote not.a.bug
17:16:22 <lambdabot> Lemmih says: "I don't understand why my code acts weird when I use unsafePerformIO" is not a bug.
17:16:29 <ulidtko> yes, I know -- I won't -- those are just for you to see how frustrated I got
17:16:30 <davean> but even if you were using it right, none of what your doign there depends on the result of the computation
17:16:53 <davean> yah, but I'm confused why you thought these would run - theres no demand.
17:17:05 <ulidtko> you can see the callsite
17:17:23 <ulidtko> maybeReportTimings <$!> zipWithM step [1 ..] execs
17:17:28 <davean> Yah
17:17:33 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
17:17:35 <davean> That doesn't ask for it to run
17:17:54 <davean> Bangs on the wrong side.
17:17:55 × avdb quits (~avdb@ip-83-134-109-138.dsl.scarlet.be) (Quit: WeeChat 2.9)
17:18:20 avdb joins (~avdb@ip-83-134-109-138.dsl.scarlet.be)
17:18:32 <davean> ulidtko: >> won't inspect the ()
17:18:41 <davean> ulidtko: it knows its (), why would it look?
17:18:53 <ulidtko> well it's a pattern match
17:19:00 <ulidtko> right?
17:19:22 <ulidtko> should force the thing at whnf if I'm not mistaken
17:19:23 Amras joins (~Amras@unaffiliated/amras0000)
17:19:32 <davean> ok, so whats whnf
17:19:33 × kritzefitz quits (~kritzefit@212.86.56.80) (Remote host closed the connection)
17:19:37 <ulidtko> *to whnf
17:19:43 <ulidtko> weak-head-normal-form
17:19:43 <davean> whnf of the monad sure
17:19:50 <davean> yes, I'm asking you to think about whnf
17:19:58 <davean> and why it specificly is the one that *doesn't* force this
17:20:20 <ulidtko> ahhhhhhhh
17:20:27 <ulidtko> okay
17:20:48 <ulidtko> so it forces only the toplevel constructor
17:21:12 <davean> Thats what whnf is
17:21:14 <davean> yep
17:21:20 kritzefitz joins (~kritzefit@212.86.56.80)
17:21:29 <davean> and now you have your answer
17:21:56 <ulidtko> that actually just improved my understanding, thanks for the questions!
17:22:05 <davean> Thats why I did it :)
17:22:13 <ulidtko> appreciated
17:24:02 <davean> Now, for ethical reasons I'm required to tell you again you shouldn't use unsafePerformIO, the IRB gets on me if I don't.
17:24:23 <ulidtko> I seriously won't, pinky-promise ;)
17:24:40 <ulidtko> just temporary (tm) for debug
17:25:14 <davean> I believe that like drugs, theres a minimum age on unsafePerformIO usage, and its somewhere over 3 years contributing to GHC :)
17:25:45 roconnor joins (~roconnor@host-192.252-162-14.dyn.295.ca)
17:26:40 dbmikus_ joins (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
17:27:37 o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
17:28:19 <Cheery> https://github.com/cheery/haskell-rady
17:28:32 <Cheery> is this enough for a published library, or do you think it'd need something else?
17:28:38 × hvr quits (~hvr@haskell/developer/hvr) (Remote host closed the connection)
17:28:50 hvr_ joins (~hvr@haskell/developer/hvr)
17:29:22 × obihann quits (~jhann@156.34.160.69) (Quit: Lost terminal)
17:29:23 hvr_ is now known as hvr
17:29:41 <monochrom> (>>) does not do pattern matching on ().
17:29:57 <davean> right, I think we got that with the whnf discussion?
17:30:00 × miladz68 quits (~manjaro-u@46.248.60.86) (Remote host closed the connection)
17:30:39 <monochrom> I was less certain about that.
17:30:56 <davean> Could have been more explicite I guess
17:32:27 <monochrom> Actually, it's like this. Suppose you look at "f (MyCtor x y) = 0", then WHNF is relevant. But suppose it's "g _ = 0", then you don't even get to the point of WHNF.
17:32:48 <monochrom> And (>>) is like "x >>= \_ -> y"
17:32:51 <dolio> :t (>>)
17:32:52 <lambdabot> Monad m => m a -> m b -> m b
17:33:02 <dolio> (>>) cannot do pattern matching on ()
17:34:46 <monochrom> Now, that is true or false depending on this trolling: Does "seq x ()" count as pattern-matching on x? >:)
17:35:07 × kuribas quits (~user@ptr-25vy0i7uknzjtc6w9zh.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
17:36:03 <monochrom> i.e., evilthen x y = x >>= \a -> seq a y
17:36:46 <ulidtko> I actually tried () <- maybeReportTimings suspecting exactly that, but then it simply didn't compile due to the MTL wrappers garbage :/
17:37:18 <ulidtko> monochrom, why is that evilthen ? sorry i don't get it
17:37:41 <monochrom> Because I'm the author and I'm evil.
17:38:01 <ulidtko> whoooosh, that's indeed pretty evil
17:40:30 × u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer)
17:41:02 u0_a298 joins (~user@47.206.148.226)
17:43:03 × revtintin quits (~revtintin@158.140.144.34) (Quit: WeeChat 2.9)
17:43:04 × u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer)
17:43:37 u0_a298 joins (~user@47.206.148.226)
17:45:03 geekosaur joins (82659a09@host154-009.vpn.uakron.edu)
17:45:51 thir joins (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
17:49:57 × chele quits (~chele@ip5b416ea2.dynamic.kabel-deutschland.de) (Remote host closed the connection)
17:49:57 × u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer)
17:50:04 × thir quits (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
17:50:16 u0_a298 joins (~user@47.206.148.226)
17:51:19 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
17:52:55 × bitmapper quits (uid464869@gateway/web/irccloud.com/x-glpnpeqsowfdqxrb) (Quit: Connection closed for inactivity)
17:55:08 × u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer)
17:55:38 u0_a298 joins (~user@47.206.148.226)
17:56:03 chaosmasttter joins (~chaosmast@p200300c4a7117c017972e6cd644c1b14.dip0.t-ipconnect.de)
17:59:03 × u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer)
17:59:33 u0_a298 joins (~user@47.206.148.226)
18:00:01 × jackgassett quits (~jackgasse@185.163.110.116) ()
18:02:37 × u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer)
18:03:56 u0_a298 joins (~user@47.206.148.226)
18:05:08 dyeplexer joins (~lol@unaffiliated/terpin)
18:06:45 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
18:07:19 × borne quits (~fritjof@200116b86457d500641bd1d418d012e1.dip.versatel-1u1.de) (Ping timeout: 272 seconds)
18:07:32 × alp quits (~alp@2a01:e0a:58b:4920:d16f:132:b740:cc6e) (Ping timeout: 246 seconds)
18:12:01 × u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer)
18:12:18 u0_a298 joins (~user@47.206.148.226)
18:14:29 × u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer)
18:15:00 u0_a298 joins (~user@47.206.148.226)
18:16:25 × machinedgod quits (~machinedg@207.253.244.210) (Ping timeout: 258 seconds)
18:19:00 jlamothe joins (~jlamothe@198.251.55.207)
18:20:04 machinedgod joins (~machinedg@142.169.78.163)
18:21:45 × dyeplexer quits (~lol@unaffiliated/terpin) (Remote host closed the connection)
18:25:32 × u0_a298 quits (~user@47.206.148.226) (Remote host closed the connection)
18:25:57 u0_a298 joins (~user@47.206.148.226)
18:27:32 × kritzefitz quits (~kritzefit@212.86.56.80) (Ping timeout: 258 seconds)
18:28:01 <tomsmeding> davean: over 3 years _contributing to GHC_? That's quite a tall order
18:28:07 CodeKiwi joins (~kiwi@unaffiliated/digitalkiwi)
18:28:32 × DigitalKiwi quits (~kiwi@unaffiliated/digitalkiwi) (Read error: Connection reset by peer)
18:29:04 × dragestil quits (~quassel@185.137.175.104) (Ping timeout: 256 seconds)
18:29:17 dragestil joins (~quassel@185.137.175.104)
18:29:21 <tomsmeding> monochrom: you're not even a monsterchrom anymore
18:29:56 <koz_> How do you add kind signatures to type variables in type class definitions?
18:30:38 <dminuoso> koz_: What do you mean?
18:31:04 <dminuoso> % class Functor' (f :: * -> *) -- this?
18:31:04 <yahb> dminuoso:
18:31:11 <koz_> Yes that. Thanks!
18:31:38 × Franciman quits (~francesco@host-79-36-167-172.retail.telecomitalia.it) (Quit: Leaving)
18:32:06 <tomsmeding> ghc will probably ask you to use Type from Data.Kind, not *
18:32:15 <koz_> tomsmeding: Yeah, that's all fine.
18:32:31 tomsmeding actually likes * better for aesthetic reasons
18:33:33 <dminuoso> tomsmeding: For what its worth, I think TypeOperators was a mistake.
18:34:05 <koz_> tomsmeding: I'm the opposite, but that's mostly because I prefer actual language words to APL.
18:34:18 <dminuoso> % :set -XNoTypeOperators
18:34:18 <yahb> dminuoso:
18:34:23 <dminuoso> % type T (+) = ((+), (+))
18:34:23 <yahb> dminuoso: ; <interactive>:48:8: error:; Unexpected type `(+)'; In the type declaration for `T'; A type declaration should have form; type T a = ...
18:34:30 <dminuoso> https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html#type-operators
18:34:32 <dminuoso> Is this a documentation bug?
18:34:58 <dminuoso> Or did Haskell2010 get rid of operators as type variables?
18:35:02 <tomsmeding> % :Set -XHaskell98
18:35:02 <yahb> tomsmeding: unknown command ':Set'; use :? for help.
18:35:04 <tomsmeding> % :set -XHaskell98
18:35:05 <yahb> tomsmeding:
18:35:11 <dminuoso> % type T (+) = ((+), (+))
18:35:11 <yahb> dminuoso: ; <interactive>:51:8: error:; Unexpected type `(+)'; In the type declaration for `T'; A type declaration should have form; type T a = ...
18:35:17 <tomsmeding> awwww
18:35:18 <dminuoso> Apparently a documentation bug then
18:35:33 <tomsmeding> or ghc stubbornly refuses to implement it
18:38:09 × u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer)
18:38:35 u0_a298 joins (~user@47.206.148.226)
18:38:43 alp joins (~alp@2a01:e0a:58b:4920:dc87:a0db:f731:9e0c)
18:41:00 × u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer)
18:41:16 u0_a298 joins (~user@47.206.148.226)
18:41:25 britva joins (~britva@31-10-157-156.cgn.dynamic.upc.ch)
18:41:32 × alp quits (~alp@2a01:e0a:58b:4920:dc87:a0db:f731:9e0c) (Remote host closed the connection)
18:41:36 <tomsmeding> it's indeed a documentation bug; from Haskell98 at https://www.haskell.org/onlinereport : `"type" <simpletype> "=" <type>`; `<simpletype> -> <tycon> <tyvar_1> ... <tyvar_k>`; `<tyvar> -> <varid>`; `<varid> -> (small {small | large | digit | ' })_<reservedid>`
18:41:50 alp joins (~alp@2a01:e0a:58b:4920:7d22:2550:1d45:febd)
18:42:14 <tomsmeding> and a parenthesised operator does not match the unicode version of [a-z]([a-zA-Z0-9']*)
18:42:31 <dminuoso> Well Im confident that this was legal in GHC up until 8.x I think?
18:42:54 <dminuoso> It seems like an odd bug
18:43:23 × wroathe quits (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
18:44:09 <tomsmeding> my above argument holds unchanged for haskell2010 :p
18:44:21 p-core joins (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
18:44:23 <jle`> i remember it was true at one point
18:44:57 <tomsmeding> perhaps a ghc implementor thought "why not, it's unambiguous"?
18:45:32 <dminuoso> Well its just odd to explicitly state that it was legal Haskell98
18:46:06 <dolio> It's not that odd for someone to be mistaken.
18:46:32 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
18:46:49 <tomsmeding> probably a conflation of "in the old days" and "Haskell98"
18:48:15 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
18:48:27 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
18:49:50 <fendor> can I give cabal a global configuration to use a global store for multiple users?
18:49:54 <fendor> on a remote server
18:50:34 son0p joins (~son0p@181.136.122.143)
18:51:08 <geekosaur> that sounds like it's inviting permissions issues
18:51:28 <fendor> probably. so, can't really share the package database across multiple users?
18:51:44 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
18:51:53 <geekosaur> nope
18:52:54 <geekosaur> betting it'd also uncover bugs if you did find ways around the permissions
18:53:10 geekosaur wonders how well it handles concurrent access, for one
18:54:04 <fendor> well, concurrent accesses might already happen since cabal invocation might happen in parallel
18:54:41 × avdb quits (~avdb@ip-83-134-109-138.dsl.scarlet.be) (Quit: WeeChat 2.9)
18:55:12 <dminuoso> Linux as a multi-user. Hah. As if anyone ever does that!
18:55:27 patjameson joins (~patjameso@178.239.168.171)
18:55:37 <dminuoso> It's quite interesting how most installations have become de-facto single user.
18:56:14 <geekosaur> servers… although the nature of "user" has changed a bit
18:56:49 <fendor> Then I guess I will v1-install and instruct everyone to use ghci directly
18:57:18 <dminuoso> geekosaur: Right. Instead, we separate with virtualization or containerization nowadays.
18:57:31 <tomsmeding> will it be read-only? that sounds like it would be easier to ensure
18:57:32 <dminuoso> Presumably the reason for this is that the "user" has changed from human to mcahine
18:58:03 <geekosaur> or remote session, which might be either
18:59:24 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
19:00:07 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
19:00:36 × ggole quits (~ggole@2001:8003:8119:7200:4c8:75c2:97ad:422b) (Quit: Leaving)
19:01:05 thir joins (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
19:01:21 <dminuoso> And of course there's the proliferation of computers.
19:01:31 <sh9> exit
19:02:04 <dminuoso> Where once time sharing was done to multiplex rare computers to few people, nowadays the personal laptop is more than enough
19:02:21 lottaquestions joins (~nick@2607:fa49:5040:d100:d0c0:708:6d52:81c9)
19:02:28 <dminuoso> So time sharing is rarely necessary anymore unless for supercomputers.
19:02:34 × sh9 quits (~sh9@softbank060116136158.bbtec.net) (Quit: sh9)
19:02:59 × geekosaur quits (82659a09@host154-009.vpn.uakron.edu) (Ping timeout: 245 seconds)
19:03:32 mokulus parts (~mat@176.111.230.96) ("WeeChat 2.9")
19:03:37 berberman_ joins (~berberman@unaffiliated/berberman)
19:03:47 × berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds)
19:04:12 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
19:04:41 sh9 joins (~sh9@softbank060116136158.bbtec.net)
19:05:01 lottaquestions parts (~nick@2607:fa49:5040:d100:d0c0:708:6d52:81c9) ("Konversation terminated!")
19:07:02 × u0_a298 quits (~user@47.206.148.226) (Remote host closed the connection)
19:07:45 × elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 256 seconds)
19:08:12 akad_ joins (~akad@109107030050.radomsko.vectranet.pl)
19:08:16 u0_a298 joins (~user@47.206.148.226)
19:10:56 × roconnor quits (~roconnor@host-192.252-162-14.dyn.295.ca) (Ping timeout: 256 seconds)
19:11:44 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
19:13:03 × teardown quits (~user@gateway/tor-sasl/mrush) (Ping timeout: 240 seconds)
19:14:51 atbd joins (~atbd@68.166.138.88.rev.sfr.net)
19:16:17 × p-core quits (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Ping timeout: 260 seconds)
19:16:25 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds)
19:16:25 × atbd quits (~atbd@68.166.138.88.rev.sfr.net) (Client Quit)
19:16:45 atbd joins (~atbd@68.166.138.88.rev.sfr.net)
19:17:49 × atbd quits (~atbd@68.166.138.88.rev.sfr.net) (Client Quit)
19:20:08 × u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer)
19:20:35 u0_a298 joins (~user@47.206.148.226)
19:22:22 nuncanada joins (~dude@179.235.160.168)
19:23:45 <monochrom> "cabal itself is already parallel" still makes this assumption: two different cabal-install processes install two different packages, therefore even different directories.
19:24:05 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
19:24:24 <monochrom> So now imagine two users doing "cabal install --lib random-1.2.0.0" at almost but not quite the same time.
19:24:52 <monochrom> and all options and flags and configs are identical so they really hash to the same directory.
19:25:42 miguelnegrao joins (~miguelneg@2001:818:dc71:d100:fa39:ca92:8ab:783d)
19:26:52 <monochrom> "almost but not quite the same time" means imagine a timing that maximally maximize race conditions.
19:27:29 <miguelnegrao> Hi all. Any hints on to get aeson to encode Maps using nested arrays like [["1","2"]]. I need to interchange maps between haskell (aeson) and purescript (argonaut).
19:28:10 geekosaur joins (82659a09@host154-009.vpn.uakron.edu)
19:28:13 <monochrom> I haven't checked, but the least worst scenerio is both use open(... O_CREAT) so at least one of the two processes bail out early.
19:28:42 p-core joins (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
19:28:52 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 258 seconds)
19:28:59 <monochrom> Because the alternative---they both write to the same foo.so file "successfully"---is even worse.
19:29:55 <monochrom> Err need O_EXCL too for the least worst scenerio
19:30:16 <monochrom> See? Just don't count on it.
19:31:09 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
19:31:34 <geekosaur> except linkers expect to be able to overwrite an existing file
19:32:06 <monochrom> Ah, then it's maximally racing fun.
19:32:15 <geekosaur> and my worry is the wider this gets, the more possibilities for concurrency bugs to show
19:32:28 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
19:34:15 <monochrom> miguelnegrao: Perhaps use an intermediate step of Map.toList
19:34:52 <monochrom> i.e., encode instead the asoociative list [(key1, val1), (key2, val2), ...]
19:36:22 <miguelnegrao> monochrom: yes, that is always a possibility. thanks
19:36:27 teardown joins (~user@gateway/tor-sasl/mrush)
19:36:31 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
19:37:04 <miguelnegrao> monochrom: was trying to avoid creating additional data types, but i guess it will be needed.
19:37:18 jtonic joins (bc193ca1@188.25.60.161)
19:39:03 × jtonic quits (bc193ca1@188.25.60.161) (Remote host closed the connection)
19:39:36 christo joins (~chris@81.96.113.213)
19:40:23 CodeKiwi is now known as DigitalKiwi
19:40:42 ahmr88 joins (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
19:41:12 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
19:42:34 <solonarv> miguelnegrao: that doesn't create an additional data type, though
19:42:47 × ahmr88 quits (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Read error: Connection reset by peer)
19:42:50 notnatebtw joins (~nate@125.161.131.218)
19:42:59 × son0p quits (~son0p@181.136.122.143) (Remote host closed the connection)
19:43:31 <merijn> miguelnegrao: "avoiding the creation of datatypes" is a good way to write code you regret a year from now ;)
19:43:32 ahmr88 joins (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
19:43:34 <geekosaur> and we're mostly in favor of more data types because it means the compiler can help you more
19:43:44 <miguelnegrao> solonarv: yes, I know, but I need to create an additional data type record field is changed from map to [(A,B)] to send in json.
19:43:47 kritzefitz joins (~kritzefit@212.86.56.80)
19:43:52 <merijn> geekosaur: Also, easier to refactor later if you make them semi opaque
19:43:53 <solonarv> also, yes, creating datatypes is very cheap and easy and you need not be afraid of it
19:44:12 <miguelnegrao> yes, no big deal, indeed.
19:45:24 <solonarv> tangent: I am now wondering why there isn't an 'IsList Value' instance in aeson
19:46:05 <geekosaur> someone just brought that up on -cafe, I think
19:46:15 argent0 joins (~argent0@168.227.97.4)
19:46:41 <geekosaur> fromList is total, toList isn't (or vice versa?)
19:47:07 <geekosaur> they want to split IsList so those aren't both needed
19:47:14 <argent0> Hi, why does this test pass? https://bpa.st/XB6Q
19:47:21 <fendor> How can I garantuee that every user has a specific package in its package scope for interactive developing without having to duplicate the cabal store for every user? Global install is messy...
19:47:24 <argent0> 1 == 2
19:48:08 <solonarv> I approve of splitting IsList in general but I'm not sure how it's relevant in this case (to be clear I was proposing the instance where 'type Elem Value = Value', i.e. lists <=> JSON arrays_
19:48:54 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
19:48:57 mbomba joins (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca)
19:49:08 <fendor> argent0, cabal test knows that something has failed by looking on the return code of the executable
19:49:12 <maerwald> fendor: cabal environments?
19:49:22 <argent0> fendor: ok, I'll check that out
19:49:52 <solonarv> er, s/Elem/Item/
19:49:55 <fendor> argent0, e.g. your output is not shown, since your exit-code is 0. What it shows is that the tests ran and the exit code was zero, so everything is fine
19:50:09 <solonarv> oh right that does make toList partial
19:50:11 <fendor> maerwald, how would that work out? I would still need a global store modification
19:51:08 <fendor> afaict
19:51:14 <solonarv> having a global store (i.e. one shared by all users) isn't necessarily a problem, as long as the same package doesn't end up getting installed concurrently and nobody manually modifies the store
19:51:16 <argent0> fendor: thanks
19:51:47 <solonarv> these admittedly aren't trivial preconditions so they might not hold in your case
19:51:50 <miguelnegrao> my issue comes from aeson encoding Map Int String as {"1": "hello"} and purescript argonaut (from memory) as [[1,"hello"]]. I wonder why each one chose to encode it this way. Is it essentialy the same or any advantage of one over the other representation ?.
19:52:20 <fendor> solonarv, can I configure that somehow? I think they hold, as I only need two packages, basically, tasty and tasty-hunit. Once installed, no user should have to install other packages
19:53:03 × argent0 quits (~argent0@168.227.97.4) (Quit: leaving)
19:53:11 <fendor> *the preconditions
19:53:30 argent0 joins (~argent0@168.227.97.4)
19:54:13 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds)
19:54:48 <solonarv> fendor: you can pass command-line arguments to cabal telling it which directory the store should be in, and I think you can also set that in a config file somewhere
19:54:59 <maerwald> fendor: cabal-env --name myenv --install optics
19:55:21 juuandyy joins (~juuandyy@90.166.144.65)
19:56:01 <solonarv> miguelnegrao: have you tried monochrom's suggestion?
19:56:01 <fendor> maerwald, but then it references my local cabal store, right?
19:56:21 <fendor> solonarv, true, I will look into it
19:56:59 <miguelnegrao> solonarv: yes, I will use their sugestion.
19:57:50 <tomsmeding> fendor: make the shared directory non-writable for the users?
19:58:01 × britva quits (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
19:58:58 <fendor> tomsmeding, that's a good idea, that avoids the problems
19:59:05 <fendor> thanks!
19:59:21 <tomsmeding> if it's read-only, you shouldn't have trouble
19:59:40 <tomsmeding> also note the channel you're in, we're fond of read-only things :p
19:59:58 × fendor quits (~fendor@91.141.3.235.wireless.dyn.drei.com) (Remote host closed the connection)
20:00:07 × chaosmasttter quits (~chaosmast@p200300c4a7117c017972e6cd644c1b14.dip0.t-ipconnect.de) (Quit: WeeChat 2.9)
20:00:25 × miguelnegrao quits (~miguelneg@2001:818:dc71:d100:fa39:ca92:8ab:783d) (Quit: miguelnegrao)
20:01:25 fendor joins (~fendor@078132040188.public.t-mobile.at)
20:01:39 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
20:01:48 <fendor> tomsmeding, lost connection, dont know if I send it, but I think that is a good idea, thank you!
20:01:52 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
20:02:05 <tomsmeding> 👍
20:02:16 <tomsmeding> we're #haskell, we're fond of read-only things ;)
20:02:35 fendor_ joins (~fendor@91.141.3.235.wireless.dyn.drei.com)
20:03:08 × wwwww quits (~wwwww@unaffiliated/wwwww) (Ping timeout: 256 seconds)
20:03:33 × thir quits (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
20:04:08 × fendor_ quits (~fendor@91.141.3.235.wireless.dyn.drei.com) (Remote host closed the connection)
20:04:38 britva joins (~britva@31-10-157-156.cgn.dynamic.upc.ch)
20:05:02 wwwww joins (~wwwww@unaffiliated/wwwww)
20:05:27 <maerwald> I think this is a solved problem with nix... providing interactive environments you can use cabal in
20:05:32 <maerwald> But then you have to use nix...
20:05:50 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
20:05:55 bqv /mode +m
20:06:04 <bqv> Now your channel is readonly!
20:06:44 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds)
20:07:28 rprije joins (~rprije@194-193-168-77.tpgi.com.au)
20:08:02 <hekkaidekapus> maerwald: This is fendor, the person who is implementing `cabal-plan why-depends`. So, Nix is ok, I think.
20:08:55 × alp quits (~alp@2a01:e0a:58b:4920:7d22:2550:1d45:febd) (Ping timeout: 272 seconds)
20:09:15 alp joins (~alp@2a01:e0a:58b:4920:280c:9785:c082:40bf)
20:09:46 <bqv> hekkaidekapus: that wasn't very readonly
20:09:56 conal joins (~conal@2600:380:8537:50cb:803b:f7e5:d239:736b)
20:10:02 <hekkaidekapus> lol
20:10:48 hekkaidekapus bqv-wx
20:11:19 <fendor> maerwald, hekkaidekapus, in this case, I am afraid I can't use nix, as it is not my server :(
20:11:43 Resurge joins (~Thunderbi@213.219.168.185.adsl.dyn.edpnet.net)
20:11:49 <hekkaidekapus> I suspect. You are administering some uni box, I guess.
20:12:26 <fendor> yes, but I barely have any rights
20:12:29 <monochrom> Oh that's the perfect excuse for me to op myself so I can declare state of emergency err I mean make read-only properly with "+q *" haha
20:13:10 <hekkaidekapus> hahaha… Boots on the bot :)
20:14:47 <merijn> That was my complaint with Nix too
20:15:02 <merijn> The main usecase I'd want it is restricted uni machines, but it's impossible to install there :p
20:15:17 × juuandyy quits (~juuandyy@90.166.144.65) (Quit: Konversation terminated!)
20:15:29 juuandyy joins (~juuandyy@90.166.144.65)
20:16:32 <hekkaidekapus> merijn: You can tame a NixOS install inside a container.
20:17:04 <merijn> That's moving the goalpost to getting the container working and somehow configuring it to flawlessly pass through hardware :p
20:17:09 <bqv> merijn: you could with proot or some other permissionless chroot thing
20:17:37 <bqv> Theres even a fuse permissionless overlayfs somewhere
20:17:53 <merijn> hah...as if fuse is installed or usable
20:18:00 hackage reflex-ghci 0.1.4.2 - A GHCi widget library for use in reflex applications https://hackage.haskell.org/package/reflex-ghci-0.1.4.2 (abrar)
20:18:07 <bqv> Honestly I reckon nix outside nixos is just masochism though
20:18:18 <bqv> Ditto guix
20:21:21 <dolio> I thought people generally said the opposite. Nix is good, but NixOS isn't.
20:21:50 × juuandyy quits (~juuandyy@90.166.144.65) (Quit: Konversation terminated!)
20:22:52 <hekkaidekapus> I’d say, NixOS is good for coding. For general Linuxing, I find it not so good.
20:23:34 × britva quits (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
20:26:08 × u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer)
20:26:09 × ahmr88 quits (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Read error: Connection reset by peer)
20:26:28 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
20:26:29 <fendor> I like the ideas and it is really cool once it works, but indeed, it is a lot of work and a lot of pain to setup stuff
20:26:39 u0_a298 joins (~user@47.206.148.226)
20:27:23 <geekosaur> they made configuration a packaging problem
20:27:47 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
20:27:49 ahmr88 joins (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
20:31:07 × AlterEgo- quits (~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving)
20:33:14 <bqv> dolio: definitely agree with that, but that's not to say there's much you can do with nix without depending on nixpkgs, which is built around the idea of nixos
20:34:19 <dolio> Yeah, I think it has to do with what hekkaidekapus said. It's okay for a build system, but you might not want your whole computer experience to work that way.
20:35:23 <dolio> I guess it could be possible to be better for the former if you weren't trying to enable the latter, though.
20:35:45 borne joins (~fritjof@200116b86457d500641bd1d418d012e1.dip.versatel-1u1.de)
20:39:57 × Amras quits (~Amras@unaffiliated/amras0000) (Ping timeout: 272 seconds)
20:40:40 Amras joins (~Amras@unaffiliated/amras0000)
20:41:29 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
20:44:04 × jrqc quits (~rofl@96.78.87.197) (Ping timeout: 246 seconds)
20:45:12 jrqc joins (~rofl@96.78.87.197)
20:46:15 × conal quits (~conal@2600:380:8537:50cb:803b:f7e5:d239:736b) (Quit: Computer has gone to sleep.)
20:46:17 britva joins (~britva@2a02:aa13:7240:2980:292a:d07d:3ab9:26ba)
20:50:22 × u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer)
20:50:58 u0_a298 joins (~user@47.206.148.226)
20:51:23 × Aquazi quits (uid312403@gateway/web/irccloud.com/x-cxspimotkygwnrbt) (Quit: Connection closed for inactivity)
20:55:10 fendor_ joins (~fendor@91.141.3.235.wireless.dyn.drei.com)
20:56:59 kish joins (~oracle@unaffiliated/oracle)
20:57:20 conal joins (~conal@2600:380:857e:b300:b03c:99e9:2644:fc5b)
20:58:10 <koz_> I'm a bit unclear on what this instance is saying: http://hackage.haskell.org/package/attoparsec-0.13.2.4/docs/Data-Attoparsec-Internal-Types.html#t:IsString
20:58:32 <koz_> Does the 'a' refer to the _first_ type parameter of 'Parser i a' in the instance?
21:00:01 × patjameson quits (~patjameso@178.239.168.171) ()
21:00:17 <geekosaur> the i there is what all the others call a
21:00:20 × kish` quits (~oracle@unaffiliated/oracle) (Ping timeout: 272 seconds)
21:00:43 avdb joins (~avdb@ip-83-134-109-138.dsl.scarlet.be)
21:01:03 <geekosaur> I think. haddock has been known to drop stuff on the floor, leading to odd types
21:01:17 <c_wraith> I'm a bit annoyed by there being overlapping instances there.
21:01:27 DTZUZU_ joins (~DTZUZU@S0106bcd165662a4d.vs.shawcable.net)
21:01:35 <geekosaur> and I don't see how that can work as haddock is showing it, hm
21:01:36 × DTZUZU quits (~DTZUZU@205.ip-149-56-132.net) (Ping timeout: 272 seconds)
21:01:39 patrick_ joins (~patrick@189.62.151.9)
21:02:05 <geekosaur> I also distrust the a ~ ByteString one, on general principles
21:02:15 <c_wraith> well yes. implicit encoding is bad.
21:02:19 <koz_> Yeah, I just realized that this actually compiled a mistake of mine.
21:02:38 <koz_> I did a small refactor, it stopped compiling, and I was like 'oh wait, wat, why did this compile?'.
21:02:47 <geekosaur> ah, I get it, different Parser there
21:03:09 bytecoder_ joins (~bytecoder@109.86.182.155)
21:03:13 <geekosaur> qualifieid vs. unqualified. so it's the same a and there's a "hidden" Text
21:03:40 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
21:03:44 <koz_> OK, easily fixed then. Thanks - I was wondering what was up there.
21:03:52 geekosaur peeked at the source link
21:04:06 jakob_ joins (~textual@p200300f49f1622003cfc249d5991ef23.dip0.t-ipconnect.de)
21:04:09 <c_wraith> yeah, that's annoying that the docs just show them as "Parser" when in order to be properly kinded, those have to be some other type
21:04:41 <c_wraith> I guess the instances don't overlap, though.
21:04:43 <c_wraith> So that's nice.
21:06:02 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
21:06:56 × fendor quits (~fendor@078132040188.public.t-mobile.at) (Ping timeout: 260 seconds)
21:07:35 × patrick_ quits (~patrick@189.62.151.9) (Quit: Leaving)
21:08:53 × u0_a298 quits (~user@47.206.148.226) (Ping timeout: 260 seconds)
21:12:45 × __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving)
21:14:23 × kritzefitz quits (~kritzefit@212.86.56.80) (Remote host closed the connection)
21:15:15 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
21:16:25 × dcoutts_ quits (~duncan@33.14.75.194.dyn.plus.net) (Ping timeout: 240 seconds)
21:16:33 × conal quits (~conal@2600:380:857e:b300:b03c:99e9:2644:fc5b) (Quit: Computer has gone to sleep.)
21:18:47 × bytecoder_ quits (~bytecoder@109.86.182.155) (Quit: Leaving)
21:19:38 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
21:20:22 dcoutts_ joins (~duncan@33.14.75.194.dyn.plus.net)
21:22:14 × borne quits (~fritjof@200116b86457d500641bd1d418d012e1.dip.versatel-1u1.de) (Ping timeout: 264 seconds)
21:22:36 × avdb quits (~avdb@ip-83-134-109-138.dsl.scarlet.be) (Quit: WeeChat 2.9)
21:22:48 × britva quits (~britva@2a02:aa13:7240:2980:292a:d07d:3ab9:26ba) (Quit: This computer has gone to sleep)
21:23:05 × p-core quits (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection)
21:24:35 × knupfer quits (~Thunderbi@i59F7FFF1.versanet.de) (Ping timeout: 246 seconds)
21:26:41 × ChanServ quits (ChanServ@services.) (shutting down)
21:27:22 britva joins (~britva@2a02:aa13:7240:2980:292a:d07d:3ab9:26ba)
21:27:33 × britva quits (~britva@2a02:aa13:7240:2980:292a:d07d:3ab9:26ba) (Client Quit)
21:28:20 Tario joins (~Tario@201.192.165.173)
21:29:18 <bqv> wouldn't it be nice to have a String class, so you don't have to pack and unpack strings constantly and generally have all three string libraries available
21:29:38 <dolio> Like IsString?
21:29:46 × dbmikus_ quits (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 256 seconds)
21:29:51 <bqv> what are the operations of that
21:30:00 <bqv> i didn't think it had any outside GHC internal
21:30:12 <dolio> It's for overloading strings mostly.
21:30:35 <bqv> yeah, i meant like one where you could switch between string types painlessly
21:30:39 <geekosaur> I think they're thinking of MonoFoldable/MonoTraversable
21:30:57 <geekosaur> let's just say they're not highly regarded
21:31:02 <bqv> :(
21:31:06 knupfer joins (~Thunderbi@i59F7FFF1.versanet.de)
21:31:07 borne joins (~fritjof@200116b86457d500641bd1d418d012e1.dip.versatel-1u1.de)
21:31:10 dbmikus_ joins (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
21:31:18 <dminuoso> bqv: Well there is text-encoding
21:31:19 × ahmr88 quits (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection)
21:31:24 <dminuoso> err text-conversions
21:31:37 <dolio> What does 'switch' mean here?
21:31:38 justsomeguy joins (~justsomeg@216.186.218.241)
21:31:43 <geekosaur> when things work, they work well. but when they don't work, they're truly terrible
21:32:21 ChanServ joins (ChanServ@services.)
21:32:21 beckett.freenode.net sets mode +o ChanServ
21:32:45 <dolio> The API surface of strings is probably too large to overload in a single class nicely. It's more of a module parameterization thing.
21:32:46 <bqv> dolio: well, for example, say I'm interacting with a library that requires Text, and another that requires ByteString, but my internals generally just use String
21:32:57 <dminuoso> bqv: Take ByteString out of that equation
21:33:04 <dminuoso> ByteString is *binary* data, not textual data
21:33:20 <bqv> that doesn't solve the issue, though
21:33:22 <dminuoso> Once you learnt to accept this, it becomes just a String <> Text issue
21:33:27 × justsomeguy quits (~justsomeg@216.186.218.241) (Changing host)
21:33:27 justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311)
21:33:29 <bqv> I can't mandate that others write packages properly
21:33:32 <bqv> i'm not god :D
21:33:40 <dolio> You can not use them.
21:33:57 <bqv> hmm
21:34:00 × jneira quits (501e64fa@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.100.250) (Quit: Connection closed)
21:34:11 <dminuoso> bqv: From experience, ByteString is usually used correctly. So if a library exposes ByteString to you, it means decoding is *your* problem
21:34:22 × motherfsck quits (~motherfsc@unaffiliated/motherfsck) (Quit: quit)
21:34:48 <bqv> so basically the current state of affairs is optimal?
21:34:59 <dminuoso> Well String/Text is not optimal
21:35:05 <dminuoso> But ByteString is frequently misunderstood.
21:35:08 <merijn> No, but the optimal state doesn't involve "less string types" :)
21:35:12 <merijn> If anything we need more :p
21:35:27 jneira joins (501e64fa@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.100.250)
21:35:44 <dminuoso> Text8, Text16..
21:35:51 <davean> bqv: no, we should get a lot of String out of the ecosystem
21:36:05 <davean> bqv: the previlence of String is definately a lasting problem we have
21:36:22 <davean> But there are some tools to use them better and be more polymorphic over them also
21:36:34 <davean> We have a lot of tools for that in type class heirarchies
21:36:54 <davean> f you think in properties types move to the edge more.
21:37:07 <dminuoso> bqv: Im in fact quite glad people expose ByteString often, forcing you to deal with de/encoding.
21:37:26 <bqv> hmm
21:37:30 × geekosaur quits (82659a09@host154-009.vpn.uakron.edu) (Remote host closed the connection)
21:37:43 <bqv> so now the impression i'm getting is that avoiding String as much as possible is best?
21:37:46 MisterG joins (~MisterG@bri77-3-78-239-227-185.fbx.proxad.net)
21:37:53 <dminuoso> It depends on what you do, really.
21:38:15 <dminuoso> String is not nearly as bad as some people make it out to be, GHC has some good optimizations for it
21:38:26 <dolio> Part of the reason String is so persistent is that it isn't really that bad for a lot of stuff.
21:38:29 <sm[m]> +1
21:38:47 <MisterG> well ... https://www.youtube.com/watch?v=6a6xfFmwFwM
21:38:58 <dolio> Because not every use of strings is some super performance critical thing.
21:39:10 <sm[m]> String is simple, conserving developer brain cycles, which is often the priority
21:39:31 <bqv> but I see the idea. If bytestring has the purpose outlined by dminuoso, and text is the de-facto textual data type, taking string out of the picture makes the whole thing ideal
21:39:55 <sm[m]> if text were as easy to use as String, then maybe
21:40:07 <dminuoso> I'd move to rename ByteString to ByteBuffer though, so we dont get as many confused beginners.
21:40:08 <davean> I find them easier personally, they have better characturistics
21:40:16 <davean> dminuoso: thats ... sensible
21:40:25 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
21:40:33 <davean> dminuoso: That might actually fix a lot of the screwups I see
21:40:33 <bqv> ^
21:40:35 <sm[m]> dminuoso: or Bytes
21:40:44 MisterG parts (~MisterG@bri77-3-78-239-227-185.fbx.proxad.net) ()
21:40:54 <davean> I never realized they'd think of the "String" in "ByteString" as textual.
21:41:01 <davean> That ... thats shocking to me
21:41:19 <bqv> davean: well consider other languages, there isn't always the distinction
21:41:24 <bqv> in fact the rarely is
21:41:38 <bqv> and in particular for FFI stuff, you would generally end up using bytestring for text
21:42:00 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
21:42:24 <davean> bqv: because with FFI you *specificly* have to talk about encoding always
21:42:30 <davean> its inherent to being FFI
21:42:43 <bqv> exactly, but that doesn't make it any less textual data
21:43:04 <dminuoso> davean: Anyway, the term "string" is really fuzzy and hard to define correctly.
21:43:04 <bqv> coming from a closer to baremetal language, you'll be thinking of that
21:43:18 <davean> dminuoso: its a Rope, only worse.
21:43:23 <bqv> lmao
21:43:23 <davean> (No it isn't)
21:43:43 <dminuoso> Well, a rope is made of strings..
21:43:46 <davean> Haskell really could use a better Rope package
21:43:51 <dminuoso> In both senses of both words!
21:44:15 × mbomba quits (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Quit: WeeChat 2.9)
21:44:29 <dminuoso> I mean if a "string" is understood as a sequence of characters, that begs the question of "what a character" even is.
21:44:36 <dolio> Hasn't Ed made one?
21:44:40 <bqv> well anyway, sm[m], what are the main inconveniences of Text? (does overloadedstrings allow concatenation with `++`?)
21:44:51 <dminuoso> bqv: Annoyance with String is all, really.
21:45:00 <dminuoso> Or if you want to deal with non-unicode textual data
21:45:07 <bqv> hm
21:45:11 justanotheruser is now known as mrdulus
21:45:13 <sm[m]> bqv: the biggest is just the dance required to import it
21:45:35 <bqv> cool. in that case i'll just build the habit of not using String
21:45:43 <dminuoso> bqv: Also, its backed by utf16 currently. That might not be ideal for some special uses.
21:45:59 <davean> dolio: Yah, I'll I'll be the first one to tell harmless his sucks :)
21:46:07 <dminuoso> (There exist text-short and text-utf8 packages if those are needed)
21:46:08 <dolio> Hahaha.
21:46:09 <sm[m]> it can have unpredictable performance (cf recent reddit post)
21:46:11 <bqv> heh
21:46:15 <dolio> I guess that's why he wrote another one for coda.
21:46:23 mrdulus is now known as justan0theruser
21:46:34 <dminuoso> bqv: At any rate `text` is a very safe default when dealing with non-trivial amounts of textual data.
21:46:43 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
21:46:45 <dminuoso> Without any major deficits
21:47:18 <sm[m]> and it's harder to do list-like construction/operations with it
21:48:00 <sm[m]> there's lazy and strict variants to deal with
21:48:15 × coot quits (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
21:48:27 <dminuoso> It's similar to how Vector is a good default if you need a memory efficient array with cheap random access
21:48:32 <sm[m]> literals require OverloadedStrings, which may interfere with other things.. etc.
21:48:51 <dminuoso> sm[m]: You can just write `T.pack "foo"` in those places though
21:48:54 <dminuoso> It's not a big issue
21:49:15 × cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 256 seconds)
21:49:19 <sm[m]> sure, but all of these things add up and make it less convenient than String
21:49:26 <bqv> ack.
21:49:33 <sm[m]> convenience is a big issue in my book
21:50:08 <bqv> well, i suppose at any rate, if bytestring is out of the picture in almost every context, it isn't so heinous
21:50:08 <dminuoso> sm[m]: Heh, Im debating between convenience of Int everywhere, or proper cross-platform support in an upcoming library right now.
21:50:19 <dminuoso> I really want this to have a guaranteed 32 bits..
21:50:30 <dminuoso> (And Word32 will cause a lot of fromIntegral friction)
21:50:32 <bqv> back when i started haskell the string types were my biggest headache i reckon
21:50:39 <sm[m]> of course, when you need what text provides, String becomes the inconvenient/wrong one
21:50:58 × argent0 quits (~argent0@168.227.97.4) (Ping timeout: 256 seconds)
21:51:18 <dminuoso> bqv: The prevalence of String is arguably one of the biggest warts in Haskell. :(
21:51:37 <sm[m]> myself, I don't seem to have really needed text in my haskell career yet. I guess I'd need to be storing large amounts of it and wanting to save memory
21:51:39 mdunnio joins (~mdunnio@208.59.170.5)
21:51:42 <dminuoso> In a perfect world, we could use backpack to switch between String and Text, depending on what we want
21:51:58 <bqv> backpack?
21:52:04 <davean> sm[m]: its not about memory, the performance of string is abismal even in small pieces of code
21:52:05 <sm[m]> though I've been benefitting from it's use in many libs, probably
21:52:09 <dminuoso> bqv: Are you familiar with ML functors?
21:52:24 <bqv> i'm familiar with haskell functors, at least
21:52:31 <dminuoso> Different thing entirely :)
21:52:34 <sm[m]> davean: everyone says this, but I haven't experienced it in my code
21:52:41 <bqv> i have a vague comprehension of category theory
21:52:49 <bqv> i won't pretend to be a master
21:53:50 <tomsmeding> dminuoso: are those parametrised modules?
21:53:58 <dminuoso> tomsmeding: Yeah
21:54:03 <tomsmeding> bqv: Futhark also has those, if you just so happen to know that language :p
21:54:13 aarvar joins (~foewfoiew@50.35.43.33)
21:54:35 <dminuoso> bqv: Roughly and havingly, backpack lets you parametrize a package by another.
21:54:38 × mananamenos quits (~mananamen@84.122.202.215.dyn.user.ono.com) (Ping timeout: 264 seconds)
21:54:46 <dminuoso> *handwavingly
21:54:53 × fendor_ quits (~fendor@91.141.3.235.wireless.dyn.drei.com) (Read error: Connection reset by peer)
21:54:57 <bqv> interesting
21:55:24 <dminuoso> So rather than depending on some modules, you depend on some signature. And backpack can fill that signature in with some matching stuff.
21:55:39 fendor joins (~fendor@91.141.3.235.wireless.dyn.drei.com)
21:55:41 × fendor quits (~fendor@91.141.3.235.wireless.dyn.drei.com) (Remote host closed the connection)
21:55:44 × danvet quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 240 seconds)
21:55:45 superfly1 joins (~superfly@84.39.117.57)
21:56:33 <justsomeguy> Roughly speaking, what does a signature consist of? Is it a type signature for functions that are members of the module, or something?
21:56:42 <sm[m]> davean: ..and I've seen a few other folks say the same, so I think it must depend. Perhaps it's more apparent when working with large strings ? I ported hledger from String to text and the difference was not huge.
21:56:46 <bqv> that's actually very cool
21:57:18 <davean> sm[m]: Oh yes, its walking the spine thats so slow - O(n) vs. O(1)
21:57:21 <dminuoso> justsomeguy / bqv: https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/separate_compilation.html#module-signatures
21:57:55 sQVe joins (~sQVe@unaffiliated/sqve)
21:58:51 <bqv> excellent
21:59:02 <sm[m]> so perhaps when working with many small strings, text is not such a win; and I think that's a pretty common case
21:59:07 <tomsmeding> sm[m]: "not huge" -- do you remember roughly how much it did save?
21:59:28 <davean> sm[m]: It adds up on total volume of string, not length of any given
21:59:46 <dminuoso> bqv: In case you ever encounter it in the future, ML functors are roughly the same thing (albeit much more powerful), giving you parametrized modules (that is functions returning *modules*)
22:00:04 <dminuoso> (or, you could think of backpack as a simpler form of ml-functors)
22:00:19 <bqv> i see, fair enough
22:00:42 thir joins (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de)
22:01:13 <sm[m]> tomsmeding: I see "most hledger types have been converted from String to Text, reducing memory usage by 30%+ on large files". I don't remember the time change, perhaps it was similar
22:01:18 <dolio> It is essentially the same thing, but you need to do the management in cabal files and such, not just as constructs in the language.
22:01:42 <dminuoso> dolio: They are limited because it's static in cabal, ml functors you can just apply to different things at the same time.
22:01:54 <davean> sm[m]: remember the GC has to walk strings also
22:01:57 <tomsmeding> sm[m]: neat, thanks! nice factoid
22:02:00 <davean> sm[m]: so just HAVING strings in memory hurts performance
22:02:23 <dolio> You can apply a backpack 'functor' to multiple modules, too.
22:02:25 <dminuoso> Oh?
22:02:32 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
22:02:55 <hekkaidekapus> bqv, justsomeguy: <https://github.com/haskell-backpack/backpack-str/blob/master/str-sig/Str.hsig>
22:03:04 <dolio> Yeah, but it all happens in the cabal file.
22:03:05 <davean> sm[m]: if you just allocate a large string and do something else in your program, your performance suffers a lot
22:03:06 <bqv> i was about to ask a question but i think i just answered it with text-show
22:03:28 <dolio> Or whatever you're using. I guess there's some just-GHC way to use it, but I ignored that mostly.
22:03:30 <davean> sm[m]: its the very *existance* of strings in the program that cause issues
22:03:52 <sm[m]> davean: ok, but I'm reporting my experience so far. Issues have been minimal
22:04:10 <sm[m]> I think people are too quick to condemn String, without measuring or considering context
22:04:23 <davean> I messure religiously
22:04:48 <sm[m]> I mean, People at large, not you of course. Which gives String and haskell an unnecessarily bad rep
22:05:03 <davean> Maybe, most people don't understand Haskell performance it seems.
22:05:26 × thir quits (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
22:05:53 monochrom disbelieves in simpletonic "rule of thumb", "best practice", "code smell".
22:06:44 <dminuoso> We have a latency critical application. We have String in all kinds of places, except in the code generation where we just use `prettyprinter`. All our performance issues were of algorithmic nature, and the odd lack of sharing.
22:07:12 <davean> dminuoso: oh interesting. I'd LOVE to know about your lack of sharing
22:07:14 × dcoutts_ quits (~duncan@33.14.75.194.dyn.plus.net) (Ping timeout: 256 seconds)
22:07:19 <davean> that sounds very interesting
22:07:25 × hyperisco quits (~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 240 seconds)
22:07:29 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 265 seconds)
22:07:40 <dolio> dminuoso: http://blog.ezyang.com/2016/10/try-backpack-ghc-backpack/
22:07:51 <dolio> Search for "using both insantiations at once"
22:08:00 <bqv> sm[m]: but surely it's pretty reasonable to want to avoid marshalling between Text and String all the time, which is undeniably less efficient than any alternative. then at that point, your use of which one all but depends on what libraries you use
22:09:29 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
22:09:37 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
22:10:07 roconnor joins (~roconnor@host-192.252-162-14.dyn.295.ca)
22:10:15 <sm[m]> bqv: you're right
22:11:06 <dminuoso> davean: Oh it's really not that interesting. It's just when you defeat MMR by being very explicit with type annotations..
22:11:24 <ski> bqv : ML functors is something else
22:11:27 <ski> @where on-functors
22:11:28 <lambdabot> "On Functors" (in C++,Standard ML,Haskell,Prolog) by Peteris Krumins in 2010-05-17 at <http://www.catonmat.net/blog/on-functors/>
22:11:52 <davean> dminuoso: Oh! Thats 2 slides of my talk!
22:12:04 <davean> dminuoso: I specificly focus on that and when to be how strict
22:12:10 <davean> and how much to unpack and why
22:12:19 <sm[m]> bqv: that is to say, if your data is not big enough to require text, then easy interop with the libs you're using is probably the best way to choose
22:12:20 <dminuoso> davean: Did you hold that talk already?
22:12:31 <davean> No, thrusday at Haskell Exchange
22:12:36 <davean> I was recently tricked into it
22:12:45 <dminuoso> Ah, are they still selling tickets?
22:12:49 <dminuoso> Seems so, mmm.
22:12:53 <davean> I'm currently desperately getting the talk together if you want to review it
22:13:18 <dminuoso> I could take a peek, sure
22:13:41 <dminuoso> I kind of missed this years Haskell eXchange because it was so rushed..
22:13:56 <dminuoso> (Guess it's still the aftermath of the bankruptcy)
22:15:16 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
22:15:33 <sm[m]> bqv: if you're interested, http://hackage.haskell.org/package/foundation-0.0.25/docs/Foundation-String.html is a third option, but it doesn't seem to have got much traction
22:16:09 elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
22:16:49 <bqv> heh, yeah, if it would require explicit marshalling then i don't see myself using it much either
22:18:00 hackage registry 0.2.0.1 - data structure for assembling components https://hackage.haskell.org/package/registry-0.2.0.1 (etorreborre)
22:18:28 <sm[m]> there'll always be some marshalling/conversion, since different types of text-like data arise in the wild. Ideally we'd minimise it though
22:19:45 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds)
22:20:18 <sm[m]> maybe the aforementioned http://hackage.haskell.org/package/text-utf8 has superseded that foundation type
22:24:28 <bqv> so this is one where backpack would be nice
22:24:42 <bqv> because you have the same ABI, but different types
22:24:47 <bqv> so mixing and matching won't work
22:24:57 <bqv> *API
22:27:02 × alp quits (~alp@2a01:e0a:58b:4920:280c:9785:c082:40bf) (Read error: Connection reset by peer)
22:27:23 alp joins (~alp@2a01:e0a:58b:4920:99ca:9a50:cea9:e213)
22:27:41 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
22:28:09 × Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
22:28:29 × sQVe quits (~sQVe@unaffiliated/sqve) (Quit: Bye!)
22:29:58 × Ariakenom quits (~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se) (Quit: Leaving)
22:30:00 <hekkaidekapus> bqv: Yes, the String case is a poster-showcase of what Backpack can do.
22:30:17 <bqv> well, text, in that case, but yeah
22:30:30 hackage pandoc 2.11.1 - Conversion between markup formats https://hackage.haskell.org/package/pandoc-2.11.1 (JohnMacFarlane)
22:31:01 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Quit: Lost terminal)
22:32:37 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 265 seconds)
22:33:02 × xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 264 seconds)
22:35:52 × tolt quits (~weechat-h@li219-154.members.linode.com) (Quit: WeeChat 2.9)
22:36:23 × elliott_ quits (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
22:36:32 gtk joins (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
22:37:09 Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
22:37:50 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
22:39:23 × knupfer quits (~Thunderbi@i59F7FFF1.versanet.de) (Ping timeout: 265 seconds)
22:39:49 tolt joins (~weechat-h@li219-154.members.linode.com)
22:40:03 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
22:42:07 hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
22:44:03 × hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
22:45:08 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds)
22:45:28 elliott_ joins (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net)
22:46:00 × tolt quits (~weechat-h@li219-154.members.linode.com) (Quit: WeeChat 2.9)
22:47:26 tolt joins (~weechat-h@li219-154.members.linode.com)
22:48:12 × Katarushisu quits (~Katarushi@cpc149712-finc20-2-0-cust535.4-2.cable.virginm.net) (Ping timeout: 260 seconds)
22:48:33 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
22:49:45 Katarushisu joins (~Katarushi@cpc149712-finc20-2-0-cust535.4-2.cable.virginm.net)
22:50:58 <bqv> geekosaur: do you also dislike classy-prelude?
22:52:25 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
22:52:41 KhoN_1 joins (~KhoN@cm-84.208.147.132.getinternet.no)
22:52:47 × kori quits (~kori@arrowheads/kori) (Quit: WeeChat 2.8)
22:54:11 brodie_ joins (~brodie@207.53.253.137)
22:54:41 × KhoN quits (~KhoN@cm-84.208.147.132.getinternet.no) (Ping timeout: 268 seconds)
22:55:13 aarvar parts (~foewfoiew@50.35.43.33) ()
22:55:32 <dminuoso> hls-haskell/emacs question: I have a multi-component cabal project, it seems that setting up the cradle fails because it does not know which sub-component to use for my source code (it seems to always use the same component)
22:56:02 <dminuoso> Is there a way to tell hls to pin to a particular target?
22:56:20 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
22:57:24 × ensyde quits (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 258 seconds)
22:57:30 × mdunnio quits (~mdunnio@208.59.170.5) (Remote host closed the connection)
23:00:07 × Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection)
23:01:05 hekkaidekapus_ is now known as hekkaidekapus
23:02:03 <hekkaidekapus> dminuoso: Are you aware of #haskell-ide? I hear it is the place where prompt answers are provided for questions like yours.
23:02:42 <Uniaika> -> #Haskell-ide-engine, hekkaidekapus
23:03:03 <hekkaidekapus> Uniaika: oopsie, thank you for the correction.
23:03:04 × mrchampion quits (~mrchampio@216-211-57-41.dynamic.tbaytel.net) (Ping timeout: 265 seconds)
23:04:21 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
23:04:28 da39a3ee5e6b4b0d joins (~textual@n11211935170.netvigator.com)
23:05:03 × Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
23:06:35 <dminuoso> hekkaidekapus: Ahh, cheers. I was not :)
23:07:55 mbomba joins (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca)
23:08:39 Varis joins (~Tadas@unaffiliated/varis)
23:08:54 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
23:11:23 × gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
23:14:19 conal joins (~conal@2600:380:8512:89f8:e48b:604e:1b9f:cf32)
23:18:25 × carlomagno quits (~cararell@148.87.23.4) (Remote host closed the connection)
23:19:15 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:fc37:ff3f:9c12:2922) (Quit: My MacBook has gone to sleep. ZZZzzz…)
23:19:32 × borne quits (~fritjof@200116b86457d500641bd1d418d012e1.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
23:20:12 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
23:20:49 carlomagno joins (~cararell@148.87.23.4)
23:23:24 jedws joins (~jedws@101.184.150.81)
23:24:25 × gtk quits (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 240 seconds)
23:24:50 × carlomagno quits (~cararell@148.87.23.4) (Remote host closed the connection)
23:25:10 xerox_ joins (~xerox@unaffiliated/xerox)
23:25:10 irc_user joins (uid423822@gateway/web/irccloud.com/x-mlbnqpkqljzoxqfd)
23:25:51 conal_ joins (~conal@64.71.133.70)
23:26:02 howdoi joins (uid224@gateway/web/irccloud.com/x-wivnzygvcxbkqyle)
23:26:38 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
23:27:01 texasmyn_ joins (~texasmyns@64.44.55.36)
23:27:05 christo joins (~chris@81.96.113.213)
23:27:38 × conal quits (~conal@2600:380:8512:89f8:e48b:604e:1b9f:cf32) (Ping timeout: 264 seconds)
23:27:44 <irc_user> I was looking at some elm vs purescript discussions and I see a lot of people talking about how you have to write a lot of boilerplate in elm because of lack of type classes. What exactly is the boilerplate that one would have to write in the absence of type classes?
23:27:49 mrchampion joins (~mrchampio@216-211-57-41.dynamic.tbaytel.net)
23:28:46 dcoutts_ joins (~duncan@33.14.75.194.dyn.plus.net)
23:28:46 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
23:29:10 × da39a3ee5e6b4b0d quits (~textual@n11211935170.netvigator.com) (Ping timeout: 272 seconds)
23:29:33 <dminuoso> irc_user: So imagine you wanted to compare two lists for equality. What function would you use?
23:29:48 × DavidEichmann quits (~david@43.240.198.146.dyn.plus.net) (Ping timeout: 272 seconds)
23:30:23 <irc_user> Hmm sorry I'm not totally into functional yet, but I would probably iterate over them? dminuoso
23:30:27 ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net)
23:30:40 × revprez_anzio quits (~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net) (Ping timeout: 260 seconds)
23:30:41 <dminuoso> I mean fundamentally, the statement is incorrect since anything you can do with typeclasses, you can do with explicit dictionary passing
23:30:48 <dminuoso> But what typeclasses buy you is coherence
23:31:13 <dolio> Well, also, adding dictionary arguments for everything you're 'overloading' by is boilerplate.
23:31:16 revprez_anzio joins (~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net)
23:31:27 × Resurge quits (~Thunderbi@213.219.168.185.adsl.dyn.edpnet.net) (Quit: Resurge)
23:31:36 carlomagno joins (~cararell@148.87.23.4)
23:31:44 <irc_user> "dictionary"?
23:32:04 <dminuoso> Say I hand you a `Set Thing`, and you give some `Set Thing` back. If you're just a library author, you can know about my Thing, so withot some funky tricks you cant operate on that Set with a different Ord
23:33:40 christo joins (~chris@81.96.113.213)
23:33:50 <dminuoso> irc_user: GHC implements typeclass instances as dictionaries/records. So when you write `f :: Num a => ...` then under the hood this becomes a function taking a `Num a` record, that contains all the method implementations.
23:34:01 <dminuoso> (In the absence of optimizations)
23:34:03 <bqv> > showsPrec 0 "test"
23:34:06 <lambdabot> <[Char] -> [Char]>
23:34:12 × carlomagno quits (~cararell@148.87.23.4) (Remote host closed the connection)
23:34:43 <dolio> Also, having to manually specify how to build dictionaries for `List a` out of dictionaries for `a` every place you want the former is boilerplate.
23:36:00 <dminuoso> Consider the initial example: You will need a comparing function, so some `eqList :: (a -> a -> Bool) -> [a] -> [a] -> Bool`. You have to write this explicitly, and provide it with an appropriate equality function on the elements
23:36:15 <dminuoso> You cant reuse any of that if you want equality on maps too
23:36:27 <dminuoso> And this promotes great error because there's no assurance we will all agree on the equality functions
23:36:40 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
23:36:51 × christo quits (~chris@81.96.113.213) (Read error: No route to host)
23:36:53 <dminuoso> (Leading go incoherence, where you and I might use conflicting implementations, while sharing some data)
23:37:16 christo joins (~chris@81.96.113.213)
23:37:36 nbloomf joins (~nbloomf@2600:1700:ad14:3020:fc37:ff3f:9c12:2922)
23:37:40 <irc_user> Ohhh, so it would be kind of like generics/traits?
23:37:46 <dminuoso> So without typeclasses, you will need to remember how all these eq functions are called, and you can't just automatically derive them. If you have parametrized data types, you will need to write manual higher order equality functions, and explicitly pass more eq functions inside
23:38:44 <ski> > showsPrec 0 "bqv" ""
23:38:47 <lambdabot> "\"bqv\""
23:39:21 <bqv> figured it out, i just opened ghci
23:39:27 <bqv> trying to migrate from prelude to protolude
23:39:37 <bqv> monoids are ..definitely nicer
23:40:02 <irc_user> I think I see, thank you! I definitely have some more reading to do but this will be great to refer back to.
23:40:04 <dminuoso> irc_user: Another motivating example is.. lets say you want to add numbers.
23:40:05 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
23:40:35 <dminuoso> Unless you have some other elaborate overloading mechanism, you can't use (+), because what type would (+) even have?
23:40:36 Alleria_ joins (~AllahuAkb@2604:2000:1484:26:1965:9c13:18a8:4b5c)
23:40:57 <dminuoso> So you'd have `addInt :: Int -> Int -> Int`, `addInteger :: Integer -> Integer -> Integer`, `addFloat :: Float -> Float -> Float`, etc..
23:41:11 carlomagno joins (~cararell@148.87.23.4)
23:41:27 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
23:41:42 <dminuoso> (The moment you ponder about this for a while, you'd probably end up with something like `add :: Num a -> a -> a -> a` with some `data Num a = Num { numAdd :: a -> a -> a, ... }`
23:41:46 skapazzo joins (~skapazzo@151.9.205.227)
23:41:47 <ski> it's especially "merge" functions (like `union :: Ord a => Set a -> Set a -> Set a') that benefit from knowing the same ordering was used to build the two input sets
23:41:54 <dminuoso> Which brings you back to all the other problems above
23:42:45 <ski> (if not for that, one could attempt to bundle the ordering relation inside the set)
23:43:56 <irc_user> I see, this makes a lot of sense now, thank you for the descriptive examples
23:47:41 wroathe_ joins (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
23:47:58 × wroathe_ quits (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Client Quit)
23:48:17 wroathe_ joins (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
23:48:48 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
23:48:58 wroathe_ is now known as wroathe
23:50:15 × skapazzo quits (~skapazzo@151.9.205.227) (Quit: Lost terminal)
23:51:30 hackage reflex-dom-retractable 0.1.4.0 - Routing and retractable back button for reflex-dom https://hackage.haskell.org/package/reflex-dom-retractable-0.1.4.0 (NCrashed)
23:52:03 olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber)
23:52:58 Rudd0^ joins (~Rudd0@185.189.115.103)
23:54:18 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
23:57:12 × Rudd0 quits (~Rudd0@185.189.115.98) (Ping timeout: 260 seconds)
23:57:16 × Rudd0^ quits (~Rudd0@185.189.115.103) (Ping timeout: 260 seconds)
23:59:23 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:fc37:ff3f:9c12:2922) (Quit: My MacBook has gone to sleep. ZZZzzz…)
23:59:35 × Chi1thangoo quits (~Chi1thang@87.112.60.168) (Ping timeout: 256 seconds)

All times are in UTC on 2020-11-03.