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.