2021/09/20

2021-09-20 00:00:31 +0200__monty__(~toonn@user/toonn) (Ping timeout: 252 seconds)
2021-09-20 00:02:05 +0200 <Izem> How do I read mappings with three arrows?
2021-09-20 00:03:04 +0200 <Izem> a->[a]->[a] is (a->[a])->[a] or a->([a]->[a]) ?
2021-09-20 00:03:30 +0200 <geekosaur> the latter
2021-09-20 00:06:22 +0200Guest85(~Guest85@dynamic-78-30-180-145.adsl.eunet.rs)
2021-09-20 00:07:33 +0200_xor(~xor@74.215.232.67) (Quit: bbiab)
2021-09-20 00:07:38 +0200 <Cajun> arrows are right associative
2021-09-20 00:07:40 +0200jtomas_(~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Ping timeout: 240 seconds)
2021-09-20 00:07:55 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-20 00:09:14 +0200Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-09-20 00:12:41 +0200Gurkenglas(~Gurkengla@dslb-002-207-014-195.002.207.pools.vodafone-ip.de) (Ping timeout: 268 seconds)
2021-09-20 00:14:25 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-20 00:20:35 +0200 <Franciman> lol haskell is making fun of me
2021-09-20 00:20:47 +0200 <Cajun> how so?
2021-09-20 00:21:57 +0200 <Franciman> I have these two pieces of code
2021-09-20 00:21:59 +0200 <Franciman> https://bpa.st/TY5Q
2021-09-20 00:22:01 +0200 <Franciman> as you can see
2021-09-20 00:22:10 +0200 <Franciman> in both I define a self-referential term
2021-09-20 00:22:12 +0200 <Franciman> res
2021-09-20 00:22:15 +0200 <Franciman> but I can't understand why
2021-09-20 00:22:20 +0200 <Franciman> in the first case the program loops forever
2021-09-20 00:22:29 +0200 <Franciman> while in the second case it works as I expect
2021-09-20 00:22:37 +0200 <Franciman> is there less laziness in the first eval?
2021-09-20 00:23:11 +0200 <Franciman> or is it related to something else?
2021-09-20 00:26:11 +0200 <Franciman> maybe it is because I have a tuple?
2021-09-20 00:26:25 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c) (Remote host closed the connection)
2021-09-20 00:26:43 +0200 <geekosaur> does putting ~ in front of the tuple help?
2021-09-20 00:26:56 +0200NoirCode(~Izem@bras-base-london1483w-grc-31-74-12-158-179.dsl.bell.ca)
2021-09-20 00:27:18 +0200 <Franciman> lemme try
2021-09-20 00:28:19 +0200__monty__(~toonn@user/toonn)
2021-09-20 00:28:34 +0200CannabisIndica(~herb@user/mesaboogie) (Ping timeout: 252 seconds)
2021-09-20 00:29:21 +0200__monty__(~toonn@user/toonn) (Client Quit)
2021-09-20 00:29:54 +0200Izem(~Izem@bras-base-london1483w-grc-31-74-12-158-179.dsl.bell.ca) (Ping timeout: 265 seconds)
2021-09-20 00:29:58 +0200 <Franciman> geekosaur: you are a genious
2021-09-20 00:30:12 +0200 <Franciman> can i ask you what is happening?
2021-09-20 00:30:25 +0200 <geekosaur> ~ in front of a pattern makes it lazy
2021-09-20 00:30:42 +0200 <geekosaur> otherwise it was strictly matching the tuple and that may have caused the looping
2021-09-20 00:30:43 +0200 <Franciman> oh nice!
2021-09-20 00:30:54 +0200 <Franciman> thanks senseii
2021-09-20 00:32:34 +0200yauhsien(~yauhsien@118-167-47-202.dynamic-ip.hinet.net)
2021-09-20 00:37:24 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-09-20 00:37:30 +0200yauhsien(~yauhsien@118-167-47-202.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2021-09-20 00:37:58 +0200deejaytee(~deejaytee@vpn-fn-228.net.ed.ac.uk)
2021-09-20 00:38:11 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Ping timeout: 268 seconds)
2021-09-20 00:38:37 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-09-20 00:39:12 +0200jespada(~jespada@2803:9800:9842:7a62:edd5:5e74:3ec2:1b19) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-09-20 00:39:14 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-09-20 00:41:46 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2.1)
2021-09-20 00:44:01 +0200deejaytee(~deejaytee@vpn-fn-228.net.ed.ac.uk) (Ping timeout: 252 seconds)
2021-09-20 00:44:58 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 260 seconds)
2021-09-20 00:45:23 +0200waleee(~waleee@h-98-128-228-119.na.cust.bahnhof.se)
2021-09-20 00:45:28 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-20 00:48:10 +0200dsrt^(~dsrt@12.203.127.82)
2021-09-20 00:49:43 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 265 seconds)
2021-09-20 00:51:13 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-20 00:51:43 +0200ulvarrefr(~user@185.24.53.152)
2021-09-20 00:58:10 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-20 00:59:18 +0200gioyik(~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds)
2021-09-20 00:59:32 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-09-20 00:59:48 +0200deejaytee(~deejaytee@vpn-fn-228.net.ed.ac.uk)
2021-09-20 00:59:55 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-09-20 01:00:11 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-20 01:00:12 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-20 01:00:12 +0200wroathe(~wroathe@user/wroathe)
2021-09-20 01:00:35 +0200deejaytee(~deejaytee@vpn-fn-228.net.ed.ac.uk) (Client Quit)
2021-09-20 01:00:41 +0200 <Franciman> geekosaur: sorry, I have another similar problem now
2021-09-20 01:00:48 +0200 <Franciman> I am in the ST monad, and I have
2021-09-20 01:01:05 +0200 <Franciman> res <- runProgram s e (E.bind res bEnv') prog
2021-09-20 01:01:13 +0200 <Franciman> is there a way to make this lazy too?
2021-09-20 01:01:18 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2021-09-20 01:01:22 +0200 <Franciman> I tried with mdo
2021-09-20 01:01:26 +0200 <Franciman> and RecursiveDo
2021-09-20 01:01:28 +0200 <Franciman> but it loops :<
2021-09-20 01:02:06 +0200TranquilEcho(~grom@user/tranquilecho) (Quit: WeeChat 2.8)
2021-09-20 01:02:06 +0200 <geekosaur> hm. that I don't know but suspect laziness will depend on ST's bind and there may be no way around it
2021-09-20 01:02:54 +0200 <Franciman> this is unfortunate
2021-09-20 01:02:55 +0200 <Franciman> damn
2021-09-20 01:02:58 +0200 <Franciman> thanks
2021-09-20 01:03:31 +0200 <geekosaur> res itself shjould already be lazy since it's irrefutable
2021-09-20 01:04:05 +0200NoirCode(~Izem@bras-base-london1483w-grc-31-74-12-158-179.dsl.bell.ca) (Ping timeout: 268 seconds)
2021-09-20 01:05:11 +0200dsrt^(~dsrt@12.203.127.82) (Remote host closed the connection)
2021-09-20 01:05:34 +0200 <Franciman> uhm, in fact the computation terminates at first
2021-09-20 01:05:39 +0200 <Franciman> but then it says it loops
2021-09-20 01:05:41 +0200 <Franciman> i.e. haskell says
2021-09-20 01:05:44 +0200 <Franciman> ellipse: <<loop>>
2021-09-20 01:05:54 +0200 <Franciman> so ST is doing its perverted magic
2021-09-20 01:05:56 +0200 <Franciman> lol
2021-09-20 01:06:19 +0200 <geekosaur> hm, that implies the loop is somewhere else
2021-09-20 01:06:39 +0200 <geekosaur> <<loop>> means a thunk was reentered while evaluating it to WHNF
2021-09-20 01:06:53 +0200 <geekosaur> i.e. something like x = x
2021-09-20 01:08:20 +0200 <Franciman> is there a way to know what caused the <<loop>> ?
2021-09-20 01:08:36 +0200 <geekosaur> possibly +RTS -xc
2021-09-20 01:08:54 +0200 <geekosaur> may require building with profiling enabled
2021-09-20 01:10:09 +0200 <Franciman> awesome
2021-09-20 01:10:12 +0200 <Franciman> thanks
2021-09-20 01:10:14 +0200 <Franciman> again
2021-09-20 01:13:41 +0200roboguy_(~roboguy_@cpe-98-156-4-161.kc.res.rr.com)
2021-09-20 01:16:28 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-20 01:16:39 +0200lavaman(~lavaman@98.38.249.169)
2021-09-20 01:16:40 +0200caef^(~caef@12.203.127.82)
2021-09-20 01:17:26 +0200hnOsmium0001(uid453710@id-453710.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-09-20 01:17:27 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-09-20 01:17:42 +0200MQ-17J(~MQ-17J@8.21.10.6)
2021-09-20 01:21:22 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-09-20 01:24:42 +0200NoirCode(~Izem@bras-base-london1483w-grc-31-74-12-158-179.dsl.bell.ca)
2021-09-20 01:25:13 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-09-20 01:26:50 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c)
2021-09-20 01:27:55 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 260 seconds)
2021-09-20 01:31:16 +0200_xor(~xor@74.215.232.67)
2021-09-20 01:31:38 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c) (Ping timeout: 260 seconds)
2021-09-20 01:32:13 +0200solomon(~solomon@cpe-76-168-7-139.socal.res.rr.com)
2021-09-20 01:34:27 +0200hnOsmium0001(uid453710@id-453710.hampstead.irccloud.com)
2021-09-20 01:34:37 +0200Guest85(~Guest85@dynamic-78-30-180-145.adsl.eunet.rs) (Quit: Client closed)
2021-09-20 01:39:05 +0200sheddow(~sheddow@2001:4652:3064:0:855:8e28:191f:6ce6) (Ping timeout: 256 seconds)
2021-09-20 01:43:16 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-09-20 01:51:24 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-09-20 01:51:44 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-09-20 01:53:42 +0200nfd(~nfd@user/nfd)
2021-09-20 01:54:19 +0200solomon(~solomon@cpe-76-168-7-139.socal.res.rr.com) (Quit: Client closed)
2021-09-20 01:54:48 +0200solomon(~quassel@cpe-76-168-7-139.socal.res.rr.com)
2021-09-20 02:04:49 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c)
2021-09-20 02:08:09 +0200CnnibisIndica(~herb@user/mesaboogie)
2021-09-20 02:08:12 +0200NoirCode_(~Izem@8.21.10.23)
2021-09-20 02:10:52 +0200NoirCode(~Izem@bras-base-london1483w-grc-31-74-12-158-179.dsl.bell.ca) (Ping timeout: 252 seconds)
2021-09-20 02:14:40 +0200kimjetwav(~user@2607:fea8:235f:9730:89c:c105:9071:1b0f) (Ping timeout: 240 seconds)
2021-09-20 02:16:46 +0200alzgh(~alzgh@user/alzgh) (Quit: Client closed)
2021-09-20 02:16:56 +0200kimjetwav(~user@2607:fea8:235f:9730:23ff:5f44:89b9:6bce)
2021-09-20 02:16:57 +0200roboguy_(~roboguy_@cpe-98-156-4-161.kc.res.rr.com) ()
2021-09-20 02:19:54 +0200kimjetwav(~user@2607:fea8:235f:9730:23ff:5f44:89b9:6bce) (Remote host closed the connection)
2021-09-20 02:20:13 +0200kimjetwav(~user@2607:fea8:235f:9730:f832:edbc:11d:9a2e)
2021-09-20 02:24:10 +0200tommd(~tommd@75-164-130-101.ptld.qwest.net)
2021-09-20 02:27:51 +0200gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-09-20 02:29:10 +0200tommd(~tommd@75-164-130-101.ptld.qwest.net) (Ping timeout: 252 seconds)
2021-09-20 02:30:37 +0200tommd(~tommd@75-164-130-101.ptld.qwest.net)
2021-09-20 02:33:58 +0200NoirCode_(~Izem@8.21.10.23) (Ping timeout: 252 seconds)
2021-09-20 02:34:18 +0200yauhsien(~yauhsien@118-167-47-202.dynamic-ip.hinet.net)
2021-09-20 02:34:51 +0200gioyik(~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds)
2021-09-20 02:35:56 +0200fawful(~guy@c-76-104-217-93.hsd1.wa.comcast.net) (Quit: WeeChat 3.2)
2021-09-20 02:39:03 +0200yauhsien(~yauhsien@118-167-47-202.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-09-20 02:39:43 +0200NoirCode_(~Izem@2a09:bac0:14::815:a17)
2021-09-20 02:41:43 +0200NoirCode_(~Izem@2a09:bac0:14::815:a17) (Client Quit)
2021-09-20 02:46:33 +0200mousey(~sky@gateway/tor-sasl/mousey) (Ping timeout: 276 seconds)
2021-09-20 02:46:39 +0200solomon(~quassel@cpe-76-168-7-139.socal.res.rr.com) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2021-09-20 02:46:40 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2021-09-20 02:49:57 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-09-20 02:49:57 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-09-20 02:50:00 +0200allbery_bgeekosaur
2021-09-20 02:52:02 +0200alx741(~alx741@186.178.109.159) (Quit: alx741)
2021-09-20 02:52:11 +0200kimjetwav(~user@2607:fea8:235f:9730:f832:edbc:11d:9a2e) (Remote host closed the connection)
2021-09-20 02:52:29 +0200kimjetwav(~user@2607:fea8:235f:9730:33fd:e247:ee73:4faa)
2021-09-20 02:54:40 +0200gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-09-20 02:55:21 +0200solomon(~quassel@cpe-76-168-7-139.socal.res.rr.com)
2021-09-20 02:59:33 +0200gioyik(~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds)
2021-09-20 03:08:01 +0200solomon_(~quassel@cpe-76-168-7-139.socal.res.rr.com)
2021-09-20 03:08:01 +0200solomon(~quassel@cpe-76-168-7-139.socal.res.rr.com) (Read error: Connection reset by peer)
2021-09-20 03:08:42 +0200tommd(~tommd@75-164-130-101.ptld.qwest.net) (Ping timeout: 260 seconds)
2021-09-20 03:10:06 +0200solomon_(~quassel@cpe-76-168-7-139.socal.res.rr.com) (Remote host closed the connection)
2021-09-20 03:10:25 +0200kimjetwav(~user@2607:fea8:235f:9730:33fd:e247:ee73:4faa) (Ping timeout: 252 seconds)
2021-09-20 03:10:28 +0200solomon(~quassel@cpe-76-168-7-139.socal.res.rr.com)
2021-09-20 03:12:47 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 265 seconds)
2021-09-20 03:13:35 +0200xff0x(~xff0x@2001:1a81:5327:1a00:7ba6:6c4f:f759:2f72) (Ping timeout: 268 seconds)
2021-09-20 03:14:51 +0200xff0x(~xff0x@2001:1a81:5364:5d00:710d:a4b:8dea:f190)
2021-09-20 03:18:13 +0200haykam1(~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
2021-09-20 03:18:26 +0200haykam1(~haykam@static.100.2.21.65.clients.your-server.de)
2021-09-20 03:18:35 +0200_xor(~xor@74.215.232.67) (Quit: bbiab)
2021-09-20 03:20:59 +0200MQ-17J(~MQ-17J@8.21.10.6) (Ping timeout: 268 seconds)
2021-09-20 03:22:48 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-20 03:23:15 +0200yauhsien(~yauhsien@118-167-47-202.dynamic-ip.hinet.net)
2021-09-20 03:24:31 +0200MQ-17J(~MQ-17J@2607:fb90:4f:6e7e:1ee7:8f90:78d9:1775)
2021-09-20 03:30:50 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-20 03:30:50 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-20 03:30:50 +0200wroathe(~wroathe@user/wroathe)
2021-09-20 03:31:52 +0200hiruji(~hiruji@user/hiruji) (Ping timeout: 268 seconds)
2021-09-20 03:32:02 +0200hiruji(~hiruji@user/hiruji)
2021-09-20 03:32:51 +0200solomon(~quassel@cpe-76-168-7-139.socal.res.rr.com) (Remote host closed the connection)
2021-09-20 03:33:15 +0200solomon(~quassel@cpe-76-168-7-139.socal.res.rr.com)
2021-09-20 03:36:24 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2021-09-20 03:38:19 +0200solomon(~quassel@cpe-76-168-7-139.socal.res.rr.com) (Remote host closed the connection)
2021-09-20 03:39:05 +0200vysn(~vysn@user/vysn) (Remote host closed the connection)
2021-09-20 03:40:00 +0200lavaman(~lavaman@98.38.249.169)
2021-09-20 03:44:18 +0200solomon(~quassel@cpe-76-168-7-139.socal.res.rr.com)
2021-09-20 03:49:15 +0200solomon(~quassel@cpe-76-168-7-139.socal.res.rr.com) (Remote host closed the connection)
2021-09-20 03:52:41 +0200MQ-17J(~MQ-17J@2607:fb90:4f:6e7e:1ee7:8f90:78d9:1775) (Read error: Connection reset by peer)
2021-09-20 03:53:19 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-09-20 03:55:55 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-09-20 04:01:08 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-20 04:01:09 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-20 04:01:09 +0200wroathe(~wroathe@user/wroathe)
2021-09-20 04:04:48 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Quit: ZNC 1.8.2 - https://znc.in)
2021-09-20 04:06:45 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-09-20 04:08:51 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 265 seconds)
2021-09-20 04:14:36 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
2021-09-20 04:15:27 +0200machinedgod(~machinedg@24.105.81.50)
2021-09-20 04:17:24 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-09-20 04:17:58 +0200td_(~td@muedsl-82-207-238-223.citykom.de) (Ping timeout: 252 seconds)
2021-09-20 04:18:06 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-09-20 04:23:38 +0200yinghua(~yinghua@2800:2121:1400:1db:8865:3e5b:fd2e:180) (Quit: Leaving)
2021-09-20 04:26:10 +0200waleee(~waleee@h-98-128-228-119.na.cust.bahnhof.se) (Ping timeout: 252 seconds)
2021-09-20 04:32:16 +0200gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-09-20 04:32:42 +0200finley(~finley@035-134-237-178.res.spectrum.com)
2021-09-20 04:34:50 +0200td_(~td@muedsl-82-207-238-087.citykom.de)
2021-09-20 04:36:18 +0200finley(~finley@035-134-237-178.res.spectrum.com) (Client Quit)
2021-09-20 04:40:44 +0200chris(~chris@81.96.113.213)
2021-09-20 04:40:47 +0200chrisGuest9008
2021-09-20 04:45:11 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
2021-09-20 04:48:54 +0200yauhsien(~yauhsien@118-167-47-202.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-09-20 04:50:55 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2021-09-20 04:54:16 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-09-20 04:55:15 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 265 seconds)
2021-09-20 04:57:02 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-09-20 05:00:27 +0200lavaman(~lavaman@98.38.249.169)
2021-09-20 05:06:18 +0200gioyik(~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds)
2021-09-20 05:06:59 +0200pfurla_(~pfurla@64.145.79.171)
2021-09-20 05:10:10 +0200pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 252 seconds)
2021-09-20 05:15:28 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 268 seconds)
2021-09-20 05:19:25 +0200wei2912(~wei2912@112.199.250.21)
2021-09-20 05:20:11 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Quit: Leaving)
2021-09-20 05:22:35 +0200yauhsien(~yauhsien@118-167-47-202.dynamic-ip.hinet.net)
2021-09-20 05:29:03 +0200Guest9008(~chris@81.96.113.213) (Remote host closed the connection)
2021-09-20 05:32:18 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-09-20 05:33:29 +0200_xor(~xor@74.215.232.67)
2021-09-20 05:45:30 +0200yauhsien(~yauhsien@118-167-47-202.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-09-20 05:45:58 +0200gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-09-20 05:47:32 +0200neo1(~neo3@cpe-292712.ip.primehome.com)
2021-09-20 05:53:02 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-20 06:12:03 +0200solomon(~quassel@cpe-76-168-7-139.socal.res.rr.com)
2021-09-20 06:15:18 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-09-20 06:25:36 +0200gioyik(~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds)
2021-09-20 06:26:06 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-09-20 06:29:57 +0200cross(~cross@spitfire.i.gajendra.net) (*.net *.split)
2021-09-20 06:29:57 +0200ptrcmd(~ptrcmd@user/ptrcmd) (*.net *.split)
2021-09-20 06:29:57 +0200parseval(sid239098@helmsley.irccloud.com) (*.net *.split)
2021-09-20 06:29:57 +0200rtpg(sid443069@id-443069.ilkley.irccloud.com) (*.net *.split)
2021-09-20 06:29:57 +0200the-coot[m](~the-cootm@2001:470:69fc:105::95f) (*.net *.split)
2021-09-20 06:29:57 +0200rune(sid21167@id-21167.ilkley.irccloud.com) (*.net *.split)
2021-09-20 06:29:57 +0200SethTisue__(sid14912@id-14912.ilkley.irccloud.com) (*.net *.split)
2021-09-20 06:29:57 +0200caasih(sid13241@id-13241.ilkley.irccloud.com) (*.net *.split)
2021-09-20 06:29:57 +0200sa1(sid7690@id-7690.ilkley.irccloud.com) (*.net *.split)
2021-09-20 06:29:57 +0200jonrh(sid5185@id-5185.ilkley.irccloud.com) (*.net *.split)
2021-09-20 06:29:57 +0200psydroid(~psydroid@user/psydroid) (*.net *.split)
2021-09-20 06:29:57 +0200rosariopulella[m(~rosariopu@2001:470:69fc:105::a57) (*.net *.split)
2021-09-20 06:29:57 +0200enemeth79(sid309041@id-309041.lymington.irccloud.com) (*.net *.split)
2021-09-20 06:29:57 +0200gaze___(sid387101@id-387101.helmsley.irccloud.com) (*.net *.split)
2021-09-20 06:29:57 +0200bjs(sid190364@user/bjs) (*.net *.split)
2021-09-20 06:29:57 +0200NiKaN(sid385034@id-385034.helmsley.irccloud.com) (*.net *.split)
2021-09-20 06:29:57 +0200hiepph[m](~hiepphmat@2001:470:69fc:105::e3a8) (*.net *.split)
2021-09-20 06:29:57 +0200jneira[m](~jneiramat@2001:470:69fc:105::d729) (*.net *.split)
2021-09-20 06:29:57 +0200maerwald[m](~maerwaldm@user/maerwald) (*.net *.split)
2021-09-20 06:29:58 +0200lwe[m](~dendrumat@2001:470:69fc:105::2f9b) (*.net *.split)
2021-09-20 06:29:58 +0200ericson2314(~ericson23@2001:470:69fc:105::70c) (*.net *.split)
2021-09-20 06:29:58 +0200MatrixTravelerbo(~voyagert2@2001:470:69fc:105::22) (*.net *.split)
2021-09-20 06:29:58 +0200blades(~blades@204.48.29.163) (*.net *.split)
2021-09-20 06:29:58 +0200noctux(~noctux@user/noctux) (*.net *.split)
2021-09-20 06:29:58 +0200adamCS(~adamCS@ec2-34-207-160-255.compute-1.amazonaws.com) (*.net *.split)
2021-09-20 06:29:58 +0200asm(~alexander@user/asm) (*.net *.split)
2021-09-20 06:29:58 +0200mht(~mht@2a03:b0c0:3:e0::1e2:c001) (*.net *.split)
2021-09-20 06:29:58 +0200xnbya(~xnbya@2a01:4f8:c17:cbdd::1) (*.net *.split)
2021-09-20 06:29:58 +0200xacktm(xacktm@user/xacktm) (*.net *.split)
2021-09-20 06:29:58 +0200even4void(even4void@came.here.for-some.fun) (*.net *.split)
2021-09-20 06:30:05 +0200rune(sid21167@id-21167.ilkley.irccloud.com)
2021-09-20 06:30:05 +0200xnbya(~xnbya@2a01:4f8:c17:cbdd::1)
2021-09-20 06:30:06 +0200parseval(sid239098@id-239098.helmsley.irccloud.com)
2021-09-20 06:30:06 +0200ptrcmd(~ptrcmd@user/ptrcmd)
2021-09-20 06:30:13 +0200enemeth79(sid309041@id-309041.lymington.irccloud.com)
2021-09-20 06:30:14 +0200bjs(sid190364@user/bjs)
2021-09-20 06:30:17 +0200gaze___(sid387101@id-387101.helmsley.irccloud.com)
2021-09-20 06:30:19 +0200asm(~alexander@burner.asm89.io)
2021-09-20 06:30:25 +0200SethTisue__(sid14912@id-14912.ilkley.irccloud.com)
2021-09-20 06:30:26 +0200cross(~cross@spitfire.i.gajendra.net)
2021-09-20 06:30:26 +0200mht(~mht@mht.wtf)
2021-09-20 06:30:48 +0200jonrh(sid5185@id-5185.ilkley.irccloud.com)
2021-09-20 06:30:49 +0200caasih(sid13241@id-13241.ilkley.irccloud.com)
2021-09-20 06:30:50 +0200NiKaN(sid385034@id-385034.helmsley.irccloud.com)
2021-09-20 06:30:55 +0200rtpg(sid443069@id-443069.ilkley.irccloud.com)
2021-09-20 06:30:55 +0200sa1(sid7690@id-7690.ilkley.irccloud.com)
2021-09-20 06:30:56 +0200blades(~blades@204.48.29.163)
2021-09-20 06:31:05 +0200noctux(~noctux@user/noctux)
2021-09-20 06:31:08 +0200gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-09-20 06:31:13 +0200adamCS(~adamCS@ec2-34-207-160-255.compute-1.amazonaws.com)
2021-09-20 06:31:36 +0200xacktm(xacktm@user/xacktm)
2021-09-20 06:31:54 +0200maerwald[m](~maerwaldm@2001:470:69fc:105::1ee)
2021-09-20 06:32:06 +0200even4void(even4void@came.here.for-some.fun)
2021-09-20 06:36:14 +0200hiepph[m](~hiepphmat@2001:470:69fc:105::e3a8)
2021-09-20 06:37:25 +0200rosariopulella[m(~rosariopu@2001:470:69fc:105::a57)
2021-09-20 06:38:30 +0200the-coot[m](~the-cootm@2001:470:69fc:105::95f)
2021-09-20 06:39:50 +0200jneira[m](~jneiramat@2001:470:69fc:105::d729)
2021-09-20 06:40:00 +0200ericson2314(~ericson23@2001:470:69fc:105::70c)
2021-09-20 06:40:18 +0200lwe[m](~dendrumat@2001:470:69fc:105::2f9b)
2021-09-20 06:40:18 +0200psydroid(~psydroid@user/psydroid)
2021-09-20 06:41:38 +0200ixlun(~ixlun@2001:470:69fc:105::41b3) (*.net *.split)
2021-09-20 06:41:38 +0200IgnatInsarov[m](~kindaroma@2001:470:69fc:105::f5d9) (*.net *.split)
2021-09-20 06:41:38 +0200reddishblue[m](~reddishbl@2001:470:69fc:105::21eb) (*.net *.split)
2021-09-20 06:41:38 +0200barrucadu(~barrucadu@carcosa.barrucadu.co.uk) (*.net *.split)
2021-09-20 06:41:38 +0200hexagoxe-(~hexagoxel@2a01:4f8:c0c:e::2) (*.net *.split)
2021-09-20 06:41:38 +0200acro(~acro@user/acro) (*.net *.split)
2021-09-20 06:41:38 +0200V(~v@anomalous.eu) (*.net *.split)
2021-09-20 06:41:38 +0200lightandlight(sid135476@id-135476.helmsley.irccloud.com) (*.net *.split)
2021-09-20 06:41:38 +0200truckasaurus(sid457088@id-457088.helmsley.irccloud.com) (*.net *.split)
2021-09-20 06:41:38 +0200tnks(sid412124@id-412124.helmsley.irccloud.com) (*.net *.split)
2021-09-20 06:41:38 +0200Xnuk(~xnuk@45.76.202.58) (*.net *.split)
2021-09-20 06:41:38 +0200mrianbloom(sid350277@id-350277.ilkley.irccloud.com) (*.net *.split)
2021-09-20 06:41:38 +0200edwardk(sid47016@haskell/developer/edwardk) (*.net *.split)
2021-09-20 06:41:38 +0200bw(sid2730@user/betawaffle) (*.net *.split)
2021-09-20 06:41:38 +0200bb010g(~bb010g@2001:470:69fc:105::9a5) (*.net *.split)
2021-09-20 06:41:38 +0200jakefromstatefar(~jakefroms@2001:470:69fc:105::15ef) (*.net *.split)
2021-09-20 06:41:38 +0200reza[m](~rezaphone@2001:470:69fc:105::3eda) (*.net *.split)
2021-09-20 06:41:38 +0200aria(sid380617@id-380617.lymington.irccloud.com) (*.net *.split)
2021-09-20 06:41:38 +0200integral(sid296274@user/integral) (*.net *.split)
2021-09-20 06:41:38 +0200hsiktas(sid224847@id-224847.lymington.irccloud.com) (*.net *.split)
2021-09-20 06:41:38 +0200degraafk(sid71464@id-71464.lymington.irccloud.com) (*.net *.split)
2021-09-20 06:41:38 +0200iphy(sid67735@id-67735.lymington.irccloud.com) (*.net *.split)
2021-09-20 06:41:38 +0200NinjaTrappeur(~ninja@user/ninjatrappeur) (*.net *.split)
2021-09-20 06:41:38 +0200craige[m](~craigemcw@2001:470:69fc:105::35f1) (*.net *.split)
2021-09-20 06:41:39 +0200robertm(robertm@rojoma.com) (*.net *.split)
2021-09-20 06:41:39 +0200kritzefitz(~kritzefit@picard.host.weltraumschlangen.de) (*.net *.split)
2021-09-20 06:41:39 +0200nf(~n@monade.li) (*.net *.split)
2021-09-20 06:41:39 +0200DigitalKiwi(~kiwi@2604:a880:400:d0::12fc:5001) (*.net *.split)
2021-09-20 06:41:39 +0200krjst(~krjst@2604:a880:800:c1::16b:8001) (*.net *.split)
2021-09-20 06:41:39 +0200ringo_(~ringo@157.230.117.128) (*.net *.split)
2021-09-20 06:41:39 +0200emergence(~emergence@vm0.max-p.me) (*.net *.split)
2021-09-20 06:41:39 +0200dyniec(~dyniec@mail.dybiec.info) (*.net *.split)
2021-09-20 06:41:39 +0200vemek(~vemek@2a03:b0c0:2:d0::d98:1) (*.net *.split)
2021-09-20 06:41:39 +0200cocreature(~moritz@2a03:b0c0:3:d0::c8:f001) (*.net *.split)
2021-09-20 06:41:39 +0200thonkpod(~thonkpod@user/thonkpod) (*.net *.split)
2021-09-20 06:41:39 +0200bsima(~bsima@simatime.com) (*.net *.split)
2021-09-20 06:41:47 +0200mrianbloom(sid350277@id-350277.ilkley.irccloud.com)
2021-09-20 06:41:50 +0200iphy(sid67735@id-67735.lymington.irccloud.com)
2021-09-20 06:41:50 +0200truckasaurus(sid457088@id-457088.helmsley.irccloud.com)
2021-09-20 06:41:50 +0200kritzefitz(~kritzefit@picard.host.weltraumschlangen.de)
2021-09-20 06:41:54 +0200degraafk(sid71464@id-71464.lymington.irccloud.com)
2021-09-20 06:41:55 +0200dyniec(~dyniec@mail.dybiec.info)
2021-09-20 06:41:56 +0200emergence(~emergence@vm0.max-p.me)
2021-09-20 06:41:56 +0200Xnuk(~xnuk@45.76.202.58)
2021-09-20 06:42:00 +0200lightandlight(sid135476@id-135476.helmsley.irccloud.com)
2021-09-20 06:42:05 +0200V(~v@anomalous.eu)
2021-09-20 06:42:09 +0200barrucadu(~barrucadu@carcosa.barrucadu.co.uk)
2021-09-20 06:42:10 +0200robertm(robertm@lattice.rojoma.com)
2021-09-20 06:42:13 +0200hexagoxel(~hexagoxel@hexagoxel.de)
2021-09-20 06:42:14 +0200bsima(~bsima@simatime.com)
2021-09-20 06:42:16 +0200acro(~acro@user/acro)
2021-09-20 06:42:17 +0200thonkpod(~thonkpod@2001:19f0:ac01:b46:5400:1ff:fec7:d73d)
2021-09-20 06:42:19 +0200NinjaTrappeur(~ninja@2a00:5880:1404:102::)
2021-09-20 06:42:19 +0200NinjaTrappeur(~ninja@2a00:5880:1404:102::) (Signing in (NinjaTrappeur))
2021-09-20 06:42:19 +0200NinjaTrappeur(~ninja@user/ninjatrappeur)
2021-09-20 06:42:21 +0200thonkpod(~thonkpod@2001:19f0:ac01:b46:5400:1ff:fec7:d73d) (Changing host)
2021-09-20 06:42:21 +0200thonkpod(~thonkpod@user/thonkpod)
2021-09-20 06:42:26 +0200aria(sid380617@2a03:5180:f:2::5:cec9)
2021-09-20 06:42:33 +0200integral(sid296274@user/integral)
2021-09-20 06:42:34 +0200edwardk(sid47016@haskell/developer/edwardk)
2021-09-20 06:42:35 +0200DigitalKiwi(~kiwi@192.241.157.119)
2021-09-20 06:42:39 +0200cocreature(~moritz@2a03:b0c0:3:d0::c8:f001)
2021-09-20 06:42:41 +0200ringo_(~ringo@157.230.117.128)
2021-09-20 06:42:42 +0200tnks(sid412124@2a03:5180:f:1::6:49dc)
2021-09-20 06:42:44 +0200vemek(~vemek@2a03:b0c0:2:d0::d98:1)
2021-09-20 06:42:47 +0200bw(sid2730@user/betawaffle)
2021-09-20 06:42:50 +0200hsiktas(sid224847@2a03:5180:f:2::3:6e4f)
2021-09-20 06:42:54 +0200MatrixTravelerbo(~voyagert2@2001:470:69fc:105::22)
2021-09-20 06:43:16 +0200nf(~n@monade.li)
2021-09-20 06:43:32 +0200krjst(~krjst@2604:a880:800:c1::16b:8001)
2021-09-20 06:43:49 +0200eruditass(uid248673@id-248673.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2021-09-20 06:44:33 +0200bb010g(~bb010g@2001:470:69fc:105::9a5)
2021-09-20 06:45:00 +0200reddishblue[m](~reddishbl@2001:470:69fc:105::21eb)
2021-09-20 06:45:10 +0200IgnatInsarov[m](~kindaroma@2001:470:69fc:105::f5d9)
2021-09-20 06:46:13 +0200ixlun(~ixlun@2001:470:69fc:105::41b3)
2021-09-20 06:46:25 +0200robertm(robertm@lattice.rojoma.com) (Client Quit)
2021-09-20 06:46:33 +0200robertm(robertm@lattice.rojoma.com)
2021-09-20 06:47:23 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-09-20 06:50:27 +0200reza[m](~rezaphone@2001:470:69fc:105::3eda)
2021-09-20 06:51:12 +0200craige[m](~craigemcw@2001:470:69fc:105::35f1)
2021-09-20 06:51:45 +0200jakefromstatefar(~jakefroms@2001:470:69fc:105::15ef)
2021-09-20 06:53:49 +0200Sgeo(~Sgeo@user/sgeo)
2021-09-20 06:54:11 +0200ChanServ(ChanServ@services.libera.chat) (shutting down)
2021-09-20 06:54:38 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 265 seconds)
2021-09-20 06:58:28 +0200ChanServ(ChanServ@services.libera.chat)
2021-09-20 06:58:28 +0200zinc.libera.chat+o ChanServ
2021-09-20 07:07:45 +0200lavaman(~lavaman@98.38.249.169)
2021-09-20 07:09:47 +0200eruditass(uid248673@id-248673.uxbridge.irccloud.com)
2021-09-20 07:10:55 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-20 07:10:55 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-20 07:10:55 +0200wroathe(~wroathe@user/wroathe)
2021-09-20 07:15:10 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2021-09-20 07:16:22 +0200eruditass(uid248673@id-248673.uxbridge.irccloud.com) ()
2021-09-20 07:18:29 +0200eruditass(uid248673@id-248673.uxbridge.irccloud.com)
2021-09-20 07:25:11 +0200cjb(~cjbayliss@user/cjb) ()
2021-09-20 07:35:08 +0200yauhsien(~yauhsien@118-167-47-202.dynamic-ip.hinet.net)
2021-09-20 07:35:57 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-09-20 07:36:19 +0200fendor(~fendor@178.165.185.65.wireless.dyn.drei.com)
2021-09-20 07:38:03 +0200 <Guest372> inside Either do notation, could I turn Just 3 to Right 3?
2021-09-20 07:38:24 +0200 <Guest372> by what?
2021-09-20 07:39:25 +0200 <dsal> It's not clear what you mean by that.
2021-09-20 07:39:26 +0200 <pavonia> You can use pattern matching
2021-09-20 07:39:56 +0200 <dsal> If you have a left and you bind, it's not going to move forward.
2021-09-20 07:41:42 +0200mikoto-chan(~mikoto-ch@83.137.2.253)
2021-09-20 07:41:43 +0200 <Guest372> a :: Either String Int; a = do { x <- Just 3; return x } Just 3 inside Either is not right
2021-09-20 07:41:51 +0200 <dsal> Oh, I'm too dumb to be answering questions right now.
2021-09-20 07:42:13 +0200 <dsal> @hoogle maybeToRight
2021-09-20 07:42:14 +0200 <lambdabot> Data.Either.Combinators maybeToRight :: b -> Maybe a -> Either b a
2021-09-20 07:42:14 +0200 <lambdabot> Protolude maybeToRight :: l -> Maybe r -> Either l r
2021-09-20 07:42:14 +0200 <lambdabot> Protolude.Either maybeToRight :: l -> Maybe r -> Either l r
2021-09-20 07:42:20 +0200 <koala_man> Guest372: what if it's Nothing?
2021-09-20 07:42:28 +0200gioyik(~gioyik@gateway/tor-sasl/gioyik) (Quit: WeeChat 3.1)
2021-09-20 07:42:39 +0200 <Guest372> Nothing then Left something
2021-09-20 07:42:49 +0200 <dsal> You have to say what the something is.
2021-09-20 07:43:04 +0200 <Guest372> Left "something"
2021-09-20 07:43:29 +0200 <dsal> x <- maybeToRight "something" (Just 3)
2021-09-20 07:43:43 +0200 <Guest372> :t maybe
2021-09-20 07:43:44 +0200 <lambdabot> b -> (a -> b) -> Maybe a -> b
2021-09-20 07:44:22 +0200 <dsal> > maybe (Left "something" Right (Just 3)
2021-09-20 07:44:24 +0200 <lambdabot> <hint>:1:40: error:
2021-09-20 07:44:24 +0200 <lambdabot> parse error (possibly incorrect indentation or mismatched brackets)
2021-09-20 07:44:30 +0200 <dsal> > maybe (Left "something") Right (Just 3)
2021-09-20 07:44:31 +0200 <lambdabot> Right 3
2021-09-20 07:44:52 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 252 seconds)
2021-09-20 07:47:13 +0200 <Guest372> right, b :: Either String Int here
2021-09-20 07:48:33 +0200 <Guest372> do all monad have something like `maybe' to turn one moand to another?
2021-09-20 07:48:52 +0200 <dsal> No. That's not really a sensible thing to do.
2021-09-20 07:49:03 +0200 <Guest372> turn a monadic value to another
2021-09-20 07:49:23 +0200 <dsal> That's not what you're doing here anyway.
2021-09-20 07:49:31 +0200 <dsal> They do all have fmap, which is the actual thing you want.
2021-09-20 07:49:43 +0200 <dsal> The transformation you're doing doesn't have anything to do with it being a monad.
2021-09-20 07:49:51 +0200 <Guest372> but fmap wont change monad
2021-09-20 07:51:08 +0200 <Guest372> :t (:~:)
2021-09-20 07:51:09 +0200 <lambdabot> error: Data constructor not in scope: :~:
2021-09-20 07:51:50 +0200yauhsien(~yauhsien@118-167-47-202.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-09-20 07:53:05 +0200yauhsien(~yauhsien@118-167-47-202.dynamic-ip.hinet.net)
2021-09-20 07:53:09 +0200 <dsal> Sure, so in this case, you have some value and you want that value to be pure in the current monad. That's `pure`
2021-09-20 07:53:11 +0200yauhsien(~yauhsien@118-167-47-202.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-09-20 07:53:22 +0200 <dsal> :t maybe fail pure
2021-09-20 07:53:23 +0200 <lambdabot> MonadFail m => Maybe (m a) -> String -> m a
2021-09-20 07:53:37 +0200 <dsal> :t maybe (fail "wtf") pure
2021-09-20 07:53:38 +0200 <lambdabot> MonadFail m => Maybe a -> m a
2021-09-20 07:54:29 +0200 <dsal> But that's only because the `maybe` function can take (sometimes) take a value out of the Maybe. You can't do that in general. And even in this case, it acknowledges that you can't always do that.
2021-09-20 07:55:06 +0200mikoto-chan(~mikoto-ch@83.137.2.253) (Quit: mikoto-chan)
2021-09-20 07:55:20 +0200 <kaol> If there was a general operator that would tranform one monad to another, it would make them useless.
2021-09-20 08:00:08 +0200 <Guest372> what about "natural transformation"?
2021-09-20 08:01:08 +0200 <Guest372> :t (~>)
2021-09-20 08:01:09 +0200 <lambdabot> error:
2021-09-20 08:01:10 +0200 <lambdabot> • Variable not in scope: ~>
2021-09-20 08:01:10 +0200 <lambdabot> • Perhaps you meant one of these:
2021-09-20 08:01:43 +0200qbt(~edun@user/edun)
2021-09-20 08:05:05 +0200chomwitt(~chomwitt@2a02:587:dc15:500:12c3:7bff:fe6d:d374)
2021-09-20 08:06:41 +0200michalz(~michalz@185.246.204.61)
2021-09-20 08:09:10 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-20 08:09:10 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-20 08:09:10 +0200wroathe(~wroathe@user/wroathe)
2021-09-20 08:10:05 +0200 <Axman6> Guest372: how would you turn Maybe a into Identity a?
2021-09-20 08:10:17 +0200 <Axman6> or Proxy a into anything else?
2021-09-20 08:11:12 +0200oxide(~lambda@user/oxide)
2021-09-20 08:13:59 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 246 seconds)
2021-09-20 08:15:58 +0200caef^(~caef@12.203.127.82) (Remote host closed the connection)
2021-09-20 08:18:51 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-09-20 08:19:24 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-09-20 08:19:46 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-09-20 08:20:38 +0200Gurkenglas(~Gurkengla@dslb-002-207-014-195.002.207.pools.vodafone-ip.de)
2021-09-20 08:23:19 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-20 08:24:20 +0200 <Guest372> I dont know
2021-09-20 08:28:59 +0200michalz(~michalz@185.246.204.61) (Remote host closed the connection)
2021-09-20 08:30:59 +0200yauhsien(~yauhsien@118-167-47-202.dynamic-ip.hinet.net)
2021-09-20 08:31:26 +0200michalz(~michalz@185.246.204.62)
2021-09-20 08:35:29 +0200gawen(~gawen@user/gawen) (Quit: cya)
2021-09-20 08:35:49 +0200gawen(~gawen@user/gawen)
2021-09-20 08:36:31 +0200pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-09-20 08:37:39 +0200cfricke(~cfricke@user/cfricke)
2021-09-20 08:39:34 +0200pfurla_(~pfurla@64.145.79.171) (Ping timeout: 260 seconds)
2021-09-20 08:44:14 +0200yauhsien(~yauhsien@118-167-47-202.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-09-20 08:45:10 +0200oxide(~lambda@user/oxide) (Ping timeout: 240 seconds)
2021-09-20 08:46:27 +0200oxide(~lambda@user/oxide)
2021-09-20 08:46:45 +0200max22-(~maxime@2a01cb08833598008dc4cca798d182ee.ipv6.abo.wanadoo.fr)
2021-09-20 08:47:50 +0200michalz(~michalz@185.246.204.62) (Remote host closed the connection)
2021-09-20 08:47:57 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:2927:efa3:44fc:5df6)
2021-09-20 08:49:02 +0200michalz(~michalz@185.246.204.33)
2021-09-20 08:49:34 +0200chele(~chele@user/chele)
2021-09-20 08:50:02 +0200Brumaire(~quassel@37.171.164.139)
2021-09-20 08:56:02 +0200jtomas_(~jtomas@95.red-88-11-64.dynamicip.rima-tde.net)
2021-09-20 08:57:23 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-09-20 09:01:09 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-20 09:07:51 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-09-20 09:12:43 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-09-20 09:12:43 +0200jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl)
2021-09-20 09:17:23 +0200ziman(~ziman@c25-5.condornet.sk) (Changing host)
2021-09-20 09:17:23 +0200ziman(~ziman@user/ziman)
2021-09-20 09:22:04 +0200Brumaire(~quassel@37.171.164.139) (Ping timeout: 252 seconds)
2021-09-20 09:23:12 +0200chris(~chris@81.96.113.213)
2021-09-20 09:23:16 +0200chrisGuest1692
2021-09-20 09:24:50 +0200vysn(~vysn@user/vysn)
2021-09-20 09:28:07 +0200 <hololeap> Guest372: f :: Maybe a -> Identity a ; f (Just x) = Identity x ; f Nothing = Identity ? -- there is way to do it for one of the cases
2021-09-20 09:29:04 +0200 <hololeap> so if you think about natural transformations as something akin to functions, this one would be partial -- one of the inputs would create an undefined output
2021-09-20 09:29:18 +0200Brumaire(~quassel@37.171.164.139)
2021-09-20 09:29:40 +0200nfd(~nfd@user/nfd) (Ping timeout: 240 seconds)
2021-09-20 09:29:46 +0200natechan(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2021-09-20 09:31:53 +0200ubert(~Thunderbi@91.141.77.1.wireless.dyn.drei.com)
2021-09-20 09:32:20 +0200NinjaTrappeur(~ninja@user/ninjatrappeur) (Quit: WeeChat 3.1)
2021-09-20 09:32:36 +0200NinjaTrappeur(~ninja@user/ninjatrappeur)
2021-09-20 09:33:04 +0200CnnibisIndica(~herb@user/mesaboogie) (Ping timeout: 252 seconds)
2021-09-20 09:33:40 +0200ulvarrefr(~user@185.24.53.152) (Remote host closed the connection)
2021-09-20 09:33:46 +0200natechan(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-09-20 09:34:52 +0200vaucouleur(~vaucouleu@78.194.70.105)
2021-09-20 09:35:04 +0200skn2skn
2021-09-20 09:36:56 +0200 <hololeap> however, since Maybe has two branches and Identity has one, you could supply a default value for when you are given a Nothing: a -> Maybe a -> Identity a
2021-09-20 09:37:41 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-09-20 09:37:48 +0200 <hololeap> that's essentially the `maybe` function, which is specific to how Maybe is structured. there is no general way to do this
2021-09-20 09:40:53 +0200 <hololeap> except to use haskell as a general purpose language, but that's nothing new
2021-09-20 09:44:15 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-09-20 09:46:24 +0200neurocyte013(~neurocyte@IP-213157011203.dynamic.medianet-world.de)
2021-09-20 09:46:24 +0200neurocyte013(~neurocyte@IP-213157011203.dynamic.medianet-world.de) (Changing host)
2021-09-20 09:46:24 +0200neurocyte013(~neurocyte@user/neurocyte)
2021-09-20 09:46:35 +0200nfd(~nfd@user/nfd)
2021-09-20 09:46:48 +0200rond_(~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438)
2021-09-20 09:47:35 +0200ulvarrefr(~user@185.24.53.152)
2021-09-20 09:50:08 +0200mc47(~mc47@xmonad/TheMC47)
2021-09-20 09:53:40 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2.1)
2021-09-20 09:53:40 +0200mousey(~sky@gateway/tor-sasl/mousey)
2021-09-20 09:57:01 +0200meinside(uid24933@id-24933.helmsley.irccloud.com)
2021-09-20 10:04:14 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-20 10:04:56 +0200on^(~on@12.203.127.82)
2021-09-20 10:05:18 +0200mousey(~sky@gateway/tor-sasl/mousey) (Ping timeout: 276 seconds)
2021-09-20 10:05:51 +0200hendursa1(~weechat@user/hendursaga)
2021-09-20 10:09:12 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 276 seconds)
2021-09-20 10:15:19 +0200neurocyte013(~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat)
2021-09-20 10:17:45 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-09-20 10:17:45 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-09-20 10:17:48 +0200allbery_bgeekosaur
2021-09-20 10:18:28 +0200neurocyte013(~neurocyte@ip-213157011203.dynamic.medianet-world.de)
2021-09-20 10:18:28 +0200neurocyte013(~neurocyte@ip-213157011203.dynamic.medianet-world.de) (Changing host)
2021-09-20 10:18:28 +0200neurocyte013(~neurocyte@user/neurocyte)
2021-09-20 10:21:00 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c) (Remote host closed the connection)
2021-09-20 10:21:57 +0200sheddow(~sheddow@2001:4652:3064:0:855:8e28:191f:6ce6)
2021-09-20 10:23:02 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-09-20 10:23:28 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-09-20 10:25:27 +0200tremon(~tremon@217-63-61-89.cable.dynamic.v4.ziggo.nl)
2021-09-20 10:26:43 +0200vysn(~vysn@user/vysn) (Remote host closed the connection)
2021-09-20 10:27:26 +0200hnOsmium0001(uid453710@id-453710.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-09-20 10:30:52 +0200Pickchea(~private@user/pickchea)
2021-09-20 10:38:56 +0200neurocyte013(~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat)
2021-09-20 10:38:59 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-09-20 10:42:00 +0200michalz(~michalz@185.246.204.33) (Remote host closed the connection)
2021-09-20 10:43:22 +0200michalz(~michalz@185.246.204.61)
2021-09-20 10:49:06 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-09-20 10:54:23 +0200azeem(~azeem@2a00:801:3c5:e7ed:96db:1881:5af8:10cd) (Read error: Connection reset by peer)
2021-09-20 10:54:40 +0200azeem(~azeem@emp-91-123.eduroam.uu.se)
2021-09-20 10:57:10 +0200Phantastes(~Phantaste@c-67-173-229-120.hsd1.co.comcast.net)
2021-09-20 11:01:37 +0200Brumaire(~quassel@37.171.164.139) (Ping timeout: 265 seconds)
2021-09-20 11:03:36 +0200burnsidesLlama(~burnsides@dhcp168-026.wadham.ox.ac.uk)
2021-09-20 11:06:02 +0200Guest1692(~chris@81.96.113.213) (Remote host closed the connection)
2021-09-20 11:11:23 +0200reyaboj(~reyaboj@103.69.150.85)
2021-09-20 11:12:46 +0200fendor[m](~fendormat@2001:470:69fc:105::fcbd)
2021-09-20 11:13:08 +0200chris(~chris@81.96.113.213)
2021-09-20 11:13:12 +0200chrisGuest3607
2021-09-20 11:16:15 +0200shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-09-20 11:18:07 +0200Guest3607(~chris@81.96.113.213) (Ping timeout: 252 seconds)
2021-09-20 11:21:30 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c)
2021-09-20 11:26:29 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c) (Ping timeout: 264 seconds)
2021-09-20 11:29:15 +0200Phantastes(~Phantaste@c-67-173-229-120.hsd1.co.comcast.net) (Quit: Client closed)
2021-09-20 11:37:29 +0200reyaboj(~reyaboj@103.69.150.85) (Ping timeout: 256 seconds)
2021-09-20 11:39:06 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-09-20 11:39:31 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-09-20 11:41:13 +0200slurmz(~slurmz@71-212-119-5.tukw.qwest.net)
2021-09-20 11:47:15 +0200mousey(~sky@gateway/tor-sasl/mousey)
2021-09-20 11:50:13 +0200x28girl(~x28girl@user/x28girl) (Quit: Leaving)
2021-09-20 11:50:21 +0200arjun(~Srain@user/arjun)
2021-09-20 11:51:22 +0200 <arjun> hi. how do i sequence a bunch of Char actions and get a Text value ? since String is [Char] but Text isn't, and i am sure interconverting them isn't the way to go here
2021-09-20 11:52:08 +0200 <arjun> usecase:- i have a fn charP :: Char -> Parser Char, that parses that specific character
2021-09-20 11:52:09 +0200 <dminuoso> What is a "Char action"?
2021-09-20 11:52:17 +0200 <arjun> dminuoso: ^
2021-09-20 11:52:24 +0200 <maerwald> fmap T.singleton
2021-09-20 11:52:35 +0200 <dminuoso> arjun: depends a bit what the right way is.
2021-09-20 11:52:56 +0200 <dminuoso> Is this just some odd instance where you need a Text, or are you generally processing some textual data and want most of that in Text?
2021-09-20 11:53:30 +0200 <arjun> now i am looking to make a fn called textP that takes a text string and makes a parser for that string composed of little char parsers
2021-09-20 11:53:39 +0200 <merijn> Which parser are you using?
2021-09-20 11:53:40 +0200 <arjun> maerwald: ?
2021-09-20 11:53:52 +0200 <arjun> merijn: writing my own, just base
2021-09-20 11:53:53 +0200 <maerwald> arjun: Parsers usually have a functor instance
2021-09-20 11:54:28 +0200MidAutumnMoon(~MidAutumn@user/midautumnmoon) (Quit: Ping timeout (120 seconds))
2021-09-20 11:54:34 +0200 <merijn> arjun: Most parser have builtin primitives for grabbing entire chunks at a time, so you don't have to go through parsing N individual characters and turning those into Text later
2021-09-20 11:54:54 +0200 <merijn> maerwald: His question (I think) was "how do I parse *multiple* characters into Text"
2021-09-20 11:55:02 +0200 <merijn> Not just a single Char parser
2021-09-20 11:55:14 +0200 <dminuoso> No this is more XY
2021-09-20 11:55:15 +0200 <maerwald> `charP` looks like parsing a single Char
2021-09-20 11:55:15 +0200 <arjun> maerwald: yus
2021-09-20 11:55:24 +0200 <arjun> yus
2021-09-20 11:55:51 +0200 <dminuoso> Between the lines Im reading: how can I build `string` for `string "foo"`
2021-09-20 11:55:57 +0200 <maerwald> charP' c = T.singleton <$> charP c
2021-09-20 11:56:13 +0200 <dminuoso> See: 11:53:30 arjun | now i am looking to make a fn called textP that takes a text string and makes a parser for that string composed of little char parsers
2021-09-20 11:56:26 +0200 <maerwald> which givem you `charP' :: Char -> Parser Text`
2021-09-20 11:56:41 +0200 <dminuoso> So I'd start a bit earlier: What is it that you're trying to solve, really.
2021-09-20 11:56:58 +0200 <arjun> maerwald: you got it
2021-09-20 11:57:39 +0200 <arjun> dminuoso: writing a parser from scratch, just base, for some metadata i need on my static site generator .
2021-09-20 11:58:16 +0200 <arjun> and i am using Text as the type for textual data than using String
2021-09-20 11:58:44 +0200 <dminuoso> If this has to be base, Id just use ReadP and stick to String.
2021-09-20 11:58:56 +0200 <dminuoso> It's got a few gotchas, but oh well.
2021-09-20 11:59:21 +0200 <maerwald> oh god no
2021-09-20 11:59:34 +0200 <maerwald> ReadP/ReadS are abominations
2021-09-20 11:59:34 +0200 <merijn> dminuoso: oof
2021-09-20 11:59:49 +0200 <merijn> dminuoso: Don't tell people to self-harm, please >.>
2021-09-20 11:59:50 +0200 <dminuoso> Yes they are, but honestly, I wouldn't self-impose "cant depend on megaparsec/attoparsec" in the first place.
2021-09-20 12:00:03 +0200 <dminuoso> Self-rolling parser combinators likely causes same or more oofs.
2021-09-20 12:00:11 +0200 <maerwald> it's a gread exercise
2021-09-20 12:00:19 +0200 <maerwald> using ReadP isn't, it's just... anger
2021-09-20 12:00:25 +0200 <merijn> At least self-rolling parser combinators is fairly straightforward *and* educational
2021-09-20 12:00:31 +0200dminuososhrugs
2021-09-20 12:00:35 +0200 <merijn> ReadP just makes me want to head desk
2021-09-20 12:00:50 +0200 <arjun> maerwald: now if i -- textP txt = seqenceA $ list of bunch of charP thats mapped over txt
2021-09-20 12:01:11 +0200 <arjun> i get Parser [Text] instead of Parser Text right ?
2021-09-20 12:01:15 +0200 <dminuoso> arjun: You're better of using T.pack rather than T.singleton.
2021-09-20 12:01:32 +0200 <dminuoso> `T.pack <$> sequenceA ...`
2021-09-20 12:01:57 +0200 <arjun> dminuoso: ah yes, ofcource!
2021-09-20 12:02:01 +0200 <maerwald> arjun: you mappend
2021-09-20 12:02:18 +0200 <maerwald> fmap mconcat $ sequenceA
2021-09-20 12:02:19 +0200 <maerwald> I think
2021-09-20 12:02:38 +0200 <maerwald> we're not writing a high-performance parser that way
2021-09-20 12:02:40 +0200 <maerwald> but uh
2021-09-20 12:02:40 +0200 <dminuoso> maerwald: At that point, really just use T.pack once, rather than creating a bunch of singleton texts and mappening them together again.
2021-09-20 12:02:47 +0200 <arjun> maerwald: right!
2021-09-20 12:02:59 +0200 <arjun> this is just a learning exercise on my part guys, we can chill : P
2021-09-20 12:03:09 +0200 <dminuoso> merijn: Plus, I dont get why people hate ReadP *that* *much*.
2021-09-20 12:03:44 +0200 <maerwald> dminuoso: my cat can tell when I'm using ReadP by the amount of increased noise
2021-09-20 12:04:25 +0200 <dminuoso> As amusing as that phrasing is, can you break it down in rational arguments?
2021-09-20 12:04:56 +0200 <maerwald> yeah: if you were to design the worst parser API, it would be ReadP
2021-09-20 12:06:14 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-09-20 12:06:22 +0200meinside(uid24933@id-24933.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-09-20 12:07:47 +0200azeem(~azeem@emp-91-123.eduroam.uu.se) (Read error: Connection reset by peer)
2021-09-20 12:08:19 +0200Pickchea(~private@user/pickchea) (Ping timeout: 265 seconds)
2021-09-20 12:08:30 +0200yauhsien(~yauhsien@118-167-47-202.dynamic-ip.hinet.net)
2021-09-20 12:10:09 +0200azeem(~azeem@emp-91-123.eduroam.uu.se)
2021-09-20 12:10:16 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-09-20 12:13:13 +0200Guest|55(~Guest|55@217.62.90.146.dyn.plus.net)
2021-09-20 12:13:17 +0200yauhsien(~yauhsien@118-167-47-202.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
2021-09-20 12:14:13 +0200yauhsien(~yauhsien@118-167-47-202.dynamic-ip.hinet.net)
2021-09-20 12:18:06 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.2.1)
2021-09-20 12:18:57 +0200yauhsien(~yauhsien@118-167-47-202.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-09-20 12:18:59 +0200azeem(~azeem@emp-91-123.eduroam.uu.se) (Ping timeout: 246 seconds)
2021-09-20 12:20:59 +0200slurmz(~slurmz@71-212-119-5.tukw.qwest.net) (Quit: Leaving)
2021-09-20 12:22:47 +0200azeem(~azeem@emp-91-123.eduroam.uu.se)
2021-09-20 12:23:56 +0200Guest|55(~Guest|55@217.62.90.146.dyn.plus.net) (Quit: Connection closed)
2021-09-20 12:30:27 +0200Everything(~Everythin@37.115.210.35)
2021-09-20 12:32:47 +0200 <Franciman> Haskell's laziness: a world of pain with some niceties
2021-09-20 12:37:14 +0200jollygood2(~bc8165b6@217.29.117.252)
2021-09-20 12:38:09 +0200pera(~pera@user/pera)
2021-09-20 12:40:28 +0200 <tdammers> time for bogoparse: enumerate all possible parse trees, and then check each one until you find one that matches the input
2021-09-20 12:40:29 +0200jespada(~jespada@2803:9800:9842:7a62:edd5:5e74:3ec2:1b19)
2021-09-20 12:40:40 +0200lavaman(~lavaman@98.38.249.169)
2021-09-20 12:40:44 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-09-20 12:41:22 +0200 <int-e> tdammers: then fuse parse tree generation and check and derive an efficient algroithm?
2021-09-20 12:41:44 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-09-20 12:41:51 +0200 <tdammers> galaxy brain move right there
2021-09-20 12:42:43 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-20 12:43:56 +0200 <int-e> I'm not sure how well this works, but https://en.wikipedia.org/wiki/CYK_algorithm can maybe be thought of it that way if you do bottom-up generation and *also* throw in some dynamic programming
2021-09-20 12:44:52 +0200 <int-e> Of course, quadratic time isn't what you want for practical parsers.
2021-09-20 12:45:49 +0200vysn(~vysn@user/vysn)
2021-09-20 12:48:01 +0200 <kuribas> Franciman: I don't quite understand the drama around lazyness. Sometimes it's mildly inconvenient when tracing stuff, but otherwise I haven't found it a big problem.
2021-09-20 12:48:26 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-09-20 12:48:33 +0200 <tdammers> well, the thing with Haskell's non-strict evaluation is that it's usually fine, but on the rare occasions when it's not, it's *really* not
2021-09-20 12:48:35 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-20 12:48:56 +0200 <tdammers> tracking down performance problems in Haskell is really expert-level work
2021-09-20 12:49:14 +0200 <dminuoso> :s/Haskell/any language/
2021-09-20 12:49:36 +0200 <tdammers> yes, but Haskell makes it particularly tricky to at least follow along
2021-09-20 12:50:23 +0200 <int-e> "just look at the STG core"
2021-09-20 12:50:24 +0200 <int-e> ;)
2021-09-20 12:50:49 +0200 <tdammers> it gets worse when you're trying to figure out *compiler* performance problems
2021-09-20 12:51:05 +0200 <dminuoso> Sure, but that is as complicated with any compiler.
2021-09-20 12:51:23 +0200 <dminuoso> It takes an expert to look at some assembly and even understand that it's a compiler problem.
2021-09-20 12:51:31 +0200 <tdammers> maybe
2021-09-20 12:51:47 +0200 <dminuoso> You cant even determine whether a given problem is compiler related, if you dont understand how that compiler works.
2021-09-20 12:51:49 +0200 <kuribas> The first solution for performance problems is to fix the architecture.
2021-09-20 12:51:56 +0200 <tdammers> but then, "why does this 200-line module take six hours to compile and eat up 60 gigabytes of RAM" is not something I've ever lived through in, say, C++
2021-09-20 12:52:11 +0200 <kuribas> Linear optimizations are the last thing you want to optimize for, not the first.
2021-09-20 12:52:55 +0200 <int-e> One of my least favorite things is that sometimes, bad inlining decisions can impede the selector shortcut logic in the garbage collector. "it works fine with -O0 but leaks memory with -O2" is really not what you want
2021-09-20 12:53:00 +0200 <tdammers> kuribas: I'm not talking about linear optimizations. I'm talking about things going accidentally quadratic because you hit an edge case in the optimizer, or because things are getting shared that you didn't expect to, or something like that
2021-09-20 12:53:14 +0200 <kuribas> tdammers: that sounds nasty :)
2021-09-20 12:53:24 +0200 <EvanR> in areas of programming where apparently designers tried to make things accessible to "non-experts" or... I don't know what to call it, we have some very interesting resulting software.
2021-09-20 12:53:32 +0200 <tdammers> yes. that's the kind of stuff where things not being fine are *really* not find
2021-09-20 12:53:40 +0200 <tdammers> s/find/fine/
2021-09-20 12:53:54 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-09-20 12:54:13 +0200 <kuribas> tdammers: compiler bugs are nasty, and I have run into a few. But they are not a feature of the language.
2021-09-20 12:54:28 +0200 <tdammers> EvanR: by "expert-level", I meant that in order to understand some Haskell performance regressions, it's not enough to be an expert at the language itself, you also have to understand how the compiler works under the hood.
2021-09-20 12:54:29 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-20 12:54:29 +0200 <EvanR> things are hard in engineering, requiring significant insight and skill to do
2021-09-20 12:54:41 +0200 <jollygood2> tdammers, I'd like to see an example of that (200 lines module taking 6 hours to compile, consuming 60 GB). I have never encountered anything remotely similar in the 3 years I've used haskell for all my personal projects
2021-09-20 12:54:57 +0200 <Franciman> kuribas: I have an algorithm which loops forever when put in a monadic computation
2021-09-20 12:54:59 +0200 <EvanR> how did programming end up being a thing you could supposedly get by with without much skill
2021-09-20 12:55:04 +0200 <Franciman> and does not loop forever when used purely
2021-09-20 12:55:10 +0200 <Franciman> also, what tdammers said
2021-09-20 12:55:28 +0200 <Franciman> what's hard
2021-09-20 12:55:34 +0200 <Franciman> is understanding what is happening
2021-09-20 12:55:39 +0200 <kuribas> Franciman: sure, you can get loops without lazyness as well.
2021-09-20 12:55:41 +0200 <Franciman> I know this is strange given that haskell is declarative
2021-09-20 12:55:45 +0200 <Franciman> not saying that
2021-09-20 12:55:51 +0200 <Franciman> the problem is that with laziness I am lost
2021-09-20 12:55:54 +0200 <Franciman> I don't know what happens
2021-09-20 12:56:03 +0200 <Franciman> i know that in declarative programming this does not need to be a problem
2021-09-20 12:56:09 +0200 <kuribas> And perhaps ghc should be better in detecting loops.
2021-09-20 12:56:12 +0200 <Franciman> but in this particular case, I need to know what's wrong
2021-09-20 12:56:24 +0200 <Franciman> and I cannot
2021-09-20 12:56:29 +0200 <EvanR> "I don't know things" is a common problem with younger people on the internet nowadays!
2021-09-20 12:56:37 +0200 <kuribas> I find that a binary search usually works to pinpoint the guilty code.
2021-09-20 12:56:40 +0200 <tdammers> EvanR: I did not say that. I do believe that programming should require skill; the problem is that writing performant Haskell code, mastery of the language itself is sometimes not enough, you also need to know and understand its implementation
2021-09-20 12:56:52 +0200 <EvanR> I don't know X, followed a ways behind by, I can't do X
2021-09-20 12:57:40 +0200 <EvanR> you sometimes have to understand the implementation of haskell, now compare to how often you have to understand the implementation of not haskell xD
2021-09-20 12:57:54 +0200 <EvanR> probably all the time
2021-09-20 12:58:09 +0200 <tdammers> that's not my experience, no
2021-09-20 12:58:10 +0200 <EvanR> down to the machine
2021-09-20 12:58:49 +0200 <EvanR> the idea that it's not important how most of it works is this weird idea in programming as opposed to engineering
2021-09-20 12:58:50 +0200 <tdammers> with most of the other languages I've worked with, having a good mental model of the language itself is generally enough to figure out performance issues
2021-09-20 12:58:57 +0200 <int-e> EvanR:
2021-09-20 12:59:01 +0200 <int-e> oops
2021-09-20 12:59:31 +0200 <int-e> for most other languages, the mental model of the language is a sufficiently accurate model of the target machine.
2021-09-20 12:59:31 +0200 <EvanR> haskell is different in that a mental model of the language works more often!
2021-09-20 12:59:49 +0200 <EvanR> without getting into the weeds
2021-09-20 12:59:53 +0200 <EvanR> but you still have to
2021-09-20 12:59:58 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-09-20 13:00:11 +0200 <Franciman> EvanR: haskell is also different in that it is hard to inspect the actual model
2021-09-20 13:00:16 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-20 13:00:19 +0200 <Franciman> what tools do we have?
2021-09-20 13:00:20 +0200 <EvanR> "actual model" ?
2021-09-20 13:00:22 +0200 <Franciman> can I see thunks?
2021-09-20 13:00:28 +0200 <dminuoso> tdammers: perhaps it's difficult to make this determination based on personal observation. If your daily work with Haskell involves problem domains that make performance regressions either likely or relevant, there's a much higher chance of you being confronted with it.
2021-09-20 13:00:32 +0200 <Franciman> I don't even have proper stack traces sometimes
2021-09-20 13:00:35 +0200 <EvanR> you might mean the not model
2021-09-20 13:00:40 +0200 <dminuoso> Say, a C programmer working on Linux likely needs to know a lot about GCC.
2021-09-20 13:00:41 +0200max22-(~maxime@2a01cb08833598008dc4cca798d182ee.ipv6.abo.wanadoo.fr) (Ping timeout: 264 seconds)
2021-09-20 13:00:41 +0200 <int-e> Unfortunately, laziness kind of abstracts from memory use. So you have to unpack that level of abstraction... and that's really hard, because the relation isn't very direct.
2021-09-20 13:00:42 +0200 <Franciman> I mean the implementation
2021-09-20 13:00:51 +0200 <dminuoso> That doesn't mean the average C programmer must know about GCC.
2021-09-20 13:00:58 +0200alx741(~alx741@186.178.109.159)
2021-09-20 13:01:16 +0200 <tdammers> dminuoso: possible... but I'm not really talking about compile-specific quirks.
2021-09-20 13:01:19 +0200 <dminuoso> Me personally have had only a single compiler related problem in 3 years of Haskell, and that one was quickly identified after 2 hours.
2021-09-20 13:01:55 +0200 <tdammers> I'm talking about simple things, such as it not being obvious when a particular suspected-expensive calculation runs, or even how often
2021-09-20 13:02:08 +0200 <sshine> dminuoso, knowledge of evaluation semantics.
2021-09-20 13:02:49 +0200 <int-e> dminuoso: C compilers don't rewrite your code nearly as heavily as GHC does.
2021-09-20 13:03:03 +0200 <EvanR> perhaps I don't look at programming like a programmer but a scientist, and I'm never surprised when theories and stories suddenly fail and you have to go back to basics
2021-09-20 13:03:04 +0200 <int-e> I really think this is a price we pay for abstraction.
2021-09-20 13:03:11 +0200 <tdammers> in a strict language, when you write an expression, it will run when the explicit control flow reaches that point. but in a lazy language, it might run in a different thread, at some later point, or not at all, or multiple times
2021-09-20 13:03:30 +0200 <int-e> So maybe we should compare this to SQL rather than C.
2021-09-20 13:03:46 +0200 <tdammers> don't get me wrong, most of the time this is great, because the compiler tends to make OK choices, and it frees you from the burden of thinking about evaluation order and all that
2021-09-20 13:03:50 +0200 <int-e> Where you often have to understand just how exactly your DBS optimizes a particular query.
2021-09-20 13:03:53 +0200 <Franciman> I like that in haskell to know what's evaluated, you need to start from the end of the program :D
2021-09-20 13:03:55 +0200 <Franciman> a sort of dual
2021-09-20 13:03:57 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-09-20 13:04:00 +0200 <clever> tdammers: lazy blackholing, is one case where it may run multiple times
2021-09-20 13:04:10 +0200 <tdammers> int-e: yes, SQL is similar. it's *usually* fine, but when it's not, it's *really* not
2021-09-20 13:04:29 +0200 <EvanR> Franciman: you mean... the beginning? xD (the top of your expression tree)
2021-09-20 13:04:44 +0200 <Franciman> ahah exactly
2021-09-20 13:04:55 +0200 <clever> when haskell decides to evaluate a thunk, it will grab a mutex, and temporarily turn that thunk into a black hole
2021-09-20 13:05:11 +0200 <clever> any other threads trying to read that value, will then block until the core doing the computation, has an answer
2021-09-20 13:05:11 +0200 <Franciman> you can't know how a function is evaluated if you don't know where it is called
2021-09-20 13:05:13 +0200 <Franciman> and how
2021-09-20 13:05:23 +0200 <clever> but lazy blackholing, skips that mutex
2021-09-20 13:05:32 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-09-20 13:05:40 +0200 <clever> so 2 threads may wind up running the same computation in parallel, and the 2nd one to finish, overwrites the result of the 1st
2021-09-20 13:05:53 +0200azeem(~azeem@emp-91-123.eduroam.uu.se) (Ping timeout: 246 seconds)
2021-09-20 13:05:54 +0200 <clever> but its pure, so the 2nd result is identical, and all you did was waste a bit of cpu time
2021-09-20 13:06:02 +0200 <tdammers> yep
2021-09-20 13:06:08 +0200 <EvanR> haskell really makes you appreciate "mental models" of normal programming languages and *their* intricacies and weird bullshit they do sometimes, stuff that confounds programming in those normal languages
2021-09-20 13:06:09 +0200 <int-e> clever: you also destroyed some sharing
2021-09-20 13:06:15 +0200 <tdammers> you can also make a similar thing slightly more explicit using STM
2021-09-20 13:06:15 +0200 <clever> but you avoided a mutex
2021-09-20 13:06:22 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-20 13:06:39 +0200 <clever> int-e: yeah, i learned about this, in the context of `ghc -j20`
2021-09-20 13:07:14 +0200 <clever> int-e: something in ghc is re-making an inter-module cache on each operation, and un-doing the evaluation, and then every thread repeats that work in parallel, so the more threads you use, the worse the compile time becomes
2021-09-20 13:07:29 +0200 <int-e> if only the compiler knew which functions produce big results and which produce small ones...
2021-09-20 13:07:40 +0200xff0x(~xff0x@2001:1a81:5364:5d00:710d:a4b:8dea:f190) (Ping timeout: 240 seconds)
2021-09-20 13:07:53 +0200pera(~pera@user/pera) (Ping timeout: 264 seconds)
2021-09-20 13:08:21 +0200 <int-e> (give me a halting oracle and I'll write a better compiler ;-) )
2021-09-20 13:09:31 +0200 <clever> int-e: what about a hint the programmer gives to the compiler? to force lazy black-holing off for certain thunks?
2021-09-20 13:10:03 +0200 <clever> something more lazy then forcing it to just not be a thunk
2021-09-20 13:10:08 +0200azeem(~azeem@emp-91-123.eduroam.uu.se)
2021-09-20 13:10:19 +0200 <EvanR> more laziness, two tildes
2021-09-20 13:10:25 +0200 <int-e> clever: you can probably wrap GHC.Exts.noDuplicate# into something pure
2021-09-20 13:10:42 +0200AlexNoo_(~AlexNoo@94.233.241.181)
2021-09-20 13:11:29 +0200 <int-e> which will probably be quite close to unsafePerformIO . evaluate
2021-09-20 13:11:54 +0200 <int-e> since the former does noDuplicate# and the latter forces the evaluation
2021-09-20 13:12:05 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-09-20 13:12:14 +0200 <tdammers> EvanR: apply a heuristic that tells you how likely the program is to crash eventually; if that likelyhood exceeds a reasonable threshold (say 50%), just crash the program immediately. very efficient.
2021-09-20 13:12:15 +0200 <int-e> (noDuplicate# forces taking a mutex)
2021-09-20 13:12:29 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-20 13:12:29 +0200 <clever> int-e: ahh
2021-09-20 13:12:59 +0200 <EvanR> tdammers: intriguing, but what have I done to have this suggested to me specifically
2021-09-20 13:13:08 +0200 <clever> tdammers: ive seen somebody make a joke before, about running the tests every time you save, if any tests fail, immediately revert all changes, back to what git said it is
2021-09-20 13:13:16 +0200 <clever> tdammers: if you wrote buggy code, start over from scratch :P
2021-09-20 13:13:56 +0200 <EvanR> also over 50% of the time, that 50% is vastly exceeded so we're screwed
2021-09-20 13:14:01 +0200 <hpc> someone linked to a ghc bug here a few weeks ago, where if your code didn't typecheck it deleted the file
2021-09-20 13:14:19 +0200 <hpc> 100% real bug
2021-09-20 13:14:24 +0200 <clever> hpc: :D
2021-09-20 13:14:26 +0200AlexNoo(~AlexNoo@178.34.163.108) (Ping timeout: 260 seconds)
2021-09-20 13:14:40 +0200 <EvanR> or was it a bug
2021-09-20 13:14:48 +0200 <EvanR> maybe ahead of its time really
2021-09-20 13:14:50 +0200AlexZenon(~alzenon@178.34.163.108) (Ping timeout: 268 seconds)
2021-09-20 13:14:50 +0200Alex_test(~al_test@178.34.163.108) (Ping timeout: 268 seconds)
2021-09-20 13:15:07 +0200 <tdammers> EvanR: "more laziness"
2021-09-20 13:16:59 +0200 <EvanR> i hope the next 700 programming languages all incorporate the good parts of haskell as far as is possible
2021-09-20 13:17:43 +0200 <EvanR> there's enough complaints about laziness that i'm not sure haskell's version of it is part of that...
2021-09-20 13:17:59 +0200 <Cajun> so far the main programming languages have incorporated parts of it, like python's list comprehensions. though it completely disregarded types because muh pythonic way :P
2021-09-20 13:18:01 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-09-20 13:18:20 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-20 13:18:28 +0200Alex_test(~al_test@94.233.241.181)
2021-09-20 13:18:34 +0200AlexZenon(~alzenon@94.233.241.181)
2021-09-20 13:18:41 +0200 <EvanR> pythong aside i mean the next next 700 lol
2021-09-20 13:19:01 +0200 <EvanR> 700 - 1400
2021-09-20 13:19:25 +0200 <Cajun> if gpt-1000 doesnt beat us out by then :P
2021-09-20 13:20:04 +0200 <hpc> gpt-3 can write kubernetes yaml, what else is there?
2021-09-20 13:20:38 +0200 <Cajun> its quite good at html
2021-09-20 13:20:54 +0200 <hpc> nobody writes html anymore
2021-09-20 13:22:43 +0200 <EvanR> so the web is that far gone now
2021-09-20 13:23:15 +0200 <EvanR> not only everything is in a browser but it runs on AI
2021-09-20 13:23:22 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c)
2021-09-20 13:23:23 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-09-20 13:24:11 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-20 13:24:47 +0200 <Cajun> so it can do HTML by description, React by description, React by variable name alone, Figma by description, Spreadsheet by description, and SQL
2021-09-20 13:27:01 +0200 <merijn> dminuoso: Because ReadP is really, *really*, REALLY, *REALLY* hard to reason about
2021-09-20 13:27:35 +0200 <merijn> dminuoso: Unless your grammar is absolutely, positively, trivial, it's very hard to understand how stuff gets parsed with ReadP
2021-09-20 13:28:17 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c) (Ping timeout: 264 seconds)
2021-09-20 13:28:17 +0200 <merijn> dminuoso: I've spent days fighting parse failures relating to the lack of left-biased in <|> and figuring out how to correctly manually left-bias is a major PITA
2021-09-20 13:28:33 +0200lavaman(~lavaman@98.38.249.169)
2021-09-20 13:28:38 +0200 <merijn> (brb, patch reboot)
2021-09-20 13:28:39 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Client Quit)
2021-09-20 13:31:54 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-20 13:33:05 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
2021-09-20 13:33:37 +0200 <raehik> I know I can tell cabal where to look for libs with --extra-lib-dirs . Can I configure that in a config file, or for my whole system?
2021-09-20 13:34:14 +0200 <raehik> I can't figure out where cabal searches for libs -- it certainly doesn't seem like $PATH, since I have the dir I want to use on it
2021-09-20 13:34:14 +0200 <merijn> raehik: ~/.cabal/config
2021-09-20 13:34:14 +0200 <EvanR> could be worse, your could be using yacc/bison xD
2021-09-20 13:34:27 +0200 <merijn> EvanR: tbh, yacc/bison are more easy to debug
2021-09-20 13:34:32 +0200 <EvanR> I knew you'd say that
2021-09-20 13:35:02 +0200 <merijn> I TAed compilers for 4 years with flex/bison. I've had to dive into their debug facilities whenever students get stuck :p
2021-09-20 13:35:10 +0200 <EvanR> I too subscribe to "ancient unix tools are awesome and easy to use and understand" xD
2021-09-20 13:35:12 +0200 <merijn> You can actually output very detailed representations
2021-09-20 13:35:17 +0200 <raehik> merijn: ah, I misread the docs, envvars just become entries in the config. ty!
2021-09-20 13:35:43 +0200 <merijn> I'm not saying flex/bison are *easy*, I said they're *easier to debug*
2021-09-20 13:36:02 +0200 <merijn> EvanR: ReadP (and, honestly, all of the parsecs) provide no way to debug besides "trial and error"
2021-09-20 13:36:28 +0200 <merijn> flex/bison allow dumping out the entire generated state machine *including* pointers which state transitions are ambiguous
2021-09-20 13:36:45 +0200aidy(~aidy@2001:470:69fc:105::c7b4)
2021-09-20 13:36:47 +0200 <merijn> While those aren't particularly simple to understand, they *can* be understood
2021-09-20 13:37:13 +0200 <EvanR> it's kind of amazing debugging works anywhere for anything, it's humbling
2021-09-20 13:37:42 +0200 <sshine> is there something like QuickCheck's Gen that doesn't depend on all of QuickCheck?
2021-09-20 13:38:55 +0200 <EvanR> merijn: yeah earlier the response to laziness being hard to understand was (a joke?) to dump STG core xD
2021-09-20 13:38:59 +0200aidy(~aidy@2001:470:69fc:105::c7b4) (Quit: Reconnecting)
2021-09-20 13:39:14 +0200aidy(~aidy@2001:470:69fc:105::c7b4)
2021-09-20 13:39:28 +0200neo1(~neo3@cpe-292712.ip.primehome.com) (Ping timeout: 252 seconds)
2021-09-20 13:39:54 +0200 <EvanR> the matrix has too way too much info for the visual decoder, much easier to look at raw, blonde brunette redhead
2021-09-20 13:40:18 +0200xff0x(~xff0x@2001:1a81:5364:5d00:710d:a4b:8dea:f190)
2021-09-20 13:40:37 +0200 <merijn> EvanR: The bison state diagrams are actually fairly accessible, imo. Far more so than STG/Core
2021-09-20 13:41:01 +0200 <merijn> They do require you know a bit about how LALR(1) parser generators work, though
2021-09-20 13:41:04 +0200 <EvanR> says the guy who grades bison homework xD
2021-09-20 13:41:17 +0200jollygood2(~bc8165b6@217.29.117.252) (Quit: http://www.okay.uz/)
2021-09-20 13:41:32 +0200jollygood2(~bc8165b6@217.29.117.252)
2021-09-20 13:41:53 +0200aidy(~aidy@2001:470:69fc:105::c7b4) ()
2021-09-20 13:42:07 +0200 <merijn> EvanR: We didn't look at their bison unless they had a problem in the lab, so that was, like, 4-8 times a year in a one month period with me not touching bison at any point in between
2021-09-20 13:42:16 +0200 <EvanR> joking aside, do you have any ideas on similar "good ways" to get a handle on parsec style parsers?
2021-09-20 13:42:44 +0200 <EvanR> even hypothetically
2021-09-20 13:43:24 +0200 <EvanR> (trial and error have gotten me this far in all computer topics though xD)
2021-09-20 13:43:24 +0200 <merijn> You'd need to integrate some way to output diagnostics into the definition of the parser combinator
2021-09-20 13:43:40 +0200 <merijn> Which probably means you are limited to Selective
2021-09-20 13:43:50 +0200 <EvanR> Selective?
2021-09-20 13:43:52 +0200 <merijn> Since you can't do Monads
2021-09-20 13:43:57 +0200 <merijn> EvanR: Selective Functors
2021-09-20 13:44:04 +0200 <sshine> https://www.staff.ncl.ac.uk/andrey.mokhov/selective-functors.pdf
2021-09-20 13:44:23 +0200 <merijn> EvanR: Probably the best paper (together with Build Systems a la Carte) from the past 5 or so years :p
2021-09-20 13:44:42 +0200 <merijn> I really wanna see more Selective stuff
2021-09-20 13:44:47 +0200 <sshine> I haven't had a chance to use Selective yet.
2021-09-20 13:45:18 +0200 <merijn> sshine: I've been (on and off) looking into adding selective support to optparse-applicative
2021-09-20 13:45:20 +0200 <raehik> merijn: mmm I'm not all that happy with the solution. --extra-lib-dirs never works "recursively"/for dependencies, I had to solve that with a cabal.project file. It feels weird. Why can't I globally configure cabal to search for libraries in X?
2021-09-20 13:45:29 +0200asm(~alexander@burner.asm89.io) (Changing host)
2021-09-20 13:45:29 +0200asm(~alexander@user/asm)
2021-09-20 13:45:33 +0200sheddow(~sheddow@2001:4652:3064:0:855:8e28:191f:6ce6) (Ping timeout: 256 seconds)
2021-09-20 13:45:46 +0200 <merijn> raehik: You can, though? Using ~/.cabal/config as I said?
2021-09-20 13:46:17 +0200jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Ping timeout: 264 seconds)
2021-09-20 13:46:20 +0200aidy(~aidy@2001:470:69fc:105::c7b4)
2021-09-20 13:46:28 +0200 <raehik> oh, by writing extra-lib-dirs in there? I tried that, and it didn't work for building a dependency that needed a lib in that dir
2021-09-20 13:47:09 +0200 <merijn> "it didn't work" isn't close to specific enough to say anything useful about
2021-09-20 13:47:11 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-09-20 13:47:53 +0200jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl)
2021-09-20 13:48:31 +0200 <raehik> Sorry. extra-lib-dirs whether as CLI arg or entry in config, doesn't seem to apply for building dependencies
2021-09-20 13:49:02 +0200 <raehik> I get the same "missing required dependencies: x, y" that I do for if I didn't use extra-lib-dirs
2021-09-20 13:49:19 +0200 <EvanR> merijn, so what you're saying is monadic parsing is too powerful to debug so to speak, and reigning in the language power would open up legitimate possibilities for analysis
2021-09-20 13:49:40 +0200 <merijn> raehik: Is the dependency not using pkg-config depends?
2021-09-20 13:49:41 +0200 <raehik> It does work for the main package I'm building. But it depends on hmatrix, which needs some math libs, and my Windows setup stores them elsewhere
2021-09-20 13:49:43 +0200leah2(~leah@vuxu.org) (Remote host closed the connection)
2021-09-20 13:49:57 +0200 <merijn> In that case lib-dirs is irrelevant, but whether pkg-config knows about them
2021-09-20 13:50:25 +0200 <geekosaur> I don't think windows uses pkg-config?
2021-09-20 13:50:33 +0200 <merijn> EvanR: Monadic parsing could allow for "runtime" debugging (i.e. given a specific input, report debug output how we got where we are and why we're stuck)
2021-09-20 13:50:50 +0200 <merijn> EvanR: Selective, on the other hand, allows for *offline* debugging
2021-09-20 13:51:01 +0200 <raehik> I'm using MSYS2 -- I don't think I have the full story on how libs are located
2021-09-20 13:51:14 +0200 <merijn> EvanR: i.e. with selective you could output diagnostics without having to apply the parser to an input
2021-09-20 13:51:42 +0200 <merijn> :t (>>=)
2021-09-20 13:51:43 +0200 <lambdabot> Monad m => m a -> (a -> m b) -> m b
2021-09-20 13:51:52 +0200neurocyte013(~neurocyte@user/neurocyte)
2021-09-20 13:51:56 +0200leah2(~leah@vuxu.org)
2021-09-20 13:52:03 +0200gehmehgeh(~user@user/gehmehgeh)
2021-09-20 13:52:08 +0200 <aidy> I'm wanting a newtype for "monad transformer applied to monad" for use with deriving via, does anyone know if this exists already?
2021-09-20 13:52:08 +0200 <aidy> `newtype ApplyT (f :: (* -> *) -> * -> *) (m :: * -> *) a = ApplyT { unApplyT :: f m a }`
2021-09-20 13:52:10 +0200 <merijn> EvanR: It's the infamous "actual effects depend on the value of 'a'" problem introduced by the 2nd argument of >>=
2021-09-20 13:52:14 +0200favonia(~favonia@user/favonia) (Ping timeout: 260 seconds)
2021-09-20 13:53:46 +0200 <EvanR> results are fact dependent, your milage may vary
2021-09-20 13:54:00 +0200 <merijn> EvanR: You need to parse an 'a' from the input before you can find out what the parser of the next bit looks like with >>=. Selective introduces the option to "speculatively" inspect the "derived" effects
2021-09-20 13:54:29 +0200 <merijn> Anyway, the paper that sshine linked gives a nice overview of how they compare to applicative and monad and potential uses
2021-09-20 13:56:19 +0200 <EvanR> reading it
2021-09-20 13:58:25 +0200max22-(~maxime@2a01cb08833598007475ea3c05333f7b.ipv6.abo.wanadoo.fr)
2021-09-20 13:59:03 +0200 <EvanR> select :: Selective f => f (Either a b) -> f (a -> b) -> f b
2021-09-20 13:59:05 +0200 <EvanR> cool
2021-09-20 13:59:26 +0200neurocyte013(~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat)
2021-09-20 14:01:00 +0200neurocyte013(~neurocyte@user/neurocyte)
2021-09-20 14:06:20 +0200pera(~pera@137.221.132.200)
2021-09-20 14:06:44 +0200peraGuest3214
2021-09-20 14:13:20 +0200nschoe(~quassel@178.251.84.79)
2021-09-20 14:13:36 +0200gehmehgeh(~user@user/gehmehgeh) (Ping timeout: 276 seconds)
2021-09-20 14:15:23 +0200 <dminuoso> 14:14:53 merijn | [11:36:02] EvanR: ReadP (and, honestly, all of the parsecs) provide no way to debug besides "trial and error"
2021-09-20 14:15:49 +0200 <dminuoso> And a handrolled parser, by what appears to be a beginner, is likely to have any sort of debugging assistance?
2021-09-20 14:16:01 +0200 <dminuoso> I find that to be a brave assertion.
2021-09-20 14:22:08 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-09-20 14:25:01 +0200 <dminuoso> If you claim that not even any of the parsecs offer sane debugging methods, how is a haskell beginner likely to do anything more sensible? At that point you might as well just use ReadP. :p
2021-09-20 14:28:40 +0200nfd(~nfd@user/nfd) (Ping timeout: 240 seconds)
2021-09-20 14:30:44 +0200 <maerwald> dminuoso: stop :p
2021-09-20 14:31:49 +0200jtomas_(~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Remote host closed the connection)
2021-09-20 14:36:22 +0200 <merijn> dminuoso: They will at least understand what they wrote
2021-09-20 14:36:36 +0200 <merijn> dminuoso: My point is that ReadP behaves unlike every other parser combinator in very confusing ways
2021-09-20 14:36:42 +0200 <merijn> Like the lack of left-bias
2021-09-20 14:37:05 +0200 <merijn> Which means that, if you know how to write good parsers using *parsec, your parsers with ReadP will probably be a broken mess
2021-09-20 14:39:03 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-09-20 14:39:27 +0200 <sshine> merijn, megaparsec has pretty good error messages.
2021-09-20 14:39:34 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-09-20 14:39:37 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Quit: Leaving)
2021-09-20 14:39:53 +0200 <dminuoso> Sometimes.
2021-09-20 14:41:09 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-09-20 14:41:33 +0200 <dminuoso> In the widely used paring libraries, trifecta is the only one I'd tag with "good" error messages.
2021-09-20 14:41:58 +0200 <dminuoso> At the cost of weird performance and ergonomics.
2021-09-20 14:44:10 +0200 <merijn> megaparsec has good error messages if you implement that stuff
2021-09-20 14:44:30 +0200ec_ec
2021-09-20 14:46:13 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-09-20 14:47:30 +0200fendor_(~fendor@178.115.62.148.wireless.dyn.drei.com)
2021-09-20 14:49:40 +0200fendor(~fendor@178.165.185.65.wireless.dyn.drei.com) (Ping timeout: 240 seconds)
2021-09-20 14:49:53 +0200max22-(~maxime@2a01cb08833598007475ea3c05333f7b.ipv6.abo.wanadoo.fr) (Ping timeout: 264 seconds)
2021-09-20 14:50:13 +0200pbrisbin(~patrick@pool-173-49-147-250.phlapa.fios.verizon.net)
2021-09-20 14:51:07 +0200dextaa(~DV@user/dextaa) (Ping timeout: 252 seconds)
2021-09-20 14:51:55 +0200gehmehgeh(~user@user/gehmehgeh)
2021-09-20 14:55:53 +0200 <sshine> merijn, if you add good labels you mean?
2021-09-20 14:55:55 +0200neurocyte013(~neurocyte@user/neurocyte) (Ping timeout: 252 seconds)
2021-09-20 14:55:56 +0200slack1256(~slack1256@181.203.21.137)
2021-09-20 14:56:43 +0200rcg(~rcg@bras-base-london1483w-grc-31-74-12-158-179.dsl.bell.ca)
2021-09-20 14:56:53 +0200rcgNoirCode
2021-09-20 14:57:32 +0200 <sshine> I think they're often good by default for helping me as a developer debug the parser while I'm building it. for really good user-faced error messages, I think they're quite ok, especially compared to a bunch of real-world interpreters. but nothing like Elm. not sure how to get that for free.
2021-09-20 14:58:03 +0200 <NoirCode> `data RealFloat a => Complex a = !a :+ !a` -- Why does this have the type class operator => ?
2021-09-20 14:58:36 +0200 <geekosaur> there's been some discussion of that on haskell-cafe because of folks who want Gaussian integers
2021-09-20 14:58:57 +0200 <geekosaur> but mostly I think it's just to hook it into Num
2021-09-20 15:00:13 +0200 <geekosaur> without *some* typeclass association you can't use 0 to mean 0 :+ 0, for example (fromInteger "promotion" of literals)
2021-09-20 15:00:37 +0200 <geekosaur> or fromRational as approppriate
2021-09-20 15:01:10 +0200 <sshine> https://dev.to/sshine/comment/1502i -- an example of a filename parser and a bunch of failed parses with accompanying error messages. I think they're good...
2021-09-20 15:03:58 +0200 <NoirCode> Is (Complex a) is the context, or is that being defined here?
2021-09-20 15:04:17 +0200 <dminuoso> NoirCode: Where did you see this?
2021-09-20 15:04:18 +0200 <geekosaur> Complex is being defined, RealFloat is the context
2021-09-20 15:05:14 +0200 <geekosaur> and this is kinda obsolete, DatatypeContexts is mostly useless and highly misleading and was dropped in Haskell2010
2021-09-20 15:05:35 +0200neurocyte013(~neurocyte@IP-213157011203.dynamic.medianet-world.de)
2021-09-20 15:05:35 +0200neurocyte013(~neurocyte@IP-213157011203.dynamic.medianet-world.de) (Changing host)
2021-09-20 15:05:35 +0200neurocyte013(~neurocyte@user/neurocyte)
2021-09-20 15:05:56 +0200 <NoirCode> dminuoso: I saw this while reading "A Gentle Introduction to Haskell 98"
2021-09-20 15:06:21 +0200 <dminuoso> Oh that. The most misleading title of a Haskell resource I've ever seen. :-)
2021-09-20 15:06:35 +0200enick_736(~matrixbot@130.44.141.131)
2021-09-20 15:06:41 +0200 <int-e> haha, "gentle"
2021-09-20 15:06:46 +0200 <dminuoso> Yeah. :)
2021-09-20 15:07:12 +0200 <dminuoso> I would have replaced Gentle with Terse.
2021-09-20 15:07:12 +0200 <int-e> It makes sense if you add [for seaseoned theoretical computer scientists] at the end
2021-09-20 15:07:21 +0200 <int-e> -e
2021-09-20 15:07:21 +0200 <dminuoso> Or that.
2021-09-20 15:07:30 +0200neurocyte013(~neurocyte@user/neurocyte) (Client Quit)
2021-09-20 15:07:39 +0200 <dminuoso> It's still a great resource, if you're in its audience.
2021-09-20 15:07:44 +0200 <NoirCode> geekosaur: Why is it the context if it has a data declaration?
2021-09-20 15:07:52 +0200 <NoirCode> s/it/RealFloat/
2021-09-20 15:08:04 +0200 <dminuoso> NoirCode: With datatype contexts you could could constraint the types used when constructing values of that.
2021-09-20 15:08:31 +0200 <dminuoso> So with that (dated, old) datatype context, you could create some value of `x :+ y` only if the type of x/y also had an instance RealFlow.
2021-09-20 15:09:05 +0200 <dminuoso> It's largely deprecated since putting constraints on *constructing* values adds little value and just artificially constraints and reduces the amounts of useful code, at no benefit.
2021-09-20 15:09:09 +0200neurocyte013(~neurocyte@IP-213157011203.dynamic.medianet-world.de)
2021-09-20 15:09:09 +0200neurocyte013(~neurocyte@IP-213157011203.dynamic.medianet-world.de) (Changing host)
2021-09-20 15:09:09 +0200neurocyte013(~neurocyte@user/neurocyte)
2021-09-20 15:09:21 +0200 <dminuoso> Instead we now put constraints on functions that *use* the components using a typeclasses methods
2021-09-20 15:09:43 +0200neurocyte013(~neurocyte@user/neurocyte) (Client Quit)
2021-09-20 15:09:55 +0200motherfsck(~motherfsc@user/motherfsck) (Quit: quit)
2021-09-20 15:10:42 +0200 <dminuoso> Which means you can construct Complex with anything as its contained type, even String - any function that doesn't even use RealFloat on the components can still work with it.
2021-09-20 15:10:49 +0200 <dminuoso> Now we have
2021-09-20 15:11:00 +0200 <dminuoso> `data Complex a = !a :+ !a`
2021-09-20 15:11:34 +0200neurocyte013(~neurocyte@IP-213157011203.dynamic.medianet-world.de)
2021-09-20 15:11:34 +0200neurocyte013(~neurocyte@IP-213157011203.dynamic.medianet-world.de) (Changing host)
2021-09-20 15:11:34 +0200neurocyte013(~neurocyte@user/neurocyte)
2021-09-20 15:13:10 +0200 <NoirCode> Ok
2021-09-20 15:15:40 +0200 <NoirCode> "constraints on functions" -- Are these the typeclass contexts?
2021-09-20 15:16:04 +0200 <geekosaur> yes
2021-09-20 15:16:20 +0200 <dminuoso> Sometimes "context" is also called "constraint"
2021-09-20 15:16:35 +0200 <geekosaur> actually constraints are a little more general, but an introduction to haskell 98 won't talk about e.g. type equivalences
2021-09-20 15:16:48 +0200argento(~argent0@168-227-96-53.ptr.westnet.com.ar)
2021-09-20 15:17:11 +0200 <geekosaur> (not only were they not in haskell 98, they're specific to ghc and not in any standard)
2021-09-20 15:17:41 +0200max22-(~maxime@2a01cb0883359800a22f50bb05ce20b5.ipv6.abo.wanadoo.fr)
2021-09-20 15:20:30 +0200Guest3214(~pera@137.221.132.200) (Quit: leaving)
2021-09-20 15:22:21 +0200AlexNoo_AlexNoo
2021-09-20 15:22:57 +0200motherfsck(~motherfsc@user/motherfsck)
2021-09-20 15:23:09 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-09-20 15:24:52 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c)
2021-09-20 15:25:12 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-20 15:25:12 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-20 15:25:12 +0200wroathe(~wroathe@user/wroathe)
2021-09-20 15:29:29 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c) (Ping timeout: 264 seconds)
2021-09-20 15:29:54 +0200cfricke(~cfricke@user/cfricke)
2021-09-20 15:32:29 +0200argento(~argent0@168-227-96-53.ptr.westnet.com.ar) (Ping timeout: 264 seconds)
2021-09-20 15:35:13 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-20 15:37:54 +0200 <kuribas> Why does dhall give me an error on two records: [{field1 = ..}, {field1 = ..}], but not one one [{field1 = ..}]?
2021-09-20 15:38:27 +0200 <kuribas> unexpected '{'
2021-09-20 15:39:34 +0200 <kuribas> should I regret using dhall?
2021-09-20 15:42:14 +0200lavaman(~lavaman@98.38.249.169)
2021-09-20 15:43:21 +0200dextaa(~DV@user/dextaa)
2021-09-20 15:45:04 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.2.1)
2021-09-20 15:45:21 +0200NoirCode(~rcg@bras-base-london1483w-grc-31-74-12-158-179.dsl.bell.ca) (Quit: NoirCode)
2021-09-20 15:46:42 +0200 <ldlework> kuribas: what's dhall
2021-09-20 15:46:53 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
2021-09-20 15:47:06 +0200 <kuribas> ldlework: https://dhall-lang.org/
2021-09-20 15:47:16 +0200 <kuribas> oh, missing a '='
2021-09-20 15:47:25 +0200 <kuribas> thanks for the unhelpful error message...
2021-09-20 15:47:37 +0200 <ldlework> Ah a config language
2021-09-20 15:47:39 +0200 <kuribas> now: Error: List elements should all have the same type
2021-09-20 15:51:01 +0200 <kuribas> ah, missing a field...
2021-09-20 15:51:35 +0200kenran(~kenran@200116b82bb5db00fc92955da774ba70.dip.versatel-1u1.de)
2021-09-20 15:52:00 +0200cfricke(~cfricke@user/cfricke)
2021-09-20 15:53:31 +0200jollygood2(~bc8165b6@217.29.117.252) (Quit: http://www.okay.uz/ (Ping timeout))
2021-09-20 15:57:59 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-20 15:59:04 +0200fendor_(~fendor@178.115.62.148.wireless.dyn.drei.com) (Remote host closed the connection)
2021-09-20 16:03:49 +0200kimjetwav(~user@2607:fea8:235f:9730:9e3e:4049:c202:abc9)
2021-09-20 16:06:03 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 276 seconds)
2021-09-20 16:08:14 +0200Brumaire(~quassel@37.164.120.216)
2021-09-20 16:10:49 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-09-20 16:12:04 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-09-20 16:12:10 +0200jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Ping timeout: 240 seconds)
2021-09-20 16:13:17 +0200lambdabot(~lambdabot@haskell/bot/lambdabot) (Remote host closed the connection)
2021-09-20 16:13:54 +0200Null_A(~null_a@2601:645:8700:2290:6daa:6a79:97ab:557)
2021-09-20 16:14:01 +0200lambdabot(~lambdabot@silicon.int-e.eu)
2021-09-20 16:14:01 +0200lambdabot(~lambdabot@silicon.int-e.eu) (Changing host)
2021-09-20 16:14:01 +0200lambdabot(~lambdabot@haskell/bot/lambdabot)
2021-09-20 16:15:17 +0200shriekingnoise(~shrieking@186.137.144.80)
2021-09-20 16:15:50 +0200yauhsien(~yauhsien@118-167-47-202.dynamic-ip.hinet.net)
2021-09-20 16:17:28 +0200hnOsmium0001(uid453710@id-453710.hampstead.irccloud.com)
2021-09-20 16:18:34 +0200nvmd(~nvmd@user/nvmd) (Ping timeout: 252 seconds)
2021-09-20 16:18:41 +0200Null_A(~null_a@2601:645:8700:2290:6daa:6a79:97ab:557) (Ping timeout: 264 seconds)
2021-09-20 16:20:08 +0200yauhsien(~yauhsien@118-167-47-202.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
2021-09-20 16:20:56 +0200chris(~chris@81.96.113.213)
2021-09-20 16:21:00 +0200chrisGuest1557
2021-09-20 16:22:01 +0200zebrag(~chris@user/zebrag)
2021-09-20 16:23:20 +0200alzgh(~alzgh@user/alzgh)
2021-09-20 16:25:01 +0200Sgeo(~Sgeo@user/sgeo)
2021-09-20 16:32:06 +0200cuz(~user@38.140.58.234)
2021-09-20 16:36:25 +0200lambdabot(~lambdabot@haskell/bot/lambdabot) (Remote host closed the connection)
2021-09-20 16:36:52 +0200lambdabot(~lambdabot@silicon.int-e.eu)
2021-09-20 16:36:52 +0200lambdabot(~lambdabot@silicon.int-e.eu) (Changing host)
2021-09-20 16:36:52 +0200lambdabot(~lambdabot@haskell/bot/lambdabot)
2021-09-20 16:37:03 +0200finsternis(~X@23.226.237.192) (Ping timeout: 250 seconds)
2021-09-20 16:38:05 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2021-09-20 16:39:42 +0200 <dsal> I was really hoping to like dhall, but I've not been successful at that yet.
2021-09-20 16:40:50 +0200hiruji`(~hiruji@2606:6080:1001:f:ed79:9361:ea0e:3e88)
2021-09-20 16:42:45 +0200ec(~ec@gateway/tor-sasl/ec)
2021-09-20 16:43:02 +0200hiruji(~hiruji@user/hiruji) (Ping timeout: 260 seconds)
2021-09-20 16:49:11 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 246 seconds)
2021-09-20 16:50:45 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
2021-09-20 16:51:08 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Client Quit)
2021-09-20 16:51:21 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
2021-09-20 16:52:55 +0200kayvank(~user@52-119-115-185.PUBLIC.monkeybrains.net)
2021-09-20 16:53:09 +0200mikolaj_(~mikon@duch.mimuw.edu.pl) (Quit: leaving)
2021-09-20 16:53:18 +0200cheater(~Username@user/cheater) (Ping timeout: 260 seconds)
2021-09-20 16:54:32 +0200mikolaj(~mikolaj@purple.well-typed.com) (Quit: leaving)
2021-09-20 16:56:37 +0200cheater(~Username@user/cheater)
2021-09-20 16:58:48 +0200lbseale(~lbseale@user/ep1ctetus)
2021-09-20 16:59:51 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Quit: Leaving)
2021-09-20 17:01:27 +0200vgtw(~vgtw@c-9164205c.07-348-756d651.bbcust.telenor.se) (Ping timeout: 240 seconds)
2021-09-20 17:01:55 +0200vgtw(~vgtw@c-9164205c.07-348-756d651.bbcust.telenor.se)
2021-09-20 17:02:43 +0200cfricke(~cfricke@user/cfricke)
2021-09-20 17:03:01 +0200cfricke(~cfricke@user/cfricke) (Client Quit)
2021-09-20 17:04:57 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net)
2021-09-20 17:05:28 +0200vgtw(~vgtw@c-9164205c.07-348-756d651.bbcust.telenor.se) (Client Quit)
2021-09-20 17:05:51 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-09-20 17:08:02 +0200neurocyte013(~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat)
2021-09-20 17:08:03 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-09-20 17:08:43 +0200MQ-17J(~MQ-17J@8.21.10.6)
2021-09-20 17:08:46 +0200ec(~ec@gateway/tor-sasl/ec)
2021-09-20 17:09:08 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 246 seconds)
2021-09-20 17:10:42 +0200kenran(~kenran@200116b82bb5db00fc92955da774ba70.dip.versatel-1u1.de) (Quit: WeeChat info:version)
2021-09-20 17:12:03 +0200son0p(~ff@181.136.122.143)
2021-09-20 17:12:50 +0200 <Ollie[m]> Does the Haskell RTS have a way for us to ask a running process "which cost centers are you currently in?" Obivously something I only expect to be possible if we build with profiling
2021-09-20 17:13:00 +0200gehmehgeh(~user@user/gehmehgeh) (Ping timeout: 276 seconds)
2021-09-20 17:13:14 +0200 <geekosaur> possibly via the event log
2021-09-20 17:14:02 +0200 <Ollie[m]> Oh, if that's streamed out then yea, I could probably write something to get the most recent cost center
2021-09-20 17:14:07 +0200 <Ollie[m]> (per capability)
2021-09-20 17:14:49 +0200 <geekosaur> it's supposed to be streamed, there's at least one event log viewer that expects to be fed via a pipe from the process in question
2021-09-20 17:15:08 +0200gehmehgeh(~user@user/gehmehgeh)
2021-09-20 17:15:16 +0200 <geekosaur> may n0ot be flushed often enough for you though, that'd slow things down a lot
2021-09-20 17:15:41 +0200oxide(~lambda@user/oxide) (Ping timeout: 264 seconds)
2021-09-20 17:16:03 +0200oxide(~lambda@user/oxide)
2021-09-20 17:17:24 +0200 <Ollie[m]> As long as it does eventually flush even if my program is hung, I'd be happy
2021-09-20 17:17:29 +0200 <Ollie[m]> (guess what I'm debugging...)
2021-09-20 17:18:50 +0200hendursa1(~weechat@user/hendursaga) (Quit: hendursa1)
2021-09-20 17:18:53 +0200 <geekosaur> depends on how the program is hung, I'd guess
2021-09-20 17:19:16 +0200hendursaga(~weechat@user/hendursaga)
2021-09-20 17:19:41 +0200 <Ollie[m]> I was hoping it wouldn't (e.g., being stuck on taking an MVar would still cause a flush to eventually happen)
2021-09-20 17:19:44 +0200 <Ollie[m]> But I can just try that and see
2021-09-20 17:20:08 +0200 <geekosaur> right, but if it's stuck in e.g. a loop that doesn't allocate, it's unlikely to ever flush
2021-09-20 17:26:05 +0200int-e(~noone@int-e.eu) (Remote host closed the connection)
2021-09-20 17:26:37 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c)
2021-09-20 17:27:01 +0200int-e(~noone@int-e.eu)
2021-09-20 17:27:43 +0200neurocyte013(~neurocyte@IP-213157011203.dynamic.medianet-world.de)
2021-09-20 17:27:43 +0200neurocyte013(~neurocyte@IP-213157011203.dynamic.medianet-world.de) (Changing host)
2021-09-20 17:27:43 +0200neurocyte013(~neurocyte@user/neurocyte)
2021-09-20 17:27:45 +0200neurocyte013(~neurocyte@user/neurocyte) (Client Quit)
2021-09-20 17:28:43 +0200neurocyte013(~neurocyte@IP-213157011203.dynamic.medianet-world.de)
2021-09-20 17:28:43 +0200neurocyte013(~neurocyte@IP-213157011203.dynamic.medianet-world.de) (Changing host)
2021-09-20 17:28:43 +0200neurocyte013(~neurocyte@user/neurocyte)
2021-09-20 17:29:32 +0200Null_A(~null_a@2601:645:8700:2290:6daa:6a79:97ab:557)
2021-09-20 17:31:17 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c) (Ping timeout: 264 seconds)
2021-09-20 17:32:09 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 265 seconds)
2021-09-20 17:33:14 +0200flouflou(~flouflou@modemcable032.110-177-173.mc.videotron.ca)
2021-09-20 17:33:20 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-09-20 17:33:46 +0200natechan(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2021-09-20 17:33:57 +0200neightchan(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-09-20 17:36:59 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 265 seconds)
2021-09-20 17:38:56 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
2021-09-20 17:39:46 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:2927:efa3:44fc:5df6) (Quit: WeeChat 2.8)
2021-09-20 17:45:21 +0200favonia(~favonia@user/favonia)
2021-09-20 17:47:11 +0200leah2(~leah@vuxu.org) (Remote host closed the connection)
2021-09-20 17:47:28 +0200leah2(~leah@vuxu.org)
2021-09-20 17:51:55 +0200Brumaire(~quassel@37.164.120.216) (Ping timeout: 252 seconds)
2021-09-20 17:52:07 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-09-20 17:52:15 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c)
2021-09-20 18:00:11 +0200neurocyte013(~neurocyte@user/neurocyte) (Ping timeout: 265 seconds)
2021-09-20 18:02:01 +0200zaquest(~notzaques@5.128.210.178) (Remote host closed the connection)
2021-09-20 18:06:53 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-09-20 18:08:02 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-20 18:09:25 +0200dyeplexer(~dyeplexer@user/dyeplexer)
2021-09-20 18:09:46 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-09-20 18:20:43 +0200nfd(~nfd@user/nfd)
2021-09-20 18:23:14 +0200Guest1557(~chris@81.96.113.213) (Remote host closed the connection)
2021-09-20 18:23:24 +0200wei2912(~wei2912@112.199.250.21) (Quit: Lost terminal)
2021-09-20 18:24:38 +0200argento(~argent0@168-227-96-53.ptr.westnet.com.ar)
2021-09-20 18:25:10 +0200vgtw(~vgtw@c-6a60205c.07-348-756d651.bbcust.telenor.se)
2021-09-20 18:28:58 +0200zaquest(~notzaques@5.128.210.178)
2021-09-20 18:29:00 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2.1)
2021-09-20 18:30:23 +0200chris(~chris@81.96.113.213)
2021-09-20 18:30:24 +0200chrisGuest8687
2021-09-20 18:30:41 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 264 seconds)
2021-09-20 18:32:12 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
2021-09-20 18:34:53 +0200Guest8687(~chris@81.96.113.213) (Ping timeout: 264 seconds)
2021-09-20 18:36:12 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-20 18:36:22 +0200lbseale(~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
2021-09-20 18:36:55 +0200lbseale(~lbseale@user/ep1ctetus)
2021-09-20 18:37:30 +0200lbseale(~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
2021-09-20 18:38:46 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 260 seconds)
2021-09-20 18:39:00 +0200lbseale(~lbseale@user/ep1ctetus)
2021-09-20 18:41:16 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-09-20 18:41:36 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
2021-09-20 18:42:15 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-20 18:44:23 +0200arjun(~Srain@user/arjun) (Remote host closed the connection)
2021-09-20 18:44:33 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-20 18:44:33 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-20 18:44:33 +0200wroathe(~wroathe@user/wroathe)
2021-09-20 18:45:30 +0200k``(~user@152.1.137.158)
2021-09-20 18:48:05 +0200 <k``> I have a philosophical question. Say there was an instance of Control.Lens.At.At for `Proxy` . Would type Index (Proxy a) = a, and type IxVal (Proxy a) = Void? Or would they both be Void?
2021-09-20 18:48:59 +0200vgtw(~vgtw@c-6a60205c.07-348-756d651.bbcust.telenor.se) (Quit: ZNC - https://znc.in)
2021-09-20 18:50:17 +0200hsiktas(sid224847@2a03:5180:f:2::3:6e4f) (Quit: Connection closed for inactivity)
2021-09-20 18:50:49 +0200 <int-e> k``: shouldn't the index (domain) be Void regardless? Which gives you a choice for the IxVal (codomain)...
2021-09-20 18:53:14 +0200vgtw(~vgtw@c-6a60205c.07-348-756d651.bbcust.telenor.se)
2021-09-20 18:53:51 +0200argento(~argent0@168-227-96-53.ptr.westnet.com.ar) (Quit: leaving)
2021-09-20 18:54:28 +0200 <k``> Hmm. Say you have `data Void1 a` (EmptyDecl). Seems like in this case the Index is forced to be `Void` , and the IxVal can be `a`. I was thinking for some reason that `Proxy` and `Void1` would have their domains and codomains flipped.
2021-09-20 18:57:00 +0200 <k``> Like `Proxy` and that `Void1` are like terminal and initial objects? But maybe that's a canard.
2021-09-20 18:57:53 +0200 <k``> Or, rather, arrows, not objects.
2021-09-20 18:58:01 +0200neurocyte013(~neurocyte@ip-213157011203.dynamic.medianet-world.de)
2021-09-20 18:58:01 +0200neurocyte013(~neurocyte@ip-213157011203.dynamic.medianet-world.de) (Changing host)
2021-09-20 18:58:01 +0200neurocyte013(~neurocyte@user/neurocyte)
2021-09-20 19:02:24 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.2)
2021-09-20 19:02:25 +0200xsperry(~as@user/xsperry) (Ping timeout: 268 seconds)
2021-09-20 19:02:46 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-09-20 19:03:27 +0200chele(~chele@user/chele) (Remote host closed the connection)
2021-09-20 19:04:17 +0200azeem(~azeem@emp-91-123.eduroam.uu.se) (Ping timeout: 264 seconds)
2021-09-20 19:04:21 +0200Everything(~Everythin@37.115.210.35) ()
2021-09-20 19:05:16 +0200azeem(~azeem@2a00:801:42c:d12a:a34:e929:4827:2f9a)
2021-09-20 19:05:53 +0200 <nshepperd2> i think it's the other way around
2021-09-20 19:07:18 +0200 <nshepperd2> Void1 can be considered a map of anything to anything, for the purposes of At, because one can't exist
2021-09-20 19:08:29 +0200 <nshepperd2> Proxy can only be considered an empty map (ie. the domain is Void) because it exists but can't carry any information
2021-09-20 19:12:16 +0200 <k``> So, rephrased again, `Proxy a` holds a value of `a` at exactly 0 positions? That does make more sense.
2021-09-20 19:14:09 +0200 <k``> And `Void1 a` is `Void` at all positions `a` ?
2021-09-20 19:17:56 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c) (Remote host closed the connection)
2021-09-20 19:18:33 +0200tomjones(~tomjones@80-196-109-198-dynamic.dk.customer.tdc.net)
2021-09-20 19:18:34 +0200 <tomjones> l
2021-09-20 19:19:35 +0200 <tomjones> Hi. I have a question regarding pretty printing, namely removing quotes when printing a list of strings: example https://pastebin.com/giUPEw82
2021-09-20 19:19:50 +0200nschoe(~quassel@178.251.84.79) (Ping timeout: 260 seconds)
2021-09-20 19:20:10 +0200burnsidesLlama(~burnsides@dhcp168-026.wadham.ox.ac.uk) (Remote host closed the connection)
2021-09-20 19:20:40 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c)
2021-09-20 19:22:07 +0200Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
2021-09-20 19:22:07 +0200kimjetwav(~user@2607:fea8:235f:9730:9e3e:4049:c202:abc9) (Read error: Connection reset by peer)
2021-09-20 19:23:40 +0200 <monochrom> So don't use show.
2021-09-20 19:24:25 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-20 19:27:40 +0200 <k``> tomjaguarpaw: More specifically, `foldMap prettypri`
2021-09-20 19:27:45 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-20 19:28:01 +0200 <k``> Oh sorry, you want it to show as a list?
2021-09-20 19:29:36 +0200 <tomjones> Correct, I want it to show as a list
2021-09-20 19:31:57 +0200lavaman(~lavaman@98.38.249.169)
2021-09-20 19:33:40 +0200MQ-17J(~MQ-17J@8.21.10.6) (Ping timeout: 252 seconds)
2021-09-20 19:36:46 +0200vaucouleur(~vaucouleu@78.194.70.105) (Read error: Connection reset by peer)
2021-09-20 19:36:56 +0200 <tomsmeding> there is showList__: https://hackage.haskell.org/package/base-4.15.0.0/docs/GHC-Show.html#v:showList__
2021-09-20 19:37:08 +0200 <tomsmeding> I have _no_ idea why that has a double-underscore suffix
2021-09-20 19:37:55 +0200 <tomsmeding> apparently before base 4.13 it was showListWith, now it's showList__ ?
2021-09-20 19:38:44 +0200slac54110(~slack1256@181.203.117.211)
2021-09-20 19:38:56 +0200 <tomsmeding> oh I'm stupid. The Show class has a showList function that shows a list of the things, so that showList__ function clearly cannot also be called showList.
2021-09-20 19:39:14 +0200MQ-17J(~MQ-17J@8.21.10.6)
2021-09-20 19:39:15 +0200tomsmedingwonders why it was renamed to this stupid name
2021-09-20 19:40:19 +0200 <monochrom> intended-for-internal-use functions usually don't get the best names.
2021-09-20 19:40:51 +0200chris(~chris@81.96.113.213)
2021-09-20 19:40:53 +0200slack1256(~slack1256@181.203.21.137) (Ping timeout: 264 seconds)
2021-09-20 19:40:55 +0200chrisGuest8631
2021-09-20 19:40:58 +0200 <monochrom> Given that good names are a scarcity, it is probably wise, leave the scarce good names for things more people use.
2021-09-20 19:41:41 +0200kuribas(~user@ptr-25vy0i7z6miqkyi8626.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-09-20 19:42:09 +0200Brumaire(~quassel@81-64-14-121.rev.numericable.fr)
2021-09-20 19:42:19 +0200 <k``> Ah, the joys of designing APIs for unqualified import.
2021-09-20 19:42:47 +0200kayvank(~user@52-119-115-185.PUBLIC.monkeybrains.net) (Ping timeout: 246 seconds)
2021-09-20 19:43:02 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-20 19:45:14 +0200Guest8631(~chris@81.96.113.213) (Ping timeout: 246 seconds)
2021-09-20 19:45:28 +0200 <dminuoso> tomsmeding: You'll have to ask Simon, it was from his first cut of the GHC base libraries back from 2001.
2021-09-20 19:45:32 +0200 <dminuoso> The Marlow one.
2021-09-20 19:45:41 +0200xff0x(~xff0x@2001:1a81:5364:5d00:710d:a4b:8dea:f190) (Ping timeout: 264 seconds)
2021-09-20 19:45:59 +0200xff0x(~xff0x@83.236.31.114)
2021-09-20 19:45:59 +0200Lycurgus(~juan@98.4.112.204)
2021-09-20 19:46:27 +0200 <monochrom> I wouldn't be surprised if it's "It's already 3AM, that's why"
2021-09-20 19:46:32 +0200rond_(~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Quit: Client closed)
2021-09-20 19:46:43 +0200 <dminuoso> well, there were quite a few functions suffixed with double underscore
2021-09-20 19:46:45 +0200 <dminuoso> In that commit
2021-09-20 19:46:54 +0200tomsmedingis stupid
2021-09-20 19:47:08 +0200 <tomsmeding> the real function you should use is in Text.Show, namely showListWith, not in GHC.Show
2021-09-20 19:47:19 +0200 <dminuoso> readRational__, readList__, there was also Handle__
2021-09-20 19:47:24 +0200 <monochrom> I myself, when writing code to show in lecture, would do that. "I should check the return value of write(), but it's already 3AM so meh"
2021-09-20 19:47:29 +0200 <tomsmeding> somehow I didn't see showListWith in the hackage search thing for newer base versions
2021-09-20 19:47:32 +0200 <dminuoso> Perhaps these were identifiers intended to be used internally
2021-09-20 19:47:56 +0200 <monochrom> My students saw that and commented "can relate" :)
2021-09-20 19:48:00 +0200 <dminuoso> +readRational__ :: String -> Rational -- we export this one (non-std)
2021-09-20 19:48:00 +0200 <tomsmeding> tomjones: use showListWith from Text.Show
2021-09-20 19:48:08 +0200 <dminuoso> monochrom: heh. :)
2021-09-20 19:48:40 +0200 <tomsmeding> :t showListWith showString
2021-09-20 19:48:41 +0200 <lambdabot> error:
2021-09-20 19:48:41 +0200 <lambdabot> • Variable not in scope: showListWith :: (String -> ShowS) -> t
2021-09-20 19:48:41 +0200 <lambdabot> • Perhaps you meant one of these:
2021-09-20 19:48:47 +0200 <tomsmeding> @import Text.Show
2021-09-20 19:48:47 +0200 <lambdabot> Unknown command, try @list
2021-09-20 19:48:51 +0200 <tomsmeding> % import Text.Show
2021-09-20 19:48:52 +0200 <yahb> tomsmeding:
2021-09-20 19:48:56 +0200 <tomsmeding> % :t showListWith showString
2021-09-20 19:48:56 +0200 <yahb> tomsmeding: [String] -> ShowS
2021-09-20 19:49:11 +0200 <tomsmeding> % :t ($ "") . showListWith showString
2021-09-20 19:49:11 +0200 <yahb> tomsmeding: [String] -> String
2021-09-20 19:49:30 +0200 <alexfmpe[m]> does Data.Time.Format provide some way to output day of month with ordinal suffix ?
2021-09-20 19:49:37 +0200 <dminuoso> But sometimes you dont even remember yourself why. A while ago I reverted my own commit that made absolute no sense, it seemed completely superfluous, even the comments didn't help me explain why I wrote that (3 months earlier).
2021-09-20 19:49:44 +0200 <dminuoso> Last week we learned why.
2021-09-20 19:50:24 +0200 <tomsmeding> dminuoso: sounds like a good story
2021-09-20 19:51:01 +0200 <dminuoso> Sadly it's very domain specific, so it wouldn't make for a fun story as the intersection of Cumulux VXLAN experts and Haskellers is extraordinarily small.
2021-09-20 19:51:23 +0200 <tomsmeding> sad
2021-09-20 19:51:41 +0200 <dminuoso> Yeah, I have a whole bag of such fun stories that I will probably take into my grave. :(
2021-09-20 19:52:25 +0200MQ-17J(~MQ-17J@8.21.10.6) (Ping timeout: 252 seconds)
2021-09-20 19:52:52 +0200 <tomsmeding> alexfmpe[m]: doesn't seem like it
2021-09-20 19:52:53 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 264 seconds)
2021-09-20 19:53:27 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2)
2021-09-20 19:53:30 +0200 <geekosaur> we had something similar in xmonad the other day, we wondered why some operation did things the slow exponential way and fixed it, and the Tabbed layout broke because it depended on things being updated as it went
2021-09-20 19:53:49 +0200Xe(~cadey@tailscale/xe) (Ping timeout: 268 seconds)
2021-09-20 19:54:00 +0200 <alexfmpe[m]> madness
2021-09-20 19:54:24 +0200Xe(~cadey@tailscale/xe)
2021-09-20 19:56:01 +0200 <orzo> IORef has pointer-comparision identity. Is there a way i can show that identity for debugging like printf("%p") in C?
2021-09-20 19:59:29 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 264 seconds)
2021-09-20 20:00:14 +0200 <k``> geekosaur: Ugh, yes sorry about that.
2021-09-20 20:00:31 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-09-20 20:01:09 +0200mousey(~sky@gateway/tor-sasl/mousey) (Remote host closed the connection)
2021-09-20 20:01:18 +0200mousey(~sky@gateway/tor-sasl/mousey)
2021-09-20 20:02:38 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Quit: WeeChat 3.2.1)
2021-09-20 20:02:42 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-09-20 20:06:17 +0200enick_736(~matrixbot@130.44.141.131) (Quit: Bridge terminating on SIGTERM)
2021-09-20 20:08:48 +0200jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl)
2021-09-20 20:09:30 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-20 20:09:30 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-20 20:09:30 +0200wroathe(~wroathe@user/wroathe)
2021-09-20 20:09:51 +0200 <Cale> orzo: I was going to say "maybe if you tear the thing apart", but it seems like the MutVar# primitive type in GHC doesn't really support any more operations that'd let you do that. Equality goes via sameMutVar# :: MutVar# d a -> MutVar# d a -> Int#
2021-09-20 20:10:11 +0200burnsidesLlama(~burnsides@dhcp168-026.wadham.ox.ac.uk)
2021-09-20 20:10:37 +0200talismanick(~talismani@76.78.246.236)
2021-09-20 20:13:56 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 246 seconds)
2021-09-20 20:14:19 +0200 <monochrom> Probably the address keeps getting moved by GC so they don't bother expose it.
2021-09-20 20:14:55 +0200neurocyte013(~neurocyte@user/neurocyte) (Ping timeout: 252 seconds)
2021-09-20 20:15:41 +0200burnsidesLlama(~burnsides@dhcp168-026.wadham.ox.ac.uk) (Ping timeout: 246 seconds)
2021-09-20 20:17:05 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 246 seconds)
2021-09-20 20:18:13 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-09-20 20:19:08 +0200neurocyte013(~neurocyte@IP-213157011203.dynamic.medianet-world.de)
2021-09-20 20:19:08 +0200neurocyte013(~neurocyte@IP-213157011203.dynamic.medianet-world.de) (Changing host)
2021-09-20 20:19:08 +0200neurocyte013(~neurocyte@user/neurocyte)
2021-09-20 20:20:06 +0200nvmd(~nvmd@user/nvmd)
2021-09-20 20:23:44 +0200vgtw(~vgtw@c-6a60205c.07-348-756d651.bbcust.telenor.se) (Ping timeout: 246 seconds)
2021-09-20 20:24:41 +0200max22-(~maxime@2a01cb0883359800a22f50bb05ce20b5.ipv6.abo.wanadoo.fr) (Ping timeout: 264 seconds)
2021-09-20 20:27:15 +0200vgtw(~vgtw@c-6a60205c.07-348-756d651.bbcust.telenor.se)
2021-09-20 20:27:39 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-20 20:29:36 +0200burnsidesLlama(~burnsides@dhcp168-026.wadham.ox.ac.uk)
2021-09-20 20:30:38 +0200vgtw_(~vgtw@c-6a60205c.07-348-756d651.bbcust.telenor.se)
2021-09-20 20:30:47 +0200Guest72(~Guest72@117.223.48.235)
2021-09-20 20:31:53 +0200vgtw(~vgtw@c-6a60205c.07-348-756d651.bbcust.telenor.se) (Ping timeout: 264 seconds)
2021-09-20 20:32:29 +0200dyeplexer(~dyeplexer@user/dyeplexer) (Ping timeout: 264 seconds)
2021-09-20 20:32:38 +0200favonia(~favonia@user/favonia) (Ping timeout: 260 seconds)
2021-09-20 20:32:39 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-09-20 20:32:54 +0200motherfsck(~motherfsc@user/motherfsck) (Quit: quit)
2021-09-20 20:33:34 +0200 <Guest72> I have a doubt regarding foldl and foldr. If I we do foldl (+) 0 xs I can understand that expressions get accumulated because of lazy evaluation. But what I don't get is that if we do foldr (+) 0 [1..10]
2021-09-20 20:34:02 +0200renzhi(~xp@2607:fa49:6500:b100::1d9d) (Ping timeout: 260 seconds)
2021-09-20 20:34:17 +0200 <Guest72> by definition of foldr there is a whole expression (1+(2+ ...(10+0) ...) in the memory
2021-09-20 20:34:38 +0200 <Guest72> so wont that also cause memory problem
2021-09-20 20:34:41 +0200motherfsck(~motherfsc@user/motherfsck)
2021-09-20 20:34:53 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
2021-09-20 20:35:28 +0200 <c_wraith> most notably, that will cause stack problems
2021-09-20 20:35:35 +0200 <maerwald> yes
2021-09-20 20:36:08 +0200talismanick(~talismani@76.78.246.236) (Read error: Connection reset by peer)
2021-09-20 20:36:18 +0200 <c_wraith> but unlike foldl, it won't create a giant think first! it'll just go directly to excessive stack use.
2021-09-20 20:36:22 +0200 <k``> Guest72: Yeah, the `foldr` expression generates a lot of thunks before evaluating, though it won't fail with recent GHC versions that can grow the stack basically without limit.
2021-09-20 20:36:24 +0200 <c_wraith> *thunk
2021-09-20 20:36:58 +0200 <k``> *sorry, meant stack use rather than thunks.
2021-09-20 20:37:05 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-20 20:37:09 +0200slac54110(~slack1256@181.203.117.211) (Remote host closed the connection)
2021-09-20 20:37:19 +0200 <Guest72> I dont see the difference
2021-09-20 20:37:27 +0200 <c_wraith> they're both bad
2021-09-20 20:37:41 +0200 <c_wraith> the difference is technical and mostly unimportant
2021-09-20 20:37:50 +0200 <tomsmeding> @src foldr
2021-09-20 20:37:50 +0200 <lambdabot> foldr f z [] = z
2021-09-20 20:37:50 +0200 <lambdabot> foldr f z (x:xs) = f x (foldr f z xs)
2021-09-20 20:37:52 +0200 <tomsmeding> @src foldl
2021-09-20 20:37:52 +0200 <lambdabot> foldl f z [] = z
2021-09-20 20:37:52 +0200 <lambdabot> foldl f z (x:xs) = foldl f (f z x) xs
2021-09-20 20:38:02 +0200 <k``> In practice, GHC can turn the `foldl` version into a tight, strict loop. So that matters.
2021-09-20 20:38:31 +0200 <tomsmeding> if you evaluate 'foldr (+) 0 [1..5]', in one step that simplifies to '1 + foldr (+) 0 [2..5]'
2021-09-20 20:38:40 +0200 <c_wraith> I wouldn't trust it to. I'd just use foldl' and forget foldl exists
2021-09-20 20:38:44 +0200 <tomsmeding> so you recurse into the foldr, remembering the 1
2021-09-20 20:39:19 +0200 <tomsmeding> if, on the other hand, you evalate 'foldl (+) 0 [1..5]', in one step that simplifies to 'foldl (+) (0 + 1) [2..5]'
2021-09-20 20:39:33 +0200slack1256(~slack1256@191.126.227.73)
2021-09-20 20:39:33 +0200 <tomsmeding> so you have to remember this whole subcomputation "0 + 1"
2021-09-20 20:40:08 +0200 <tomsmeding> remembering "1" is just pushing the value on the stack, which is relatively cheap (using foldl' would be much better still, of course)
2021-09-20 20:40:11 +0200motherfsck(~motherfsc@user/motherfsck) (Remote host closed the connection)
2021-09-20 20:40:33 +0200 <tomsmeding> but remembering "0 + 1" means that you have to allocate an (unevaluated) thunk on the heap
2021-09-20 20:41:14 +0200jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Ping timeout: 246 seconds)
2021-09-20 20:41:14 +0200 <tomsmeding> Guest72: it's both bad in this case (use foldl' here, it's much better for summing integers), but as c_wraith says, foldl is just a bit worse than foldr here due to technical reasons
2021-09-20 20:41:38 +0200 <Guest72> why is it not pushed to the stack in the case of foldl
2021-09-20 20:41:53 +0200talismanick(~talismani@76.78.246.236)
2021-09-20 20:42:01 +0200talismanick(~talismani@76.78.246.236) (Client Quit)
2021-09-20 20:42:06 +0200 <tomsmeding> (with foldl', the "f z x" -- that is, 0 + 1 in the first step -- is evaluated immediately to 1, which is then passed on directly as an argument: no stack usage at all!)
2021-09-20 20:42:28 +0200 <tomsmeding> Guest72: because of technical details about how the GHC runtime system works :p
2021-09-20 20:42:42 +0200chris(~chris@81.96.113.213)
2021-09-20 20:42:46 +0200chrisGuest8455
2021-09-20 20:42:54 +0200 <tomsmeding> (something with the STG machine)
2021-09-20 20:43:09 +0200talismanick(~talismani@76.78.246.236)
2021-09-20 20:43:11 +0200talismanick(~talismani@76.78.246.236) (Remote host closed the connection)
2021-09-20 20:43:35 +0200 <dminuoso> We named them foldl and foldl' as a way of filtering out unfit developers without stress tolerance "Why is there no foresight in this library design".
2021-09-20 20:43:47 +0200 <dminuoso> Morally debatable darwinism.
2021-09-20 20:43:48 +0200 <tomsmeding> the intuitive difference is that when you evaluate 'foldl', you're not yet sure whether you're actually going to use that "f z x" in the end, so it has to be kept unevaluated because Haskell is lazy
2021-09-20 20:43:49 +0200Guest8455(~chris@81.96.113.213) (Remote host closed the connection)
2021-09-20 20:43:59 +0200 <tomsmeding> dminuoso: heh
2021-09-20 20:45:55 +0200renzhi(~xp@2607:fa49:6500:b100::5845)
2021-09-20 20:46:54 +0200 <Guest72> ok
2021-09-20 20:47:07 +0200hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-09-20 20:47:15 +0200vgtw_(~vgtw@c-6a60205c.07-348-756d651.bbcust.telenor.se) (Quit: ZNC - https://znc.in)
2021-09-20 20:47:20 +0200 <tomsmeding> Guest72: ah, you said: "by definition of foldr there is a whole expression (1+(2+ ...(10+0) ...) in the memory"
2021-09-20 20:47:22 +0200 <Guest72> IT foldr has problems, why is many functions implemented in terms of it
2021-09-20 20:47:32 +0200 <dminuoso> foldr has no problem, it's just a different tool
2021-09-20 20:47:48 +0200 <tomsmeding> no, in fact, due to the mentioned technical details, there will just be the values 1, 2, ..., 10 on the stack, not the whole expression as a series of thunks in memory :)
2021-09-20 20:47:49 +0200 <dminuoso> foldr is, conceptually, a way to transform a list
2021-09-20 20:47:55 +0200 <dminuoso> foldl' is, conceptually, a loop.
2021-09-20 20:47:58 +0200 <k``> Lazily `foldl` on a map to start with the larger keys seems legit?
2021-09-20 20:48:36 +0200 <dminuoso> If you want to accumulate the sum, you'd do this with loop-semantics, rather than turning your list into a call-structure that resembles the initial list and then force that..
2021-09-20 20:48:58 +0200 <dminuoso> The annoying thing is that the names of `foldr` and `foldl'` suggest they're similar/related - but their purposes are very unrelated.
2021-09-20 20:49:15 +0200 <monochrom> foldr (+) is a memory hog in both lazy and eager evaluation. No one disputes that.
2021-09-20 20:49:18 +0200 <tomsmeding> (it's just the implementations that are related)
2021-09-20 20:49:29 +0200 <monochrom> But foldr (||) is th interesting one.
2021-09-20 20:50:31 +0200oxide(~lambda@user/oxide) (Quit: oxide)
2021-09-20 20:50:57 +0200MQ-17J(~MQ-17J@35.50.35.3)
2021-09-20 20:51:06 +0200 <monochrom> If you complain about names, foldr and foldl were named way back in the 90s or even 80s, when people were just starting, you can't expect anyone to have much foresight.
2021-09-20 20:51:41 +0200 <monochrom> I bet you if you invent a really new thing today you are going to misname it despite best effort and good faith.
2021-09-20 20:51:57 +0200 <[exa]> I wonder what the foldr/foldl/foldl' naming would look like today
2021-09-20 20:52:03 +0200 <monochrom> Has happened over and over again throughout thousands of years of history.
2021-09-20 20:52:28 +0200Null_A(~null_a@2601:645:8700:2290:6daa:6a79:97ab:557) (Remote host closed the connection)
2021-09-20 20:52:42 +0200talismanick(~talismani@76.78.246.236)
2021-09-20 20:52:46 +0200vgtw(~vgtw@c-6a60205c.07-348-756d651.bbcust.telenor.se)
2021-09-20 20:54:22 +0200 <monochrom> There are two known generalizations of foldr today. They go off in different directions.
2021-09-20 20:54:25 +0200hololeap(~hololeap@user/hololeap)
2021-09-20 20:54:35 +0200 <monochrom> One direction is catamorphism. The other is Foldable's foldr.
2021-09-20 20:54:55 +0200 <dsal> Aren't they both catamorphisms?
2021-09-20 20:55:10 +0200 <monochrom> That would imply two names. One is catamorphism. The other still has to say some kind of "fold" and "right".
2021-09-20 20:55:14 +0200 <monochrom> No.
2021-09-20 20:55:45 +0200 <monochrom> You can define a binary tree instance of Foldable. Then its catamorphism is emphatically not its foldr.
2021-09-20 20:57:59 +0200finsternis(~X@23.226.237.192)
2021-09-20 20:58:30 +0200max22-(~maxime@2a01cb0883359800f35acda3ecfc604d.ipv6.abo.wanadoo.fr)
2021-09-20 20:58:47 +0200talismanick(~talismani@76.78.246.236) (Quit: Using Circe, the loveliest of all IRC clients)
2021-09-20 21:01:58 +0200 <monochrom> The names foldr and foldl can be justified in a context, such as Bird's algebra of programming, in which you postulate the list type without any directional bias, unlike the actual list type we use.
2021-09-20 21:02:23 +0200Izem(~Izem@bras-base-london1483w-grc-31-74-12-158-179.dsl.bell.ca)
2021-09-20 21:02:58 +0200 <monochrom> For example, Bird and colleagues just stated: you have the empty list, you have singleton lists, you can ++ two lists.
2021-09-20 21:04:15 +0200 <monochrom> and ++ is associative, at least denotationally. (Oh we know cost-countingly it is going to be ugly...)
2021-09-20 21:04:29 +0200burnsidesLlama(~burnsides@dhcp168-026.wadham.ox.ac.uk) ()
2021-09-20 21:04:50 +0200Izem(~Izem@bras-base-london1483w-grc-31-74-12-158-179.dsl.bell.ca) (Quit: Izem)
2021-09-20 21:05:40 +0200 <tomsmeding> _is_ there a better average-case finite list datastructure than Seq?
2021-09-20 21:06:09 +0200 <monochrom> If you now specify foldr and foldl by saying what happens to each of those 3 cases, they are very much mirror images.
2021-09-20 21:07:00 +0200mousey(~sky@gateway/tor-sasl/mousey) (Ping timeout: 276 seconds)
2021-09-20 21:07:10 +0200 <tomsmeding> like, that empty/singleton/++ API can be easily implemented using a binary tree with great complexity (constant time), but then 'head' has ugly (linear) complexity
2021-09-20 21:07:24 +0200 <monochrom> 40 years later, that spirit is revived by Foldable, in which both foldr and foldl are two facets of foldMap, at least mathematically.
2021-09-20 21:08:26 +0200mousey(~sky@gateway/tor-sasl/mousey)
2021-09-20 21:09:36 +0200 <[exa]> monochrom: wow, thanks
2021-09-20 21:10:09 +0200 <[exa]> tomsmeding: depends a lot on how you define the average case :]
2021-09-20 21:10:40 +0200alx741(~alx741@186.178.109.159) (Quit: alx741)
2021-09-20 21:10:44 +0200 <monochrom> "foldMap is The One! foldMap restores the balance between the Left Side and the Right Side!" teeheehee!
2021-09-20 21:10:52 +0200 <tomsmeding> [exa]: that's true :p
2021-09-20 21:10:59 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-09-20 21:11:02 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-09-20 21:11:11 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-09-20 21:11:24 +0200 <tomsmeding> "it depends"
2021-09-20 21:11:31 +0200Guest72(~Guest72@117.223.48.235) (Quit: Client closed)
2021-09-20 21:11:49 +0200 <[exa]> tomsmeding: like, reproducing the 2-3 fingertree with some ugly tricks for reducing the amount of reorganization could be interesting
2021-09-20 21:12:24 +0200[exa]<- a fan of BB[α] trees
2021-09-20 21:12:57 +0200 <[exa]> also I hope that Seq still has the fingertree inside.
2021-09-20 21:13:58 +0200 <monochrom> uuuhhh wait, is that busy beaver trees?!!
2021-09-20 21:14:23 +0200 <[exa]> no, the weight-balanced ones
2021-09-20 21:14:26 +0200 <awpr> I wrote a package to replace long-lived DLists with a concrete data structure in the codebase I was working on a few years ago; it had cons, snoc, appending and prepending SmallArrays, and concatenation
2021-09-20 21:14:27 +0200 <[exa]> not sure where BB comes from tho
2021-09-20 21:14:35 +0200 <monochrom> Oh, balanced binary
2021-09-20 21:14:42 +0200 <[exa]> "bounded balance" yeah
2021-09-20 21:14:53 +0200 <monochrom> oops, yeah, bounded
2021-09-20 21:15:03 +0200 <awpr> I left it out of my open-sourcing push because I figured there wouldn't be any demand for it, but is there after all?
2021-09-20 21:15:30 +0200 <[exa]> awpr: there's certainly less demanded stuff on hackage
2021-09-20 21:15:41 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-20 21:15:41 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-20 21:15:41 +0200wroathe(~wroathe@user/wroathe)
2021-09-20 21:15:50 +0200 <k``> Last I checked, `Seq` is still a 2-3 finger tree.
2021-09-20 21:15:52 +0200 <awpr> basically it's for the same purpose as GHC's Bag type, but in a standalone package: accumulating big piles of stuff over a while / several different modules, and eventually flattening it to a list
2021-09-20 21:15:53 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net) (Read error: Connection reset by peer)
2021-09-20 21:16:00 +0200 <[exa]> \o/
2021-09-20 21:16:11 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net)
2021-09-20 21:16:14 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 246 seconds)
2021-09-20 21:16:31 +0200 <[exa]> awpr: write a cool README, the demand might just appear :D
2021-09-20 21:17:10 +0200 <awpr> cool, I'll see what I can do. I kinda just figured there must surely be something like this on Hackage already, but I didn't find one
2021-09-20 21:17:25 +0200 <nfd> alright i've got a contrived one. brace yourselves :D
2021-09-20 21:17:31 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-09-20 21:18:11 +0200 <nfd> any of y'all 1.) use ghcide (perhaps with vim?) and 2.) have a good way of picking different ghcide builds without massive waits for different stack resolvers
2021-09-20 21:18:23 +0200econo(uid147250@user/econo)
2021-09-20 21:18:42 +0200kenran(~kenran@200116b82bb5db00373ef547531b4d5d.dip.versatel-1u1.de)
2021-09-20 21:18:43 +0200 <monochrom> I skip stack, so I don't wait for stack resolvers
2021-09-20 21:18:52 +0200 <monochrom> But I don't actually use ghcide.
2021-09-20 21:18:56 +0200favonia(~favonia@user/favonia)
2021-09-20 21:19:04 +0200 <nfd> i've got this really funny sitch where i have ghcide installed through arch (sort of a special hell, yes...) and it's built against a point release of ghc that doesn't even *have* a resolver
2021-09-20 21:19:26 +0200 <maerwald> it isn't even a resolver
2021-09-20 21:19:31 +0200 <maerwald> it's a static package set
2021-09-20 21:19:40 +0200 <maerwald> only cabal has a resolver
2021-09-20 21:20:07 +0200 <monochrom> But I think it is still a useful story to tell. If I use ghcup to order the computer to install multiple GHCs and multiple HLSs and whatnot, I am no longer at the mercy of some other opague middle-person.
2021-09-20 21:20:46 +0200 <nfd> right; if i could predict ghc versions based on either cabal or the declared static package set that'd be great
2021-09-20 21:21:11 +0200 <jneira[m]> explicitness is good, but requires (a little bit) more work and knowledge
2021-09-20 21:21:15 +0200 <nfd> doesn't matter so long as i pick a binary such that ghcide will Just Work for a given project
2021-09-20 21:21:37 +0200 <jneira[m]> nfd: base package version usually is a good pointer
2021-09-20 21:21:42 +0200 <nfd> i could handle this manually, but that could potentially imply a lot of waiting around and a lot of ide reconfiguration
2021-09-20 21:22:13 +0200 <awpr> if "complicit" -> "complicity", then "explicit" -> "explicity"? I'm definitely gonna use that overgeneralization from now on
2021-09-20 21:22:37 +0200xsperry(~as@user/xsperry)
2021-09-20 21:23:01 +0200 <monochrom> Would you like to take a course on complexit analysis? >:)
2021-09-20 21:24:53 +0200 <nfd> monochrom: totally valid choice. on the other hand, if what you want is "it doesn't have to be a reproducible build, but i want to be able to set up a dev environment and not deal with Dependency Hell on any random machine that i want with relatively little effort," well, it leaves a bit to be desired
2021-09-20 21:26:03 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Quit: mikoto-chan)
2021-09-20 21:26:16 +0200 <nfd> the more i can just declare the better
2021-09-20 21:26:41 +0200 <nfd> and i guess the fixed-point of that idea is probably "just use Nix lmao"
2021-09-20 21:27:08 +0200 <nfd> but it's a bit afield of "i want to pick ghcide versions automatically that match my project's ghc version"
2021-09-20 21:27:15 +0200pera(~pera@user/pera)
2021-09-20 21:31:52 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2021-09-20 21:35:28 +0200chris(~chris@81.96.113.213)
2021-09-20 21:35:32 +0200chrisGuest9212
2021-09-20 21:36:06 +0200 <tomsmeding> awpr: I was under the impression that the general case was -ness, where -y is an exception :p
2021-09-20 21:36:55 +0200 <tomsmeding> nfd: I hear that the vscode plugin can automatically download the right HLS version, but I'm not sure
2021-09-20 21:36:58 +0200 <geekosaur> it's english, what's a general case without an infinite number of exceptions? :þ
2021-09-20 21:37:36 +0200 <tomsmeding> geekosaur: as long as the number of exceptions is not actually infinite, you can still talk about one version occurring more often than the other :p
2021-09-20 21:37:43 +0200nvmd(~nvmd@user/nvmd) (Quit: Later, nerds.)
2021-09-20 21:37:58 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c) (Remote host closed the connection)
2021-09-20 21:38:09 +0200 <tomsmeding> (well I guess with a frequency table you can talk about that even _with_ infinite exceptions)
2021-09-20 21:38:41 +0200 <nfd> tomsmeding: hmm, neat
2021-09-20 21:39:17 +0200 <monochrom> If both are infinite, we can still talk about density, lim n->oo (general instances of length <= n) / (exception instances of length <= n)
2021-09-20 21:39:18 +0200 <tomsmeding> it shouldn't be hard to build similar functionality for vim :p
2021-09-20 21:40:27 +0200 <monochrom> for example prime numbers occur less often than composite numbers in that sense!
2021-09-20 21:41:14 +0200 <tomsmeding> monochrom: with words we have the fortunate situation that given a particular setting, we generally have frequency lists that prevent us from having to compute densities :)
2021-09-20 21:41:36 +0200 <monochrom> :)
2021-09-20 21:42:58 +0200Izem(~Izem@bras-base-london1483w-grc-31-74-12-158-179.dsl.bell.ca)
2021-09-20 21:44:05 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-09-20 21:47:29 +0200son0p(~ff@181.136.122.143) (Ping timeout: 264 seconds)
2021-09-20 21:47:52 +0200ubert(~Thunderbi@91.141.77.1.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
2021-09-20 21:47:58 +0200tommd(~tommd@75-164-130-101.ptld.qwest.net)
2021-09-20 21:48:28 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-20 21:48:28 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-20 21:48:28 +0200wroathe(~wroathe@user/wroathe)
2021-09-20 21:51:32 +0200acidjnk(~acidjnk@p200300d0c703cb9700deea61f82c37e2.dip0.t-ipconnect.de)
2021-09-20 21:52:38 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 246 seconds)
2021-09-20 21:52:44 +0200phma_(~phma@host-67-44-208-198.hnremote.net)
2021-09-20 21:52:56 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-09-20 21:53:03 +0200gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-09-20 21:53:17 +0200phma(~phma@host-67-44-208-97.hnremote.net) (Read error: Connection reset by peer)
2021-09-20 21:53:20 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-09-20 21:54:20 +0200slac19939(~slack1256@191.126.227.79)
2021-09-20 21:54:43 +0200yinghua(~yinghua@2800:2121:1400:1db:3d91:483:36a2:ad4f)
2021-09-20 21:56:29 +0200slack1256(~slack1256@191.126.227.73) (Ping timeout: 264 seconds)
2021-09-20 21:58:35 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-20 22:01:11 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-09-20 22:03:50 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 246 seconds)
2021-09-20 22:05:59 +0200waleee(~waleee@h-98-128-228-119.na.cust.bahnhof.se)
2021-09-20 22:09:29 +0200pavonia(~user@user/siracusa)
2021-09-20 22:16:17 +0200slac19939(~slack1256@191.126.227.79) (Ping timeout: 264 seconds)
2021-09-20 22:16:39 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c)
2021-09-20 22:20:23 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-20 22:20:25 +0200gioyik(~gioyik@gateway/tor-sasl/gioyik) (Remote host closed the connection)
2021-09-20 22:20:59 +0200yauhsien(~yauhsien@118-167-47-202.dynamic-ip.hinet.net)
2021-09-20 22:22:03 +0200gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-09-20 22:25:07 +0200hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-09-20 22:25:11 +0200yauhsien(~yauhsien@118-167-47-202.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
2021-09-20 22:25:16 +0200Guest4618(~Guest46@117.211.2.131)
2021-09-20 22:25:55 +0200benin036932301(~benin@183.82.205.89) (Ping timeout: 268 seconds)
2021-09-20 22:26:31 +0200Guest4618rahul
2021-09-20 22:26:46 +0200hololeap(~hololeap@user/hololeap)
2021-09-20 22:33:19 +0200kenran(~kenran@200116b82bb5db00373ef547531b4d5d.dip.versatel-1u1.de) (Quit: WeeChat info:version)
2021-09-20 22:34:51 +0200hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-09-20 22:35:03 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Quit: WeeChat 3.2)
2021-09-20 22:36:10 +0200qbt(~edun@user/edun) (Ping timeout: 240 seconds)
2021-09-20 22:36:49 +0200hololeap(~hololeap@user/hololeap)
2021-09-20 22:37:28 +0200k``(~user@152.1.137.158) (Remote host closed the connection)
2021-09-20 22:38:43 +0200mikoto-chan(~mikoto-ch@83.137.2.248)
2021-09-20 22:42:46 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-09-20 22:43:10 +0200Izem(~Izem@bras-base-london1483w-grc-31-74-12-158-179.dsl.bell.ca) (Quit: Izem)
2021-09-20 22:43:20 +0200Lycurgus(~juan@98.4.112.204) (Quit: Exeunt)
2021-09-20 22:44:36 +0200hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-09-20 22:46:10 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 240 seconds)
2021-09-20 22:51:10 +0200__monty__(~toonn@user/toonn)
2021-09-20 22:52:07 +0200MQ-17J(~MQ-17J@35.50.35.3) (Ping timeout: 265 seconds)
2021-09-20 22:52:24 +0200Izem(~Izem@bras-base-london1483w-grc-31-74-12-158-179.dsl.bell.ca)
2021-09-20 22:52:31 +0200MQ-17J(~MQ-17J@2607:fb90:885b:9d69:d154:b72d:fdec:ad62)
2021-09-20 22:52:55 +0200hololeap(~hololeap@user/hololeap)
2021-09-20 22:55:00 +0200nvmd(~nvmd@user/nvmd)
2021-09-20 22:58:07 +0200tomjones(~tomjones@80-196-109-198-dynamic.dk.customer.tdc.net) (Remote host closed the connection)
2021-09-20 22:58:12 +0200solomon(~quassel@cpe-76-168-7-139.socal.res.rr.com) (Ping timeout: 268 seconds)
2021-09-20 22:58:17 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
2021-09-20 22:59:27 +0200gioyik(~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds)
2021-09-20 22:59:50 +0200tomjones(~tomjones@80-196-109-198-dynamic.dk.customer.tdc.net)
2021-09-20 22:59:58 +0200Null_A(~null_a@2601:645:8700:2290:6daa:6a79:97ab:557)
2021-09-20 23:00:51 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-20 23:03:17 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-20 23:04:34 +0200hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-09-20 23:04:36 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2021-09-20 23:06:16 +0200tomjones(~tomjones@80-196-109-198-dynamic.dk.customer.tdc.net) (Remote host closed the connection)
2021-09-20 23:06:32 +0200tomjones(~tomjones@80-196-109-198-dynamic.dk.customer.tdc.net)
2021-09-20 23:06:46 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-09-20 23:07:36 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 265 seconds)
2021-09-20 23:07:42 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-20 23:09:34 +0200Lord_of_Life_Lord_of_Life
2021-09-20 23:09:37 +0200Null_A(~null_a@2601:645:8700:2290:6daa:6a79:97ab:557) (Remote host closed the connection)
2021-09-20 23:09:38 +0200rahul(~Guest46@117.211.2.131) (Quit: Client closed)
2021-09-20 23:10:08 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Quit: WeeChat 3.1)
2021-09-20 23:10:10 +0200Null_A(~null_a@2601:645:8700:2290:6daa:6a79:97ab:557)
2021-09-20 23:11:34 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-09-20 23:13:17 +0200tomjones(~tomjones@80-196-109-198-dynamic.dk.customer.tdc.net) (Remote host closed the connection)
2021-09-20 23:13:26 +0200on^(~on@12.203.127.82) (Remote host closed the connection)
2021-09-20 23:13:34 +0200tomjones(~tomjones@80-196-109-198-dynamic.dk.customer.tdc.net)
2021-09-20 23:15:21 +0200hololeap(~hololeap@user/hololeap)
2021-09-20 23:15:42 +0200motherfsck(~motherfsc@user/motherfsck)
2021-09-20 23:17:47 +0200tomjones(~tomjones@80-196-109-198-dynamic.dk.customer.tdc.net) (Remote host closed the connection)
2021-09-20 23:18:04 +0200tomjones(~tomjones@80-196-109-198-dynamic.dk.customer.tdc.net)
2021-09-20 23:19:46 +0200Null_A(~null_a@2601:645:8700:2290:6daa:6a79:97ab:557) (Remote host closed the connection)
2021-09-20 23:20:05 +0200nctcf^(~nctcf@12.203.127.82)
2021-09-20 23:20:20 +0200Null_A(~null_a@2601:645:8700:2290:6daa:6a79:97ab:557)
2021-09-20 23:21:53 +0200azeem(~azeem@2a00:801:42c:d12a:a34:e929:4827:2f9a) (Ping timeout: 246 seconds)
2021-09-20 23:23:09 +0200hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-09-20 23:24:16 +0200gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-09-20 23:26:22 +0200hololeap(~hololeap@user/hololeap)
2021-09-20 23:28:37 +0200tomjones(~tomjones@80-196-109-198-dynamic.dk.customer.tdc.net) (Remote host closed the connection)
2021-09-20 23:28:55 +0200mc47(~mc47@xmonad/TheMC47) (Quit: Leaving)
2021-09-20 23:28:55 +0200tomjones(~tomjones@80-196-109-198-dynamic.dk.customer.tdc.net)
2021-09-20 23:30:17 +0200Null_A(~null_a@2601:645:8700:2290:6daa:6a79:97ab:557) (Remote host closed the connection)
2021-09-20 23:30:51 +0200Null_A(~null_a@2601:645:8700:2290:6daa:6a79:97ab:557)
2021-09-20 23:32:06 +0200tomjones(~tomjones@80-196-109-198-dynamic.dk.customer.tdc.net) (Remote host closed the connection)
2021-09-20 23:32:15 +0200MQ-17J(~MQ-17J@2607:fb90:885b:9d69:d154:b72d:fdec:ad62) (Read error: Connection reset by peer)
2021-09-20 23:32:40 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-09-20 23:33:46 +0200hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-09-20 23:35:32 +0200michalz(~michalz@185.246.204.61) (Remote host closed the connection)
2021-09-20 23:39:05 +0200mikoto-chan(~mikoto-ch@83.137.2.248) (Ping timeout: 264 seconds)
2021-09-20 23:39:41 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 264 seconds)
2021-09-20 23:40:14 +0200CnnibisIndica(~herb@user/mesaboogie)
2021-09-20 23:41:59 +0200sagax(~sagax_nb@user/sagax) (Ping timeout: 268 seconds)
2021-09-20 23:42:05 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-09-20 23:42:19 +0200hololeap(~hololeap@user/hololeap)
2021-09-20 23:44:00 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-09-20 23:44:43 +0200statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Remote host closed the connection)
2021-09-20 23:44:50 +0200max22-(~maxime@2a01cb0883359800f35acda3ecfc604d.ipv6.abo.wanadoo.fr) (Quit: Leaving)
2021-09-20 23:44:54 +0200statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com)
2021-09-20 23:46:20 +0200hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-09-20 23:48:00 +0200hololeap(~hololeap@user/hololeap)
2021-09-20 23:49:53 +0200nvmd(~nvmd@user/nvmd) (Ping timeout: 264 seconds)
2021-09-20 23:50:33 +0200nvmd(~nvmd@user/nvmd)
2021-09-20 23:52:04 +0200hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-09-20 23:55:17 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Quit: Leaving)
2021-09-20 23:55:26 +0200Null_A(~null_a@2601:645:8700:2290:6daa:6a79:97ab:557) (Remote host closed the connection)
2021-09-20 23:56:00 +0200Null_A(~null_a@2601:645:8700:2290:6daa:6a79:97ab:557)
2021-09-20 23:59:29 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)