Logs on 2021-02-25 (freenode/#haskell)
| 00:00:26 | × | acidjnk_new quits (~acidjnk@p200300d0c73909529c208343cf3ed1b3.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 00:00:33 | × | epicte7us quits (~epictetus@ip72-194-215-136.sb.sd.cox.net) (Ping timeout: 256 seconds) |
| 00:01:47 | <nshepperd> | ukari: i tried using reflex, but couldn't make any sense of the docs, so i went with reactive-banana. which is unfortunate because I've heard reflex is more performant |
| 00:02:12 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds) |
| 00:03:22 | → | bergey` joins (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
| 00:04:22 | → | alx741 joins (~alx741@181.196.69.27) |
| 00:04:31 | × | Tario quits (~Tario@201.192.165.173) (Ping timeout: 256 seconds) |
| 00:05:29 | × | acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 260 seconds) |
| 00:05:56 | × | hseg quits (~gesh@IGLD-84-228-239-97.inter.net.il) (Ping timeout: 240 seconds) |
| 00:06:59 | → | bitmapper joins (uid464869@gateway/web/irccloud.com/x-foajjiotajxkliux) |
| 00:07:17 | → | maerwald joins (~maerwald@mail.hasufell.de) |
| 00:08:17 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:28b0:4c0c:b54b:e522) |
| 00:08:39 | → | Tario joins (~Tario@200.119.184.197) |
| 00:10:54 | <MarcelineVQ> | nshepperd: ask Cale about it, he's got all kinds of examples and good ideas |
| 00:11:05 | × | bergey` quits (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 240 seconds) |
| 00:11:35 | × | hendursa1 quits (~weechat@gateway/tor-sasl/hendursaga) (Quit: hendursa1) |
| 00:11:54 | → | hendursaga joins (~weechat@gateway/tor-sasl/hendursaga) |
| 00:12:17 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 00:12:45 | × | esp32_prog quits (~esp32_pro@185.195.233.147) (Ping timeout: 240 seconds) |
| 00:14:14 | × | usr25 quits (~usr25@unaffiliated/usr25) (Quit: Leaving) |
| 00:16:56 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 00:17:05 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 00:17:18 | × | hekkaidekapus_ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds) |
| 00:17:39 | → | hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 00:18:16 | × | Lowl3v3l quits (~Lowl3v3l@dslb-002-203-233-121.002.203.pools.vodafone-ip.de) (Ping timeout: 240 seconds) |
| 00:21:31 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds) |
| 00:21:37 | × | phittacus quits (bklmatrixo@gateway/shell/matrix.org/x-gwycjuommpiiwoem) (Ping timeout: 260 seconds) |
| 00:21:38 | × | sagax quits (~sagax_nb@213.138.71.146) (Ping timeout: 264 seconds) |
| 00:22:08 | × | conal_ quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 00:23:26 | → | phittacus joins (bklmatrixo@gateway/shell/matrix.org/x-ytpsxehmufedpsxo) |
| 00:26:36 | → | conal joins (~conal@64.71.133.70) |
| 00:28:24 | × | rj quits (~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds) |
| 00:28:39 | <jackdk> | ukari: you were close. The return value of the thing you pass to `runHeadlessApp` is an `Event t ()` that tells Reflex when to stop. If you want to run forever, use `pure never` |
| 00:29:02 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6) |
| 00:29:18 | <jackdk> | ukari: check this out https://www.irccloud.com/pastebin/9EO7VeXV/Ticker.hs |
| 00:30:12 | <jackdk> | ukari: also #reflex-frp is a good channel |
| 00:30:16 | × | Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Ping timeout: 240 seconds) |
| 00:32:15 | → | rajivr joins (uid269651@gateway/web/irccloud.com/x-bteccupbxcrkcjlt) |
| 00:32:15 | × | Tario quits (~Tario@200.119.184.197) (Read error: Connection reset by peer) |
| 00:32:44 | → | Tario joins (~Tario@201.192.165.173) |
| 00:33:59 | → | Lowl3v3l joins (~Lowl3v3l@dslb-002-207-103-026.002.207.pools.vodafone-ip.de) |
| 00:37:31 | <jackdk> | nshepperd: the reflex workshop vm helped me a lot, and your reactive-banana experience will probably transfer somewhat |
| 00:38:28 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 00:38:38 | → | esp32_prog joins (~esp32_pro@185.195.233.147) |
| 00:38:49 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 00:40:40 | → | justanotheruser joins (~justanoth@unaffiliated/justanotheruser) |
| 00:41:16 | × | entel quits (uid256215@botters/entel) (Quit: Connection closed for inactivity) |
| 00:44:03 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds) |
| 00:44:17 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 00:44:42 | → | conal joins (~conal@64.71.133.70) |
| 00:49:35 | → | acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
| 00:52:35 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 00:53:35 | → | martins joins (~martins@81.198.232.69) |
| 00:53:49 | × | martins quits (~martins@81.198.232.69) (Client Quit) |
| 00:55:44 | × | Neuromancer quits (~Neuromanc@unaffiliated/neuromancer) (Ping timeout: 272 seconds) |
| 00:55:45 | × | stree quits (~stree@68.36.8.116) (Ping timeout: 264 seconds) |
| 00:57:35 | → | epicte7us joins (~epictetus@ip72-194-215-136.sb.sd.cox.net) |
| 00:58:39 | → | ezrakilty joins (~ezrakilty@97-113-55-149.tukw.qwest.net) |
| 00:59:10 | → | Ranhir joins (~Ranhir@157.97.53.139) |
| 01:00:36 | × | seneca quits (~epictetus@ip72-194-215-136.sb.sd.cox.net) (Ping timeout: 246 seconds) |
| 01:04:11 | → | martins joins (~martins@81.198.232.69) |
| 01:05:39 | × | martins quits (~martins@81.198.232.69) (Client Quit) |
| 01:06:08 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
| 01:07:41 | → | rj joins (~x@gateway/tor-sasl/rj) |
| 01:08:26 | → | nbloomf joins (~nbloomf@2600:1700:ad14:3020:65d8:c770:8e45:ea4c) |
| 01:08:53 | → | stree joins (~stree@68.36.8.116) |
| 01:10:18 | × | Deide quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa) |
| 01:12:34 | × | whataday quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:13:41 | → | whataday joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:16:05 | → | howdoi joins (uid224@gateway/web/irccloud.com/x-gtvjllhbyskilhtc) |
| 01:18:57 | × | gentauro quits (~gentauro@unaffiliated/gentauro) (Quit: leaving) |
| 01:19:00 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 01:19:55 | → | gentauro joins (~gentauro@185.107.12.141) |
| 01:20:49 | × | gentauro quits (~gentauro@185.107.12.141) (Client Quit) |
| 01:21:19 | × | Aquazi quits (uid312403@gateway/web/irccloud.com/x-emqhyvlnnsxogtux) (Quit: Connection closed for inactivity) |
| 01:21:44 | → | gentauro joins (~gentauro@unaffiliated/gentauro) |
| 01:23:12 | × | cyphase quits (~cyphase@unaffiliated/cyphase) (Ping timeout: 265 seconds) |
| 01:23:23 | × | gentauro quits (~gentauro@unaffiliated/gentauro) (Client Quit) |
| 01:23:39 | → | gentauro joins (~gentauro@unaffiliated/gentauro) |
| 01:23:56 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 01:24:51 | → | joecordi_ joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 01:24:51 | × | infinity0 quits (~infinity0@freenet/developer/infinity0) (Remote host closed the connection) |
| 01:26:36 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 01:26:53 | → | vgtw_ joins (~vgtw@gateway/tor-sasl/vgtw) |
| 01:26:56 | × | Jon quits (jon@dow.land) (Remote host closed the connection) |
| 01:27:14 | → | DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) |
| 01:27:16 | × | nbloomf quits (~nbloomf@2600:1700:ad14:3020:65d8:c770:8e45:ea4c) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 01:27:30 | → | Jon joins (jon@dow.land) |
| 01:27:36 | × | vgtw quits (~vgtw@gateway/tor-sasl/vgtw) (Ping timeout: 268 seconds) |
| 01:27:37 | vgtw_ | is now known as vgtw |
| 01:27:38 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 264 seconds) |
| 01:27:56 | × | enikar quits (~enikar@2001:41d0:2:8673::42) (Ping timeout: 240 seconds) |
| 01:28:21 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 01:28:59 | → | zmv- joins (~zmv@191.255.89.231) |
| 01:29:16 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection) |
| 01:29:17 | → | enikar joins (~enikar@2001:41d0:2:8673::42) |
| 01:31:49 | × | Jd007 quits (~Jd007@162.156.11.151) (Quit: Jd007) |
| 01:33:06 | × | m0rphism1 quits (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 272 seconds) |
| 01:35:54 | × | joecordi_ quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Remote host closed the connection) |
| 01:38:01 | → | cyphase joins (~cyphase@unaffiliated/cyphase) |
| 01:38:06 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 01:38:26 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) |
| 01:41:14 | → | joecordingley joins (~joecordin@37.156.75.63) |
| 01:45:49 | × | joecordingley quits (~joecordin@37.156.75.63) (Ping timeout: 260 seconds) |
| 01:48:04 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 01:53:11 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 01:53:54 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 01:54:06 | → | justan0theruser joins (~justanoth@unaffiliated/justanotheruser) |
| 01:56:05 | × | justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds) |
| 01:57:26 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 240 seconds) |
| 01:58:30 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 01:58:45 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 01:58:53 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
| 01:58:55 | → | martins joins (~martins@81.198.232.69) |
| 01:58:58 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds) |
| 01:59:44 | ← | martins parts (~martins@81.198.232.69) () |
| 02:00:59 | → | elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
| 02:03:05 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 260 seconds) |
| 02:03:23 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds) |
| 02:08:27 | × | xff0x quits (~xff0x@2001:1a81:525a:9700:e2d:ed0e:1903:82db) (Ping timeout: 272 seconds) |
| 02:09:52 | → | xff0x joins (~xff0x@2001:1a81:5295:6100:414c:c2f4:f5f5:8081) |
| 02:09:56 | × | apache8080 quits (~rishi@wsip-70-168-153-252.oc.oc.cox.net) (Ping timeout: 240 seconds) |
| 02:09:58 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 02:10:25 | × | elliott_ quits (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 240 seconds) |
| 02:11:42 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 02:11:59 | × | vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving) |
| 02:14:29 | × | justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) (Quit: WeeChat 3.0) |
| 02:14:47 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds) |
| 02:16:11 | → | apache8080 joins (~rishi@wsip-70-168-153-252.oc.oc.cox.net) |
| 02:16:25 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 02:18:08 | → | deviantfero joins (~deviantfe@190.150.27.58) |
| 02:18:46 | → | elliott_ joins (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) |
| 02:19:16 | × | __minoru__shirae quits (~shiraeesh@77.94.25.253) (Ping timeout: 240 seconds) |
| 02:19:34 | → | __minoru__shirae joins (~shiraeesh@109.166.59.174) |
| 02:23:21 | × | guest222 quits (~user@61.148.245.136) (Ping timeout: 256 seconds) |
| 02:24:59 | → | Jd007 joins (~Jd007@162.156.11.151) |
| 02:25:06 | → | bergey` joins (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
| 02:27:31 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6) |
| 02:29:21 | × | acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 264 seconds) |
| 02:33:51 | × | irc_user quits (uid423822@gateway/web/irccloud.com/x-fajfitegppdbkpgx) (Quit: Connection closed for inactivity) |
| 02:36:51 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 02:37:09 | × | bergey` quits (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 265 seconds) |
| 02:37:13 | → | Lord_of_Life_ joins (~Lord@unaffiliated/lord-of-life/x-0885362) |
| 02:38:07 | → | frozenErebus joins (~frozenEre@94.128.219.166) |
| 02:38:07 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 02:38:26 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) |
| 02:38:57 | × | Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 264 seconds) |
| 02:38:58 | Lord_of_Life_ | is now known as Lord_of_Life |
| 02:39:23 | → | entel joins (uid256215@botters/entel) |
| 02:40:40 | × | Wuzzy quits (~Wuzzy@p57a2f9e0.dip0.t-ipconnect.de) (Quit: Wuzzy) |
| 02:41:03 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 246 seconds) |
| 02:41:52 | → | toorevitimirp joins (~tooreviti@117.182.181.253) |
| 02:42:27 | × | frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 246 seconds) |
| 02:42:33 | × | esp32_prog quits (~esp32_pro@185.195.233.147) (Ping timeout: 264 seconds) |
| 02:46:37 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 02:48:04 | → | drbean_ joins (~drbean@TC210-63-209-206.static.apol.com.tw) |
| 02:49:16 | → | denisse_ joins (~spaceCat@gateway/tor-sasl/alephzer0) |
| 02:50:34 | × | denisse quits (~spaceCat@gateway/tor-sasl/alephzer0) (Quit: ZNC 1.7.5 - https://znc.in) |
| 02:50:59 | denisse_ | is now known as denisse |
| 02:51:37 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 272 seconds) |
| 02:52:36 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 02:54:00 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 02:55:24 | → | tromp_ joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 02:55:24 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Read error: Connection reset by peer) |
| 02:57:13 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds) |
| 02:58:26 | × | alx741 quits (~alx741@181.196.69.27) (Quit: alx741) |
| 02:59:57 | × | tromp_ quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 264 seconds) |
| 03:00:10 | × | carlomagno quits (~cararell@148.87.23.11) (Quit: Leaving.) |
| 03:03:35 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 03:03:44 | × | sw1nn quits (~sw1nn@2a00:23c6:2385:3a00:5367:7819:3f66:284e) (Ping timeout: 240 seconds) |
| 03:04:01 | → | nbloomf joins (~nbloomf@2600:1700:ad14:3020:e8ed:b8de:c4bc:271c) |
| 03:08:37 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds) |
| 03:10:04 | × | sakirious quits (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Quit: The Lounge - https://thelounge.chat) |
| 03:10:04 | × | egp_ quits (~egp_@2.95.74.168) (Read error: Connection reset by peer) |
| 03:10:22 | × | ezrakilty quits (~ezrakilty@97-113-55-149.tukw.qwest.net) (Remote host closed the connection) |
| 03:11:26 | → | sakirious joins (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) |
| 03:14:37 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 03:16:14 | → | sw1nn joins (~sw1nn@2a00:23c6:2385:3a00:6be:14ea:238:81cf) |
| 03:16:45 | × | stree quits (~stree@68.36.8.116) (Ping timeout: 246 seconds) |
| 03:18:05 | × | slack1256 quits (~slack1256@45.4.2.52) (Ping timeout: 240 seconds) |
| 03:18:10 | × | Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
| 03:18:56 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 240 seconds) |
| 03:20:35 | → | FinnElija joins (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) |
| 03:20:35 | finn_elija | is now known as Guest18260 |
| 03:20:35 | FinnElija | is now known as finn_elija |
| 03:22:36 | × | Tops2 quits (~Tobias@dyndsl-091-249-082-052.ewe-ip-backbone.de) (Ping timeout: 240 seconds) |
| 03:23:12 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 03:23:34 | → | Tops2 joins (~Tobias@dyndsl-095-033-089-046.ewe-ip-backbone.de) |
| 03:23:41 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 03:24:09 | × | Guest18260 quits (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Ping timeout: 268 seconds) |
| 03:24:33 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 03:29:21 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 264 seconds) |
| 03:29:21 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 264 seconds) |
| 03:29:26 | × | nbloomf quits (~nbloomf@2600:1700:ad14:3020:e8ed:b8de:c4bc:271c) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 03:30:09 | → | stree joins (~stree@68.36.8.116) |
| 03:31:27 | → | Tario joins (~Tario@201.192.165.173) |
| 03:38:07 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 03:38:27 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) |
| 03:38:39 | × | Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
| 03:38:54 | → | Tario joins (~Tario@201.192.165.173) |
| 03:40:53 | × | alexelcu quits (~alexelcu@142.93.180.198) (Quit: ZNC 1.8.2 - https://znc.in) |
| 03:41:11 | → | plutoniix joins (~q@184.82.223.179) |
| 03:41:13 | → | alexelcu joins (~alexelcu@142.93.180.198) |
| 03:42:18 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 03:43:48 | <dmwit> | Okay, so using pointer equality as a fast path isn't safe because maybe the value diverges. |
| 03:44:05 | <dmwit> | You could deepseq both values before using that fast path, but then why bother with the fast path, right? |
| 03:44:20 | <dmwit> | But Ed K taught us how to have a deepseq that fires the first time and never again. |
| 03:44:37 | <dmwit> | Is there a library out there that uses this trick to give a pointer-equality based fast path for Eq? |
| 03:45:50 | <dmwit> | (Namely, the trick is like data JustOnce a = JustOnce () a; justOnce a = JustOnce (a `deepseq` ()) a. And then don't export the value constructor. |
| 03:45:53 | <dmwit> | ) |
| 03:46:45 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 265 seconds) |
| 03:47:08 | <edwardk> | *cough* pattern synonyms |
| 03:47:36 | <dmwit> | Yes, yes, you need a bunch of API for JustOnce to be comfortable. |
| 03:48:30 | <edwardk> | i actually need to start using this trick with linear types hrmm |
| 03:48:36 | × | elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 246 seconds) |
| 03:48:59 | <dmwit> | Is that just because you're using linear types a lot lately, or do they give some interesting extra bit that's not obvious? |
| 03:49:09 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 264 seconds) |
| 03:49:14 | <dmwit> | Well, never mind whether it's obvious or not. =P |
| 03:49:33 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 03:50:37 | × | theDon quits (~td@muedsl-82-207-238-135.citykom.de) (Ping timeout: 256 seconds) |
| 03:52:09 | → | theDon joins (~td@muedsl-82-207-238-098.citykom.de) |
| 03:54:33 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 264 seconds) |
| 03:54:47 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 03:55:09 | × | darjeeling_ quits (~darjeelin@122.245.217.214) (Ping timeout: 256 seconds) |
| 03:56:15 | → | guest222 joins (~user@49.5.6.87) |
| 03:56:24 | → | vicfred joins (~vicfred@unaffiliated/vicfred) |
| 03:56:40 | <guest222> | why call fixed-point would create loop? |
| 03:57:01 | <dmwit> | Because the way you compute the fixed point is by looping. |
| 03:57:16 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 03:57:21 | <edwardk> | well, consumability basically comes down to squishing a thing down to leave level types we can know don't contain thunks and then copying |
| 03:57:48 | → | Saukk joins (~Saukk@83-148-239-3.dynamic.lounea.fi) |
| 03:58:07 | <edwardk> | so if i can put a thing into a Once a instead of just an 'a' i can know it has been squeeze dry with a single deepseq and share that across future calls to consume |
| 03:58:16 | <edwardk> | or dup |
| 03:58:28 | <dmwit> | (Specifically: the least fixed point of f can be computed by going f (f (f (f (f ...)))), which is a loop.) |
| 03:58:32 | → | ddellacosta joins (~ddellacos@86.106.143.33) |
| 03:58:48 | <edwardk> | er to leaf level |
| 03:59:27 | <dmwit> | The idea being to drop even the very cheap seq on the ()? |
| 03:59:45 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds) |
| 03:59:45 | <dmwit> | But if you can drop the cheap seq, why not skip the Once and drop the deepseq in the first place? |
| 03:59:51 | → | ddellaco_ joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 04:00:05 | <edwardk> | more that the deepseq here is doing much the same work that i want consume/dup to do to ensure there's no as-yet-unconsumed linear resource dangling in a thunk |
| 04:00:49 | × | crobbins quits (~crobbins@2601:2c1:200:ec50:1830:7dd4:a8d3:b056) (Remote host closed the connection) |
| 04:00:52 | <dmwit> | ...oh, interesting. |
| 04:00:56 | <ski> | what kind of linear resource could be a problem ? |
| 04:01:09 | <edwardk> | file handles, sockets, whatever. |
| 04:01:23 | → | crobbins joins (~crobbins@2601:2c1:200:ec50:1830:7dd4:a8d3:b056) |
| 04:01:26 | × | apache8080 quits (~rishi@wsip-70-168-153-252.oc.oc.cox.net) (Ping timeout: 256 seconds) |
| 04:01:28 | <edwardk> | most things like arrays are really affine, so meh |
| 04:01:36 | <ski> | what would be the problem, if you don't ensure this ? |
| 04:01:46 | <edwardk> | its just a thought based on a passing comment in the code for consume for Int |
| 04:01:51 | × | crobbins quits (~crobbins@2601:2c1:200:ec50:1830:7dd4:a8d3:b056) (Remote host closed the connection) |
| 04:01:59 | → | ddellac__ joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 04:02:11 | × | sakirious quits (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Quit: Ping timeout (120 seconds)) |
| 04:02:20 | → | pfurla_ joins (~pfurla@ool-182ed2e2.dyn.optonline.net) |
| 04:02:33 | → | sakirious joins (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) |
| 04:02:45 | × | ddellacosta quits (~ddellacos@86.106.143.33) (Ping timeout: 240 seconds) |
| 04:03:14 | <edwardk> | this is fairly loose in my brain. my intuitions have proven wrong like 2-3 times when digging in linear-base |
| 04:03:28 | → | crobbins joins (~crobbins@2601:2c1:200:ec50:1830:7dd4:a8d3:b056) |
| 04:03:45 | <edwardk> | so i'm choosing to overcompensate and take any positive warnings they give greater shrift than i otherwise might |
| 04:04:24 | × | ddellaco_ quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 260 seconds) |
| 04:05:06 | × | pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 272 seconds) |
| 04:05:14 | <ski> | hm, okay |
| 04:05:25 | × | crobbins quits (~crobbins@2601:2c1:200:ec50:1830:7dd4:a8d3:b056) (Remote host closed the connection) |
| 04:05:33 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 04:06:05 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 04:06:21 | → | crobbins joins (~crobbins@2601:2c1:200:ec50:1830:7dd4:a8d3:b056) |
| 04:06:42 | × | hekkaidekapus_ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds) |
| 04:06:43 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 04:06:59 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 04:07:00 | → | smor joins (~smor@97.115.144.35) |
| 04:08:25 | → | nbloomf joins (~nbloomf@2600:1700:ad14:3020:e8ed:b8de:c4bc:271c) |
| 04:10:18 | → | hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 04:10:29 | × | crobbins quits (~crobbins@2601:2c1:200:ec50:1830:7dd4:a8d3:b056) (Remote host closed the connection) |
| 04:10:40 | → | darjeeling_ joins (~darjeelin@122.245.217.214) |
| 04:11:03 | → | crobbins joins (~crobbins@2601:2c1:200:ec50:1830:7dd4:a8d3:b056) |
| 04:11:38 | × | rj quits (~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds) |
| 04:11:59 | × | Tops2 quits (~Tobias@dyndsl-095-033-089-046.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
| 04:12:02 | × | crobbins quits (~crobbins@2601:2c1:200:ec50:1830:7dd4:a8d3:b056) (Remote host closed the connection) |
| 04:12:51 | → | crobbins joins (~crobbins@2601:2c1:200:ec50:1830:7dd4:a8d3:b056) |
| 04:13:28 | → | esp32_prog joins (~esp32_pro@185.195.233.147) |
| 04:14:34 | × | smor quits (~smor@97.115.144.35) (Changing host) |
| 04:14:34 | → | smor joins (~smor@unaffiliated/smor) |
| 04:17:29 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 04:18:57 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 04:20:51 | → | bitmagie joins (~Thunderbi@200116b806e06a00ddee379279106dee.dip.versatel-1u1.de) |
| 04:22:20 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 04:26:16 | × | pacak quits (~pacak@bb116-14-220-91.singnet.com.sg) (Remote host closed the connection) |
| 04:26:35 | → | pacak joins (~pacak@bb116-14-220-91.singnet.com.sg) |
| 04:27:02 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 264 seconds) |
| 04:28:15 | → | aggin joins (~ecm@103.88.87.93) |
| 04:28:36 | → | seneca joins (~epictetus@ip72-194-215-136.sb.sd.cox.net) |
| 04:28:57 | × | aggin quits (~ecm@103.88.87.93) (Client Quit) |
| 04:30:16 | → | apache8080 joins (~rishi@wsip-70-168-153-252.oc.oc.cox.net) |
| 04:32:19 | × | epicte7us quits (~epictetus@ip72-194-215-136.sb.sd.cox.net) (Ping timeout: 272 seconds) |
| 04:32:33 | → | frozenErebus joins (~frozenEre@94.128.219.166) |
| 04:32:50 | → | bitmagie1 joins (~Thunderbi@200116b8061f5a00d5e2aa6a74fa294f.dip.versatel-1u1.de) |
| 04:33:45 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 04:34:12 | × | bitmagie quits (~Thunderbi@200116b806e06a00ddee379279106dee.dip.versatel-1u1.de) (Ping timeout: 260 seconds) |
| 04:34:12 | bitmagie1 | is now known as bitmagie |
| 04:34:36 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 04:34:39 | × | Sheilong quits (uid293653@gateway/web/irccloud.com/x-xfxeeejhmtblxsmq) () |
| 04:38:06 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) (Read error: Connection reset by peer) |
| 04:38:26 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) |
| 04:38:33 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds) |
| 04:40:30 | × | howdoi quits (uid224@gateway/web/irccloud.com/x-gtvjllhbyskilhtc) (Quit: Connection closed for inactivity) |
| 04:41:00 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 04:43:30 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 04:45:36 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 04:45:50 | × | Saukk quits (~Saukk@83-148-239-3.dynamic.lounea.fi) (Remote host closed the connection) |
| 04:47:36 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds) |
| 04:50:05 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 04:55:16 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
| 04:58:06 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 04:59:57 | × | polyphem quits (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Ping timeout: 258 seconds) |
| 05:00:24 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 05:01:22 | → | haskell58 joins (7d8294d3@125.130.148.211) |
| 05:01:54 | × | haskell58 quits (7d8294d3@125.130.148.211) (Client Quit) |
| 05:02:28 | → | forgottenone joins (~forgotten@176.42.20.136) |
| 05:04:51 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 05:05:06 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 05:05:43 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 05:06:01 | × | gitgood quits (~gitgood@80-44-13-166.dynamic.dsl.as9105.com) (Ping timeout: 260 seconds) |
| 05:07:16 | × | toorevitimirp quits (~tooreviti@117.182.181.253) (Ping timeout: 240 seconds) |
| 05:08:05 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 05:14:15 | × | ddellac__ quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection) |
| 05:14:25 | × | ystael quits (~ystael@209.6.50.55) (Ping timeout: 260 seconds) |
| 05:14:28 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 05:14:30 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 05:14:35 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection) |
| 05:16:09 | × | smor quits (~smor@unaffiliated/smor) (Remote host closed the connection) |
| 05:18:40 | × | forgottenone quits (~forgotten@176.42.20.136) (Quit: Konversation terminated!) |
| 05:19:01 | → | smor joins (~smor@unaffiliated/smor) |
| 05:19:15 | × | fre quits (~freusque@104.238.190.229) (Ping timeout: 246 seconds) |
| 05:19:33 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds) |
| 05:19:53 | × | nf quits (~n@monade.li) (Ping timeout: 258 seconds) |
| 05:22:21 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 05:23:17 | × | Tario quits (~Tario@201.192.165.173) (Ping timeout: 260 seconds) |
| 05:25:53 | → | forgottenone joins (~forgotten@176.42.20.136) |
| 05:27:33 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds) |
| 05:29:58 | × | smor quits (~smor@unaffiliated/smor) (Remote host closed the connection) |
| 05:31:15 | → | jonathanx joins (~jonathan@h-176-109.A357.priv.bahnhof.se) |
| 05:31:48 | × | monochrom quits (trebla@216.138.220.146) (Quit: NO CARRIER) |
| 05:31:51 | → | nf joins (~n@monade.li) |
| 05:31:54 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 05:33:36 | → | gzj joins (~gzj@unaffiliated/gzj) |
| 05:34:22 | → | fre joins (~freusque@104.238.190.229) |
| 05:34:32 | × | Natch quits (~natch@c-b471e255.014-297-73746f25.bbcust.telenor.se) (Ping timeout: 265 seconds) |
| 05:35:25 | × | DataComputist quits (~lumeng@50.43.26.251) (Ping timeout: 260 seconds) |
| 05:37:10 | → | DataComputist joins (~lumeng@50.43.26.251) |
| 05:37:39 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 05:37:42 | → | Natch joins (~Natch@c-b471e255.014-297-73746f25.bbcust.telenor.se) |
| 05:38:20 | × | stree quits (~stree@68.36.8.116) (Ping timeout: 256 seconds) |
| 05:39:09 | → | justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311) |
| 05:40:35 | × | borne quits (~fritjof@200116b8644ab70010f2d07664396fd4.dip.versatel-1u1.de) (Ping timeout: 258 seconds) |
| 05:42:24 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 260 seconds) |
| 05:42:58 | → | monochrom joins (trebla@216.138.220.146) |
| 05:43:31 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 05:45:25 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 05:48:18 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds) |
| 05:49:36 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds) |
| 05:50:39 | × | lemmih quits (~lemmih@2406:3003:2072:44:15d3:24ba:467f:3d99) (Remote host closed the connection) |
| 05:50:48 | → | stree joins (~stree@68.36.8.116) |
| 05:53:05 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Quit: Lost terminal) |
| 05:53:21 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 05:53:48 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 05:55:14 | × | monochrom quits (trebla@216.138.220.146) (Quit: NO CARRIER) |
| 05:55:19 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 265 seconds) |
| 05:55:40 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 05:56:16 | → | lemmih joins (~lemmih@2406:3003:2072:44:5428:f0dd:ed19:b4df) |
| 05:57:37 | → | monochrom joins (trebla@216.138.220.146) |
| 05:59:15 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 06:00:00 | × | klardotsh quits (~klardotsh@75-172-17-41.tukw.qwest.net) (Quit: WeeChat 3.0.1) |
| 06:01:00 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 272 seconds) |
| 06:01:17 | → | klardotsh joins (~klardotsh@75-172-17-41.tukw.qwest.net) |
| 06:03:53 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 260 seconds) |
| 06:04:15 | → | gioyik_ joins (~gioyik@gateway/tor-sasl/gioyik) |
| 06:06:20 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 268 seconds) |
| 06:06:55 | × | rotaerk quits (~rotaerk@ender.afternet.org) (Ping timeout: 265 seconds) |
| 06:07:30 | × | bitmagie quits (~Thunderbi@200116b8061f5a00d5e2aa6a74fa294f.dip.versatel-1u1.de) (Quit: bitmagie) |
| 06:08:04 | × | gioyik_ quits (~gioyik@gateway/tor-sasl/gioyik) (Read error: Connection reset by peer) |
| 06:09:29 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 06:10:31 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 06:12:07 | → | gioyik_ joins (~gioyik@gateway/tor-sasl/gioyik) |
| 06:12:08 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 06:12:08 | → | GZJ0X_ joins (~gzj@unaffiliated/gzj) |
| 06:12:13 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 06:12:36 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 06:14:46 | × | gzj quits (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
| 06:14:58 | × | hekkaidekapus_ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds) |
| 06:19:17 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 260 seconds) |
| 06:23:50 | × | __minoru__shirae quits (~shiraeesh@109.166.59.174) (Ping timeout: 265 seconds) |
| 06:24:47 | × | seneca quits (~epictetus@ip72-194-215-136.sb.sd.cox.net) (Read error: Connection reset by peer) |
| 06:24:47 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 06:26:22 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:28:09 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 06:29:21 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 264 seconds) |
| 06:29:26 | × | nbloomf quits (~nbloomf@2600:1700:ad14:3020:e8ed:b8de:c4bc:271c) (Ping timeout: 264 seconds) |
| 06:31:22 | × | forgottenone quits (~forgotten@176.42.20.136) (Quit: Konversation terminated!) |
| 06:33:57 | → | egp_ joins (~egp_@2.95.74.168) |
| 06:33:58 | → | egp__ joins (~egp_@2.95.74.168) |
| 06:35:46 | → | nbloomf joins (~nbloomf@76.217.43.73) |
| 06:38:16 | × | apache8080 quits (~rishi@wsip-70-168-153-252.oc.oc.cox.net) (Ping timeout: 240 seconds) |
| 06:38:59 | → | rotaerk joins (rotaerk@2600:3c02::f03c:91ff:fe70:4a45) |
| 06:40:25 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 06:42:16 | → | koz joins (~koz@121.99.240.58) |
| 06:42:27 | × | koz_ quits (~koz@2404:4408:4342:2a00:1958:92dc:60f3:680b) (Ping timeout: 260 seconds) |
| 06:43:50 | × | rotaerk quits (rotaerk@2600:3c02::f03c:91ff:fe70:4a45) (Ping timeout: 264 seconds) |
| 06:45:13 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds) |
| 06:51:22 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 06:51:25 | × | nbloomf quits (~nbloomf@76.217.43.73) (Ping timeout: 240 seconds) |
| 06:52:26 | → | nbloomf joins (~nbloomf@2600:1700:ad14:3020:1d7:97cc:1317:bca) |
| 06:55:26 | → | bitmagie joins (~Thunderbi@200116b8061f5a00d5e2aa6a74fa294f.dip.versatel-1u1.de) |
| 06:55:59 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds) |
| 06:56:25 | × | TMA quits (tma@twin.jikos.cz) (Ping timeout: 240 seconds) |
| 06:57:35 | → | knupfer joins (~Thunderbi@200116b82c5b7800ed680aab46f8abc5.dip.versatel-1u1.de) |
| 06:58:34 | × | dumptruckman quits (dumptruckm@2600:3c02::f03c:91ff:fe6e:2cfd) (Quit: ZNC - http://znc.in) |
| 06:58:56 | × | drbean_ quits (~drbean@TC210-63-209-206.static.apol.com.tw) (Ping timeout: 240 seconds) |
| 07:00:00 | × | pengjiz quits (~user@2601:547:902:6d00::1) (Quit: ERC (IRC client for Emacs 27.1)) |
| 07:00:45 | → | aqd joins (~aqd@84.20.147.33) |
| 07:01:12 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 07:02:21 | → | joecordingley joins (~joecordin@37.156.75.63) |
| 07:02:43 | → | dumptruckman joins (dumptruckm@2600:3c02::f03c:91ff:fe6e:2cfd) |
| 07:06:51 | × | joecordingley quits (~joecordin@37.156.75.63) (Ping timeout: 265 seconds) |
| 07:06:59 | <olligobber> | haskell doesn't have a 4 bit type in base? huh |
| 07:07:16 | → | idhugo_ joins (~idhugo@80-62-117-97-mobile.dk.customer.tdc.net) |
| 07:11:42 | × | Chai-T-Rex quits (~ChaiTRex@gateway/tor-sasl/chaitrex) (Ping timeout: 268 seconds) |
| 07:13:22 | → | Chai-T-Rex joins (~ChaiTRex@gateway/tor-sasl/chaitrex) |
| 07:13:40 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 07:13:56 | × | bitmagie quits (~Thunderbi@200116b8061f5a00d5e2aa6a74fa294f.dip.versatel-1u1.de) (Quit: bitmagie) |
| 07:14:35 | → | rotaerk joins (~rotaerk@ender.afternet.org) |
| 07:18:27 | × | frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 265 seconds) |
| 07:18:36 | × | poscat quits (~poscat@114.243.61.85) (Ping timeout: 246 seconds) |
| 07:18:39 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 07:18:42 | × | Jd007 quits (~Jd007@162.156.11.151) (Quit: Jd007) |
| 07:18:51 | × | idhugo_ quits (~idhugo@80-62-117-97-mobile.dk.customer.tdc.net) (Quit: Leaving) |
| 07:19:05 | → | poscat joins (~poscat@114.243.61.85) |
| 07:19:35 | → | Neuromancer joins (~Neuromanc@unaffiliated/neuromancer) |
| 07:20:51 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 07:23:20 | → | poscat1 joins (~poscat@2408:8207:4822:a280::1) |
| 07:24:18 | × | poscat quits (~poscat@114.243.61.85) (Ping timeout: 256 seconds) |
| 07:25:36 | → | Graf_Blutwurst joins (~grafblutw@adsl-178-38-234-220.adslplus.ch) |
| 07:26:41 | <jle`> | do you mean like a literal half byte or like (Bool, Bool) |
| 07:29:36 | → | danvet joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) |
| 07:29:44 | → | bitmagie joins (~Thunderbi@200116b8061f5a00d5e2aa6a74fa294f.dip.versatel-1u1.de) |
| 07:29:48 | → | Varis joins (~Tadas@unaffiliated/varis) |
| 07:30:56 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 07:32:02 | → | Aquazi joins (uid312403@gateway/web/irccloud.com/x-wygvvgugafrkzfoy) |
| 07:32:26 | × | nbloomf quits (~nbloomf@2600:1700:ad14:3020:1d7:97cc:1317:bca) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 07:34:25 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 07:36:11 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 07:36:25 | × | bitmagie quits (~Thunderbi@200116b8061f5a00d5e2aa6a74fa294f.dip.versatel-1u1.de) (Quit: bitmagie) |
| 07:41:29 | → | phpostrich joins (~phpostric@cgn-barr-67-222-245-157.carolinaconnect.net) |
| 07:41:39 | <phpostrich> | Ello |
| 07:42:52 | <phpostrich> | I wanted to learn haskell but Idk if its worth my time... can anyone convince me to use it? |
| 07:43:56 | × | average quits (uid473595@gateway/web/irccloud.com/x-kftgzjbwgakalewc) (Quit: Connection closed for inactivity) |
| 07:45:10 | <Uniaika> | uh |
| 07:45:17 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 07:45:32 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 07:46:02 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 07:46:53 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 07:48:56 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 07:49:38 | <edwardk> | phpostrich: no |
| 07:50:01 | ← | phpostrich parts (~phpostric@cgn-barr-67-222-245-157.carolinaconnect.net) ("Good Bye") |
| 07:51:11 | <edwardk> | jle`: it'd have 4 bools. |
| 07:51:56 | × | ByronJohnson quits (~bairyn@unaffiliated/bob0) (Ping timeout: 240 seconds) |
| 07:52:27 | × | Tene quits (~tene@poipu/supporter/slacker/tene) (Ping timeout: 272 seconds) |
| 07:52:36 | koz | is now known as koz_ |
| 07:53:27 | <koz_> | Vector 4 Bit :P |
| 07:53:49 | → | cfricke joins (~cfricke@unaffiliated/cfricke) |
| 07:55:39 | <olligobber> | Yeah, I'm using (Bool,Bool,Bool,Bool) |
| 07:56:47 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 07:57:40 | → | geyaeb_ joins (~geyaeb@gateway/tor-sasl/geyaeb) |
| 07:58:36 | × | stree quits (~stree@68.36.8.116) (Ping timeout: 240 seconds) |
| 07:58:39 | × | DirefulSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Read error: Connection reset by peer) |
| 07:58:47 | × | zaquest quits (~notzaques@5.128.210.178) (Quit: Leaving) |
| 07:59:11 | × | geyaeb quits (~geyaeb@gateway/tor-sasl/geyaeb) (Ping timeout: 268 seconds) |
| 07:59:26 | → | DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) |
| 07:59:37 | <edwardk> | olligobber: i wrote one in a bdd library to represent binary functions |
| 08:00:14 | <edwardk> | https://github.com/ekmett/coda/blob/master/wip/bdd/Data/BDD.hs#L455 |
| 08:00:32 | <edwardk> | though i just wrote the bits stuff, none of the Num machinery |
| 08:01:03 | → | Yumasi joins (~guillaume@2a01:e0a:5cb:4430:7b45:fc1a:7f85:7f18) |
| 08:01:06 | <olligobber> | interesting |
| 08:01:45 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 264 seconds) |
| 08:02:04 | <olligobber> | I'm mainly using it for hex digits |
| 08:02:36 | <edwardk> | makes sense |
| 08:02:39 | → | Franciman joins (~francesco@host-82-49-79-189.retail.telecomitalia.it) |
| 08:02:55 | × | deviantfero quits (~deviantfe@190.150.27.58) (Ping timeout: 265 seconds) |
| 08:03:37 | → | ByronJohnson joins (~bairyn@unaffiliated/bob0) |
| 08:03:53 | → | Tene joins (~tene@mail.digitalkingdom.org) |
| 08:03:53 | × | Tene quits (~tene@mail.digitalkingdom.org) (Changing host) |
| 08:03:53 | → | Tene joins (~tene@poipu/supporter/slacker/tene) |
| 08:06:24 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 08:06:59 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 08:09:15 | → | dhouthoo joins (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) |
| 08:12:20 | → | stree joins (~stree@68.36.8.116) |
| 08:13:34 | × | bitmapper quits (uid464869@gateway/web/irccloud.com/x-foajjiotajxkliux) (Quit: Connection closed for inactivity) |
| 08:14:15 | → | zaquest joins (~notzaques@5.128.210.178) |
| 08:15:10 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 08:16:18 | → | forgottenone joins (~forgotten@176.88.28.250) |
| 08:16:32 | × | skregas_ quits (~skregas@201.89-10-150.nextgentel.com) (Ping timeout: 272 seconds) |
| 08:16:39 | <koz_> | edwardk: I was looking at 'data Store i o r = Store (i -> r) o' from one of your old articles. You say it's an _indexed_ store comonad. How is that different from the regular store comonad? |
| 08:16:46 | → | gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh) |
| 08:17:02 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:28b0:4c0c:b54b:e522) (Remote host closed the connection) |
| 08:17:35 | <brkscnce> | hey, is there some construct to reference a value computed within an expression multiple times in the expression? |
| 08:18:17 | <brkscnce> | something like python's walrus operator I guess |
| 08:18:57 | <edwardk> | i isn't necessarily o |
| 08:19:16 | <edwardk> | start with 'indexed state' and it might be easier |
| 08:19:28 | <edwardk> | s -> (a, s) becomes i -> (a, o) -- for state |
| 08:19:45 | <koz_> | Ah, I see! |
| 08:19:53 | <edwardk> | and you can talk about operations like pure :: a -> State i o a, and work out the operation for (>>=) |
| 08:20:01 | <edwardk> | er pure :: a -> State i i a |
| 08:20:15 | <koz_> | So the idea is that with _un_indexed st{ate,ore}, i ~ o? |
| 08:20:20 | <edwardk> | yeah |
| 08:20:40 | <edwardk> | this is what i usually label an 'atkey style' indexed monad |
| 08:20:42 | <koz_> | OK, thanks, that makes sense now. |
| 08:20:45 | <brkscnce> | trying to split a list, then decide on whether to include the first element of the second list in the first list instead based on a conditional |
| 08:20:45 | <edwardk> | where you have two parameters |
| 08:20:48 | <koz_> | I'm familiar with those. |
| 08:21:03 | <edwardk> | another equivalently powerful way is to use one index surprisingly. but a different kind |
| 08:21:25 | <edwardk> | this is the kleisli arrows of outrageous fortune paper by conor mcbride |
| 08:21:34 | <edwardk> | as well as the conversion to-from atkey style |
| 08:21:40 | <edwardk> | at least for the monad side |
| 08:21:50 | <koz_> | I tried reading that paper, but Conor's writing style throws me for a loop. |
| 08:21:55 | <edwardk> | i had to derive how to do it for the comonad side myself (it uses a rather different trick) |
| 08:22:02 | <koz_> | Might be a good time to look at it again though. |
| 08:22:07 | × | hiroaki_ quits (~hiroaki@2a02:8108:8c40:2bb8:4773:d7d4:420a:eae0) (Ping timeout: 272 seconds) |
| 08:22:12 | <koz_> | Since I actually _understand_ your earlier derivations now. :P |
| 08:22:13 | <edwardk> | i find it more interesting to just write down the types and play with them |
| 08:23:20 | <edwardk> | i have an unpublished package here: https://github.com/ekmett/indexed/tree/master/src/Indexed |
| 08:23:59 | <edwardk> | https://github.com/ekmett/indexed/blob/master/src/Indexed/Comonad/Store.hs#L30 is a mcbride style store comonad |
| 08:24:02 | <edwardk> | for comparison |
| 08:24:07 | <jle`> | categories are just indexed monoids, whats the problem |
| 08:24:15 | × | totoro2021 quits (~t@unaffiliated/totoro2021) (Read error: Connection reset by peer) |
| 08:24:18 | <edwardk> | i prefer monoidoids |
| 08:24:21 | <koz_> | jle`: :P |
| 08:24:32 | <koz_> | ~> is an NT? |
| 08:24:48 | <edwardk> | its the parametric monster we usually call a natural transformation but is stronger, yes |
| 08:25:06 | <edwardk> | forall i. s i -> a i |
| 08:25:23 | <koz_> | Yeah, that's the one I'm familiar with. |
| 08:25:28 | <koz_> | Just wanted to make sure. |
| 08:25:30 | → | totoro2021 joins (~t@unaffiliated/totoro2021) |
| 08:26:25 | <edwardk> | in haskell that is a bit stronger than what folks in category theory call a natural transformation. morally you can think of it as in category theory that for each object in the category (i) you get an arrow associated with it from f i -> g i. which _seems_ like what you get here at first glance. |
| 08:26:45 | <edwardk> | then you realize instead of getting one arrow for each i you get one arrow in total, it can just be given all those types. |
| 08:27:04 | <edwardk> | you don't get to know i and do different things based on that information as long as the little square commutes |
| 08:27:24 | <edwardk> | so parametricity is a stronger constraint than what a category theorist means when they talk about natural transformations |
| 08:27:35 | <edwardk> | so i get super anal retentive when someone applies that word here =) |
| 08:27:49 | <koz_> | So what's the Edward-approved name for ~>? |
| 08:27:56 | <edwardk> | I usually go with ~> |
| 08:27:58 | <edwardk> | =) |
| 08:28:03 | <koz_> | How do you pronounce that? |
| 08:28:12 | <edwardk> | and make you try to figure out how to say "squiggly arrow" without sounding like a goofball |
| 08:28:14 | → | thorsten` joins (~Thorsten@ananke.uberspace.de) |
| 08:28:23 | <edwardk> | that is the penance for abusing the term natural transformation for so long ;) |
| 08:28:37 | <koz_> | Eh, I'll just say NT (as in, 'enn-tee'). |
| 08:29:00 | edwardk | twitches. |
| 08:29:03 | <koz_> | Then I can say it's a homophone that's completely unrelated to acronyms of anything. |
| 08:29:06 | <koz_> | Because English. |
| 08:29:55 | <edwardk> | https://www.cs.bham.ac.uk/~udr/papers/logical-relations-and-parametricity.pdf goes into the naturality vs. parametricity issue more deeply but it does get mathy fast |
| 08:30:11 | <ukari> | jackdk, thank you |
| 08:30:18 | × | Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer) |
| 08:30:18 | <thorsten`> | Hi, I'm looking for a monad that models consuming elements from the head of a list. Is there any in base or transformers or should I just use State/StateT/ST? |
| 08:30:20 | <koz_> | edwardk: I might have a look at it when it's not 9.30pm. |
| 08:30:48 | <edwardk> | thorsten`: well. let's work it through for a sec |
| 08:31:00 | <edwardk> | you could always use State [x] a |
| 08:31:02 | <brkscnce> | the squiggly arrow thing reminds me of this smbc comic https://www.smbc-comics.com/?id=3278#comic |
| 08:31:14 | <edwardk> | but there's a technically slightly tighter monad you could build based on something called an update monad |
| 08:31:49 | → | kritzefitz joins (~kritzefit@fw-front.credativ.com) |
| 08:31:50 | <edwardk> | the issue with state is that state is a little 'too big' for the problem asked for. in that you can save the current string and restore back to it after other operations. |
| 08:32:00 | <edwardk> | do you know what a monoid action is? |
| 08:32:29 | <thorsten`> | in math; yes; in haskell: no |
| 08:32:43 | <koz_> | Oh oh oh, we get an edwardk article in real time! |
| 08:32:49 | koz_ | grabs popcorn. |
| 08:33:00 | <edwardk> | ok, so let's think about a monoid acting on your list. the monoid i'm going to choose will be the natural numbers with addition |
| 08:33:04 | <edwardk> | and the action will be 'drop' |
| 08:33:15 | → | oish joins (~charlie@228.25.169.217.in-addr.arpa) |
| 08:33:22 | → | hiroaki_ joins (~hiroaki@2a02:8108:8c40:2bb8:b00a:55a1:d947:55ef) |
| 08:33:24 | <edwardk> | so we can model the limited subset of state actions we want to take with a monad that looks like |
| 08:33:45 | <edwardk> | newtype M x a = M { runM :: [x] -> (a, Int) } |
| 08:34:00 | → | borne joins (~fritjof@200116b8648b430010f2d07664396fd4.dip.versatel-1u1.de) |
| 08:34:04 | <edwardk> | instead of being able to get _any_ list out, all you get is the monoid that acts on the input you've seen |
| 08:34:20 | <edwardk> | then applying drop with that number to the current list gives you the new tail that you can feed to the rest of (>>=) |
| 08:35:05 | <edwardk> | i wrote an older article on this topic: https://www.schoolofhaskell.com/user/edwardk/heap-of-successes |
| 08:35:27 | <edwardk> | based on an old paper on "How to replace failure with a list of successes" which is one of the earliest parser combinator approaches |
| 08:36:27 | <edwardk> | the goal there was to derive a slightly more efficient applicative for list-of-successes style parsing |
| 08:36:57 | <edwardk> | anyways, is it practically better than state? not entirely clear |
| 08:37:17 | <edwardk> | it has the downside that the action has to be applied over and over, so you 'drop' the same elements from the list in the left associated (>>=) case |
| 08:37:59 | ski | . o O ( `Codensity' ? ) |
| 08:38:06 | <koz_> | Was about to say... |
| 08:38:09 | <edwardk> | so you don't want to do this left associated, which means moving to a cps'd version of the monad to rule it out completely or using codensity or another trick, or just accepting that you work with state and that the only operations you really want to do are to drop |
| 08:38:10 | <edwardk> | yeah |
| 08:38:22 | <edwardk> | codensity is one solution, a cps'd state monad is another |
| 08:38:29 | <edwardk> | er cps'd update monad |
| 08:38:53 | <edwardk> | codensity is too big when directly applied, so the cps'd update monad is arguably better |
| 08:39:08 | <ski> | thorsten` : iirc, "consuming elements from the head of a list" is sometimes called `Supply' ? |
| 08:39:16 | → | frozenErebus joins (~frozenEre@94.128.219.166) |
| 08:39:17 | <edwardk> | another option is to move to a representation of the input that has constant time drop, then left associated or right associated don't matter |
| 08:39:38 | <thorsten`> | edwardk: thanks, I'll try it with the M you provided :) |
| 08:39:41 | <edwardk> | e.g. replacing the [a] with a Vector a or some unboxed thing. |
| 08:40:07 | <edwardk> | thorsten`: in practice? i'd probably use State in production code. for learning? i'd probably build M. |
| 08:40:22 | <ski> | too big, in what sense ? |
| 08:40:36 | <koz_> | ski: Does too much stuff I think. |
| 08:40:37 | <ski> | @unmtl ContT o (StateT s m) a |
| 08:40:37 | <lambdabot> | (a -> s -> m (o, s)) -> s -> m (o, s) |
| 08:40:39 | <ski> | @unmtl ContT o (ReaderT s m) a |
| 08:40:39 | <lambdabot> | (a -> s -> m o) -> s -> m o |
| 08:40:48 | <edwardk> | in the same sense that codensity reader is bigger than reader |
| 08:41:04 | <ski> | the latte is what you want (with `forall o.') ? |
| 08:41:23 | <edwardk> | yeah with the output s being an Int |
| 08:41:28 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 08:41:36 | <edwardk> | and the input one [x] |
| 08:41:37 | <ski> | @unmtl StateT s (ContT o m) a |
| 08:41:38 | <lambdabot> | s -> (a -> s -> m o) -> m o |
| 08:41:45 | <thorsten`> | ski: ah, is see, Since I only need it in one place, I think I'd rather use state or a self-built than introducing a dependency to transformers-supply |
| 08:42:41 | <ski> | edwardk : `forall o. (a -> Int -> m o) -> [x] -> m o' ? |
| 08:42:52 | <edwardk> | if it must be a transformer, yes. |
| 08:42:56 | <ski> | yea |
| 08:43:23 | <ski> | (just asking for the transformer to get two for the price of one) |
| 08:43:47 | <edwardk> | yeah, that is the 'right sized' version of it. this is basically the same approach from my 'free monads for less' article series |
| 08:43:56 | <edwardk> | where codensity was sufficient but did way too much |
| 08:45:42 | edwardk | stares down quite how many representation-indexed monads he has to write and decides maybe he should read some random webnovel instead |
| 08:47:07 | edwardk | then looks up at state and realizes he doesn't know hw to simultaneously index on both the representation of s and a nicely. |
| 08:47:08 | <ski> | now i'm wondering whether `StateT s (Codensity m) a ~= s -> Codensity m (a,s) ~= forall o. s -> (a -> s -> m o) -> m o' would avoid the left-associativity problem |
| 08:48:10 | <edwardk> | quite likely we wound up using a cps'd monad like that as the base monad in the monad transformer stack for scalaz and that was enough to prevent all the derived monads from blowing the stack |
| 08:48:18 | koz_ | just read 'coupdate comonad' and giggled. |
| 08:48:20 | <edwardk> | so while i haven't thought this through rigorously it feels right |
| 08:48:44 | × | frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 256 seconds) |
| 08:48:45 | → | chele joins (~chele@ip5b40237d.dynamic.kabel-deutschland.de) |
| 08:49:05 | × | esp32_prog quits (~esp32_pro@185.195.233.147) (Ping timeout: 240 seconds) |
| 08:50:06 | <edwardk> | koz_: i still want 'relative lenses' made out of coupdate comonad coalgebras where you get a restricted update vocabulary rather than the ability to set all values in the target type regardless of where you came from |
| 08:50:45 | <koz_> | edwardk: Getter and setter technology for Haskell. :P |
| 08:50:53 | ski | . o O ( "co-(update monad algebras)" ) |
| 08:51:26 | <edwardk> | something like (a -> f i) -> s -> f j -- where i is a monoid that acts on a, and j is a monoid that acts on s. |
| 08:51:30 | <ski> | how's it relative, or restricted ? |
| 08:51:41 | <edwardk> | and then the lens is sort of a translation between update languages |
| 08:51:47 | <ski> | hm |
| 08:52:22 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 08:53:34 | <Franciman> | Hi, I was reading that https://hackage.haskell.org/package/contravariant-1.4/docs/Data-Functor-Contravariant.html if a type is both a functor and a contravariant (lawfully) then I can prove that |
| 08:53:40 | <Franciman> | fmap f = contramap f = phantom |
| 08:53:44 | <edwardk> | its restricted for the same reason that an update monad is a 'restricted' state monad. |
| 08:53:45 | <Franciman> | how can I prove it? |
| 08:53:53 | → | fendor joins (~fendor@91.141.0.220.wireless.dyn.drei.com) |
| 08:54:07 | <edwardk> | with a state monad holding, say, all the file handles you've seen and some details about them, you have to worry about the unrestricted power of get/set |
| 08:54:52 | <ski> | edwardk : mhm. you can only specify increments/diffs, relative to the current position, rather that substituting an arbitrary new one for the old |
| 08:54:56 | <edwardk> | Franciman: my recollection was that the proof used the free theorems for fmap/contramap |
| 08:55:31 | <edwardk> | ski: exactly. so if i give you a limited vocabulary for your monoidal updates (or categorical updates if you index this whole construction) then i can know its made out of legal steps |
| 08:55:34 | <ski> | edwardk : what about the ability to change the type of the target of the lens ? |
| 08:55:41 | <Franciman> | thanks edwardk |
| 08:55:52 | <edwardk> | ski: replace monoid actions with category actions |
| 08:56:03 | <ski> | you use a "category action" instead of a monoid action ? |
| 08:56:05 | <ski> | ah |
| 08:56:06 | <edwardk> | becomes harder to state in haskell |
| 08:56:10 | <ski> | mm |
| 08:56:34 | ski | . o O ( "vertical categorification" ) |
| 08:57:04 | <edwardk> | just like how its hard to _really_ give correct types to incremental programs as you have some term x in type a. and some update that is actually dependent on the term x you have in type a. |
| 08:57:26 | <ski> | (hm, i guess it's "horizontal". easy to confuse these ones) |
| 08:57:28 | <edwardk> | proper incremental changes require a sort of dependent type |
| 08:57:46 | → | acidjnk_new joins (~acidjnk@p200300d0c739092208198526eb118d06.dip0.t-ipconnect.de) |
| 08:58:22 | <ski> | ("horizontal" being to replace a single object with multiple ones. "vertical" being to introduce "morphisms between my morphisms !?". and there's also "replace undirected by directed") |
| 08:58:47 | <edwardk> | similarly "real" update monads want a more accurate type than just a monoid acting on a state. tarmo uustalu's paper on the topic gives a more accurate condition |
| 08:59:27 | <ski> | edwardk : re correct types for incremental/adaptive computation .. yea, i remember some paper about incremental lambda-calculus mentioned that |
| 08:59:30 | <edwardk> | https://danel.ahman.ee/papers/types13postproc.pdf |
| 08:59:55 | <edwardk> | is the better update monad paper than the rant above. |
| 09:00:08 | <ski> | ok, ty |
| 09:00:30 | <edwardk> | and its why i tend to think of lots of things in 'directed containers' style vocabulary |
| 09:00:39 | <edwardk> | unfortunately i can't quite express it right in haskell |
| 09:01:04 | <edwardk> | so i limit myself to the monoid-based parody of the idea given above which works for simple things i might update |
| 09:01:21 | <ski> | makes sense |
| 09:03:30 | → | Feuermagier joins (~Feuermagi@2a02:2488:4211:3400:246e:bf09:8453:9d6) |
| 09:04:26 | <edwardk> | currently bending my brain around representation polymorphic ST before trying to move to tougher prey |
| 09:05:26 | × | sw1nn quits (~sw1nn@2a00:23c6:2385:3a00:6be:14ea:238:81cf) (Ping timeout: 240 seconds) |
| 09:05:27 | <edwardk> | writing bindST felt like it was quite an accomplishment the other night |
| 09:05:39 | <edwardk> | that Lev trick i mentioned turned out to be the key to making it possible at all |
| 09:05:47 | × | whald quits (~trem@2a02:810a:8100:11a6:15b2:7454:c339:fb18) (Remote host closed the connection) |
| 09:05:59 | <edwardk> | without it i think bindST has to live in a class parameterized on both source and target representation |
| 09:06:11 | <edwardk> | and that rather drastically limits the viability of the technique |
| 09:06:29 | <ski> | "A Theory of Changes for Higher-Order Languages: Incrementalizing λ-Calculi by Static Differentiation" by Yufei Cai,Paulo G. Giarrusso (pgiarrusso),Tillmann Rendel,Klaus Ostermann in 2014-06-(09-11) at <https://www.informatik.uni-marburg.de/~pgiarrusso/papers/pldi14-ilc-author-final.pdf>,"Incremental λ-Calculus" <https://www.informatik.uni-marburg.de/~pgiarrusso/ILC/> was the paper i was thinking about |
| 09:06:35 | <ski> | above, mentioning needing dependent types to allow the admissible changes to depend on the current position |
| 09:06:50 | <edwardk> | yeah |
| 09:07:27 | <ski> | now you're parameterizing just on target ? |
| 09:07:39 | <edwardk> | i split the class |
| 09:07:47 | <edwardk> | by using Lev to pull off the trick |
| 09:08:20 | → | Feuermagier_ joins (~Feuermagi@2a02:2488:4211:3400:246e:bf09:8453:9d6) |
| 09:08:31 | <edwardk> | mkSTRes :: forall r (b :: TYPE r) s. STRep r => State# s -> Lev b -> (# State# s, b #) -- is the secret |
| 09:09:19 | Feuermagier_ | is now known as octopus |
| 09:09:21 | <edwardk> | er rather bindST is easy |
| 09:09:24 | <edwardk> | fmapST is hard |
| 09:09:25 | <edwardk> | sorry |
| 09:09:29 | octopus | is now known as octopus120 |
| 09:09:31 | → | hendursa1 joins (~weechat@gateway/tor-sasl/hendursaga) |
| 09:09:42 | <edwardk> | for a 'linear' ST that is representation polymorphic i get something like: |
| 09:10:15 | × | oish quits (~charlie@228.25.169.217.in-addr.arpa) (Ping timeout: 246 seconds) |
| 09:10:38 | <edwardk> | https://www.irccloud.com/pastebin/YcMvs6bX/ST.hs |
| 09:10:43 | × | hendursaga quits (~weechat@gateway/tor-sasl/hendursaga) (Ping timeout: 268 seconds) |
| 09:10:49 | <octopus120> | interesting |
| 09:11:03 | ← | octopus120 parts (~Feuermagi@2a02:2488:4211:3400:246e:bf09:8453:9d6) () |
| 09:11:17 | <edwardk> | case unST m s of (# s', a #) -> mkSTRes s' (f a) -- is the meat of this |
| 09:11:34 | <ski> | `mkSTRes' is basically just a pairing, that works representation-polymorphically ? |
| 09:11:37 | <edwardk> | remember i can't apply a function to an argument without knowing the representation of that argument. |
| 09:12:02 | <edwardk> | so if i go to write case unST m s of (# s', a #) -> (# s', f a #) -- i get stuck |
| 09:12:07 | <edwardk> | i can compute -> f a there |
| 09:12:14 | <edwardk> | but i can't put it into the (# , #) |
| 09:12:24 | <edwardk> | because i don't know the representation of the output of f a |
| 09:12:45 | <ski> | mhm |
| 09:12:59 | <ski> | ah, `mkSTRes' is a method |
| 09:13:08 | <edwardk> | but... Lev is basically the wrapper being built by f a, i lift 'f a' into a calculation that will return its result when you peel the (()~()) => ... off |
| 09:13:30 | → | average joins (uid473595@gateway/web/irccloud.com/x-zorlcjntmtivoxma) |
| 09:13:32 | <edwardk> | and then the mkSTRes on the target type can invoke that get the answer and put it in the (#, #) |
| 09:14:06 | <edwardk> | with that i get the option to define a representation polymorphic functor one of several ways and i'm not sure which i like |
| 09:14:19 | <edwardk> | class Functor (f :: forall (r :: RuntimeRep). TYPE r -> TYPE s) where; type FunctorRep f :: RuntimeRep -> Constraint; fmap :: forall r (a :: TYPE r) rb (b :: TYPE rb). (FunctorRep f r, FunctorRep f rb) => (a -> b) -> f a -> f b -- is one such option |
| 09:14:39 | <edwardk> | this however limits me to only functors that work for all representations |
| 09:14:58 | <edwardk> | or rather for whatever ones have my particular FunctorRep class instantiated |
| 09:15:08 | <edwardk> | which i'd do the same backpack dance i'm doing for all of unlifted for at least the base ones |
| 09:15:19 | <edwardk> | another option is something like |
| 09:15:34 | <edwardk> | class JankyFunctor (f :: TYPE r -> TYPE s) (g :: TYPE r' -> TYPE s') | f r -> s, g r' -> s', f r' -> g, g r -> f where jmap :: forall (a :: TYPE r) (b :: TYPE r'). (a -> b) -> f a -> g b |
| 09:15:52 | <edwardk> | where you give me instances pointwise. |
| 09:16:18 | <ski> | hm, so `f b' could be an unboxed tuple, e.g. ? |
| 09:16:28 | <edwardk> | but this turns out to burn me when it comes to my Maybe and List definitions in the package. |
| 09:16:29 | <edwardk> | yeah |
| 09:16:41 | → | pera joins (~pera@unaffiliated/pera) |
| 09:16:44 | → | integerDivision joins (d5b21a29@gateway/web/cgi-irc/kiwiirc.com/ip.213.178.26.41) |
| 09:16:48 | <edwardk> | JankyFunctor is pretty robust. i can use it for Maybe# which is going to produce an unboxed sum, etc. |
| 09:17:17 | <edwardk> | but its not good enough for List where List is actually a type family so it can include [] and Maybe which is actually a type family so it can include Prelude.Maybe |
| 09:17:33 | <edwardk> | because i can't write JankyFunctor List List |
| 09:17:35 | → | Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
| 09:17:48 | <edwardk> | or JankyFunctor (List @r) (List @s) -- because List is a synonym |
| 09:17:55 | <edwardk> | so to fix that i need to split JankyFunctor in half |
| 09:18:00 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) |
| 09:18:01 | → | sw1nn joins (~sw1nn@2a00:23c6:2385:3a00:9310:964a:9231:59c9) |
| 09:18:20 | <edwardk> | and turn the inference rules that determine g from f and the second representation into one class, and the way back into another. |
| 09:18:38 | <edwardk> | just like i did with Wrapped and Rewrapped in lens to make inference work a bit better |
| 09:18:39 | <ski> | hm, `JankyFunctor' makes me think of natural transformations |
| 09:18:48 | <edwardk> | it should =) |
| 09:19:13 | <ski> | (using the diagonal in the naturality square, instead of the plain "uniindexed" map, for each index) |
| 09:19:21 | <edwardk> | except here unlike in the parametric crappy haskell case the 'points' matter. |
| 09:19:25 | <edwardk> | yep |
| 09:20:27 | <edwardk> | so with the split JankyFunctor i could basically make it say that coming from Prelude.Maybe you can infer any member of the type family Maybe @r |
| 09:20:39 | <ski> | i've noticed libary functions commonly offering `forall a b. (a -> b) -> (F a -> G b)' instead of, or in addition to, `forall a. F a -> G a' |
| 09:21:09 | <edwardk> | and then if the type family was closed and switched between Prelude.Maybe and a fixed data family MaybeFam then i could have the other instance mapping from MaybeFam also to the type family |
| 09:21:22 | <edwardk> | and then JankyFunctor's split twin properly handles my List and Maybe type families |
| 09:21:28 | <ski> | or, hm, something like that, at least |
| 09:22:28 | → | functionalSalad joins (d5b21a29@gateway/web/cgi-irc/kiwiirc.com/ip.213.178.26.41) |
| 09:22:44 | <edwardk> | anyways with that in place i'd be able to work in IO returning unlifted values from individual combinators or ST s, etc. |
| 09:22:50 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Ping timeout: 264 seconds) |
| 09:22:54 | <edwardk> | the next hurdle is of course State s a |
| 09:23:02 | <edwardk> | which is a nightmare because of the (s, a) |
| 09:23:13 | <edwardk> | CPSing it can let me play Lev games i think |
| 09:23:39 | <ski> | but prevents some lazy games, yes ? |
| 09:23:39 | × | functionalSalad quits (d5b21a29@gateway/web/cgi-irc/kiwiirc.com/ip.213.178.26.41) (Client Quit) |
| 09:23:43 | <edwardk> | and of course there's the ReaderT IO pattern which might reduce the pressure |
| 09:23:44 | <edwardk> | yeah |
| 09:24:06 | <edwardk> | but then having a strict (# #) tuple in the result would also |
| 09:24:19 | <ski> | mm |
| 09:24:28 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 09:24:44 | <edwardk> | so i'm slowly butting into the ceiling for this crazy unlifted approach |
| 09:24:45 | <ski> | (i was thinking of some left-recursion example) |
| 09:24:50 | <edwardk> | yeah |
| 09:25:56 | <ski> | (monochrom had some nice examples of this, iirc, on <lpaste.net> .. also some fun `unsafeInterleaveST' ones) |
| 09:26:25 | <edwardk> | my usual goto is the foo = do fail "don't launch missiles"; put "ok" |
| 09:26:38 | <ski> | hehe, yah |
| 09:27:01 | <ski> | (still not really getting how the `JankyFunctor' would apply/help with what you're doing) |
| 09:27:37 | <edwardk> | the goal was to get (>>=) , etc. to just work with representation polymorphic functors |
| 09:27:45 | <edwardk> | even if the arrows you feed me for fmap, etc. change reps |
| 09:28:11 | <edwardk> | :t enumFromThenTo |
| 09:28:12 | <lambdabot> | Enum a => a -> a -> a -> [a] |
| 09:28:13 | <ski> | "representation polymorphic functors" meaning what .. or how does it help ? |
| 09:28:19 | → | kuribas joins (~user@ptr-25vy0i970oqtzc3b45o.18120a2.ip6.access.telenet.be) |
| 09:28:26 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 240 seconds) |
| 09:28:52 | <edwardk> | the default definition of that builds up a list of values of type Int, but then if i instantiate that for an a of kind TYPE 'DoubleRep or something i have to convert the list to one of a different type |
| 09:28:58 | <edwardk> | it'd be nice if 'map' just worked here |
| 09:29:10 | × | GZJ0X_ quits (~gzj@unaffiliated/gzj) (Read error: Connection reset by peer) |
| 09:29:22 | <ski> | mhm |
| 09:29:23 | <edwardk> | Just 1# :: Maybe Int# |
| 09:29:31 | → | GZJ0X_ joins (~gzj@unaffiliated/gzj) |
| 09:29:33 | <edwardk> | is the easiest way to see it |
| 09:30:15 | <edwardk> | or Maybe (MutVar# RealWold Foo) |
| 09:30:24 | <edwardk> | holding an unlifted MutVar# directly |
| 09:30:27 | × | jb55 quits (~jb55@gateway/tor-sasl/jb55) (Ping timeout: 268 seconds) |
| 09:30:37 | <edwardk> | now use (>>=) on that Maybe |
| 09:30:51 | <edwardk> | or let an IO action return the raw unlifted Array# |
| 09:31:08 | <edwardk> | rather than having to open up IO and go in and fiddle with State# RealWorld yourself |
| 09:31:18 | <edwardk> | and then put it in a box before a user sees it |
| 09:32:04 | <edwardk> | i'd _like_ to put programming with unlifted values on nearly equal footing to programming with lifted ones |
| 09:32:11 | <edwardk> | with the standard classes just working |
| 09:32:20 | <edwardk> | in practice i anticipate this needs more compiler support |
| 09:32:25 | × | ukari quits (~ukari@unaffiliated/ukari) (Remote host closed the connection) |
| 09:32:27 | <ski> | the unlifted `MutVar# s a' is the reference/pointer/address directly to the cell, yes ? |
| 09:32:32 | <edwardk> | but without a decent prototype of the vision its hard to get others on board |
| 09:32:33 | <edwardk> | yeah |
| 09:32:52 | → | ukari joins (~ukari@unaffiliated/ukari) |
| 09:32:54 | <edwardk> | data IORef s a = IORef (MutVar# s a) -- is the box around the mutvar |
| 09:33:19 | <edwardk> | the MutVar# s a is a mutable reference cell on the heap that holds a pointer to the actual object |
| 09:34:18 | <edwardk> | but with type IORef# = MutVar# RealWorld -- newIORef# :: a -> IO (IORef# a)) |
| 09:34:56 | <edwardk> | gives me back the naked MutVar# and then i can put it in my constructor with my own box, and use the nice do notation even though its unlifted, etc. |
| 09:35:04 | → | dsrt^ joins (dsrt@ip98-184-89-2.mc.at.cox.net) |
| 09:35:27 | <ski> | sometimes i've wanted to be able to rephrase e.g. `newtype Foobar a = MkFooBar (ReaderT R (State S) a)' as `newtype Foobar :: * -> * = MkFooBar (ReaderT R (State S))' .. iow have the target type of `newtype's not necessarily be `*' |
| 09:35:52 | <edwardk> | we have unlifted newtypes now |
| 09:36:07 | <ski> | now it can be `#' (i use that as an abbreviation for the details), as well, which is an improvement |
| 09:36:09 | <edwardk> | its not quite there |
| 09:36:19 | <edwardk> | but its getting closer |
| 09:36:35 | <edwardk> | i advocated for the newtypes over kind i -> ... as well at the time |
| 09:36:43 | <edwardk> | using Coercible as a justification |
| 09:36:50 | <edwardk> | but simon didn't buy it |
| 09:37:06 | <edwardk> | i'll keep making the case |
| 09:37:12 | ski | smiles |
| 09:37:33 | <ski> | i'm not quite sure how it would work .. but i think it would be nice, if we could get a reasonable story |
| 09:37:49 | <edwardk> | i think the issue is the constructor doesn't make sense |
| 09:37:50 | → | leo___ joins (~leo@cpc96810-rdng27-2-0-cust409.15-3.cable.virginm.net) |
| 09:37:57 | <ski> | yea .. |
| 09:38:13 | <edwardk> | so you can only coerce |
| 09:38:22 | <edwardk> | and we don't have a syntax for that |
| 09:38:25 | <ski> | (i've been pondering a little some ideas about internal language in functor categories ..) |
| 09:39:39 | <edwardk> | another option would be some scarier rules about coercible that looked at the definition of a newtype and checked to see if it could be eta-reduced like that |
| 09:39:51 | <edwardk> | and gave the more general Coercible definition |
| 09:40:30 | <edwardk> | Then the Coercible for Foo a to Bar b would be build off of Coercible Foo Bar and Coercible a b |
| 09:41:14 | <edwardk> | right now you have to fully saturate which blocks a number of usecases |
| 09:42:25 | × | Feuermagier quits (~Feuermagi@2a02:2488:4211:3400:246e:bf09:8453:9d6) (Quit: Leaving) |
| 09:42:44 | × | Aquazi quits (uid312403@gateway/web/irccloud.com/x-wygvvgugafrkzfoy) (Quit: Connection closed for inactivity) |
| 09:43:33 | <ski> | also reminds me i've wanted to be able to say things like `newtype c (Foo a) = FmapFoo (c (Bar a Int))' where say `Foo :: * -> K',`Bar :: * -> * -> K' and `FmapFoo :: forall (c :: K -> *). c (Bar a Int) -> c (Foo a)' |
| 09:44:03 | <edwardk> | yeah, that rhymes here |
| 09:44:16 | × | afidegnum quits (~afidegnum@102.176.65.99) (Ping timeout: 240 seconds) |
| 09:44:28 | <edwardk> | ok, sleepy time. i have a stupid early day tomorrow |
| 09:44:42 | <ski> | .. also wanting to be able to redeclare a `newtype', with a different data constructor, as long as the representations are coercible |
| 09:44:59 | → | Feuermagier joins (~Feuermagi@2a02:2488:4211:3400:246e:bf09:8453:9d6) |
| 09:45:24 | <edwardk> | pattern synonyms? |
| 09:45:54 | <ski> | so we could both have `newtype State s a = MkState (s -> (s,a))' and `newtype State s a = StateFromStateT (StateT Identity s a)' at the same time |
| 09:46:07 | <ski> | yea .. i guess |
| 09:46:17 | → | jb55 joins (~jb55@gateway/tor-sasl/jb55) |
| 09:46:27 | → | afidegnum joins (~afidegnum@102.176.65.243) |
| 09:46:46 | <ski> | (well, or possibly the latter being a synonym, `StateT' still being a a `newtype') |
| 09:47:32 | <ski> | have fun with `Lev' |
| 09:51:57 | → | catt joins (~r@31.127.31.99) |
| 09:53:12 | × | SupaYoshi quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!) |
| 09:54:19 | → | DataComp_ joins (~lumeng@50.43.26.251) |
| 09:54:23 | → | MVQq joins (~anja@198.254.199.42) |
| 09:54:27 | → | vchlup_ joins (~vchlup@nat.brnet.cz) |
| 09:54:34 | × | hololeap quits (~hololeap@unaffiliated/hololeap) (Ping timeout: 265 seconds) |
| 09:54:39 | → | dcoutts_ joins (~dcoutts@unaffiliated/dcoutts) |
| 09:54:40 | → | travisb_ joins (~travisb@172-13-49-137.lightspeed.milwwi.sbcglobal.net) |
| 09:54:43 | → | ralu9 joins (~ralu@static.211.245.203.116.clients.your-server.de) |
| 09:54:49 | × | dh quits (dh@bsd.ee) (Disconnected by services) |
| 09:54:55 | → | dh_ joins (dh@bsd.ee) |
| 09:55:03 | → | concept27 joins (~concept2@unaffiliated/tubo) |
| 09:55:05 | → | MasseR3 joins (~MasseR@51.15.143.128) |
| 09:55:20 | → | madnificent_ joins (~madnifice@static.210.74.63.178.clients.your-server.de) |
| 09:55:20 | → | lockshaw_ joins (~lockshaw@165.22.163.71) |
| 09:55:36 | → | LittleFox94 joins (~littlefox@rondra.lf-net.org) |
| 09:55:36 | → | dave_uy3 joins (~david@108.61.193.26) |
| 09:55:44 | → | koz joins (~koz@2404:4408:4342:2a00:1958:92dc:60f3:680b) |
| 09:55:52 | → | maerwald_ joins (~maerwald@mail.hasufell.de) |
| 09:55:55 | → | datajerk_ joins (~datajerk@sense.net) |
| 09:55:59 | → | sepples_ joins (~sepples@67.205.168.224) |
| 09:56:00 | → | mrusme joins (~mrus@128.199.8.231) |
| 09:56:09 | → | dorkside1 joins (~tdbgamer@208.190.197.222) |
| 09:56:37 | → | xlei_ joins (znc@unaffiliated/xlei) |
| 09:56:41 | → | Bergle_3 joins (~Bergle_4@101.165.90.119) |
| 09:56:47 | → | hexo| joins (~hexo@83.167.228.130) |
| 09:57:12 | → | smerdyakov7 joins (~dan@5.146.194.90) |
| 09:57:32 | → | Sparad0x joins (~etienne@ns3123347.ip-51-68-152.eu) |
| 09:57:53 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 09:58:00 | → | hyiltiz__ joins (~quassel@31.220.5.250) |
| 09:58:11 | → | dwts_ joins (pid@gateway/shell/blinkenshell.org/x-cbprcwhcmsnoinei) |
| 09:58:18 | → | theDon_ joins (~td@muedsl-82-207-238-098.citykom.de) |
| 09:58:18 | → | justsome1 joins (~justsomeg@unaffiliated/--/x-3805311) |
| 09:58:27 | → | charukiewicz_ joins (~quassel@irouteince04.i.subnet.rcn.com) |
| 09:58:27 | → | TommyC7 joins (~TommyC@unaffiliated/sepulchralbloom) |
| 09:58:41 | → | mmarusea1ph2 joins (~mihai@198.199.100.72) |
| 09:58:41 | → | lkurusa_ joins (~lkurusa@209.250.237.122) |
| 09:58:45 | → | hpc_ joins (~juzz@ip98-169-35-13.dc.dc.cox.net) |
| 09:58:50 | → | hiredman_ joins (~hiredman@volyova.ec2.thelastcitadel.com) |
| 09:58:55 | → | tomku|two joins (~tomku@unaffiliated/tomku) |
| 09:58:58 | → | saurik_ joins (saurik@carrier.saurik.com) |
| 09:58:59 | → | retlo joins (~retlo@172.245.134.89) |
| 09:59:11 | → | lekc joins (~Neuromanc@unaffiliated/neuromancer) |
| 09:59:12 | → | cole-h_ joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
| 09:59:19 | → | rotaerk_ joins (rotaerk@2600:3c02::f03c:91ff:fe70:4a45) |
| 09:59:31 | × | Neuromancer quits (~Neuromanc@unaffiliated/neuromancer) (Disconnected by services) |
| 09:59:33 | → | Katarushisu3 joins (~Katarushi@cpc152083-finc20-2-0-cust170.4-2.cable.virginm.net) |
| 09:59:35 | lekc | is now known as Neuromancer |
| 10:00:07 | → | omnitrogen_ joins (~omnitroge@vps-c9700282.vps.ovh.net) |
| 10:00:09 | → | meck_ joins (~meck@li1809-18.members.linode.com) |
| 10:00:16 | → | mstksg joins (~mstksg@cpe-23-240-75-236.socal.res.rr.com) |
| 10:00:16 | × | mstksg quits (~mstksg@cpe-23-240-75-236.socal.res.rr.com) (Changing host) |
| 10:00:16 | → | mstksg joins (~mstksg@unaffiliated/mstksg) |
| 10:00:25 | → | tolt_ joins (~weechat-h@li219-154.members.linode.com) |
| 10:00:27 | → | earthy_ joins (~arthurvl@deban2.xs4all.space) |
| 10:00:38 | → | Lord_of_Life_ joins (~Lord@unaffiliated/lord-of-life/x-0885362) |
| 10:00:39 | → | Chobbes_ joins (~Chobbes@pool-98-115-239-235.phlapa.fios.verizon.net) |
| 10:00:44 | → | tv1 joins (~tv@unaffiliated/tv) |
| 10:00:49 | → | lassulus_ joins (~lassulus@NixOS/user/lassulus) |
| 10:01:04 | → | cyphase_eviltwin joins (~cyphase@unaffiliated/cyphase) |
| 10:01:21 | → | chirpsal1 joins (~Chirps@pool-98-115-239-235.phlapa.fios.verizon.net) |
| 10:01:57 | → | kloeri_ joins (~kloeri@freenode/staff/exherbo.kloeri) |
| 10:02:57 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 264 seconds) |
| 10:03:09 | × | stree quits (~stree@68.36.8.116) (*.net *.split) |
| 10:03:09 | × | rotaerk quits (~rotaerk@ender.afternet.org) (*.net *.split) |
| 10:03:09 | × | koz_ quits (~koz@121.99.240.58) (*.net *.split) |
| 10:03:09 | × | justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) (*.net *.split) |
| 10:03:09 | × | DataComputist quits (~lumeng@50.43.26.251) (*.net *.split) |
| 10:03:09 | × | theDon quits (~td@muedsl-82-207-238-098.citykom.de) (*.net *.split) |
| 10:03:09 | × | Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (*.net *.split) |
| 10:03:10 | × | cyphase quits (~cyphase@unaffiliated/cyphase) (*.net *.split) |
| 10:03:10 | × | maerwald quits (~maerwald@mail.hasufell.de) (*.net *.split) |
| 10:03:10 | × | vchlup quits (~vchlup@nat.brnet.cz) (*.net *.split) |
| 10:03:10 | × | petersen quits (~petersen@redhat/juhp) (*.net *.split) |
| 10:03:10 | × | cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (*.net *.split) |
| 10:03:10 | × | hpc quits (~juzz@ip98-169-35-13.dc.dc.cox.net) (*.net *.split) |
| 10:03:10 | × | Katarushisu quits (~Katarushi@cpc152083-finc20-2-0-cust170.4-2.cable.virginm.net) (*.net *.split) |
| 10:03:10 | × | dwts quits (pid@gateway/shell/blinkenshell.org/x-iihycrpwtmkkjrix) (*.net *.split) |
| 10:03:10 | × | hexo- quits (~hexo@83.167.228.130) (*.net *.split) |
| 10:03:11 | × | meck quits (~meck@li1809-18.members.linode.com) (*.net *.split) |
| 10:03:11 | × | madnificent quits (~madnifice@static.210.74.63.178.clients.your-server.de) (*.net *.split) |
| 10:03:11 | × | gienah quits (~mwright@gentoo/developer/gienah) (*.net *.split) |
| 10:03:11 | × | MarcelineVQ quits (~anja@198.254.199.42) (*.net *.split) |
| 10:03:11 | × | tomku quits (~tomku@unaffiliated/tomku) (*.net *.split) |
| 10:03:11 | × | datajerk quits (~datajerk@sense.net) (*.net *.split) |
| 10:03:11 | × | mrus quits (~mrus@128.199.8.231) (*.net *.split) |
| 10:03:12 | × | dorkside quits (~tdbgamer@208.190.197.222) (*.net *.split) |
| 10:03:12 | × | smerdyakov quits (~dan@5.146.194.90) (*.net *.split) |
| 10:03:12 | × | dave_uy quits (~david@108.61.193.26) (*.net *.split) |
| 10:03:12 | × | charukiewicz quits (~quassel@irouteince04.i.subnet.rcn.com) (*.net *.split) |
| 10:03:12 | × | shailangsa quits (~shailangs@host86-186-191-40.range86-186.btcentralplus.com) (*.net *.split) |
| 10:03:12 | × | mmaruseacph2 quits (~mihai@198.199.100.72) (*.net *.split) |
| 10:03:12 | × | ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (*.net *.split) |
| 10:03:12 | × | yahb quits (xsbot@haskell/bot/yahb) (*.net *.split) |
| 10:03:12 | × | thecoffemaker quits (~thecoffem@unaffiliated/thecoffemaker) (*.net *.split) |
| 10:03:12 | × | TommyC quits (~TommyC@unaffiliated/sepulchralbloom) (*.net *.split) |
| 10:03:12 | × | dcoutts quits (~dcoutts@unaffiliated/dcoutts) (*.net *.split) |
| 10:03:12 | × | LittleFox quits (~littlefox@rondra.lf-net.org) (*.net *.split) |
| 10:03:12 | × | tv quits (~tv@unaffiliated/tv) (*.net *.split) |
| 10:03:13 | × | tabemann quits (~travisb@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (*.net *.split) |
| 10:03:13 | × | hyiltiz quits (~quassel@unaffiliated/hyiltiz) (*.net *.split) |
| 10:03:13 | × | earthy quits (~arthurvl@deban2.xs4all.space) (*.net *.split) |
| 10:03:13 | × | noctux quits (~noctux@unaffiliated/noctux) (*.net *.split) |
| 10:03:13 | × | swater quits (bouhier200@perso.iiens.net) (*.net *.split) |
| 10:03:13 | × | c-rog quits (~c-rog@traffic.simst.im) (*.net *.split) |
| 10:03:13 | × | lassulus quits (~lassulus@NixOS/user/lassulus) (*.net *.split) |
| 10:03:13 | × | MasseR quits (~MasseR@51.15.143.128) (*.net *.split) |
| 10:03:13 | × | lkurusa quits (~lkurusa@fedora/Levex) (*.net *.split) |
| 10:03:13 | × | jle` quits (~mstksg@unaffiliated/mstksg) (*.net *.split) |
| 10:03:13 | × | omnitrogen quits (~omnitroge@vps-c9700282.vps.ovh.net) (*.net *.split) |
| 10:03:13 | × | chirpsalot quits (~Chirps@pool-98-115-239-235.phlapa.fios.verizon.net) (*.net *.split) |
| 10:03:13 | × | Chobbes quits (~Chobbes@pool-98-115-239-235.phlapa.fios.verizon.net) (*.net *.split) |
| 10:03:13 | × | Bergle_2 quits (~Bergle_4@101.165.90.119) (*.net *.split) |
| 10:03:13 | × | Sparadox quits (~etienne@ns3123347.ip-51-68-152.eu) (*.net *.split) |
| 10:03:13 | × | concept2 quits (~concept2@unaffiliated/tubo) (*.net *.split) |
| 10:03:13 | × | kloeri quits (~kloeri@freenode/staff/exherbo.kloeri) (*.net *.split) |
| 10:03:13 | × | Reiser quits (~0a2a0001@static.210.242.216.95.clients.your-server.de) (*.net *.split) |
| 10:03:14 | × | saurik quits (saurik@carrier.saurik.com) (*.net *.split) |
| 10:03:14 | × | \2E0KNO quits (~retlo@172.245.134.89) (*.net *.split) |
| 10:03:14 | × | xlei quits (znc@unaffiliated/xlei) (*.net *.split) |
| 10:03:14 | × | lockshaw quits (~lockshaw@165.22.163.71) (*.net *.split) |
| 10:03:14 | × | sssb54 quits (~ssssb56@vps-b2931db6.vps.ovh.ca) (*.net *.split) |
| 10:03:14 | × | tolt quits (~weechat-h@li219-154.members.linode.com) (*.net *.split) |
| 10:03:14 | × | sepples quits (~sepples@67.205.168.224) (*.net *.split) |
| 10:03:14 | × | hiredman quits (~hiredman@volyova.ec2.thelastcitadel.com) (*.net *.split) |
| 10:03:15 | ralu9 | is now known as ralu |
| 10:03:15 | MasseR3 | is now known as MasseR |
| 10:03:15 | Lord_of_Life_ | is now known as Lord_of_Life |
| 10:03:15 | Katarushisu3 | is now known as Katarushisu |
| 10:03:15 | meck_ | is now known as meck |
| 10:03:15 | concept27 | is now known as concept2 |
| 10:03:15 | dorkside1 | is now known as dorkside |
| 10:03:15 | xlei_ | is now known as xlei |
| 10:03:15 | → | thecoffemaker_ joins (~thecoffem@125-121-245-190.fibertel.com.ar) |
| 10:03:15 | lassulus_ | is now known as lassulus |
| 10:03:23 | → | noctux joins (~noctux@unaffiliated/noctux) |
| 10:03:28 | smerdyakov7 | is now known as smerdyakov |
| 10:03:31 | omnitrogen_ | is now known as omnitrogen |
| 10:03:49 | → | gienah joins (~mwright@gentoo/developer/gienah) |
| 10:04:01 | → | yahb joins (xsbot@haskell/bot/yahb) |
| 10:04:43 | → | swater joins (bouhier200@perso.iiens.net) |
| 10:05:57 | × | zmv- quits (~zmv@191.255.89.231) (Ping timeout: 264 seconds) |
| 10:05:57 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 264 seconds) |
| 10:05:57 | × | Firedancer quits (sid336191@gateway/web/irccloud.com/x-fizivvwzbeaikpdv) (Ping timeout: 264 seconds) |
| 10:05:59 | → | Reiser joins (~0a2a0001@static.210.242.216.95.clients.your-server.de) |
| 10:06:20 | → | oish joins (~charlie@228.25.169.217.in-addr.arpa) |
| 10:06:33 | × | jdt quits (~jdt@208.85.233.130) (Ping timeout: 264 seconds) |
| 10:06:54 | → | Firedancer joins (sid336191@gateway/web/irccloud.com/x-eykckjivzotazeph) |
| 10:06:58 | cyphase_eviltwin | is now known as cyphase_ |
| 10:07:02 | cyphase_ | is now known as cyphase |
| 10:07:09 | × | rzmt quits (~rzmt@87-92-180-112.rev.dnainternet.fi) (Ping timeout: 264 seconds) |
| 10:07:19 | cole-h_ | is now known as cole-h |
| 10:08:10 | → | rzmt joins (~rzmt@87-92-180-112.rev.dnainternet.fi) |
| 10:08:21 | → | jdt joins (~jdt@208.85.233.130) |
| 10:09:31 | × | hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-gewvwhbittubyvln) (Quit: Connection closed for inactivity) |
| 10:11:33 | → | sssb54 joins (~ssssb56@vps-b2931db6.vps.ovh.ca) |
| 10:11:35 | tv1 | is now known as tv |
| 10:12:01 | → | mananamenos joins (~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) |
| 10:16:59 | → | Shailangsa_ joins (~shailangs@host86-186-191-40.range86-186.btcentralplus.com) |
| 10:18:32 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) |
| 10:19:57 | × | Feuermagier quits (~Feuermagi@2a02:2488:4211:3400:246e:bf09:8453:9d6) (Quit: Leaving) |
| 10:19:58 | → | saitamaplus joins (uid272474@gateway/web/irccloud.com/x-pvdimpwkxzjbymuk) |
| 10:20:09 | → | Feuermagier joins (~Feuermagi@2a02:2488:4211:3400:246e:bf09:8453:9d6) |
| 10:20:20 | → | ClaudiusMaximus joins (~claude@191.123.199.146.dyn.plus.net) |
| 10:20:32 | × | ClaudiusMaximus quits (~claude@191.123.199.146.dyn.plus.net) (Changing host) |
| 10:20:32 | → | ClaudiusMaximus joins (~claude@unaffiliated/claudiusmaximus) |
| 10:23:26 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Ping timeout: 264 seconds) |
| 10:24:28 | × | pavonia^\_^\ quits (~user@unaffiliated/siracusa) (Quit: Bye!) |
| 10:25:51 | → | son0p joins (~son0p@181.58.39.182) |
| 10:26:28 | maerwald_ | is now known as maerwald |
| 10:28:12 | → | __monty__ joins (~toonn@unaffiliated/toonn) |
| 10:28:43 | × | oish quits (~charlie@228.25.169.217.in-addr.arpa) (Quit: leaving) |
| 10:30:15 | → | SupaYoshi joins (~supayoshi@213-10-140-13.fixed.kpn.net) |
| 10:30:24 | ← | thorsten` parts (~Thorsten@ananke.uberspace.de) ("WeeChat 2.7.1") |
| 10:33:52 | <olligobber> | someone here mentioned a way of checking constants are well behaved at compile time |
| 10:35:08 | <olligobber> | so if I have `free :: Char -> Maybe Free', I can use 'A' as a value of type Free since free 'A' = Just ..., but using '(' as a vlaue of type Free will fail at compile time because free '(' = Nothing |
| 10:35:28 | <olligobber> | but I can't remember what it was called or how to find it |
| 10:35:29 | <merijn> | @hackage validated-literals |
| 10:35:29 | <lambdabot> | https://hackage.haskell.org/package/validated-literals |
| 10:35:37 | <merijn> | That one, probably :p |
| 10:36:09 | <olligobber> | ty |
| 10:36:46 | <merijn> | olligobber: For maximum ease of use you'll want -XDeriveLift and derive Lift for Free |
| 10:36:53 | × | cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
| 10:37:00 | <merijn> | Then you can just do instance Char Free where fromLiteral = free" |
| 10:38:05 | <merijn> | (with a Lift instance on Free you 1) don't have to implement liftResult and 2) you'll compile the *result* of conversion into the exe, rather than having to redo it at runtime) |
| 10:39:23 | <olligobber> | but not all valid Chars are valid Frees? |
| 10:40:30 | <olligobber> | I don't understand Lift |
| 10:41:03 | <ski> | (s/Char Free/Lift Char Free/ ?) |
| 10:41:27 | <olligobber> | Lift only has one parameter |
| 10:41:45 | <olligobber> | I think e means Validate Char Free |
| 10:42:14 | → | m0rphism1 joins (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) |
| 10:43:02 | <olligobber> | ah, I don't have validated literals installed :/ |
| 10:43:34 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 10:43:39 | → | __minoru__shirae joins (~shiraeesh@109.166.59.137) |
| 10:43:50 | × | danso quits (~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Ping timeout: 264 seconds) |
| 10:44:24 | theDon_ | is now known as theDon |
| 10:45:31 | → | CatWithMoustache joins (~CatWithMo@gateway/tor-sasl/catwithmoustache) |
| 10:45:50 | <olligobber> | how do I install packages? |
| 10:46:06 | <Uniaika> | with Cabal |
| 10:46:15 | <Uniaika> | olligobber: https://cabal.readthedocs.io/en/3.4/ |
| 10:46:33 | → | danso joins (~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009) |
| 10:46:50 | <olligobber> | "3.2. Building and installing packages To be written" |
| 10:46:51 | <olligobber> | lol |
| 10:47:28 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 10:47:34 | <Uniaika> | https://cabal.readthedocs.io/en/3.4/getting-started.html#creating-a-new-application |
| 10:47:34 | × | dh_ quits (dh@bsd.ee) (Quit: "Fhtagn-Nagh Yog Sothoth") |
| 10:47:46 | → | dh joins (dh@bsd.ee) |
| 10:48:00 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 10:48:11 | × | integerDivision quits (d5b21a29@gateway/web/cgi-irc/kiwiirc.com/ip.213.178.26.41) (Quit: Connection closed) |
| 10:48:45 | → | coot_ joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 10:48:46 | × | coot_ quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
| 10:49:48 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 10:51:19 | × | CatWithMoustache quits (~CatWithMo@gateway/tor-sasl/catwithmoustache) (Quit: Leaving) |
| 10:51:24 | <olligobber> | I think I understand why I need lift |
| 10:52:16 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds) |
| 10:53:45 | → | ubert joins (~Thunderbi@p200300ecdf25d946a0d2e31ed48a2cf4.dip0.t-ipconnect.de) |
| 10:53:56 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 10:56:01 | → | nbloomf joins (~nbloomf@2600:1700:ad14:3020:1d7:97cc:1317:bca) |
| 10:58:08 | → | kam1 joins (~kam1@5.125.126.175) |
| 11:00:03 | <mananamenos> | hi, what are the advantages that ones gets when defining something like `newtype App a = App (ReaderT SomeEnv IO a)`. Why not using directly `ReaderT SomeEnv IO a` with a type alias App for example? |
| 11:01:06 | <__monty__> | mananamenos: String is a type synonym. Sometimes [Char] shines through in error messages. |
| 11:01:37 | <__monty__> | It's also a new type so you can define typeclass instances for it. |
| 11:02:04 | <mananamenos> | __monty__, i know, that's what i meant with type alias, sorry, wanted to say type synonym |
| 11:02:30 | × | jpds_ quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 11:03:04 | → | jpds_ joins (~jpds@gateway/tor-sasl/jpds) |
| 11:03:26 | <__monty__> | That's alright, I figured and answered the question as if you'd said type synonym : ) |
| 11:03:42 | ← | liff parts (liff@kapsi.fi) () |
| 11:04:00 | → | thc202 joins (~thc202@unaffiliated/thc202) |
| 11:05:04 | × | DirefulSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection) |
| 11:05:26 | → | usr25 joins (~usr25@unaffiliated/usr25) |
| 11:05:46 | → | DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) |
| 11:05:46 | <__minoru__shirae> | is it possible to parameterize a type synonym? |
| 11:06:06 | <__minoru__shirae> | if not, then it could be one of the reasons |
| 11:07:32 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 11:07:54 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 11:07:55 | → | cgadski joins (~cgadski@a95-95-106-208.cpe.netcabo.pt) |
| 11:07:56 | × | centril quits (~centril@213-66-146-92-no250.tbcn.telia.com) (Ping timeout: 240 seconds) |
| 11:08:22 | → | bergey` joins (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
| 11:10:07 | → | centril joins (~centril@213-66-146-92-no250.tbcn.telia.com) |
| 11:10:22 | → | bitmagie joins (~Thunderbi@200116b8061f5a00d5e2aa6a74fa294f.dip.versatel-1u1.de) |
| 11:11:25 | × | sablib quits (~sablib@59.173.155.233) (Ping timeout: 260 seconds) |
| 11:11:51 | → | sablib joins (~sablib@59.173.152.169) |
| 11:12:37 | <__monty__> | > type YAMaybe a = Maybe a; let x = Nothing :: YAMaybe Bool in x |
| 11:12:39 | <lambdabot> | <hint>:1:1: error: <hint>:1:1: error: parse error on input ‘type’ |
| 11:12:46 | <__monty__> | % type YAMaybe a = Maybe a; let x = Nothing :: YAMaybe Bool in x |
| 11:12:47 | <yahb> | __monty__: ; <interactive>:32:62: error:; * Couldn't match type: Maybe Bool; with: Q [Dec]; Expected: DecsQ; Actual: YAMaybe Bool; * In the expression: x; In the expression: let x = Nothing :: YAMaybe Bool in x |
| 11:13:09 | × | bergey` quits (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 264 seconds) |
| 11:13:11 | × | fr33domlover quits (~fr33domlo@fsf/member/fr33domlover) (Quit: fr33domlover) |
| 11:13:44 | → | fr33domlover joins (~fr33domlo@fsf/member/fr33domlover) |
| 11:15:28 | <ski> | __minoru__shirae : yes. but you can't partially apply it (which prevents making it an instance of a type class, sometimes) |
| 11:15:43 | × | bitmagie quits (~Thunderbi@200116b8061f5a00d5e2aa6a74fa294f.dip.versatel-1u1.de) (Quit: bitmagie) |
| 11:16:43 | <ski> | (or, with `LiberalTypeSynonyms' you can partially apply it (possibly to zero parameters), if that partial application is itself passed as a parameter to another type *synonym*, which will eventually end up fully applying it) |
| 11:16:57 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
| 11:18:05 | kloeri_ | is now known as kloeri |
| 11:18:31 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:19:06 | tomsmeding | thinks yahb is quite confused there |
| 11:19:09 | → | viluon joins (uid453725@gateway/web/irccloud.com/x-amxewsahyzvflymf) |
| 11:19:16 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) |
| 11:20:00 | × | nbloomf quits (~nbloomf@2600:1700:ad14:3020:1d7:97cc:1317:bca) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 11:20:41 | → | nbloomf joins (~nbloomf@2600:1700:ad14:3020:1d7:97cc:1317:bca) |
| 11:21:02 | × | nbloomf quits (~nbloomf@2600:1700:ad14:3020:1d7:97cc:1317:bca) (Client Quit) |
| 11:23:04 | <ski> | i guess it's interpreting the latter as an implicit declaration splice ? |
| 11:23:57 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 11:23:59 | × | cgadski quits (~cgadski@a95-95-106-208.cpe.netcabo.pt) (Remote host closed the connection) |
| 11:24:02 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Ping timeout: 264 seconds) |
| 11:24:31 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:24:35 | → | gitgood joins (~gitgood@80-44-13-166.dynamic.dsl.as9105.com) |
| 11:27:30 | → | zmv- joins (~zmv@191.255.89.231) |
| 11:28:07 | → | ph88 joins (~ph88@2a02:8109:9e00:7e5c:d1f1:eae:60e1:e53a) |
| 11:28:45 | <ph88> | hi all |
| 11:29:33 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
| 11:29:54 | <ski> | lo any |
| 11:30:32 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:31:29 | × | xff0x quits (~xff0x@2001:1a81:5295:6100:414c:c2f4:f5f5:8081) (Ping timeout: 272 seconds) |
| 11:31:52 | → | nbloomf joins (~nbloomf@2600:1700:ad14:3020:1d7:97cc:1317:bca) |
| 11:32:02 | → | xff0x joins (~xff0x@2001:1a81:5295:6100:2300:7794:1c77:29ff) |
| 11:32:54 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6) |
| 11:33:02 | <int-e> | ski dishing out complements |
| 11:34:23 | ski | does the dishes |
| 11:35:25 | → | hseg joins (~gesh@IGLD-84-228-239-97.inter.net.il) |
| 11:35:33 | <ph88> | just did mine :P |
| 11:36:04 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 11:36:47 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:37:02 | → | Guest_63 joins (53d194a8@h83-209-148-168.cust.a3fiber.se) |
| 11:37:39 | × | Guest_63 quits (53d194a8@h83-209-148-168.cust.a3fiber.se) (Client Quit) |
| 11:38:26 | <maerwald> | if you want to feel trolled... try to ctrl+c a cabal build inside a docker container |
| 11:38:41 | Feuermagier | has a dishwasher and is very happy about it |
| 11:38:44 | <ph88> | i am working on a language. I have the parsing done in megaparsec. Megaparsec gives the error location in case of wrong syntax (that's cool). But after that with the semantic analysis i would also like to know the source position in case things go wrong. I saw that megaparsec offers this function https://hackage.haskell.org/package/megaparsec-9.0.1/docs/Text-Megaparsec.html#v:getSourcePos which is cool, but it says: This function is |
| 11:38:44 | <ph88> | not cheap, do not call it e.g. on matching of every token, that's a bad idea. How can i best handle this situation ? |
| 11:39:40 | <ph88> | i would like to get a source location for the semantic error and ideally also the call trace. I don't know how i could implement this other than storing the source position of each token in the concrete syntax tree and thus calling getSourcePos everywhere |
| 11:40:23 | × | mananamenos quits (~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) (Ping timeout: 256 seconds) |
| 11:40:28 | <ph88> | now i have the situation where i have userland exceptions (in my language, not haskell) and i have to go through the sources manually to figure out which exception from where it could be |
| 11:42:21 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 11:42:45 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:43:25 | <edwardk> | this is why trifecta focused on making that function cheap ;) albeit at the cost of making the regular parser a bit more expensive |
| 11:44:05 | → | mananamenos joins (~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) |
| 11:44:21 | <edwardk> | megaparsec came along later and jettisoned all of that, though they got a lot of other stuff right |
| 11:45:24 | × | fendor quits (~fendor@91.141.0.220.wireless.dyn.drei.com) (Remote host closed the connection) |
| 11:46:33 | ← | NieDzejkob_ parts (~quassel@195.149.98.3) ("https://quassel-irc.org - Chat comfortably. Anywhere.") |
| 11:46:43 | → | NieDzejkob_ joins (~quassel@195.149.98.3) |
| 11:47:51 | <ph88> | i am a bit on a crossroads now. Changing megaparsec to another parser would not be my first choice (although might be necessary in this case). I could either go against the advice and use sourePos everywhere (i don't know exactly how much the slowdown will be). Or i could run a second parser (which i would have to develop) when the first own detects an exception, then i would get the slowdonwn only in the situation when a semantic |
| 11:47:51 | <ph88> | error has occured. |
| 11:48:17 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 11:48:24 | × | jpds_ quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 11:48:37 | <ph88> | by the way .. nice error formatting in trifecta :) |
| 11:48:44 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:48:46 | → | fendor joins (~fendor@91.141.0.220.wireless.dyn.drei.com) |
| 11:48:48 | → | jpds_ joins (~jpds@gateway/tor-sasl/jpds) |
| 11:49:18 | → | coot joins (~coot@37.30.60.232.nat.umts.dynamic.t-mobile.pl) |
| 11:51:34 | <ski> | your userland exceptions happens during parsing of your language ? |
| 11:51:55 | × | andreas303 quits (~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection) |
| 11:53:59 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 11:54:33 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:54:35 | <swarmcollective> | True, safety is "slower". Ha! |
| 11:54:37 | <swarmcollective> | True, safety is "slower". Ha! |
| 11:55:04 | <ph88> | ski, no they don't happen during parsing of course. It happens when the userland code is evaluated. |
| 11:55:41 | <ph88> | the problem is that only the parser can capture the source location which can be needed during further stages of analysis (beyond the parsing stage) |
| 11:55:51 | <ski> | then i don't understand "Or i could run a second parser (which i would have to develop) when the first own detects an exception" |
| 11:56:02 | → | cgadski joins (~cgadski@a95-95-106-208.cpe.netcabo.pt) |
| 11:56:30 | → | andreas303 joins (~andreas@gateway/tor-sasl/andreas303) |
| 11:56:46 | → | dyeplexer joins (~lol@unaffiliated/terpin) |
| 11:56:47 | <ph88> | then i can keep megaparsec working fast in the case where no exception occured. And suffer performance to run a second parser which keeps track of locations to give additional information in the exception case |
| 11:57:32 | <ski> | it still sounds to me like your exceptions occurs during parse-time, rather than run-time |
| 11:59:57 | <ph88> | hmm don't know how to explain it. Parsing stage is done .. language is running (being interpreted, not compiled to bytecode). Then userland exception occurs .. |
| 12:00:14 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 12:00:44 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 12:02:40 | <ski> | and then you re-parse, having kept the source around ? |
| 12:03:11 | <swarmcollective> | ph88, re: "other than storing the source position of each token in the concrete syntax tree" Could you build a matching tree of source positions and only reference it in the case of an exception? |
| 12:03:36 | <ph88> | ski, yes keeping around the source location for each token on the reparse |
| 12:03:39 | <swarmcollective> | That would keep the concrete syntax tree clean(er)? |
| 12:04:23 | <ph88> | swarmcollective, yes exactly that "build a matching tree of source positions" the second parser could do in case of the exception |
| 12:04:26 | → | frozenErebus joins (~frozenEre@94.128.219.166) |
| 12:04:31 | <ski> | i think the perceived problem was that `getSourcePos' was stated to be expensive, and it'd be required to call that at least at exception raise/signalling positions, and also at every call site, if you want call trace to include location info |
| 12:05:12 | <ski> | ph88 : not sure if you'd need it for every token. for every AST node would be not quite as expensive |
| 12:05:12 | <edwardk> | ph88: with trifecta i mostly just wanted to move the bar on how nice error messages could be in haskell. before trifecta they were... sad, meanwhile clang looked amazing. |
| 12:05:26 | <edwardk> | i'm really glad that others took the idea and ran with it |
| 12:05:36 | ski | . o O ( monoidal parsing ) |
| 12:05:40 | <edwardk> | i build trifecta mostly for me to use |
| 12:05:55 | <edwardk> | yeah i do want to peel that bit of kit out of coda and figure out a way to ship it |
| 12:06:08 | <edwardk> | er built |
| 12:06:20 | <ph88> | ski, ya i guess only at call sites it would be needed which is not strictly every token .. good thinking |
| 12:06:38 | <edwardk> | mostly annoyed at myself for taking the 'parsing trifecta' talk title and using it for the trifecta library that had nothing to do with the techniques from that talk ;) |
| 12:06:56 | <ph88> | edwardk, yes i love that too ... got very much inspired by the error messages from rust and elm ... didn't know clang also made big steps in this direction |
| 12:07:13 | × | coot quits (~coot@37.30.60.232.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 12:07:20 | <edwardk> | clang was the first of the compilers to go all in with ^'s pointing to errors on lines and spans and fixits |
| 12:07:20 | → | magnuscake joins (~magnuscak@87.121.92.61) |
| 12:07:29 | <ph88> | what talk are you refering to ? |
| 12:07:40 | × | plutoniix quits (~q@184.82.223.179) (Quit: Leaving) |
| 12:08:04 | <edwardk> | http://comonad.com/reader/2009/iteratees-parsec-and-monoid/ |
| 12:08:10 | <ph88> | https://elm-lang.org/news/the-syntax-cliff https://github.com/elm/error-message-catalog |
| 12:08:12 | <edwardk> | i gave a couple others back in that era |
| 12:08:13 | <ski> | edwardk : which was the talk about ? |
| 12:08:23 | → | michalz joins (~user@185.246.204.46) |
| 12:08:25 | <ph88> | jeez that's quite the era ago :P |
| 12:08:36 | <edwardk> | ways to carve up input on error productions, then splice parse results together |
| 12:09:34 | <magnuscake> | Hello peeps. I'm having a hard time understanding how the following evaluates: |
| 12:09:50 | <magnuscake> | fold :: (flip (*)) 1 [1..3] |
| 12:09:57 | <magnuscake> | so for something like: |
| 12:09:58 | <edwardk> | the monoid talk goes into some surprising detail looking back |
| 12:10:04 | <ski> | (reminds me that OCaml conjures up possible inputs not matched by an inexhaustive pattern-matching) |
| 12:10:19 | <magnuscake> | foldl :: (*) 1 [1..5] |
| 12:10:27 | <edwardk> | no :: in there |
| 12:10:32 | <ski> | magnuscake : i think you probably don't want the `::' ? |
| 12:10:36 | <magnuscake> | whoops my bad |
| 12:10:45 | <edwardk> | > foldl (*) 1 [1..5] :: Expr |
| 12:10:47 | <lambdabot> | 1 * 1 * 2 * 3 * 4 * 5 |
| 12:10:55 | <edwardk> | > foldl (flip (*)) 1 [1..5] :: Expr |
| 12:10:55 | <ski> | edwardk beat me to it :) |
| 12:10:56 | <lambdabot> | 5 * (4 * (3 * (2 * (1 * 1)))) |
| 12:11:03 | → | bergey` joins (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
| 12:11:03 | <magnuscake> | foldl (*) 1 [1..5] |
| 12:11:08 | × | GZJ0X_ quits (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
| 12:11:11 | <magnuscake> | Yeah |
| 12:11:12 | <ski> | > foldl (**) 1 [1..5] :: Expr |
| 12:11:14 | <lambdabot> | ((((1**1)**2)**3)**4)**5 |
| 12:11:21 | × | cgadski quits (~cgadski@a95-95-106-208.cpe.netcabo.pt) (Ping timeout: 264 seconds) |
| 12:11:28 | → | GZJ0X_ joins (~gzj@unaffiliated/gzj) |
| 12:11:36 | <magnuscake> | How does the evaluation work in for: |
| 12:11:50 | <magnuscake> | foldl (flip (*)) 1 [1..5] |
| 12:11:59 | <edwardk> | Expr is a type that has a Num instance, and tracks what operators you use. so it lets you kinda peek at what the fold is doing here (it comes from a library) |
| 12:12:04 | → | nictki joins (~nictki@b2b-78-94-64-166.unitymedia.biz) |
| 12:12:04 | <magnuscake> | Since flip would need two arguments |
| 12:12:14 | <edwardk> | :t foldl |
| 12:12:15 | <lambdabot> | Foldable t => (b -> a -> b) -> b -> t a -> b |
| 12:12:19 | <edwardk> | ^- foldl gives it two args |
| 12:12:25 | <ski> | @type flip (*) |
| 12:12:26 | <lambdabot> | Num c => c -> c -> c |
| 12:12:27 | <edwardk> | the result so far and the next entry in the list |
| 12:12:49 | <edwardk> | sorry |
| 12:13:00 | <edwardk> | flip takes one argument, which is a binary function and returns a binary function |
| 12:13:06 | <edwardk> | that is one way to read flip's signature |
| 12:13:07 | <edwardk> | :t flip |
| 12:13:07 | <ski> | @type flip |
| 12:13:08 | <lambdabot> | (a -> b -> c) -> b -> a -> c |
| 12:13:09 | <lambdabot> | (a -> b -> c) -> b -> a -> c |
| 12:13:20 | <ski> | flip :: (a -> b -> c) -> (b -> a -> c) |
| 12:13:30 | <magnuscake> | I am guessing evaluation would look something like this: |
| 12:13:43 | <magnuscake> | aassuming f = flip (:) |
| 12:13:51 | <magnuscake> | ((([] `f` 1) `f` 2) `f` 3) |
| 12:14:13 | <magnuscake> | Where does the second argument for flip come from |
| 12:14:24 | <ski> | foldl (flip (*)) 1 [1 .. 5] |
| 12:14:27 | <magnuscake> | Or third since the first is a function |
| 12:14:31 | <edwardk> | you feed it a basecase |
| 12:14:45 | <edwardk> | :t foldl |
| 12:14:46 | <lambdabot> | Foldable t => (b -> a -> b) -> b -> t a -> b |
| 12:14:49 | <ski> | = foldl (flip (*)) (flip (*) 1 1) [2 .. 5] |
| 12:15:03 | <ski> | = foldl (flip (*)) (flip (*) (flip (*) 1 1) 2) [3 .. 5] |
| 12:15:13 | <ski> | = foldl (flip (*)) (flip (*) (flip (*) (flip (*) 1 1) 2) 3) [4 .. 5] |
| 12:15:16 | <edwardk> | (b -> a -> b) is the function you want to fold with, the net 'b' is your base case, which gets passed as your first argument the first time, then you pass a list. |
| 12:15:27 | <ski> | = foldl (flip (*)) (flip (*) (flip (*) (flip (*) (flip (*) 1 1) 2) 3) 4) [5 .. 5] |
| 12:15:45 | <ski> | = foldl (flip (*)) (flip (*) (flip (*) (flip (*) (flip (*) (flip (*) 1 1) 2) 3) 4) 5) [] |
| 12:15:49 | → | mouseghost joins (~draco@wikipedia/desperek) |
| 12:15:52 | <edwardk> | ski is on a roll, i'll back off =) |
| 12:15:54 | <ski> | = flip (*) (flip (*) (flip (*) (flip (*) (flip (*) 1 1) 2) 3) 4) 5 |
| 12:16:13 | <ski> | = 5 * flip (*) (flip (*) (flip (*) (flip (*) 1 1) 2) 3) 4 |
| 12:16:26 | <ski> | = 5 * (4 * flip (*) (flip (*) (flip (*) 1 1) 2) 3) |
| 12:16:46 | <ski> | = 5 * (4 * (3 * flip (*) (flip (*) 1 1) 2)) |
| 12:16:59 | <ski> | = 5 * (4 * (3 * (2 * flip (*) 1 1))) |
| 12:17:16 | <ski> | = 5 * (4 * (3 * (2 * (1 * 1)))) |
| 12:17:40 | <ski> | magnuscake : makes sense ? |
| 12:18:03 | <magnuscake> | Oh absolutely. Hit it out of the field there mate |
| 12:18:23 | <ski> | (and apparently this time Sigyn didn't make threatening noises in the background ..) |
| 12:18:25 | <magnuscake> | That clears it up now. Thank you very much ski and edward |
| 12:18:39 | <ski> | np |
| 12:19:14 | <mouseghost> | wah that, foldr? |
| 12:19:23 | <ski> | ? |
| 12:19:32 | × | pera quits (~pera@unaffiliated/pera) (Ping timeout: 260 seconds) |
| 12:19:34 | <ski> | that's `foldl', not `foldr' |
| 12:19:42 | <edwardk> | that was a foldl |
| 12:19:45 | <mouseghost> | oh |
| 12:19:58 | <mouseghost> | thats why im asking :D |
| 12:20:04 | <ski> | would you like to see `foldr (*) 1 [1 .. 5]' or ? |
| 12:20:09 | <mouseghost> | yes pwease |
| 12:20:11 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) |
| 12:20:16 | <mouseghost> | though i suppose its going to be the other way round |
| 12:20:17 | <ski> | (or maybe `foldr (flip (*)) 1 [1 .. 5]' ?) |
| 12:20:32 | <ski> | which ? |
| 12:20:49 | <mouseghost> | D: meyb the former.. |
| 12:20:59 | <ski> | foldr (*) 1 [1 .. 5] |
| 12:21:03 | <mouseghost> | yes |
| 12:21:07 | <ski> | = 1 * foldr (*) 1 [2 .. 5] |
| 12:21:16 | <ski> | = 1 * (2 * foldr (*) 1 [3 .. 5]) |
| 12:21:26 | <ski> | = 1 * (2 * (3 * foldr (*) 1 [4 .. 5])) |
| 12:21:35 | <ski> | = 1 * (2 * (3 * (4 * foldr (*) 1 [5 .. 5]))) |
| 12:21:46 | <ski> | = 1 * (2 * (3 * (4 * (5 * foldr (*) 1 [])))) |
| 12:21:51 | <ski> | = 1 * (2 * (3 * (4 * (5 * 1)))) |
| 12:22:36 | <ski> | with `foldr (flip (*)) 1 [1 .. 5]', you'd end up with `((((1 * 5) * 4) * 3) * 2) * 1' in the end, instead, after reducing away all the `flip's |
| 12:22:40 | → | Tario joins (~Tario@201.192.165.173) |
| 12:22:47 | <mouseghost> | hm i see |
| 12:22:56 | <ski> | (try it out yourself, on paper, or in a text editor ?!) |
| 12:23:32 | <mouseghost> | let me find a definition first :D |
| 12:23:38 | <ski> | @src foldl |
| 12:23:38 | <lambdabot> | foldl f z [] = z |
| 12:23:38 | <lambdabot> | foldl f z (x:xs) = foldl f (f z x) xs |
| 12:23:39 | <ski> | @src foldr |
| 12:23:39 | <lambdabot> | foldr f z [] = z |
| 12:23:39 | <lambdabot> | foldr f z (x:xs) = f x (foldr f z xs) |
| 12:23:43 | <ski> | @src flip |
| 12:23:43 | <lambdabot> | flip f x y = f y x |
| 12:24:30 | <ski> | also `[m .. n]' is `m : [m+1 .. n]' if `m <= n', otherwise it's `[]' |
| 12:25:07 | <mouseghost> | hm so thats the difference |
| 12:25:11 | × | GZJ0X_ quits (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
| 12:25:14 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Ping timeout: 264 seconds) |
| 12:25:29 | <magnuscake> | Is any point of having a foldl? I get foldr is similar to reduce() in JS and Python |
| 12:25:30 | → | z0k joins (~user@115-186-141-91.nayatel.pk) |
| 12:25:32 | → | GZJ0X_ joins (~gzj@unaffiliated/gzj) |
| 12:25:32 | × | cdb quits (~cdb@185.163.110.108) (Remote host closed the connection) |
| 12:25:51 | <ski> | no, `foldl' is similar to `reduce' in some other languages, iirc |
| 12:26:31 | <magnuscake> | Best of both world than I guess :) |
| 12:27:18 | <ski> | `foldl' is iterative / tail-recursive (and therefore bulky / non-incremental), while `foldr' is not (it can be incremental, though, if the callback is non-strict in latter argument) |
| 12:28:00 | → | Wuzzy joins (~Wuzzy@p5790ec2c.dip0.t-ipconnect.de) |
| 12:29:15 | <ski> | in a strict language, commonly an iterative version is preferable, in case both would be applicable. Haskell is non-strict though, and here it often makes more sense to be incremental instead (which means that you can now work on infinite lists, and work on very long lists without needing to scan ahead to the end before producing any output .. so your caller effectively can act as a coroutine with you, |
| 12:29:21 | <ski> | consuming your incremental outputs) |
| 12:29:51 | <ski> | also, note that usually, in Haskell, when you think you want foldl you actually want foldl' |
| 12:30:15 | <ski> | foldl f z [ ] = z |
| 12:30:16 | <ski> | er |
| 12:30:18 | <ski> | foldl' f z [ ] = z |
| 12:30:39 | <ski> | foldl' f z (x:xs) = (foldl' f $! f z x) xs |
| 12:31:06 | <ski> | alternatively |
| 12:31:12 | <ski> | foldl' f !z [ ] = z |
| 12:31:25 | <ski> | foldl' f !z (x:xs) = foldl' f (f z x) xs |
| 12:32:16 | × | darjeeling_ quits (~darjeelin@122.245.217.214) (Ping timeout: 240 seconds) |
| 12:32:16 | <magnuscake> | Yeah that actually makes sense |
| 12:32:24 | <ski> | this means that it will force (to WHNF) the accumulator in each step, rather than just build up a possibly huge thunk at run-time, which will eventually get forced in the end (after `foldl' hits the base case anyway) |
| 12:32:59 | <ski> | in my `foldl' example above, all the `flip's (and also the `*'s, although i didn't show that part) happens after `foldl' is done |
| 12:33:08 | <ski> | with foldl' instead, you'd get |
| 12:33:24 | <ski> | foldl' (flip (*)) 1 [1 .. 5] |
| 12:33:45 | <ski> | = foldl' (flip (*)) (flip (*) 1 1) [2 .. 5] |
| 12:33:53 | <ski> | = foldl' (flip (*)) (1 * 1) [2 .. 5] |
| 12:34:00 | <ski> | = foldl' (flip (*)) 1 [2 .. 5] |
| 12:34:09 | <ski> | = foldl' (flip (*)) (flip (*) 1 2) [3 .. 5] |
| 12:34:16 | <ski> | = foldl' (flip (*)) (2 * 1) [3 .. 5] |
| 12:34:24 | <ski> | = foldl' (flip (*)) 2 [3 .. 5] |
| 12:34:33 | → | drbean_ joins (~drbean@TC210-63-209-37.static.apol.com.tw) |
| 12:34:40 | <ski> | = foldl' (flip (*)) (flip (*) 2 3) [4 .. 5] |
| 12:34:49 | <ski> | = foldl' (flip (*)) (3 * 2) [4 .. 5] |
| 12:34:54 | <ski> | = foldl' (flip (*)) 6 [4 .. 5] |
| 12:35:06 | <ski> | = foldl' (flip (*)) (flip (*) 6 4) [5 .. 5] |
| 12:35:16 | <ski> | = foldl' (flip (*)) (4 * 6) [5 .. 5] |
| 12:35:21 | <ski> | = foldl' (flip (*)) 24 [5 .. 5] |
| 12:35:38 | <ski> | = foldl' (flip (*)) (flip (*) 24 5) [] |
| 12:35:49 | <ski> | = foldl' (flip (*)) (5 * 24) [] |
| 12:35:53 | <ski> | = foldl' (flip (*)) 120 [] |
| 12:35:57 | <ski> | = 120 |
| 12:36:05 | <ph88> | having fun ski ? |
| 12:36:21 | <ski> | (note that this appears a bit longer, because i skipped to tail end of the multiplications, before) |
| 12:36:33 | <ski> | magnuscake : clear ? |
| 12:36:36 | <ph88> | bpaste.net |
| 12:36:36 | <magnuscake> | That is definitely cool mate |
| 12:36:40 | <ph88> | nice pastebin for you ski |
| 12:37:01 | <magnuscake> | Thanks loads. Will be adding that to my notes |
| 12:37:02 | <ski> | ah, but pastebin's aren't interactive :/ |
| 12:37:18 | <ph88> | ski, that's a cool idea, interactive pastebin ! |
| 12:37:29 | <ph88> | well i guess you could just open ghci and copy paste that into it |
| 12:37:34 | <ph88> | but still ... interactive pastebin :P |
| 12:37:44 | <ph88> | i believe when tomsmeding builds it sm will host it xD |
| 12:38:38 | <ph88> | by the way there is jupyter notebook for haskell too now ... but not sure if it there is a website that offers it |
| 12:39:12 | → | chisui joins (59f77ca6@i59F77CA6.versanet.de) |
| 12:40:39 | <ph88> | https://cocalc.com/projects/3d87e727-69f7-4ac5-81b2-867aee98eb45/files/Welcome%20to%20CoCalc.ipynb?session=default |
| 12:40:48 | → | cgadski joins (~cgadski@a95-95-106-208.cpe.netcabo.pt) |
| 12:40:50 | zmv- | is now known as notzmv |
| 12:40:53 | <ph88> | not sure how well that works and how it works with sharing / interactive .. but cool stuff |
| 12:41:02 | × | notzmv quits (~zmv@191.255.89.231) (Changing host) |
| 12:41:02 | → | notzmv joins (~zmv@unaffiliated/zmv) |
| 12:41:04 | <ph88> | got the link from https://github.com/gibiansky/IHaskell |
| 12:42:22 | → | coot joins (~coot@37.30.60.232.nat.umts.dynamic.t-mobile.pl) |
| 12:43:27 | <mananamenos> | hmm, so I still have doubts and want to find more about the previously made question. What are the advantages of using `newtype App a = App (ReaderT SomeEnv IO a)`. Almost all apps create this app monad. Why don't they use ReaderT directly in this case? Then they wouldn't need to derive for example many classes as they do now..One reason I think I found is that it is good for testing |
| 12:44:56 | × | cgadski quits (~cgadski@a95-95-106-208.cpe.netcabo.pt) (Ping timeout: 240 seconds) |
| 12:45:05 | <merijn> | mananamenos: Which classes would you need to derive? |
| 12:45:23 | × | marek quits (~mmahut@209.250.249.245) (Changing host) |
| 12:45:23 | → | marek joins (~mmahut@fedora/pyxel) |
| 12:46:10 | <ski> | magnuscake : another note. in the case of `foldr', the growing context of multiplications around the current foldr call is the stack you're seeing. in the case of foldl there is no such growing context/stack, since foldl is tail-recursive. however, the accumulator argument effectively simulates a stack, growing the heap instead. then, after foldl returns, all these flip and (*) calls are turned |
| 12:46:16 | <ski> | into growing stack again, when traversing the expression to the innermost part to begin the multiplications there |
| 12:46:25 | <ski> | while, in the foldl' case, you avoid this latter problem |
| 12:47:32 | <ski> | magnuscake : implementation hiding. insulating users of `App' from accidentally depending on the particularly chosen representation. preventing them from directly accessing your innards |
| 12:47:37 | <ski> | er |
| 12:47:39 | <ski> | mananamenos ^ |
| 12:48:01 | × | michalz quits (~user@185.246.204.46) (Remote host closed the connection) |
| 12:48:06 | <mananamenos> | merijn, the examples I've seen that use this App abstraction derive Functor, Monad, etc. What I meant is if they hadn't newtype App, they wouldn't even need to do that, as ReaderT is functor, monad etc |
| 12:48:09 | × | magnuscake quits (~magnuscak@87.121.92.61) (Quit: Leaving) |
| 12:48:18 | → | michalz joins (~user@185.246.204.39) |
| 12:48:29 | <merijn> | mananamenos: But then changing the implementation of your library becomes a breaking change |
| 12:48:42 | <merijn> | mananamenos: And any time you refactor internals you need to refactor everything |
| 12:49:12 | <ski> | typically you'd not want to expose say `MonadReader SomeEnv App' and the like (sometimes i guess you might), but rather define your own operations, possibly wrappers around the basic operations on transformers |
| 12:49:13 | <mananamenos> | merijn, can you give an example what "changing implementation" in this example would mean? I dont follow |
| 12:49:18 | × | olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection) |
| 12:49:34 | × | ClaudiusMaximus quits (~claude@unaffiliated/claudiusmaximus) (Quit: ->) |
| 12:49:52 | <merijn> | mananamenos: You realise "whoops, I don't have logging!" and you add, for example LoggingT to that implementation |
| 12:49:58 | <ski> | well, perhaps you'd like to change `ReaderT SomeEnv IO a' to `StateT SomeState (ReaderT SomeEnv IO) a' at some point |
| 12:50:12 | <ski> | or perhaps to `ReaderT (SomeEnv,SomeOtherEnv) IO a' |
| 12:50:56 | × | __minoru__shirae quits (~shiraeesh@109.166.59.137) (Ping timeout: 240 seconds) |
| 12:51:22 | × | coot quits (~coot@37.30.60.232.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 12:51:28 | → | danza joins (~francesco@151.53.76.37) |
| 12:51:38 | <mananamenos> | ski, and why newtype and not type? |
| 12:52:12 | <ski> | because you can avoid exporting the data constructor of a `newtype', thereby avoiding exposing your implementation, keeping `App' abstract |
| 12:52:18 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 12:52:20 | <ski> | can't (unfortunately) do that with type synonyms |
| 12:52:27 | <ski> | (you can, in the MLs ..) |
| 12:53:47 | × | nictki quits (~nictki@b2b-78-94-64-166.unitymedia.biz) (Quit: leaving) |
| 12:54:35 | <mananamenos> | merijn, ski, thank you. I think I understand it better but still would like to understand more :) Are some blog posts you know about this kind stuff? |
| 12:55:07 | <ski> | not that i can recall, off the top of my head |
| 12:55:32 | <ski> | (probably there are such blags, though. possibly also some page on the Haskell Wiki, or in the Wikibook) |
| 12:56:53 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
| 12:58:22 | × | kw quits (d4662d5d@212.102.45.93) (Ping timeout: 240 seconds) |
| 12:58:55 | × | nbloomf quits (~nbloomf@2600:1700:ad14:3020:1d7:97cc:1317:bca) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 13:01:48 | → | urodna joins (~urodna@unaffiliated/urodna) |
| 13:04:21 | → | pera joins (~pera@unaffiliated/pera) |
| 13:06:10 | → | geekosaur joins (82650c7a@130.101.12.122) |
| 13:06:29 | × | kam1 quits (~kam1@5.125.126.175) (Quit: Quit) |
| 13:06:39 | → | thorsten` joins (~Thorsten@ananke.uberspace.de) |
| 13:06:52 | → | kam1 joins (~kam1@5.125.126.175) |
| 13:07:25 | × | justan0theruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 265 seconds) |
| 13:08:25 | → | TMA joins (tma@twin.jikos.cz) |
| 13:09:30 | <mananamenos> | Is this example: https://hackage.haskell.org/package/monad-time-0.3.1.0/docs/Control-Monad-Time.html. Why does `m` must be a monad? Why does this class have this restriction? |
| 13:09:42 | <mananamenos> | *In this example.. |
| 13:10:20 | → | cgadski joins (~cgadski@a95-95-106-208.cpe.netcabo.pt) |
| 13:10:47 | <merijn> | mananamenos: Well, what would you be able to do with currentTime if it wasn't? |
| 13:10:50 | × | aarvar quits (~foewfoiew@2601:602:a080:fa0:49bc:1f9e:3510:3fc5) (Ping timeout: 264 seconds) |
| 13:10:53 | × | Rudd0 quits (~Rudd0@185.189.115.108) (Ping timeout: 260 seconds) |
| 13:11:12 | × | son0p quits (~son0p@181.58.39.182) (Quit: leaving) |
| 13:11:16 | <merijn> | Imagine no superclass constraint and "MonadTime m => m UTCTime", what can you do? |
| 13:12:07 | <ski> | `Applicative' would probably work, i guess .. but it looks like the main instances are `IO' and monad transformer wrappings of that |
| 13:12:39 | <mananamenos> | merijn, you mean that if it wasn't monad you would never be able to unwrap the value inside m, right? |
| 13:13:22 | <ski> | ah .. it does use `OverlappingInstances' to handle `ReaderT UTCTime m' specially .. :/ |
| 13:13:57 | <merijn> | mananamenos: Yes |
| 13:14:41 | <ski> | if it was `Functor', you'd be able to `fmap' over it, generically (with no extra constraint) |
| 13:15:01 | <ski> | i think it has superclass constraint, mostly for convenience |
| 13:15:11 | <mananamenos> | hmm, merijn, but that restriction does not prevent me to implement `instance MonadTime IO...`, then I would be able to get time in IO monad. So still dont see what does the restriction m must be a monad adds |
| 13:15:31 | <merijn> | mananamenos: That means you can only ever do something for a specific isntance |
| 13:15:50 | → | machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca) |
| 13:16:08 | <merijn> | mananamenos: You couldn't do, for example "MonadTime m => ReaderT Foo m ()" because you don't know 'm' is a Monad |
| 13:16:34 | <ski> | (you'd have to do `(Monad m,MonadTime m) => ReaderT Foo m ()') |
| 13:16:34 | <merijn> | mananamenos: Basically, then MonadTime is just "getCurrentTime :: IO UTCTime", but with extra steps |
| 13:16:42 | <merijn> | You cannot use it polymorphically easily |
| 13:16:48 | → | darjeeling_ joins (~darjeelin@122.245.217.214) |
| 13:16:49 | <mananamenos> | merijn, right, so putting the restriction `m` must be a monad we become sure that anyone who will implement MonadTime will be able to use `do`, >>= |
| 13:18:59 | × | bergey` quits (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 256 seconds) |
| 13:21:28 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 13:21:55 | × | esph quits (~weechat@unaffiliated/esph) (Ping timeout: 265 seconds) |
| 13:23:01 | <thorsten`> | How can I denote the 'dual' of the type `(->) a` of kind * -> *? If I put e.g. type To b a = a -> b ; type I f = f Int then `I (To Int)` fails to parse because 'To' should have 2 arguments. |
| 13:24:02 | <maerwald> | how do you include the project version from foo.cabal into your source code at compile time? |
| 13:25:37 | <thorsten`> | maerwald: https://stackoverflow.com/a/33176906/4400896 |
| 13:26:24 | <merijn> | maerwald: Paths_x |
| 13:26:27 | → | esph joins (~weechat@unaffiliated/esph) |
| 13:27:26 | → | reeiiko joins (~reeiiko@185.163.110.108) |
| 13:27:34 | × | hseg quits (~gesh@IGLD-84-228-239-97.inter.net.il) (Quit: WeeChat 3.0) |
| 13:27:55 | → | toorevitimirp joins (~tooreviti@117.182.181.253) |
| 13:29:06 | <geekosaur> | thorsten`, there's an extension which delays expansion of type synonyms as long as they're ultimately fully saturated (LiberalTypeSynonyms) |
| 13:29:38 | → | supercoven joins (~Supercove@194.34.133.92) |
| 13:30:47 | → | bennofs1 joins (~benno@dslb-094-222-088-123.094.222.pools.vodafone-ip.de) |
| 13:32:21 | <thorsten`> | ok, thanks geekosaur! |
| 13:33:32 | → | carlomagno joins (~cararell@148.87.23.9) |
| 13:34:05 | × | toorevitimirp quits (~tooreviti@117.182.181.253) (Remote host closed the connection) |
| 13:35:56 | × | darjeeling_ quits (~darjeelin@122.245.217.214) (Ping timeout: 240 seconds) |
| 13:37:10 | → | toorevitimirp joins (~tooreviti@117.182.181.253) |
| 13:37:19 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 13:37:23 | × | bennofs1 quits (~benno@dslb-094-222-088-123.094.222.pools.vodafone-ip.de) (Ping timeout: 265 seconds) |
| 13:37:39 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 13:37:40 | → | Sheilong joins (uid293653@gateway/web/irccloud.com/x-xtlevgyyzcpkswkn) |
| 13:39:31 | × | cgadski quits (~cgadski@a95-95-106-208.cpe.netcabo.pt) (Ping timeout: 272 seconds) |
| 13:41:34 | → | _d0t joins (void@gateway/vpn/mullvad/d0t/x-89419360) |
| 13:41:57 | <_d0t> | ohai! How do I stop GHC from creating dynamic libraries? I use stack to build stuff. |
| 13:42:37 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds) |
| 13:43:50 | × | crobbins quits (~crobbins@2601:2c1:200:ec50:1830:7dd4:a8d3:b056) (Ping timeout: 264 seconds) |
| 13:44:42 | × | geekosaur quits (82650c7a@130.101.12.122) (Ping timeout: 240 seconds) |
| 13:45:39 | <sm[m]> | ph88: that's interesting about getSourcePos. I call it a lot. Does laziness come to the rescue at all, or it's cheap if you don't actually use the info ? |
| 13:45:54 | <sm[m]> | also, how many calls would you be making ? have you measured the cost ? |
| 13:46:39 | <ph88> | sm[m], i don't know about the details sorry. I have just read the documentation of megaparsec |
| 13:47:00 | <sm[m]> | I'd measure it |
| 13:47:22 | → | cgadski joins (~cgadski@a95-95-106-208.cpe.netcabo.pt) |
| 13:47:41 | <ph88> | good idea |
| 13:49:36 | × | toorevitimirp quits (~tooreviti@117.182.181.253) (Ping timeout: 260 seconds) |
| 13:52:13 | × | GZJ0X_ quits (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
| 13:52:34 | → | GZJ0X_ joins (~gzj@unaffiliated/gzj) |
| 13:52:36 | → | adamoden joins (bc970b1d@c188-151-11-29.bredband.comhem.se) |
| 13:52:47 | → | bitmagie joins (~Thunderbi@200116b8061f5a00d5e2aa6a74fa294f.dip.versatel-1u1.de) |
| 13:53:02 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6) |
| 13:53:25 | × | bitmagie quits (~Thunderbi@200116b8061f5a00d5e2aa6a74fa294f.dip.versatel-1u1.de) (Client Quit) |
| 13:53:52 | → | nbloomf joins (~nbloomf@2600:1700:ad14:3020:1d7:97cc:1317:bca) |
| 13:54:19 | × | drbean_ quits (~drbean@TC210-63-209-37.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in) |
| 13:55:43 | → | bergey` joins (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
| 13:56:00 | × | bergey` quits (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Remote host closed the connection) |
| 13:56:22 | × | knupfer quits (~Thunderbi@200116b82c5b7800ed680aab46f8abc5.dip.versatel-1u1.de) (Remote host closed the connection) |
| 13:56:28 | → | bergey`` joins (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
| 13:56:37 | → | knupfer joins (~Thunderbi@200116b82c5b78000cf80c553eaca855.dip.versatel-1u1.de) |
| 13:57:02 | → | geekosaur joins (82650c7a@130.101.12.122) |
| 13:58:11 | → | andi^ joins (~andi-@NixOS/user/andi-) |
| 13:58:17 | × | andi- quits (~andi-@NixOS/user/andi-) (Ping timeout: 260 seconds) |
| 13:58:56 | → | darjeeling_ joins (~darjeelin@122.245.217.214) |
| 13:59:50 | × | cgadski quits (~cgadski@a95-95-106-208.cpe.netcabo.pt) (Read error: Connection reset by peer) |
| 14:00:22 | → | cgadski joins (~cgadski@a95-95-106-208.cpe.netcabo.pt) |
| 14:00:46 | × | guest222 quits (~user@49.5.6.87) (Remote host closed the connection) |
| 14:00:54 | → | guest222 joins (~user@49.5.6.87) |
| 14:01:16 | → | elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
| 14:04:12 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 14:04:56 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
| 14:05:26 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 14:06:24 | × | cgadski quits (~cgadski@a95-95-106-208.cpe.netcabo.pt) (Remote host closed the connection) |
| 14:06:33 | × | gitgood quits (~gitgood@80-44-13-166.dynamic.dsl.as9105.com) (Ping timeout: 264 seconds) |
| 14:07:09 | × | GZJ0X_ quits (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
| 14:07:10 | <merijn> | It just says to not call it for "every token" |
| 14:07:29 | → | GZJ0X_ joins (~gzj@unaffiliated/gzj) |
| 14:08:25 | × | jonathanx quits (~jonathan@h-176-109.A357.priv.bahnhof.se) (Remote host closed the connection) |
| 14:09:31 | × | __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving) |
| 14:09:40 | → | jonathanx joins (~jonathan@h-176-109.A357.priv.bahnhof.se) |
| 14:10:11 | × | GZJ0X_ quits (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
| 14:10:28 | → | Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net) |
| 14:10:33 | → | GZJ0X_ joins (~gzj@unaffiliated/gzj) |
| 14:10:49 | → | usr25_tm joins (~usr25@unaffiliated/usr25) |
| 14:11:11 | × | GZJ0X_ quits (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
| 14:11:18 | × | adamoden quits (bc970b1d@c188-151-11-29.bredband.comhem.se) (Quit: Connection closed) |
| 14:11:33 | → | GZJ0X_ joins (~gzj@unaffiliated/gzj) |
| 14:11:46 | → | adamoden joins (bc970b1d@c188-151-11-29.bredband.comhem.se) |
| 14:12:10 | × | GZJ0X_ quits (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
| 14:12:30 | → | GZJ0X_ joins (~gzj@unaffiliated/gzj) |
| 14:13:17 | <adamoden> | Hi, I've got a stupid-ass program that I'm writing for kicks a few years after taking a beginners course in Haskell and can barely string together a function at the moment. I've made slow progress in making my program run but right now I get compiler errors that I can't understand. Is there a chance of getting help understanding the errors if I |
| 14:13:18 | <adamoden> | paste them along with my mess here? |
| 14:14:08 | → | usr256 joins (~usr25@unaffiliated/usr25) |
| 14:14:09 | <geekosaur> | @where paste |
| 14:14:10 | <lambdabot> | Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com |
| 14:14:34 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 14:15:05 | × | usr25 quits (~usr25@unaffiliated/usr25) (Ping timeout: 265 seconds) |
| 14:15:29 | → | cgadski joins (~cgadski@a95-95-106-208.cpe.netcabo.pt) |
| 14:15:58 | <adamoden> | I'll take the vbot anser as a yes. https://paste.tomsmeding.com/fPhBk9Of https://paste.tomsmeding.com/jvXjZ1FV |
| 14:16:13 | × | GZJ0X_ quits (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
| 14:16:35 | → | GZJ0X_ joins (~gzj@unaffiliated/gzj) |
| 14:17:04 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) |
| 14:17:13 | × | GZJ0X_ quits (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
| 14:17:16 | × | leo___ quits (~leo@cpc96810-rdng27-2-0-cust409.15-3.cable.virginm.net) (Remote host closed the connection) |
| 14:17:41 | <geekosaur> | short version is that somewhere you're passing a list into a context expecting a number, so it''s trying to find a Num instance for lists and failing |
| 14:17:57 | × | usr25_tm quits (~usr25@unaffiliated/usr25) (Ping timeout: 264 seconds) |
| 14:18:17 | <adamoden> | A crap. Thanks for the help. |
| 14:18:54 | → | polyphem joins (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) |
| 14:20:24 | <geekosaur> | you also have what appears to be a typo on line 14 but the error messages don't go that far |
| 14:20:29 | → | gitgood joins (~gitgood@80-44-13-166.dynamic.dsl.as9105.com) |
| 14:21:40 | <adamoden> | I have typos everywhere :P Can't see where I pass a list instead of a number tho... |
| 14:21:40 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) |
| 14:22:55 | <geekosaur> | see line 10 of the error messages, you have a list of lists where a list of (Enum a => a) is expected |
| 14:23:25 | <maerwald> | merijn: semi-random question. What do you think about bash completion causing a network call? |
| 14:23:26 | <geekosaur> | although I am confused by the error message paste because it looks like two different compiles going on |
| 14:23:34 | → | ep1ctetus joins (~epictetus@ip72-194-215-136.sb.sd.cox.net) |
| 14:26:01 | <adamoden> | That might have been my issue. I'm doing this in Repl.it and when I ran the code again in a new window I only get an error for row 14. |
| 14:26:26 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Ping timeout: 264 seconds) |
| 14:26:28 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 256 seconds) |
| 14:27:46 | → | deviantfero joins (~deviantfe@190.150.27.58) |
| 14:28:02 | × | mmarusea1ph2 quits (~mihai@198.199.100.72) (Quit: The past is dead and buried.) |
| 14:28:15 | → | mmaruseacph2 joins (~mihai@198.199.100.72) |
| 14:28:22 | <geekosaur> | I think you need to fix that before you can get the other errors |
| 14:28:29 | × | ep1ctetus quits (~epictetus@ip72-194-215-136.sb.sd.cox.net) (Read error: Connection reset by peer) |
| 14:28:45 | <geekosaur> | and I get quite a few other errors locally after I fix that, although some of them are because repl.it runs a very old ghc |
| 14:28:55 | <geekosaur> | and some things have changed since then |
| 14:29:54 | → | son0p joins (~son0p@181.136.122.143) |
| 14:31:24 | <geekosaur> | hm, but some of it is fundamental, like missing Show, Eq, and Ord instances |
| 14:31:32 | <geekosaur> | being polymorphic has its costs |
| 14:31:43 | × | adamoden quits (bc970b1d@c188-151-11-29.bredband.comhem.se) (Quit: Connection closed) |
| 14:31:58 | → | adamoden joins (bc970b1d@c188-151-11-29.bredband.comhem.se) |
| 14:32:00 | <adamoden> | I do as well. There are MANY problems with this program, the main one being that it does something entirely different than I want it to do in the end :P |
| 14:32:19 | <adamoden> | I will download Haskell and to this locally then. |
| 14:32:28 | → | slack1256 joins (~slack1256@45.4.2.52) |
| 14:32:29 | <swarmcollective> | adamoden, it is easier to use Int instead of a Num constraint. |
| 14:33:08 | <swarmcollective> | I am able to get it to compile, at least. |
| 14:33:27 | <geekosaur> | yeh, I'd just specialize to Int and String rather than try to be polymorphic and run into all the missing constraints you need |
| 14:33:29 | <adamoden> | swarmcollective I wanted to do that but everything broke. I'll try again in a local compiler. |
| 14:33:44 | <swarmcollective> | https://paste.tomsmeding.com/pwGShc2h |
| 14:33:47 | <geekosaur> | and weird type errors |
| 14:33:51 | → | usr25 joins (~usr25@unaffiliated/usr25) |
| 14:34:29 | <adamoden> | I think I need Enum for using pred tho, might be I'm wrong about that too. |
| 14:34:52 | → | antimatroid joins (~nick@124-169-88-177.tpgi.com.au) |
| 14:35:06 | <geekosaur> | if you specify a type known to implement Enum, you don't have to also specify Enum |
| 14:35:22 | <antimatroid> | https://nift.dev/ functionstein and templatestein now work with non-bracketed code blocks for loops etc., lots of people are playing with my website generator behind the scenes and have put up ads on youtube with several million views in the last few weeks.. You folks might quite like the shell extension flashell, along with the scripting language functionstein and template language templatestein.. |
| 14:35:24 | <geekosaur> | String is [Char], Char has an Enum instance |
| 14:35:29 | <antimatroid> | f++: https://pastebin.com/5FM7Hzef bash: https://pastebin.com/RTXXEHBg there's scripts to create and delete 100k empty files, the f++ script takes like ~3s whereas the bash script takes more like ~3m.. |
| 14:35:34 | <adamoden> | Oki, good to know! |
| 14:36:16 | <antimatroid> | you can even use the template language from nift to help add build-time programming to making haskell code to run |
| 14:36:29 | ← | antimatroid parts (~nick@124-169-88-177.tpgi.com.au) () |
| 14:36:34 | → | rj joins (~x@gateway/tor-sasl/rj) |
| 14:37:48 | × | usr256 quits (~usr25@unaffiliated/usr25) (Ping timeout: 256 seconds) |
| 14:38:35 | <swarmcollective> | Looks like spam to me. :\ |
| 14:41:34 | <swarmcollective> | adamoden, repl.it doesn't seem to want to display the output. I changed main to: main = putStrLn $ show $ (length a, a) |
| 14:42:02 | <swarmcollective> | and it does not even display the length; when excluding a, it prints the length of 11. |
| 14:42:44 | <swarmcollective> | Is there an easy way to convert a char to its ascii equivellent? |
| 14:43:56 | <geekosaur> | ifyou mean numeric equivalent, fromEnum or ord |
| 14:44:04 | <geekosaur> | toEnum or chr in the other direction |
| 14:44:12 | × | adamoden quits (bc970b1d@c188-151-11-29.bredband.comhem.se) (Quit: Connection closed) |
| 14:44:24 | <geekosaur> | (Data.Char import for chr/ord) |
| 14:44:24 | → | adamoden joins (bc970b1d@c188-151-11-29.bredband.comhem.se) |
| 14:44:35 | <swarmcollective> | Thanks geekosaur |
| 14:45:55 | × | ephemera_ quits (~E@122.34.1.187) (Quit: ephemera_) |
| 14:46:15 | × | frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 246 seconds) |
| 14:47:20 | <danza> | time to refresh some hoogle usage |
| 14:47:28 | × | MrMobius quits (~MrMobius@208.58.206.154) (Ping timeout: 265 seconds) |
| 14:47:29 | → | ephemera_ joins (~E@122.34.1.187) |
| 14:47:31 | <danza> | @hoogle "Char -> Int" |
| 14:47:32 | <lambdabot> | Data.Char digitToInt :: Char -> Int |
| 14:47:32 | <lambdabot> | Data.Char ord :: Char -> Int |
| 14:47:32 | <lambdabot> | GHC.Base ord :: Char -> Int |
| 14:47:49 | → | [1]MrMobius joins (~MrMobius@208.58.206.154) |
| 14:48:29 | <swarmcollective> | Hmmm, repl.it still chokes even after using: main = putStrLn $ show $ (length a, map fromEnum a) |
| 14:49:09 | × | m4lvin quits (~m4lvin@w4eg.de) (Quit: m4lvin) |
| 14:49:58 | <danza> | the Enum instance is nifty :) |
| 14:50:03 | → | m4lvin joins (~m4lvin@w4eg.de) |
| 14:51:25 | → | Mrbuck joins (~Mrbuck@gateway/tor-sasl/mrbuck) |
| 14:53:55 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 14:53:56 | <swarmcollective> | Ahhh, thanks GHCi... its because of infinite recursion. ;) |
| 14:55:26 | × | teardown quits (~user@gateway/tor-sasl/mrush) (Ping timeout: 268 seconds) |
| 14:56:02 | × | geekosaur quits (82650c7a@130.101.12.122) (Ping timeout: 240 seconds) |
| 14:56:46 | → | frozenErebus joins (~frozenEre@94.128.219.166) |
| 14:58:36 | <slack1256> | Would a data/codata distinction make sense on a non-total language? It seems we can get better distinction between lazy and strict parts of a language via this mechanism than for example, reflecting strictness or laziness at the type level. |
| 14:59:04 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds) |
| 15:00:43 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 15:00:56 | → | ystael joins (~ystael@209.6.50.55) |
| 15:02:05 | → | teardown joins (~user@gateway/tor-sasl/mrush) |
| 15:03:37 | × | MVQq quits (~anja@198.254.199.42) (Quit: q) |
| 15:04:14 | → | MarcelineVQ joins (~anja@198.254.199.42) |
| 15:04:57 | × | Shailangsa_ quits (~shailangs@host86-186-191-40.range86-186.btcentralplus.com) () |
| 15:08:29 | × | ukari quits (~ukari@unaffiliated/ukari) (Remote host closed the connection) |
| 15:09:30 | → | ukari joins (~ukari@unaffiliated/ukari) |
| 15:10:27 | <dolio> | slack1256: The distinction as usually specified does not make sense. |
| 15:12:40 | → | geekosaur joins (82650c7a@130.101.12.122) |
| 15:14:11 | × | nbloomf quits (~nbloomf@2600:1700:ad14:3020:1d7:97cc:1317:bca) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 15:14:39 | <slack1256> | Between data and codata? I thought it was clear. Data defined by its constructors and codata defined by its destructors. To have proof on type-as-proposition with data you can use well formed recursion. To have a proof with codata you need to show "productiveness". |
| 15:14:57 | × | darjeeling_ quits (~darjeelin@122.245.217.214) (Ping timeout: 264 seconds) |
| 15:15:29 | <dolio> | I mean it makes no sense in a non-total language. Everything is both data and codata. |
| 15:15:35 | <dolio> | Inductive and coinductive. |
| 15:15:47 | × | ystael quits (~ystael@209.6.50.55) (Read error: Connection reset by peer) |
| 15:16:20 | → | ystael joins (~ystael@209.6.50.55) |
| 15:17:43 | × | mouseghost quits (~draco@wikipedia/desperek) (Quit: mew wew) |
| 15:17:54 | <slack1256> | Well it gets muddle up, but I think is not because we are on a non-total language, laziness gives data a certain codata behaviours. |
| 15:18:15 | <slack1256> | For example lists and streams are the same under lazy eval. |
| 15:19:05 | → | clynamen joins (~clynamen@net-2-34-3-193.cust.vodafonedsl.it) |
| 15:19:07 | × | clynamen_ quits (~clynamen@net-93-66-46-121.cust.vodafonedsl.it) (Ping timeout: 256 seconds) |
| 15:19:21 | → | DarknessDad joins (~LizardDad@c-98-236-134-69.hsd1.oh.comcast.net) |
| 15:20:36 | → | nbloomf joins (~nbloomf@2600:1700:ad14:3020:1d7:97cc:1317:bca) |
| 15:21:18 | <dolio> | This is what I mean. You say that laziness causes codata behavior, but you are only comparing it to codata in a total language. In the semantics of non-total languages, everything is both data and codata, even the stuff that superficially looks like what you think of as data. |
| 15:21:59 | → | soft-warm joins (44695313@ip68-105-83-19.sd.sd.cox.net) |
| 15:22:56 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) |
| 15:23:09 | <dolio> | If you define spine strict lists, `data SL a = Nil | Cons a !(SL a)`, it is the fixed point of a functor, `data F a x = N | C a !x` ... |
| 15:23:32 | <dolio> | You can write `unfold step s = fmap (unfold step) (step s)` |
| 15:23:58 | <dolio> | Then consider `C 5 :: s -> F Int s`. |
| 15:24:40 | → | Jd007 joins (~Jd007@162.156.11.151) |
| 15:24:41 | → | crobbins joins (~crobbins@2600:380:b862:6852:6dfc:d2e7:3649:b8ed) |
| 15:25:03 | <dolio> | `unfold (C 5) s = ⊥`, but also `unfold (C 5) s = map (unfold (C 5)) (C 5 s) = C 5 (unfold (C 5) s) = C 5 ⊥ = ⊥` |
| 15:25:57 | <dolio> | So it satisfies the equations of the coalgebra homomorphism. |
| 15:26:21 | × | Mrbuck quits (~Mrbuck@gateway/tor-sasl/mrbuck) (Quit: WeeChat 1.9.1) |
| 15:26:53 | → | shailangsa joins (~shailangs@host86-186-191-40.range86-186.btcentralplus.com) |
| 15:27:32 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Ping timeout: 260 seconds) |
| 15:28:11 | <dolio> | So, 'strict' types are also coinductive, even though they superficially look like inductive data from a total language. |
| 15:29:09 | → | perrier-jouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
| 15:29:18 | <dolio> | The difference is no longer explainable as data vs. codata, inductive vs. coinductive. Instead they are fixed points of distinct functors. |
| 15:30:53 | → | boxscape joins (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) |
| 15:33:18 | <boxscape> | hm it seems like multiplicity polymorphism for (possibly) linear function will be a mess if multiplicity 0 is ever allowed (i.e. graded typing). I think a function can be polymorphic over 1 and ω, over 0 and ω, but not over any other combination |
| 15:33:34 | → | darjeeling_ joins (~darjeelin@122.245.217.214) |
| 15:33:55 | <boxscape> | assuming ω means you're allowed to use the argument however many times you want |
| 15:33:55 | <dolio> | You mean, the same function won't actually work for 0 and 1? |
| 15:34:41 | <boxscape> | dolio what I mean is if you use an argument once, than %m-> would be a valid arrow only if m is not 0, for example |
| 15:35:08 | <dolio> | I think you can probably only be polymorphic by not using the argument yourself. |
| 15:35:22 | <boxscape> | ah |
| 15:35:26 | <dolio> | You are polymorphic because you just pass the argument to another function. |
| 15:35:38 | <dolio> | Which could be any multiplicity that matches. |
| 15:36:05 | <boxscape> | right now you can have (\x -> x) :: (a %m-> a) in ghc 9.1 |
| 15:36:40 | <boxscape> | oh wait |
| 15:36:55 | <boxscape> | I think it ends up not actually being polymorphic if you do that |
| 15:37:14 | <boxscape> | or maybe ghci just doesn't print multiplicity polymorphism by default |
| 15:37:45 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 264 seconds) |
| 15:38:31 | <dolio> | What does it print for something like `(\f x -> f x) :: ((a %m-> b) -> (a %m-> b))` |
| 15:38:39 | <Philonous> | I have a list of Handles and I'm looking for a function that returns the first that has inputs or blocks until one becomes available (like epoll) |
| 15:39:17 | → | alx741 joins (~alx741@181.196.69.27) |
| 15:39:29 | <boxscape> | dolio it prints the type of that as `forall a b. (a -> b) -> a -> b` |
| 15:39:58 | <boxscape> | and I can use the function I wrote above in both %One-> and %Many-> positions, so I guess it does, in fact, just not print it |
| 15:40:31 | <dolio> | Isn't there also subtyping between multiplicities? |
| 15:40:37 | <boxscape> | uhh possibly |
| 15:40:51 | <dolio> | Which is more what you were talking about before. |
| 15:41:12 | <boxscape> | hmm yeah |
| 15:41:24 | <dolio> | I.E. a linear function can be promoted to an unrestricted function. |
| 15:41:26 | <geekosaur> | Philonous, I suspect you'll have to make a binding to epoll |
| 15:41:47 | × | knupfer quits (~Thunderbi@200116b82c5b78000cf80c553eaca855.dip.versatel-1u1.de) (Remote host closed the connection) |
| 15:41:52 | <merijn> | You don't |
| 15:41:55 | <merijn> | You can do this with STM |
| 15:42:05 | <Philonous> | Ah, right |
| 15:42:07 | × | crobbins quits (~crobbins@2600:380:b862:6852:6dfc:d2e7:3649:b8ed) (Ping timeout: 260 seconds) |
| 15:42:19 | <merijn> | Philonous: https://hackage.haskell.org/package/base-4.14.1.0/docs/Control-Concurrent.html#v:threadWaitReadSTM |
| 15:44:00 | <boxscape> | anyone know where the Many and One data constructors for linear types are defined? |
| 15:44:35 | → | crobbins joins (~crobbins@2600:380:b86f:cfd2:64ef:f87:41ee:2ddd) |
| 15:44:40 | <Philonous> | Maybe it's easier to just start n threads blocking on hWaitForInput and once one unblocks I just put the respective Handle into an {T}MVar |
| 15:44:47 | <boxscape> | (they don't seem to say in the proposal) |
| 15:45:37 | <boxscape> | ghci> id :: a %m-> a |
| 15:45:38 | <boxscape> | Couldn't match type ‘'Many’ with ‘'Many’ |
| 15:45:39 | <boxscape> | thanks |
| 15:46:03 | <boxscape> | (though it makes sense that this wouldn't work) |
| 15:46:34 | × | nbloomf quits (~nbloomf@2600:1700:ad14:3020:1d7:97cc:1317:bca) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 15:46:36 | × | crobbins quits (~crobbins@2600:380:b86f:cfd2:64ef:f87:41ee:2ddd) (Remote host closed the connection) |
| 15:47:34 | <boxscape> | it's defined in GHC.Types |
| 15:48:16 | <Philonous> | Will ghc support multiplicity-polymorphism? |
| 15:48:27 | <boxscape> | dolio:I.E. a linear function can be promoted to an unrestricted function. -- I don't think this is true; if I have a function `lid :: a %1-> a; lid x = x`, I get an error if I try `lid :: a -> a` |
| 15:48:31 | <boxscape> | Philonous it does already |
| 15:48:33 | <Philonous> | (Or whatever the correct term is) |
| 15:48:34 | <boxscape> | in HEAD |
| 15:48:41 | <Philonous> | Oh, nice. |
| 15:49:43 | <dolio> | Maybe there is no subtyping, then. |
| 15:50:17 | × | mananamenos quits (~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) (Ping timeout: 256 seconds) |
| 15:50:22 | × | soft-warm quits (44695313@ip68-105-83-19.sd.sd.cox.net) (Ping timeout: 240 seconds) |
| 15:50:47 | × | kam1 quits (~kam1@5.125.126.175) (Ping timeout: 265 seconds) |
| 15:50:51 | → | cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net) |
| 15:52:02 | × | frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 256 seconds) |
| 15:53:12 | × | Wuzzy quits (~Wuzzy@p5790ec2c.dip0.t-ipconnect.de) (Ping timeout: 265 seconds) |
| 15:53:28 | → | mananamenos joins (~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) |
| 15:54:16 | × | notzmv quits (~zmv@unaffiliated/zmv) (Ping timeout: 240 seconds) |
| 15:54:30 | × | chisui quits (59f77ca6@i59F77CA6.versanet.de) (Quit: Connection closed) |
| 15:54:42 | × | shatriff quits (~vitaliish@protective.remission.volia.net) (Remote host closed the connection) |
| 15:54:54 | → | shatriff joins (~vitaliish@protective.remission.volia.net) |
| 15:54:57 | × | hiroaki_ quits (~hiroaki@2a02:8108:8c40:2bb8:b00a:55a1:d947:55ef) (Ping timeout: 272 seconds) |
| 15:57:44 | <dolio> | boxscape: I assume it works if you eta expand? But maybe that's all. That'd fit GHC's typical approach. |
| 15:58:45 | × | cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0.1) |
| 15:58:46 | <boxscape> | dolio yeah the lid example does work with eta expansion |
| 15:59:04 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 16:00:07 | × | xosdy[m]1 quits (xosdyaleth@gateway/shell/matrix.org/x-xunefsscnonbtgiv) (Quit: Idle for 30+ days) |
| 16:00:34 | × | DarknessDad quits (~LizardDad@c-98-236-134-69.hsd1.oh.comcast.net) (Read error: Connection reset by peer) |
| 16:02:06 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 16:02:21 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 16:02:33 | → | conal joins (~conal@64.71.133.70) |
| 16:03:33 | × | slack1256 quits (~slack1256@45.4.2.52) (Ping timeout: 260 seconds) |
| 16:03:33 | × | marble_visions quits (~user@68.183.79.8) (Quit: bye) |
| 16:03:39 | <sm[m]> | ezzieyguywuf: a very good chance, you have to test both ghc versions and adapt to both either using CPP or the *-compat libs on hackage |
| 16:03:56 | <Clint> | ~/win go #linguistics |
| 16:04:00 | Clint | sighs. |
| 16:04:12 | → | marble_visions joins (~user@68.183.79.8) |
| 16:04:13 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 16:04:19 | → | Rudd0 joins (~Rudd0@185.189.115.108) |
| 16:04:45 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 16:05:02 | <ezzieyguywuf> | sm[m]: you're answering my questions from yesterday? |
| 16:05:13 | <sm[m]> | ohh oops, darn client was scrolled to yesterday :) |
| 16:05:17 | <ezzieyguywuf> | lol nbd |
| 16:05:26 | <ezzieyguywuf> | just checking to make sure I didn't ask something today and forgot |
| 16:05:41 | <sm[m]> | must.. sync.. with.. consensus.. time.. |
| 16:06:55 | → | hiroaki_ joins (~hiroaki@2a02:8108:8c40:2bb8:d62a:148b:cd1:9dfb) |
| 16:08:47 | → | gr33nbits joins (~gr33nbits@a109-49-87-64.cpe.netcabo.pt) |
| 16:08:56 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds) |
| 16:09:55 | × | usr25 quits (~usr25@unaffiliated/usr25) (Quit: Leaving) |
| 16:10:41 | → | ClaudiusMaximus joins (~claude@191.123.199.146.dyn.plus.net) |
| 16:10:47 | × | ClaudiusMaximus quits (~claude@191.123.199.146.dyn.plus.net) (Changing host) |
| 16:10:47 | → | ClaudiusMaximus joins (~claude@unaffiliated/claudiusmaximus) |
| 16:13:08 | → | Davith joins (56be7512@host86-190-117-18.range86-190.btcentralplus.com) |
| 16:13:40 | ← | Davith parts (56be7512@host86-190-117-18.range86-190.btcentralplus.com) () |
| 16:14:54 | → | Guest56442 joins (~zmv@191.255.89.231) |
| 16:15:03 | → | Pickchea joins (~private@unaffiliated/pickchea) |
| 16:15:10 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 16:15:16 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
| 16:15:49 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 16:16:24 | × | boxscape quits (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) (Ping timeout: 265 seconds) |
| 16:19:56 | × | acidjnk_new quits (~acidjnk@p200300d0c739092208198526eb118d06.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 16:20:24 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 272 seconds) |
| 16:20:29 | × | mnrmnaugh quits (~mnrmnaugh@unaffiliated/mnrmnaugh) (Read error: Connection reset by peer) |
| 16:20:55 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 16:21:25 | → | mnrmnaugh joins (~mnrmnaugh@unaffiliated/mnrmnaugh) |
| 16:22:53 | → | hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-kzbgzpokvgnzruvp) |
| 16:23:31 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) |
| 16:24:16 | → | alecs[m] joins (malumorema@gateway/shell/matrix.org/x-nmaaktphkqttrbsd) |
| 16:25:16 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds) |
| 16:25:31 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 16:25:33 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
| 16:26:04 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 16:28:14 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Ping timeout: 264 seconds) |
| 16:28:49 | × | mananamenos quits (~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) (Ping timeout: 256 seconds) |
| 16:30:09 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 16:30:18 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 16:30:19 | → | roconnor joins (~roconnor@host-104-157-194-235.dyn.295.ca) |
| 16:30:34 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 256 seconds) |
| 16:31:14 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 16:33:00 | → | boxscape joins (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) |
| 16:33:03 | → | frozenErebus joins (~frozenEre@94.128.219.166) |
| 16:35:36 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds) |
| 16:35:45 | × | mnrmnaugh quits (~mnrmnaugh@unaffiliated/mnrmnaugh) (Ping timeout: 260 seconds) |
| 16:37:33 | × | justsome1 quits (~justsomeg@unaffiliated/--/x-3805311) (Ping timeout: 246 seconds) |
| 16:38:21 | × | frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 264 seconds) |
| 16:40:01 | → | hololeap joins (~hololeap@unaffiliated/hololeap) |
| 16:41:57 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 16:42:00 | → | chisui joins (59f77ca6@i59F77CA6.versanet.de) |
| 16:43:20 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 16:43:28 | × | lazyshrk quits (~lazyshrk@128.199.58.13) (Quit: ZNC 1.8.2 - https://znc.in) |
| 16:43:38 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) |
| 16:44:11 | → | lazyshrk joins (~lazyshrk@128.199.58.13) |
| 16:48:41 | → | mnrmnaugh joins (~mnrmnaugh@unaffiliated/mnrmnaugh) |
| 16:48:47 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 16:49:10 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 16:49:37 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 16:50:15 | <koz> | Best line in any paper I've read this year: "Monoid-on-monoid action" |
| 16:50:16 | × | aqd quits (~aqd@84.20.147.33) (Ping timeout: 240 seconds) |
| 16:51:22 | <monochrom> | heh |
| 16:51:29 | tapas | is now known as topos |
| 16:51:33 | → | frozenErebus joins (~frozenEre@94.128.219.166) |
| 16:51:36 | × | cgadski quits (~cgadski@a95-95-106-208.cpe.netcabo.pt) () |
| 16:51:37 | <Taneb> | Does that just work out to be a monoid homomorphism? |
| 16:51:54 | × | bergey`` quits (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Remote host closed the connection) |
| 16:52:39 | × | son0p quits (~son0p@181.136.122.143) (Ping timeout: 265 seconds) |
| 16:52:51 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 16:53:42 | × | geekosaur quits (82650c7a@130.101.12.122) (Ping timeout: 240 seconds) |
| 16:53:49 | <koz> | Taneb: Yeah, I think so. |
| 16:53:57 | <koz> | But it's still hilarious as a line. |
| 16:54:39 | → | mouseghost joins (~draco@87-206-9-185.dynamic.chello.pl) |
| 16:54:39 | × | mouseghost quits (~draco@87-206-9-185.dynamic.chello.pl) (Changing host) |
| 16:54:39 | → | mouseghost joins (~draco@wikipedia/desperek) |
| 16:55:05 | <monochrom> | But monoid actions (and group actions) are of value too, whether it is acting on yet another monoid. |
| 16:55:09 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 16:55:38 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 16:56:16 | × | frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 240 seconds) |
| 16:56:56 | × | kritzefitz quits (~kritzefit@fw-front.credativ.com) (Ping timeout: 240 seconds) |
| 17:00:33 | × | pera quits (~pera@unaffiliated/pera) (Ping timeout: 264 seconds) |
| 17:00:42 | → | pera joins (pera@gateway/vpn/mullvad/pera) |
| 17:01:09 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 17:01:21 | andi^ | is now known as andi- |
| 17:01:38 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 17:03:10 | → | crobbins joins (~crobbins@c-73-76-34-113.hsd1.tx.comcast.net) |
| 17:03:39 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 17:04:52 | → | ep1ctetus joins (~epictetus@ip72-194-215-136.sb.sd.cox.net) |
| 17:05:49 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 17:07:53 | × | pera quits (pera@gateway/vpn/mullvad/pera) (Ping timeout: 272 seconds) |
| 17:09:30 | → | pera joins (~pera@unaffiliated/pera) |
| 17:09:35 | → | Deide joins (~Deide@217.155.19.23) |
| 17:12:17 | → | augnun joins (~augnun@2804:14c:658b:41bb:9900:3bb7:feab:98f9) |
| 17:13:21 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 17:13:43 | mnrmnaugh | is now known as find |
| 17:14:03 | → | geekosaur joins (82650c7a@130.101.12.122) |
| 17:15:11 | → | conal joins (~conal@64.71.133.70) |
| 17:15:20 | <ski> | koz : mapping monoid elements to monoid homomorphisms ? like a bilinear transformation, but for monoids rather than for vector spaces ? |
| 17:15:56 | <koz> | ski: It's from Brent Yorgey's paper about diagrams? |
| 17:16:36 | → | Tops2 joins (~Tobias@dyndsl-095-033-019-043.ewe-ip-backbone.de) |
| 17:17:17 | → | GZJ0X_ joins (~gzj@unaffiliated/gzj) |
| 17:19:21 | × | kuribas quits (~user@ptr-25vy0i970oqtzc3b45o.18120a2.ip6.access.telenet.be) (Remote host closed the connection) |
| 17:19:41 | <ski> | hm, any link ? |
| 17:19:56 | <koz> | https://repository.upenn.edu/cgi/viewcontent.cgi?article=1773&context=cis_papers |
| 17:20:32 | find | is now known as mnrmnaugh |
| 17:20:33 | × | darjeeling_ quits (~darjeelin@122.245.217.214) (Ping timeout: 260 seconds) |
| 17:21:57 | × | GZJ0X_ quits (~gzj@unaffiliated/gzj) (Ping timeout: 260 seconds) |
| 17:21:58 | × | conal quits (~conal@64.71.133.70) (Read error: Connection reset by peer) |
| 17:23:30 | <ski> | hm, we need a catchy term for the verb version of "function extensionality" |
| 17:23:56 | × | DavidEichmann quits (~david@234.109.45.217.dyn.plus.net) (Remote host closed the connection) |
| 17:24:08 | <dolio> | How would the verb be used? |
| 17:24:10 | <rednaZ[m]> | Is the result of `f x` used via a binder like `result = \ @ a_a2L5 -> f x` in core guaranteed to be shared although it is technically under a lambda (upper-case lambda)? |
| 17:24:34 | <ski> | "Moreover, η-reducint (1) and (2) yeilds" (page 9 of aforementioned paper) |
| 17:24:46 | <ski> | s/reducint/reducing/ |
| 17:25:18 | <ski> | it ought to express that the listed equations are the "function extensionalized" versions of equations (1) and (2) |
| 17:26:13 | → | conal joins (~conal@64.71.133.70) |
| 17:26:27 | <ski> | (also, i'm not too sure if it makes much sense to have an `Action' type class, for similar reasons for why there doesn't seem to be much utility to have a `NaturalTransformation' type class) |
| 17:26:34 | <EvanR> | how about zonk |
| 17:27:42 | × | adamoden quits (bc970b1d@c188-151-11-29.bredband.comhem.se) (Ping timeout: 240 seconds) |
| 17:30:35 | → | bitmagie joins (~Thunderbi@200116b8061f5a00d5e2aa6a74fa294f.dip.versatel-1u1.de) |
| 17:30:57 | <lyxia> | rednaZ[m]: that seems likely |
| 17:31:30 | <ski> | "zonk" already has a (different) technical meaning. (see <https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/compiler/type-checker#user-content-types-variables-and-zonking>,<https://stackoverflow.com/questions/31889048/what-does-the-ghc-source-mean-by-zonk>) |
| 17:31:36 | × | bitmagie quits (~Thunderbi@200116b8061f5a00d5e2aa6a74fa294f.dip.versatel-1u1.de) (Client Quit) |
| 17:32:01 | <EvanR> | good point, might want to avoid overloading |
| 17:32:20 | × | boxscape quits (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) (Quit: Connection closed) |
| 17:32:40 | <ski> | (i guess we also need a plausible adjectival version) |
| 17:32:49 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 17:33:07 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection) |
| 17:33:39 | → | howdoi joins (uid224@gateway/web/irccloud.com/x-csqlidmiacqyvucp) |
| 17:34:50 | → | cocytus joins (~cocytus@cpe-76-95-48-109.socal.res.rr.com) |
| 17:34:55 | × | waskell quits (~quassel@d66-183-230-153.bchsia.telus.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 17:36:28 | <cocytus> | I booted up VSCode today and got this Haskell Extension error: haskell-language-server 1.0.0 for GHC 8.8.4 is not available on Windows_NT |
| 17:36:37 | <cocytus> | Anyone else seeing this problem? |
| 17:39:09 | → | darjeeling_ joins (~darjeelin@122.245.217.214) |
| 17:39:38 | → | o1lo01ol1o joins (~o1lo01ol1@89.214.192.84) |
| 17:43:19 | → | frozenErebus joins (~frozenEre@94.128.219.166) |
| 17:43:50 | → | cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
| 17:44:20 | × | danza quits (~francesco@151.53.76.37) (Quit: Leaving) |
| 17:45:12 | <fendor> | cocytus, You should probably report it in #haskell-language-server |
| 17:45:38 | <fendor> | I bet jneira knows what's up |
| 17:46:46 | <cocytus> | Will do. Didn't know that was a channel until now. Thanks. |
| 17:47:21 | × | afidegnum quits (~afidegnum@102.176.65.243) (Ping timeout: 264 seconds) |
| 17:47:36 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 17:48:08 | ← | tv- parts (~tv@unaffiliated/tv-) ("WeeChat 2.9") |
| 17:49:55 | → | Wuzzy joins (~Wuzzy@p5790e3bb.dip0.t-ipconnect.de) |
| 17:49:55 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 17:50:56 | <ski> | koz : ok, yes the action was mapping monoid elements to monoid homomorphisms, so it's like a "bimonoidal transformation" or whatever one should call it |
| 17:52:45 | × | borne quits (~fritjof@200116b8648b430010f2d07664396fd4.dip.versatel-1u1.de) (Ping timeout: 272 seconds) |
| 17:52:47 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) |
| 17:53:42 | hiredman_ | is now known as hiredman |
| 17:54:16 | × | xwvvvvwx quits (xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx) (Read error: Connection reset by peer) |
| 17:54:33 | → | xwvvvvwx joins (xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx) |
| 17:56:44 | → | borne joins (~fritjof@200116b8648b430010f2d07664396fd4.dip.versatel-1u1.de) |
| 17:57:41 | × | chele quits (~chele@ip5b40237d.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
| 17:59:30 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Remote host closed the connection) |
| 18:00:03 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 18:01:38 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 18:02:45 | <monochrom> | verb version of function extensionality: f is pointwise equal to g |
| 18:04:04 | <EvanR> | is isn't that verbing |
| 18:04:06 | <dolio> | That isn't the verb that was requested, though. Although I'm not really convinced of the necessity. |
| 18:04:12 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection) |
| 18:05:02 | × | borne quits (~fritjof@200116b8648b430010f2d07664396fd4.dip.versatel-1u1.de) (Ping timeout: 260 seconds) |
| 18:05:25 | <dolio> | The verb was for rewriting a formula to use pointwise equality. |
| 18:06:24 | <ski> | s/formula/defining equation/ |
| 18:06:55 | <monochrom> | re-pointify :) |
| 18:07:04 | × | Franciman quits (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving) |
| 18:09:05 | <ski> | well, really for either direction i guess. although i had the other direction mostly in mind |
| 18:09:53 | ski | . o O ( "repointificate","depointificate","pointificate" ) |
| 18:10:02 | <koz> | I'm in favour of 'pointificate'. |
| 18:10:15 | × | Wuzzy quits (~Wuzzy@p5790e3bb.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 18:10:21 | <ski> | and the first two as specific directed versions of it ? |
| 18:11:25 | × | fendor quits (~fendor@91.141.0.220.wireless.dyn.drei.com) (Remote host closed the connection) |
| 18:12:00 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 18:12:59 | <koz> | ski: Along with 'disappointificate'. |
| 18:13:00 | → | apache8080 joins (~rishi@wsip-70-168-153-252.oc.oc.cox.net) |
| 18:13:01 | <ski> | "indirectify" doesn't sound that great (is quite vague about what is indirect) .. i guess "extensionalify" or "extensionalize" isn't quite as bad |
| 18:13:05 | → | fendor joins (~fendor@91.141.0.220.wireless.dyn.drei.com) |
| 18:14:05 | × | xsperry quits (~as@unaffiliated/xsperry) () |
| 18:15:51 | <ski> | koz : hm, so "appointificate" would be going from `map f . concat = concat . map (map f)' to `map f (concat xss) = concat (map (map f) xss)', and "disappointificate" the reverse direction, while "pointificate" refers to both ? |
| 18:16:27 | <koz> | ski: Yes! |
| 18:16:39 | <koz> | And people who do this are 'pointiffs'. |
| 18:16:48 | <ski> | i like it |
| 18:17:38 | × | rajivr quits (uid269651@gateway/web/irccloud.com/x-bteccupbxcrkcjlt) (Quit: Connection closed for inactivity) |
| 18:17:39 | <ski> | so, it's settled then, at least tentatively ? |
| 18:17:53 | → | Mrbuck joins (~Mrbuck@gateway/tor-sasl/mrbuck) |
| 18:17:54 | <koz> | No objections here. |
| 18:19:04 | → | xsperry joins (~as@unaffiliated/xsperry) |
| 18:21:25 | × | Graf_Blutwurst quits (~grafblutw@adsl-178-38-234-220.adslplus.ch) (Quit: WeeChat 3.0) |
| 18:21:54 | → | waskell joins (~quassel@d66-183-230-153.bchsia.telus.net) |
| 18:24:48 | <ski> | (fwiw, to clarify, `f x = x^2' is an indirect definition of `f' in the sense that it defines `f' indirectly, by defining what the output `f x' is to be, for every possible input `x'. `f = \x -> x^2' would be a direct definition, in this sense, giving a meaning directly to `f'. ditto applies for defining relations, and defining subsets .. in fact, also applies to "message-dispatching" definitions (aka |
| 18:24:54 | <ski> | "copatterns"), like `repeat :: a -> Stream a; repeat a = as where Head as = a; Tail as = as' and `iterate :: (a -> a) -> a -> Stream a; Head (iterate _ x) = x; Tail (iterate f x) = iterate f (f x)') |
| 18:26:37 | × | dcoutts__ quits (~duncan@85.186.125.91.dyn.plus.net) (Ping timeout: 260 seconds) |
| 18:27:11 | × | dyeplexer quits (~lol@unaffiliated/terpin) (Remote host closed the connection) |
| 18:28:16 | → | skregas_ joins (~skregas_@201.89-10-150.nextgentel.com) |
| 18:29:23 | → | rdivyanshu joins (uid322626@gateway/web/irccloud.com/x-saqaggydvtpkwddi) |
| 18:30:38 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 18:30:49 | <dolio> | This seems like being concerned with distinctions that don't really matter. |
| 18:31:35 | × | perrier-jouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.0) |
| 18:31:39 | <dolio> | The 'direct' definition of f is 'directly' defining it to mean a function literal that defined by saying what the output is for every possible input. |
| 18:32:51 | → | perrier-jouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
| 18:34:56 | <ski> | yea, the point was the general shape `f x = ..x..' vs. `f = ... |
| 18:34:57 | <ski> | ' |
| 18:35:23 | → | merelyme joins (~merelyme@185.153.177.12) |
| 18:35:26 | × | Yumasi quits (~guillaume@2a01:e0a:5cb:4430:7b45:fc1a:7f85:7f18) (Ping timeout: 240 seconds) |
| 18:37:09 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 18:37:14 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection) |
| 18:37:18 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 18:37:26 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 18:38:36 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 240 seconds) |
| 18:39:56 | × | deviantfero quits (~deviantfe@190.150.27.58) (Ping timeout: 240 seconds) |
| 18:41:28 | × | darjeeling_ quits (~darjeelin@122.245.217.214) (Ping timeout: 256 seconds) |
| 18:45:06 | × | meck quits (~meck@li1809-18.members.linode.com) (Quit: ZNC 1.8.2 - https://znc.in) |
| 18:45:22 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 18:46:33 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 18:46:42 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 18:48:16 | → | meck joins (~meck@li1809-18.members.linode.com) |
| 18:50:59 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 18:51:06 | × | Pickchea quits (~private@unaffiliated/pickchea) (Ping timeout: 256 seconds) |
| 18:51:24 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 18:51:42 | <dminuoso> | ski: I recall a publication discussing the history of terminology in logic, do you happen to know what I’m thinking of? |
| 18:52:07 | <dminuoso> | Im sure it was you who suggested it a while ago |
| 18:52:27 | <dminuoso> | (I think it was some kind of article or letter from Frege, but I can’t seem to find it) |
| 18:52:45 | × | mawk quits (mawk@serveur.io) (Ping timeout: 256 seconds) |
| 18:54:22 | × | geekosaur quits (82650c7a@130.101.12.122) (Ping timeout: 240 seconds) |
| 18:54:36 | × | merelyme quits (~merelyme@185.153.177.12) (Remote host closed the connection) |
| 18:54:42 | → | darjeeling_ joins (~darjeelin@122.245.218.150) |
| 18:58:07 | <ski> | hm .. doesn't seem to ring a bell |
| 19:00:30 | <ski> | Frege has some interesting writings. like "Begriffsschrift","Function and Concept","What is a Function?","The Foundations of Arithmetic" |
| 19:00:41 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
| 19:00:51 | → | conal joins (~conal@64.71.133.70) |
| 19:01:06 | <ski> | (probably "On Sense and Reference" and "Concept and Object" are also interesting, but i haven't read those) |
| 19:01:27 | <ski> | Frege basically introduces macros at one point |
| 19:02:47 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 19:02:47 | × | jpds_ quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 19:03:21 | → | berberman joins (~berberman@unaffiliated/berberman) |
| 19:03:23 | <ski> | (what he calls "function" we'd call an "expression with holes" (a meta-function, operating on fragments of language phrases by composing smaller ones into larger ones (no analysis)). what we call a "function (value)" he calls "course-of-values (of a function)", basically being the extension of the former) |
| 19:03:23 | → | jpds_ joins (~jpds@gateway/tor-sasl/jpds) |
| 19:03:56 | <EvanR> | i read that part, and was wondering, how is his idea different from a lambda |
| 19:04:19 | × | berberman_ quits (~berberman@unaffiliated/berberman) (Ping timeout: 272 seconds) |
| 19:04:26 | <EvanR> | other than being earlier in history than lambda calculus |
| 19:04:35 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) |
| 19:05:17 | <ski> | "From Frege to Gödel: A Source Book in Mathematical Logic" edited by J. van Heijenoort in 1967 contains key original articles/papers (when appropriate, translated into english) of early logicians and writers on logic |
| 19:05:21 | × | ezzieyguywuf quits (~Unknown@unaffiliated/ezzieyguywuf) (Ping timeout: 264 seconds) |
| 19:06:16 | <ski> | i don't think he has anything like the lambda notation for function values |
| 19:06:37 | <EvanR> | no... not really. But is notation the only significant difference? |
| 19:06:53 | <ski> | i'm not talking about concrete syntax, i'm talking about abstract syntax |
| 19:07:01 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection) |
| 19:07:04 | <ski> | he has no notation for it |
| 19:07:09 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) |
| 19:07:38 | <EvanR> | yes in begriffschrift he has a funky notation for this sentence with a hole in it, that you can fill in |
| 19:07:52 | × | elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 276 seconds) |
| 19:07:52 | <ski> | (he talks about courses-of-values by using words, and by writing down formulae for their bodies. but no notation corresponding to the lambda notation, as i said) |
| 19:08:04 | <ski> | yes, that's the meta-function i mentioned |
| 19:08:10 | <EvanR> | kind of a square root looking thing |
| 19:08:55 | <EvanR> | ok, meta-function |
| 19:09:40 | → | geekosaur joins (82650c7a@130.101.12.122) |
| 19:10:37 | <ski> | (if you're familiar with staged computation, it's a function operating on code expressions. specifically a (only) synthesizing one (not analysing, not pattern-matching on input expressions)) |
| 19:11:29 | <ski> | hm, looking at <https://gallica.bnf.fr/ark:/12148/bpt6k65658c/f37.item> -- would you know in which section, or on which page, the notation you mentioned is at ? |
| 19:13:01 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 19:13:15 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 19:14:05 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 19:14:14 | <EvanR> | ok, go back to page 19 and he's doing this https://i.imgur.com/vOOTd00.png |
| 19:14:35 | <EvanR> | basically reserving a letter to be used in place of a whole in a formula |
| 19:14:48 | <EvanR> | seems pretty lambda like |
| 19:15:17 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection) |
| 19:15:47 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection) |
| 19:16:03 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 19:16:10 | <ski> | oh, that's a universal quantifier |
| 19:16:23 | <EvanR> | drat |
| 19:16:30 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 19:16:41 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 19:16:44 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 19:18:09 | <ski> | people later linearized that into ⌜(a) Φ(a)⌝, also adding ⌜(∃a) Φ(a)⌝ for the existential version. then, at some point people started using ⌜(∀a) Φ(a)⌝ for the former, and then also ⌜∀a Φ(a)⌝ and ⌜∃a Φ(a)⌝ |
| 19:18:21 | → | mananamenos joins (~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) |
| 19:18:30 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 19:18:40 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 19:21:12 | → | deviantfero joins (~deviantfe@190.150.27.58) |
| 19:22:49 | × | _d0t quits (void@gateway/vpn/mullvad/d0t/x-89419360) (Ping timeout: 260 seconds) |
| 19:24:27 | → | borne joins (~fritjof@200116b8648b430010f2d07664396fd4.dip.versatel-1u1.de) |
| 19:26:40 | × | chisui quits (59f77ca6@i59F77CA6.versanet.de) (Quit: Connection closed) |
| 19:26:41 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 19:27:22 | → | motherfsck joins (~motherfsc@unaffiliated/motherfsck) |
| 19:27:40 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 19:27:55 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection) |
| 19:29:44 | × | evanjs quits (~evanjs@075-129-098-007.res.spectrum.com) (Ping timeout: 265 seconds) |
| 19:32:09 | × | yahb quits (xsbot@haskell/bot/yahb) (Ping timeout: 260 seconds) |
| 19:32:19 | → | yahb joins (xsbot@178.219.36.155) |
| 19:32:19 | × | yahb quits (xsbot@178.219.36.155) (Changing host) |
| 19:32:19 | → | yahb joins (xsbot@haskell/bot/yahb) |
| 19:34:31 | → | o1lo01ol_ joins (~o1lo01ol1@95.69.63.87) |
| 19:34:49 | → | evanjs joins (~evanjs@075-129-098-007.res.spectrum.com) |
| 19:36:39 | → | o1lo01o__ joins (~o1lo01ol1@95.69.63.87) |
| 19:37:04 | × | gioyik_ quits (~gioyik@gateway/tor-sasl/gioyik) (Remote host closed the connection) |
| 19:37:28 | × | o1lo01ol1o quits (~o1lo01ol1@89.214.192.84) (Ping timeout: 260 seconds) |
| 19:37:30 | → | gioyik_ joins (~gioyik@gateway/tor-sasl/gioyik) |
| 19:37:53 | × | ph88 quits (~ph88@2a02:8109:9e00:7e5c:d1f1:eae:60e1:e53a) (Ping timeout: 272 seconds) |
| 19:37:57 | × | Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
| 19:38:14 | → | Tario joins (~Tario@201.192.165.173) |
| 19:39:09 | × | pera quits (~pera@unaffiliated/pera) (Ping timeout: 260 seconds) |
| 19:40:05 | × | o1lo01ol_ quits (~o1lo01ol1@95.69.63.87) (Ping timeout: 260 seconds) |
| 19:40:21 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) () |
| 19:41:18 | × | deviantfero quits (~deviantfe@190.150.27.58) (Quit: WeeChat 3.0) |
| 19:41:31 | <rednaZ[m]> | lyxia: Thanks. |
| 19:41:54 | → | Franciman joins (~francesco@host-82-49-79-189.retail.telecomitalia.it) |
| 19:43:32 | → | chisui joins (59f77ca6@i59F77CA6.versanet.de) |
| 19:49:17 | → | ddellacosta joins (~ddellacos@86.106.143.202) |
| 19:49:30 | <mananamenos> | Why is it possible to derive a functor but not a monad? I've started reading a bit about free monads and as I understand they are used to turn a functor to a monad. |
| 19:49:53 | × | frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 260 seconds) |
| 19:50:17 | <EvanR> | you can derive a free monad |
| 19:50:32 | <EvanR> | since it's unique |
| 19:52:06 | <tomsmeding> | mananamenos: many types don't have a unique valid monad instance; I'm not sure whether it's feasible to automatically detect for a given type whether there is only one |
| 19:52:33 | <tomsmeding> | and picking one while there are more would be risky and not really useful |
| 19:53:44 | <EvanR> | even if you could detect that... i boggle at how you would find the specialized monads for all the types |
| 19:55:11 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 19:56:32 | <shapr> | silly question, can I use hoogle to search for instances? |
| 19:57:32 | <chisui> | you can derive Monad for newtypes. If you want something more interesting you will have to write your own instance anyway. |
| 19:58:53 | → | soft-warm joins (44695313@ip68-105-83-19.sd.sd.cox.net) |
| 19:59:32 | <monochrom> | I don't think monads can be derived at all. |
| 20:00:30 | <ski> | for `newtype's, you're just inheriting the instance from the representation |
| 20:00:38 | <davean> | mananamenos: theres no opptions in what a Functor is. Its very simple. Theres one type parameter, and it behaves exactly one way |
| 20:00:53 | <davean> | Not true with a Monad. |
| 20:01:36 | ski | . o O ( `newtype Foo a = MkFoo (MyMonadTransformer Foo a) deriving (Functor,Applicative,Monad)' ) |
| 20:02:36 | × | supercoven quits (~Supercove@194.34.133.92) (Ping timeout: 240 seconds) |
| 20:02:38 | <monochrom> | For free monads, the monad you end with looks nothing like the functor you start with at all. |
| 20:02:57 | <mananamenos> | davean, im looking at fmap and bind signatures and cannot see why one would be possible to derive and not the other. For example bind is `f a -> (a -> f b) -> f b`, unwrap from the context the first param and call the function passed by second param. |
| 20:03:18 | × | ddellacosta quits (~ddellacos@86.106.143.202) (Remote host closed the connection) |
| 20:03:35 | <ski> | "unwrap" is ambiguous |
| 20:03:36 | <mananamenos> | just want to understand better, because there is something fundamental i dont get it seems. |
| 20:03:36 | <davean> | mananamenos: incorrect. |
| 20:03:40 | <monochrom> | OK, apply what you said to "data S a = C a (S a)", see how far you get. |
| 20:03:45 | <davean> | mananamenos: Theres nothing forcing the "f" part to be the same |
| 20:04:07 | <davean> | In functor it specificly *is* forced to not change |
| 20:04:18 | <monochrom> | IMO it's counterproductive to keep claiming "I don't see why not" without writing down your algorithm. |
| 20:04:21 | <davean> | Only the target may change in functor, anything may change in monad |
| 20:04:23 | <monochrom> | So where is your algorithm? |
| 20:04:55 | <monochrom> | IMO no one is obliged to answer "why not". |
| 20:05:05 | <ski> | why not ? |
| 20:05:11 | <davean> | His algorithm can't exist because Monad is insufficiently defined to allow a decision |
| 20:05:15 | <monochrom> | Instead, show your algorithm to justify "why it can be done". |
| 20:05:22 | <mananamenos> | monochrom, relax dude, i've just started reading about this stuff :) did not want to offend or something |
| 20:05:52 | <mananamenos> | just looking for high level advices from people here |
| 20:06:02 | <Ferdirand> | mananamenos: you can start with: newtype Compose f g a = f (g a) |
| 20:06:11 | <monochrom> | Sure, if you're just starting, you're also not ready for a proof of impossbility. |
| 20:06:14 | <Ferdirand> | then try to write (Functor f, Functor g) => Functor (Compose f g) |
| 20:06:23 | <ski> | well, advice is what you got :) |
| 20:06:28 | <Ferdirand> | then do it for Applicative, then try to do it for Monad |
| 20:06:28 | → | nopolitica joins (~zul@46.39.255.115) |
| 20:06:44 | <monochrom> | See this is what I keep saying. People play the "I'm beginner" card only when it's convenient. |
| 20:07:02 | × | zargoertzel quits (~zar@fw1.ciirc.cvut.cz) (Ping timeout: 256 seconds) |
| 20:07:18 | → | ddellacosta joins (~ddellacos@86.106.143.189) |
| 20:07:27 | <davean> | I'm confused by this claim a proof of impossability isn't super useful for a beginner |
| 20:07:34 | <chisui> | In this case I find it more intuitive to think of a Monad as something that supports join :: f (f a) -> f a |
| 20:07:38 | <davean> | I find them lovely learning tools |
| 20:07:47 | → | petersen joins (~petersen@redhat/juhp) |
| 20:07:57 | <monochrom> | What I'm against is not asking "why not". It's insisting "I don't see why not, just do the following" for the 2nd time. |
| 20:08:23 | <monochrom> | davean, I said "not ready", not "not valuable". |
| 20:08:27 | → | Wuzzy joins (~Wuzzy@p5b0df8ea.dip0.t-ipconnect.de) |
| 20:08:27 | ski | nods to chisui |
| 20:08:41 | <monochrom> | You ever showed the halting problem proof to 1st-year CS students? |
| 20:08:42 | × | Franciman quits (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving) |
| 20:08:54 | <davean> | monochrom: yes! It is what opened CS to me! |
| 20:09:08 | <davean> | and the FLP impossability opened distributed systems to me! |
| 20:09:21 | <ski> | "FLP" ? |
| 20:09:31 | <davean> | a good impossability proof has been more than anything else a way for me to jump into and deeply understand a subjest almost instantly |
| 20:10:12 | <davean> | ski: the "big" proof of impossabiltiy that made Distributed Systems its own subject - You can't have concenssus |
| 20:10:36 | <monochrom> | Why argue with me? Go ahead show the proof you want to show. I can't stop you. |
| 20:10:39 | <davean> | Its the *only* thing I had to see to udnerstand other distributed systems things |
| 20:10:51 | <davean> | I sketched it above |
| 20:11:09 | <monochrom> | OK, how much have you convinced the asker? |
| 20:11:24 | <ski> | does the letters stand for anything ? |
| 20:11:27 | <davean> | monochrom: frankly I don't know |
| 20:11:33 | <davean> | ski: Fischer, Lynch and Patterson |
| 20:11:37 | <ski> | okay, ty |
| 20:11:53 | <davean> | monochrom: you spent the entire time shutting them down |
| 20:11:54 | <swarmcollective> | I've learned a lot by taking suggestions here and putting them in a repl to see what works and what doesn't. |
| 20:11:55 | <mananamenos> | davean, could you expand of this `Theres nothing forcing the "f" part to be the same`? |
| 20:12:03 | <monochrom> | My guess is that the asker thinks your argument is irrelevant because they think they've found a way around it. So, failure. |
| 20:12:37 | <shapr> | I kinda miss the old days when Haskell code didn't have much in the way of type signatures. I used to use Haskell as compile time Python. But now I'm starting to use coerce and it's about the same thing, so yay? |
| 20:12:40 | <davean> | mananamenos: ok, so you have `f a -> (a -> f b) -> f b`, whats the relationship between the 3 'f's? |
| 20:13:09 | <ski> | shapr : i think Hughes mostly codes without signatures ? |
| 20:13:39 | <davean> | functor says the 'f' part must be unchanged, but in Monad each 'f' changes (doesn't have to mind you but theres nothing relating them other than that the monad laws hold) |
| 20:14:07 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection) |
| 20:14:26 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 20:14:31 | <mananamenos> | davean, that `f` is the same thing throughout the whole signature (if you pik f=IO, then it's IO throughout the whole signturare) |
| 20:14:48 | <davean> | mananamenos: Thats a type, not a value |
| 20:15:19 | <mananamenos> | aaaa |
| 20:15:31 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 20:15:39 | <mananamenos> | i start seeing the light davean xD |
| 20:15:51 | × | fendor quits (~fendor@91.141.0.220.wireless.dyn.drei.com) (Ping timeout: 260 seconds) |
| 20:15:51 | <davean> | YOu are correct about them being equal type - they're all 'f', but you have no idea whats in it |
| 20:16:01 | <ski> | monochrom : with `f a' and `a -> f b' as input types, you can get to `f (f b)' (assuming `f' is a `Functor'). the trouble then is (as chisui hinted at) how you get from `f (f b)' to a plain `f b'. it's this part that isn't unique (and can "change the `f'" as davean put it) |
| 20:16:04 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 20:16:05 | <ski> | er, sigh |
| 20:16:08 | <ski> | mananamenos ^ |
| 20:16:24 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 20:16:27 | <monochrom> | I don't understand this "change f" wording. |
| 20:17:23 | <ski> | they mean : change the "structure" represented by the `f' part of the value of type `f a', as opposed to just changing the "elements" part represented by `a' |
| 20:17:26 | <shapr> | ski: any idea if Hoogle can search for instances? |
| 20:17:51 | <ski> | maybe the website version ? |
| 20:18:51 | <tomsmeding> | geekosaur: at some point you asked for https://paste.tomsmeding.com to support paste expiration; how does this look? :) (the options thing) |
| 20:19:06 | <tomsmeding> | noooo wrong mention |
| 20:19:21 | <geekosaur> | hm, I don't recall requesting that, I asked for line numbers which you granted :) |
| 20:19:39 | <tomsmeding> | gentauro: it was you who requested that |
| 20:19:45 | × | crobbins quits (~crobbins@c-73-76-34-113.hsd1.tx.comcast.net) (Ping timeout: 264 seconds) |
| 20:19:45 | <tomsmeding> | damn first letters of nicks :p |
| 20:19:58 | <koz> | Did quick look impredicativity make it into GHC 9? |
| 20:19:58 | <monochrom> | Presumably with "deriving Whatever" the deriver has access to the definition of the particular f, so if your argument is "you don't know what's f", that pretty weak. Cf. "deriving Functor" also has to work for many wildly differeent f's. |
| 20:20:11 | <tomsmeding> | geekosaur: sorry :p |
| 20:20:13 | koz | is now known as koz_ |
| 20:20:21 | <davean> | monochrom: I specificly covered that |
| 20:20:56 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds) |
| 20:21:17 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 20:21:19 | → | fendor joins (~fendor@178.115.128.24.wireless.dyn.drei.com) |
| 20:21:34 | <davean> | ski: FLP is a really great paper if you want to understand what to think about and what can and can't be done without a shared time basis |
| 20:21:47 | <ski> | tomsmeding : hm, while we're mentioning "nice to have", i suppose i should say that <lpaste.net> had the feature that someone could annotate an existing paste with another paste chunk (e.g. an answer, elaboration, or fix). (it was also possible to replace a version of a chunk with a new one, correcting some information. iirc, there was links available to see the previous versions, if you wanted to, but i |
| 20:21:47 | <davean> | ski: after FLP and Common Knowlege pretty much everything else is just a toolkit IMO |
| 20:21:51 | × | ukari quits (~ukari@unaffiliated/ukari) (Remote host closed the connection) |
| 20:21:53 | <ski> | might misremember that) |
| 20:21:55 | <chisui> | you could also just use `DeriveAnyClass` that's how that works, right? |
| 20:22:11 | <davean> | (Common Knowlege gives you the framework for what is a workable exception to FLP) |
| 20:22:26 | <davean> | (Like a shared time basis) |
| 20:22:40 | → | zargoertzel joins (~zar@fw1.ciirc.cvut.cz) |
| 20:22:41 | <geekosaur> | ski, you remember correctly |
| 20:23:01 | → | ukari joins (~ukari@unaffiliated/ukari) |
| 20:23:08 | <tomsmeding> | ski: interesting! my time is up for tonight, but maybe next time I'm looking to do something :) |
| 20:23:26 | <geekosaur> | diffs between versions of a paste was helpful |
| 20:23:38 | <ski> | (the point of annotations would be that they appeared on the same page, rather a completely different paste that can be hard to find, e.g. later. and you don't have to switch pages to compare the original paste with the annotation) |
| 20:24:09 | <ski> | tomsmeding : yea, no worry. i just thought i'd mention it, in case you hadn't thought of or considered the idea |
| 20:24:16 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 20:24:28 | <ski> | (annotation and updating versions were different features, to be clear) |
| 20:24:32 | <tomsmeding> | I hadn't :) |
| 20:25:40 | <mananamenos> | davean, ski, chisui thank you! |
| 20:25:52 | <ski> | yw |
| 20:26:09 | <davean> | mananamenos: no problem |
| 20:26:10 | ski | thinks monochrom also helped, fwiw |
| 20:27:05 | <chisui> | any time |
| 20:27:06 | <ski> | (negative help can be just as important as positive help. knowing what not to do vs. knowing what to do) |
| 20:28:26 | × | danvet quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 240 seconds) |
| 20:29:12 | <monochrom> | I'm cranky because the world is devaluing due diligence and I'm fighting it. |
| 20:29:30 | <ski> | keep fighting the good fight |
| 20:29:48 | <monochrom> | Due diligence means if you think you have an idea how to do something, you actually carry it out for a couple of examples before you invite people to discuss it. |
| 20:30:59 | <monochrom> | Last week I thought I saw how to make ZipList a monad. |
| 20:30:59 | <davean> | monochrom: I don't think you're being honest with yourself here. I think you're demanding everyone learn and think the way you do |
| 20:34:13 | × | ircbrowse_tom quits (~ircbrowse@64.225.78.177) (ZNC 1.7.5+deb4 - https://znc.in) |
| 20:39:30 | → | ircbrowse_tom_ joins (~ircbrowse@64.225.78.177) |
| 20:39:31 | → | cantstanya joins (~chatting@gateway/tor-sasl/cantstanya) |
| 20:39:31 | Server | sets mode +CLnt |
| 20:39:33 | → | retlo1 joins (~retlo@172.245.134.89) |
| 20:39:33 | × | srid quits (sridmatrix@gateway/shell/matrix.org/x-asyxkxzqnxcrpgqz) (Ping timeout: 265 seconds) |
| 20:39:34 | × | psydruid quits (psydruidma@gateway/shell/matrix.org/x-gkeygehzefulhcqy) (Ping timeout: 265 seconds) |
| 20:39:37 | → | nrdmn9 joins (~nrdmn@95.129.53.118) |
| 20:39:37 | → | olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
| 20:39:43 | → | jamestmartin joins (~james@jtmar.me) |
| 20:39:47 | → | cheers- joins (~user@unaffiliated/cheers) |
| 20:39:54 | → | parseval joins (sid239098@gateway/web/irccloud.com/x-xtgzvtrnthigcynq) |
| 20:39:56 | → | buggymcbugfix_ joins (sid432603@gateway/web/irccloud.com/x-naqvoueakkcopuie) |
| 20:39:56 | × | sm[m] quits (simonmicma@gateway/shell/matrix.org/x-bgzcpqodewfewacu) (Ping timeout: 240 seconds) |
| 20:40:00 | × | MrMuffles[m] quits (mrmufflesm@gateway/shell/matrix.org/x-mrblnlwbznzgfknm) (Ping timeout: 268 seconds) |
| 20:40:00 | × | betrion[m] quits (betrionmat@gateway/shell/matrix.org/x-olmvksmarryfhawb) (Ping timeout: 268 seconds) |
| 20:40:00 | × | alexfmpe quits (alexfmpema@gateway/shell/matrix.org/x-smqfejcgpvfgbkxf) (Ping timeout: 268 seconds) |
| 20:40:00 | × | tomsen[m] quits (tfbiomatri@gateway/shell/matrix.org/x-srxhwciroichajqn) (Ping timeout: 268 seconds) |
| 20:40:00 | × | CrabMan quits (phi-matrix@gateway/shell/matrix.org/x-inxxpawmmofshkii) (Ping timeout: 268 seconds) |
| 20:40:00 | × | lnxw37d4 quits (lnxw37d4ma@gateway/shell/matrix.org/x-wuxiqkhdynxpuvsj) (Ping timeout: 268 seconds) |
| 20:40:02 | → | monokrome|stole joins (~monokrome@23-24-202-21-static.hfc.comcastbusiness.net) |
| 20:40:05 | × | hsiktas[m] quits (hsiktasmat@gateway/shell/matrix.org/x-uybiusisumxitdaa) (Ping timeout: 240 seconds) |
| 20:40:08 | → | mursu_ joins (~ngWalrus@2a03:b0c0:3:d0::5ebd:2001) |
| 20:40:12 | → | mht joins (~mht@mht.wtf) |
| 20:40:13 | × | bram[m]1 quits (bramvdbnet@gateway/shell/matrix.org/x-pynuwbnylnthgwie) (Ping timeout: 260 seconds) |
| 20:40:16 | → | suzu joins (~scaleuser@2001:bc8:1824:43f::1) |
| 20:40:18 | × | mud quits (kadobanemp@gateway/shell/matrix.org/x-hsvwcnlpdlaahtsv) (Ping timeout: 246 seconds) |
| 20:40:18 | × | meff[m]1 quits (meffsunado@gateway/shell/matrix.org/x-xlarclvljsmhctte) (Ping timeout: 246 seconds) |
| 20:40:18 | → | a3f_ joins (~a3f@chimeria.ext.pengutronix.de) |
| 20:40:18 | × | Lurkki[m] quits (lurkkipriv@gateway/shell/matrix.org/x-vlaovxmnmfvldkrr) (Ping timeout: 246 seconds) |
| 20:40:18 | × | Robin[m]2 quits (robinrobin@gateway/shell/matrix.org/x-qphxaxtkmuztcpcw) (Ping timeout: 246 seconds) |
| 20:40:18 | × | utdemir[m] quits (utdemirmat@gateway/shell/matrix.org/x-ooablpupuwhzomuh) (Ping timeout: 246 seconds) |
| 20:40:18 | × | sigmacool[m] quits (sigmacoolm@gateway/shell/matrix.org/x-rymnviobwcpxiozr) (Ping timeout: 246 seconds) |
| 20:40:18 | × | ManofLetters[m] quits (manoflette@gateway/shell/matrix.org/x-piojuxwadmoobdzz) (Ping timeout: 246 seconds) |
| 20:40:18 | × | enya[m] quits (enyaismatr@gateway/shell/matrix.org/x-zbzyfyeroxeyoocq) (Ping timeout: 246 seconds) |
| 20:40:18 | × | mentaal[m] quits (mentaalmat@gateway/shell/matrix.org/x-ukiqzdxfkqtlhpke) (Ping timeout: 246 seconds) |
| 20:40:18 | × | maerwald[m] quits (maerwaldma@gateway/shell/matrix.org/x-vwszhcqtafaewwod) (Ping timeout: 246 seconds) |
| 20:40:18 | × | simara[m] quits (simaramatr@gateway/shell/matrix.org/x-sojjxmanrmrsekzv) (Ping timeout: 246 seconds) |
| 20:40:18 | × | jeffcasavant[m] quits (jeffcasava@gateway/shell/matrix.org/x-atfrdwrnsadyxibx) (Ping timeout: 246 seconds) |
| 20:40:20 | → | fii joins (~Dykomii@kyoto.mii.moe) |
| 20:40:24 | → | amatecha___ joins (sid10006@gateway/web/irccloud.com/x-hfdlvklywzlniuqc) |
| 20:40:25 | × | a-tsioh[m] quits (a-tsiohmat@gateway/shell/matrix.org/x-lkrwfyxpsvcpqlyf) (Ping timeout: 240 seconds) |
| 20:40:25 | × | CaptainYukinoshi quits (captain-yu@gateway/shell/matrix.org/x-oqlacnjkofwdfnvx) (Ping timeout: 240 seconds) |
| 20:40:25 | × | jesser[m] quits (jessermatr@gateway/shell/matrix.org/x-aliilzvfpxrienry) (Ping timeout: 240 seconds) |
| 20:40:25 | × | rednaZ[m] quits (r3dnazmatr@gateway/shell/matrix.org/x-wkjrelmxcbmcuyyo) (Ping timeout: 240 seconds) |
| 20:40:25 | × | jchia[m] quits (jchiamatri@gateway/shell/matrix.org/x-aipijicvixxymjoa) (Ping timeout: 240 seconds) |
| 20:40:25 | × | JaakkoLuttinen[m quits (jluttinema@gateway/shell/matrix.org/x-ijlspogsmepgzkug) (Ping timeout: 240 seconds) |
| 20:40:25 | × | darkcodi[m] quits (darkcodima@gateway/shell/matrix.org/x-xorowkamjqelpcvb) (Ping timeout: 240 seconds) |
| 20:40:25 | × | Sarievo[m] quits (sarievoale@gateway/shell/matrix.org/x-pngyxqiqrgpejknf) (Ping timeout: 240 seconds) |
| 20:40:25 | × | pineapples[m] quits (pineapples@gateway/shell/matrix.org/x-scagahmjxdbvohux) (Ping timeout: 240 seconds) |
| 20:40:26 | × | jkaye[m] quits (jkayematri@gateway/shell/matrix.org/x-cnkeaceuhrekegnv) (Ping timeout: 240 seconds) |
| 20:40:26 | × | Hanma[m] quits (hanmamatri@gateway/shell/matrix.org/x-xfhxcxjspfcwzhbu) (Ping timeout: 240 seconds) |
| 20:40:26 | × | mly[m] quits (mlydisenco@gateway/shell/matrix.org/x-sgyelsuopxjzxkpo) (Ping timeout: 240 seconds) |
| 20:40:26 | × | DamienCassou quits (damiencass@gateway/shell/matrix.org/x-cdrscbrrnlsyfxmv) (Ping timeout: 240 seconds) |
| 20:40:26 | × | michaelpj quits (michaelpjm@gateway/shell/matrix.org/x-noykicrlbsabjwyy) (Ping timeout: 240 seconds) |
| 20:40:26 | × | oreoking[m] quits (oreokingma@gateway/shell/matrix.org/x-lucqvxavjvzfztwz) (Ping timeout: 240 seconds) |
| 20:40:26 | × | dyniec[m] quits (dyniecmatr@gateway/shell/matrix.org/x-tcvgzzwiurupwthv) (Ping timeout: 240 seconds) |
| 20:40:26 | × | lambdaclan quits (lambdaclan@gateway/shell/matrix.org/x-qbmkzkvrcxynlyna) (Ping timeout: 240 seconds) |
| 20:40:26 | × | jtojnar quits (jtojnarmat@gateway/shell/matrix.org/x-etwznkqlpnyibdkq) (Ping timeout: 240 seconds) |
| 20:40:26 | × | Liyang[m] quits (liyangmatr@gateway/shell/matrix.org/x-wtvmjvwxnbfzrmey) (Ping timeout: 240 seconds) |
| 20:40:26 | × | unclechu quits (unclechuma@gateway/shell/matrix.org/x-tivqiqvkdyqnowzk) (Ping timeout: 240 seconds) |
| 20:40:27 | × | buggymcbugfix quits (sid432603@gateway/web/irccloud.com/x-isytpynjaeamwtwv) (Ping timeout: 246 seconds) |
| 20:40:27 | × | jbetz quits (sid283648@gateway/web/irccloud.com/x-rkzjfvmopzejiyvu) (Ping timeout: 246 seconds) |
| 20:40:28 | × | mcfilib quits (sid302703@gateway/web/irccloud.com/x-rcdetrygsxetslsb) (Ping timeout: 246 seconds) |
| 20:40:28 | buggymcbugfix_ | is now known as buggymcbugfix |
| 20:40:28 | → | ba joins (bandali@fsf/emeritus/bandali) |
| 20:40:33 | × | gienah quits (~mwright@gentoo/developer/gienah) (Write error: Broken pipe) |
| 20:40:34 | → | vqrs_ joins (~vqrs@learnprogramming/regular/vqrs) |
| 20:40:37 | × | phittacus quits (bklmatrixo@gateway/shell/matrix.org/x-ytpsxehmufedpsxo) (Ping timeout: 268 seconds) |
| 20:40:37 | × | alecs[m] quits (malumorema@gateway/shell/matrix.org/x-nmaaktphkqttrbsd) (Ping timeout: 268 seconds) |
| 20:40:38 | × | berberman[T] quits (berberma4@gateway/shell/matrix.org/x-httmllauhaglunmz) (Ping timeout: 268 seconds) |
| 20:40:39 | × | retlo quits (~retlo@172.245.134.89) (Write error: Broken pipe) |
| 20:40:39 | × | saurik_ quits (saurik@carrier.saurik.com) (Write error: Broken pipe) |
| 20:40:40 | × | charukiewicz_ quits (~quassel@irouteince04.i.subnet.rcn.com) (Write error: Broken pipe) |
| 20:40:40 | × | tumdedum quits (~tumdedum@unaffiliated/espiral) (Write error: Broken pipe) |
| 20:40:40 | × | reeiiko quits (~reeiiko@185.163.110.108) (Excess Flood) |
| 20:40:40 | × | incertia quits (~incertia@d4-50-26-103.nap.wideopenwest.com) (Excess Flood) |
| 20:40:40 | × | xsarnik0 quits (xsarnik@gateway/shell/fi.muni.cz/x-yvaanjasasuignrs) (Quit: Ping timeout (120 seconds)) |
| 20:40:40 | × | Jajik quits (xchlup2@gateway/shell/fi.muni.cz/x-sibskqvbqdhvosvq) (Quit: Ping timeout (120 seconds)) |
| 20:40:40 | × | TMA quits (tma@twin.jikos.cz) (Remote host closed the connection) |
| 20:40:40 | × | clynamen quits (~clynamen@net-2-34-3-193.cust.vodafonedsl.it) (Quit: ZNC 1.7.5 - https://znc.in) |
| 20:40:40 | × | fre quits (~freusque@104.238.190.229) (Quit: fre: znc bye) |
| 20:40:40 | × | tomsmeding quits (~tomsmedin@tomsmeding.com) (Quit: ZNC 1.8.2 - https://znc.in) |
| 20:40:40 | × | sim590 quits (~sim590@modemcable090.207-203-24.mc.videotron.ca) (Quit: ZNC - http://znc.in) |
| 20:40:40 | × | Cerise quits (~jerry@unaffiliated/cerise) (Quit: :qa!) |
| 20:40:40 | × | Anthaas_ quits (~Anthaas@unaffiliated/anthaas) (Quit: ZNC 1.7.1 - https://znc.in) |
| 20:40:40 | × | noecho quits (~noecho@static.143.42.203.116.clients.your-server.de) (Quit: ZNC - https://znc.in) |
| 20:40:40 | × | SupaYoshi quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!) |
| 20:40:40 | × | filwisher quits (~filwisher@78.141.201.45) (Quit: ZNC 1.7.1 - https://znc.in) |
| 20:40:40 | × | cgfbee quits (~bot@oc1.itim-cj.ro) (Excess Flood) |
| 20:40:40 | × | spoonm quits (~spoonm@tokyo.spoonm.org) (Quit: Don't look behind you!) |
| 20:40:40 | × | NieDzejkob_ quits (~quassel@195.149.98.3) (Quit: No Ping reply in 180 seconds.) |
| 20:40:40 | × | Kneiva quits (kneiva@raah.fi) (Remote host closed the connection) |
| 20:40:40 | × | gawen quits (~gawen@movzbl.root.sx) (Quit: cya) |
| 20:40:42 | × | vicfred quits (~vicfred@unaffiliated/vicfred) (Remote host closed the connection) |
| 20:40:43 | hugo- | is now known as hugo |
| 20:40:43 | × | my_name_is_not_j quits (mynameisno@gateway/shell/matrix.org/x-sulamkpowiaizxta) (Ping timeout: 244 seconds) |
| 20:40:46 | × | jlamothe quits (~jlamothe@198.251.55.207) (Remote host closed the connection) |
| 20:40:46 | × | wayne quits (~wayne@unaffiliated/wayne) (Remote host closed the connection) |
| 20:40:46 | × | cjay quits (cjay@nerdbox.nerd2nerd.org) (Remote host closed the connection) |
| 20:40:46 | × | mmaruseacph2 quits (~mihai@198.199.100.72) (Remote host closed the connection) |
| 20:40:46 | × | TommyC7 quits (~TommyC@unaffiliated/sepulchralbloom) (Remote host closed the connection) |
| 20:40:46 | × | monokrome quits (~monokrome@23-24-202-21-static.hfc.comcastbusiness.net) (Remote host closed the connection) |
| 20:40:46 | × | bendo quits (~bendo@130.61.122.121) (Remote host closed the connection) |
| 20:40:46 | × | Tesseraction quits (~Tesseract@unaffiliated/tesseraction) (Remote host closed the connection) |
| 20:40:47 | × | liyang quits (~liyang@cpc80675-stap13-2-0-cust362.12-2.cable.virginm.net) (Remote host closed the connection) |
| 20:40:47 | × | Forlorn quits (~Forlorn@unaffiliated/forlorn) (Remote host closed the connection) |
| 20:40:47 | × | mrd quits (~mrd@debian/developer/mrd) (Remote host closed the connection) |
| 20:40:47 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection) |
| 20:40:47 | × | hrdl quits (~ef24a0e6@unaffiliated/hrdl) (Remote host closed the connection) |
| 20:40:47 | × | Kaiepi quits (~Kaiepi@47.54.252.148) (Remote host closed the connection) |
| 20:40:48 | × | statusfailed quits (~statusfai@statusfailed.com) (Remote host closed the connection) |
| 20:40:48 | × | EvanR quits (~evan@unaffiliated/evanr) (Remote host closed the connection) |
| 20:40:48 | × | dmwit quits (~dmwit@pool-173-66-86-32.washdc.fios.verizon.net) (Remote host closed the connection) |
| 20:40:48 | × | akasha quits (~user@unaffiliated/akasha) (Remote host closed the connection) |
| 20:40:48 | × | xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 246 seconds) |
| 20:40:50 | → | _Adluc_ joins (~Adluc@83.167.228.130) |
| 20:40:52 | → | pjb joins (~t@2a01cb04063ec5009154a4e157e0cbac.ipv6.abo.wanadoo.fr) |
| 20:40:52 | tumdedum_ | is now known as tumdedum |
| 20:40:54 | → | dcoutts_ joins (~dcoutts@unaffiliated/dcoutts) |
| 20:41:07 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 20:41:09 | → | SegFaultAX_ joins (SegFaultAX@unaffiliated/segfaultax) |
| 20:41:12 | → | TommyC joins (~TommyC@unaffiliated/sepulchralbloom) |
| 20:41:14 | → | edwardk joins (sid47016@haskell/developer/edwardk) |
| 20:41:15 | <maerwald> | failure being a good teacher has been debunked already |
| 20:41:15 | × | dcoutts_ quits (~dcoutts@unaffiliated/dcoutts) (Read error: Connection reset by peer) |
| 20:41:20 | → | BIG_JIMMY_D joins (~jim@108.61.185.76) |
| 20:41:21 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 20:41:21 | × | amatecha__ quits (sid10006@gateway/web/irccloud.com/x-edfnackjmngohzei) (Ping timeout: 264 seconds) |
| 20:41:25 | → | mrd joins (~mrd@45.61.147.211) |
| 20:41:26 | → | TMA joins (tma@twin.jikos.cz) |
| 20:41:26 | × | acdsystemliorg[m quits (acdsysteml@gateway/shell/matrix.org/x-tymmizrslavaomkn) (Ping timeout: 264 seconds) |
| 20:41:28 | <maerwald> | I linked the research before, I can dig it up again if you like |
| 20:41:29 | → | esoteric1lgo joins (~matt@uncertain.win) |
| 20:41:29 | → | Igloo joins (~igloo@matrix.chaos.earth.li) |
| 20:41:31 | → | bwe joins (~bwe@unaffiliated/bwe) |
| 20:41:33 | → | dcoutts_ joins (~dcoutts@unaffiliated/dcoutts) |
| 20:41:34 | → | brkscnce joins (~obaum@37.120.14.42) |
| 20:41:35 | → | Forlorn joins (~Forlorn@unaffiliated/forlorn) |
| 20:41:36 | → | jbetz joins (sid283648@gateway/web/irccloud.com/x-mbznlfwgozuyecdk) |
| 20:41:39 | → | Jajik joins (xchlup2@gateway/shell/fi.muni.cz/x-mvogdeasxxfzjncw) |
| 20:41:41 | × | grumble quits (~Thunderbi@freenode/staff/grumble) (Remote host closed the connection) |
| 20:41:42 | → | xerox_ joins (~xerox@unaffiliated/xerox) |
| 20:41:43 | → | stilgart joins (~Christoph@chezlefab.net) |
| 20:41:44 | → | juri_ joins (~juri@178.63.35.222) |
| 20:41:46 | × | hendursa1 quits (~weechat@gateway/tor-sasl/hendursaga) (Client Quit) |
| 20:41:48 | mrd | is now known as Guest12880 |
| 20:41:49 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 20:41:50 | → | cafce25 joins (~cafce25@ipbcc3009d.dynamic.kabel-deutschland.de) |
| 20:41:56 | × | ubert quits (~Thunderbi@p200300ecdf25d946a0d2e31ed48a2cf4.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 20:41:58 | × | alar[m] quits (alarmxalat@gateway/shell/matrix.org/x-ufoythqyyzicqreb) (Ping timeout: 265 seconds) |
| 20:41:58 | × | the_1_[m] quits (the1matrix@gateway/shell/matrix.org/x-fmeoaycdouocsfqi) (Ping timeout: 265 seconds) |
| 20:41:58 | × | mjlbach quits (atriusmatr@gateway/shell/matrix.org/x-uxvvkbdauabmbien) (Ping timeout: 265 seconds) |
| 20:41:58 | × | fgaz quits (fgazmatrix@gateway/shell/matrix.org/x-hrqxpfotuofobdbj) (Ping timeout: 265 seconds) |
| 20:42:04 | → | theDon_ joins (~td@muedsl-82-207-238-098.citykom.de) |
| 20:42:06 | stilgart | is now known as Guest3557 |
| 20:42:07 | → | aidecoe joins (~aidecoe@unaffiliated/aidecoe) |
| 20:42:11 | → | grumble joins (~Thunderbi@freenode/staff/grumble) |
| 20:42:21 | → | hendursaga joins (~weechat@gateway/tor-sasl/hendursaga) |
| 20:42:22 | → | zfnmxt joins (~zfnmxt@unaffiliated/zfnmxt) |
| 20:42:23 | → | ClaudiusMaximus joins (~claude@191.123.199.146.dyn.plus.net) |
| 20:42:30 | → | cgfbee joins (~bot@oc1.itim-cj.ro) |
| 20:42:34 | × | MichaelHoffmannb quits (brisadmozi@gateway/shell/matrix.org/x-hyjjcdilatzwtwgu) (Ping timeout: 258 seconds) |
| 20:42:34 | × | bitonic quits (bitonicmat@gateway/shell/matrix.org/x-lqhowavprqkgavmy) (Ping timeout: 258 seconds) |
| 20:42:34 | × | sramsay64[m] quits (sramsay64p@gateway/shell/matrix.org/x-inungnqziynynwaa) (Ping timeout: 258 seconds) |
| 20:42:35 | × | adziahel[m] quits (adziahelma@gateway/shell/matrix.org/x-rakjpsddecdrrang) (Ping timeout: 258 seconds) |
| 20:42:35 | × | plumenator[m] quits (plumenator@gateway/shell/matrix.org/x-wucngvemjowoitrb) (Ping timeout: 258 seconds) |
| 20:42:43 | × | ircbrowse_tom quits (~ircbrowse@64.225.78.177) (Quit: ZNC 1.7.5+deb4 - https://znc.in) |
| 20:42:43 | × | feuerbach quits (~feuerbach@unaffiliated/feuerbach) (Quit: ZNC 1.8.1 - https://znc.in) |
| 20:42:43 | × | dequbed quits (~dequbed@2001:bc8:3f24:100::1) (Quit: Bye o/) |
| 20:42:43 | × | uwap quits (~uwap@mail.uwap.name) (Quit: ZNC 1.8.1 - https://znc.in) |
| 20:42:43 | × | dftxbs3e quits (~dftxbs3e@unaffiliated/dftxbs3e) (Remote host closed the connection) |
| 20:42:43 | × | swater quits (bouhier200@perso.iiens.net) (Remote host closed the connection) |
| 20:42:44 | × | sqrt2 quits (~ben@unaffiliated/sqrt2) (Remote host closed the connection) |
| 20:42:44 | × | Guest73254 quits (~tristan@luna.whatbox.ca) (Quit: -= A click to real life biatches!!! =-) |
| 20:42:44 | × | Klumben quits (Nsaiswatch@gateway/shell/panicbnc/x-fknfgxuqgasbqquy) (Quit: Bye for now) |
| 20:42:44 | × | Adluc quits (~Adluc@2a01:430:17:1::ffff:328) (Remote host closed the connection) |
| 20:42:44 | × | lisq quits (~quassel@lis.moe) (Remote host closed the connection) |
| 20:42:44 | × | xff0x quits (~xff0x@2001:1a81:5295:6100:2300:7794:1c77:29ff) (Remote host closed the connection) |
| 20:42:44 | × | cheers quits (user@unaffiliated/cheers) (Remote host closed the connection) |
| 20:42:44 | × | mht-technology quits (~mht@2a03:b0c0:3:e0::1e2:c001) (Remote host closed the connection) |
| 20:42:45 | × | leifm_ quits (~leifm@dawn.whatbox.ca) (Quit: ZNC 1.8.2 - https://znc.in) |
| 20:42:45 | × | sphalerite quits (~sphalerit@NixOS/user/lheckemann) (Remote host closed the connection) |
| 20:42:45 | × | peutri quits (~peutri@ns317027.ip-94-23-46.eu) (Remote host closed the connection) |
| 20:42:45 | × | farn__ quits (~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505) (Remote host closed the connection) |
| 20:42:45 | × | swarmcollective quits (~joseph@cpe-65-31-18-174.insight.res.rr.com) (Remote host closed the connection) |
| 20:42:45 | × | a3f quits (~a3f@chimeria.ext.pengutronix.de) (Excess Flood) |
| 20:42:45 | × | vqrs quits (~vqrs@learnprogramming/regular/vqrs) (Remote host closed the connection) |
| 20:42:45 | koz | is now known as koz_ |
| 20:42:46 | × | spamlessj quits (~spamlessj@2a01:4f8:141:1329::2) (Write error: Broken pipe) |
| 20:42:46 | × | Faye quits (~holo@nikky.moe) (Write error: Broken pipe) |
| 20:42:46 | × | noCheese quits (~nocheese@unaffiliated/nocheese) (Write error: Broken pipe) |
| 20:42:46 | × | madog quits (~madog@163.ip-51-254-203.eu) (Write error: Broken pipe) |
| 20:42:46 | × | martin02 quits (silas@hund.fs.lmu.de) (Excess Flood) |
| 20:42:48 | → | mcfilib joins (sid302703@gateway/web/irccloud.com/x-hnldclqivbijvpbm) |
| 20:42:56 | → | xsarnik0 joins (xsarnik@gateway/shell/fi.muni.cz/x-pkbyatoowiwuqtjg) |
| 20:42:59 | → | Guest58072 joins (~zmv@191.255.89.231) |
| 20:43:02 | × | SegFaultAX quits (SegFaultAX@unaffiliated/segfaultax) (Excess Flood) |
| 20:43:03 | SegFaultAX_ | is now known as SegFaultAX |
| 20:43:03 | × | dexterlb quits (~dexterlb@2a01:9e40:2:2::2) (Quit: No Ping reply in 180 seconds.) |
| 20:43:03 | × | Blkt quits (~Blkt@2a01:4f8:200:2425::adda) (Quit: No Ping reply in 180 seconds.) |
| 20:43:03 | × | bandali quits (bandali@fsf/emeritus/bandali) (Quit: ZNC - https://znc.in) |
| 20:43:03 | × | mursu quits (~ngWalrus@2a03:b0c0:3:d0::5ebd:2001) (Quit: bye) |
| 20:43:03 | × | Iroha quits (~Dykomii@2607:5300:60:336a::1) (Quit: !) |
| 20:43:03 | × | oats quits (~hurr@durr/im/a/sheep) (Quit: until later, my friends) |
| 20:43:03 | → | chrpape`` joins (~user@2a01:4f9:c010:632d::1) |
| 20:43:03 | → | spamlessj joins (~spamlessj@2a01:4f8:141:1329::2) |
| 20:43:03 | → | PtxDK joins (~quassel@2a01:7c8:aac3:591:5054:ff:fe3d:cac6) |
| 20:43:04 | × | chrpape`` quits (~user@2a01:4f9:c010:632d::1) (Remote host closed the connection) |
| 20:43:04 | × | esotericalgo quits (~matt@uncertain.win) (Remote host closed the connection) |
| 20:43:04 | × | wlritchi quits (wlritchi@2600:3c03::f03c:91ff:fe60:8ddc) (Remote host closed the connection) |
| 20:43:04 | × | quicksilver quits (~jules@roobarb.crazydogs.org) (Remote host closed the connection) |
| 20:43:04 | × | suzu_ quits (~scaleuser@2001:bc8:1824:43f::1) (Remote host closed the connection) |
| 20:43:05 | → | noCheese joins (~nocheese@gw2.aibor.de) |
| 20:43:05 | × | noCheese quits (~nocheese@gw2.aibor.de) (Changing host) |
| 20:43:05 | → | noCheese joins (~nocheese@unaffiliated/nocheese) |
| 20:43:12 | × | Maxdamantus quits (~Maxdamant@unaffiliated/maxdamantus) (Ping timeout: 265 seconds) |
| 20:43:15 | × | apache8080 quits (~rishi@wsip-70-168-153-252.oc.oc.cox.net) (Ping timeout: 246 seconds) |
| 20:43:17 | → | Blkt joins (~Blkt@2a01:4f8:200:2425::adda) |
| 20:43:23 | → | SolarAquarion joins (SolarAquar@gateway/shell/panicbnc/x-xrdswepzyygrznne) |
| 20:43:25 | <dminuoso> | ski: It was a text that started out with the history of terms like “proposition”, “conclusion”, “judgement”, etc |
| 20:43:26 | × | freeman42x[m] quits (freeman42x@gateway/shell/matrix.org/x-afnclhgosytqlfre) (Ping timeout: 240 seconds) |
| 20:43:26 | × | Ericson2314 quits (ericson231@gateway/shell/matrix.org/x-lzikgiqihcummixk) (Ping timeout: 240 seconds) |
| 20:43:33 | → | martin02 joins (silas@hund.fs.lmu.de) |
| 20:43:36 | → | liyang joins (~liyang@cpc80675-stap13-2-0-cust362.12-2.cable.virginm.net) |
| 20:43:38 | → | swater joins (bouhier200@perso.iiens.net) |
| 20:43:38 | → | icebreaker joins (michalc@freeshell.de) |
| 20:43:39 | × | icebreaker quits (michalc@freeshell.de) (Changing host) |
| 20:43:39 | → | icebreaker joins (michalc@unaffiliated/icebreaker) |
| 20:43:42 | × | ThaEwat quits (thaewraptm@gateway/shell/matrix.org/x-juqefpfkcsldkkqx) (Ping timeout: 268 seconds) |
| 20:43:56 | × | themsay[m] quits (themsaymat@gateway/shell/matrix.org/x-dfuiiqncmxkegsdu) (Ping timeout: 240 seconds) |
| 20:44:03 | <maerwald> | https://journals.sagepub.com/doi/abs/10.1177/0956797619881133 |
| 20:44:06 | → | Kneiva joins (kneiva@raah.fi) |
| 20:44:09 | → | son0p joins (~son0p@181.136.122.143) |
| 20:44:11 | × | ClaudiusMaximus quits (~claude@191.123.199.146.dyn.plus.net) (Client Quit) |
| 20:44:18 | → | ario joins (~ario@178.62.234.211) |
| 20:44:18 | ← | Guest42442 parts (~joseph@cpe-65-31-18-174.insight.res.rr.com) ("WeeChat 2.8") |
| 20:44:19 | × | immae quits (immaematri@gateway/shell/matrix.org/x-biobeyvyakzvnryf) (Ping timeout: 268 seconds) |
| 20:44:30 | → | Chousuke joins (oranenj@coffee.modeemi.fi) |
| 20:44:30 | infinisi1 | is now known as infinisil |
| 20:44:36 | × | darjeeling_ quits (~darjeelin@122.245.218.150) (Ping timeout: 240 seconds) |
| 20:44:36 | × | cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 240 seconds) |
| 20:44:36 | × | theDon quits (~td@muedsl-82-207-238-098.citykom.de) (Ping timeout: 240 seconds) |
| 20:44:37 | × | kmein quits (~weechat@static.173.83.99.88.clients.your-server.de) (Ping timeout: 240 seconds) |
| 20:44:45 | oats_ | is now known as oats |
| 20:44:51 | dftxbs3e_ | is now known as dftxbs3e |
| 20:44:51 | → | sim590 joins (~sim590@modemcable090.207-203-24.mc.videotron.ca) |
| 20:44:52 | × | metamod[m] quits (metamodmat@gateway/shell/matrix.org/x-cvyozbpcigwxoqqt) (Ping timeout: 265 seconds) |
| 20:44:56 | × | VarikValefor[m] quits (varikvalef@gateway/shell/matrix.org/x-zpbsrsatgvyjyyda) (Ping timeout: 268 seconds) |
| 20:44:56 | × | boistordu quits (boistordum@gateway/shell/matrix.org/x-ovupdgassmbmcysg) (Ping timeout: 268 seconds) |
| 20:44:56 | × | siraben quits (sirabenmat@gateway/shell/matrix.org/x-osefrsecjodoijxp) (Ping timeout: 268 seconds) |
| 20:45:11 | → | saurik joins (saurik@carrier.saurik.com) |
| 20:45:28 | → | `slikts joins (~nelabs@wikipedia/reinis) |
| 20:45:33 | → | swarmcollective joins (~joseph@cpe-65-31-18-174.insight.res.rr.com) |
| 20:45:45 | → | thebnq joins (~bnq@herrokitty.com) |
| 20:45:54 | <dminuoso> | It was written in English, for what its worth. |
| 20:46:43 | <ski> | dminuoso : oh, i think i know what you're talking about. it wasn't Frege |
| 20:47:14 | → | raid joins (macbookpro@irc-1.coding4.coffee) |
| 20:47:33 | × | speakerspivakeem quits (speakerdea@gateway/shell/matrix.org/x-onzkzcntdcmbputf) (Ping timeout: 272 seconds) |
| 20:47:33 | × | nikola3 quits (~nikola@2a03:b0c0:2:d0::dc2:c001) (Ping timeout: 272 seconds) |
| 20:47:53 | × | ukari quits (~ukari@unaffiliated/ukari) (Remote host closed the connection) |
| 20:48:24 | <monochrom> | ski: Remember I challenged with infinite streams "data S a = C s (S a)"? That one works out, and it takes a bit of cleverness to even see possible candidates. So ZipList fails for its differeence from infinite streams in terms of ending a list at any time it feels like to. |
| 20:48:24 | <maerwald> | If failure causes a higher dopamine effect in your brain, then you're likely better at learning from failure (unlike most other people). The effect of dopamine on learning is well studied. |
| 20:48:33 | <ski> | dminuoso : "On the Meanings of the Logical Constants and the Justifications of the Logical Laws" by Per Martin-Löf in 1996 at <https://www.ae-info.org/attach/User/Martin-L%C3%B6f_Per/OtherInformation/article.pdf>,<https://intuitionistic.wordpress.com/works-on-martin-lofs-type-theory/> |
| 20:48:40 | → | ukari joins (~ukari@unaffiliated/ukari) |
| 20:48:47 | tomsmeding_ | is now known as tomsmeding |
| 20:49:07 | <monochrom> | maerwald, I was not even going for "failure teaches". I was going for "failure pre-teaches". |
| 20:49:34 | <maerwald> | Depends, it can cause engagement, but also disaengagement |
| 20:49:40 | <ski> | monochrom : i remember i was playing around with an idea of intentionally making `join'/`(>>=)' more partial than possible, in order to try to ensure associativity |
| 20:49:59 | → | crobbins joins (~crobbins@2600:1700:48eb:8490:f085:4e3f:f643:338d) |
| 20:50:18 | × | lazyshrk quits (~lazyshrk@128.199.58.13) (Quit: ZNC 1.8.2 - https://znc.in) |
| 20:50:30 | <monochrom> | I think I tried a version of that too, it didn't help. |
| 20:51:07 | → | ktp28 joins (459d4473@bras-base-toroon6126w-grc-07-69-157-68-115.dsl.bell.ca) |
| 20:51:21 | <ski> | ok |
| 20:51:39 | × | mceier quits (~mceier@89-68-132-187.dynamic.chello.pl) (Quit: leaving) |
| 20:51:47 | <monochrom> | maerwald, you must have not been reading me. I was not claiming that either. |
| 20:51:55 | × | forgottenone quits (~forgotten@176.88.28.250) (Quit: Konversation terminated!) |
| 20:52:03 | <maerwald> | that's well possible in my state of mind :p |
| 20:52:30 | <maerwald> | I'm looking for someone with armv7 or aarch64 machine |
| 20:52:47 | → | mceier joins (~mceier@89-68-132-187.dynamic.chello.pl) |
| 20:52:49 | → | Pickchea joins (~private@unaffiliated/pickchea) |
| 20:53:10 | × | zargoertzel quits (~zar@fw1.ciirc.cvut.cz) (Ping timeout: 276 seconds) |
| 20:53:18 | kfm | is now known as kmein |
| 20:53:35 | → | slack1256 joins (~slack1256@45.4.2.52) |
| 20:54:11 | → | redcherri joins (bab7259d@186.183.37.157) |
| 20:54:41 | → | Klumben joins (Nsaiswatch@gateway/shell/panicbnc/x-ajlfhlioatjzzbsr) |
| 20:55:07 | → | srid joins (sridmatrix@gateway/shell/matrix.org/x-sjihgudtvzpwpord) |
| 20:55:11 | <ski> | (i wonder whether there's been any follow-up studies, about what effect personal detachment may have in the situation) |
| 20:55:28 | atriq | is now known as Taneb |
| 20:55:46 | <dminuoso> | Ahh |
| 20:55:46 | <monochrom> | ski: https://paste.tomsmeding.com/SZunWHSK is what I did. The counterexample is at the end. In join_z, if I replace "ewj" by "render", that would be my way of allowing partiality, but then this doesn't help my counterexample either, it only improves [1] to 1 : bottom. |
| 20:55:49 | <dminuoso> | 21:48:33 ski | dminuoso : "On the Meanings of the Logical Constants and the Justifications of the Logical Laws" by Per Martin-Löf in 1996 at <https://www.ae-info.org/attach/User/Martin-L%C3%B6f_Per/OtherInformation/article.pdf>,<https://intuitionistic.wordpress.com/works-on-martin-lofs-type-theory/> |
| 20:55:54 | <dminuoso> | You're spot on. That's it, cheers! |
| 20:56:19 | × | ukari quits (~ukari@unaffiliated/ukari) (Remote host closed the connection) |
| 20:56:38 | → | psydruid joins (psydruidma@gateway/shell/matrix.org/x-nqquprpkcjqwwhao) |
| 20:56:56 | → | ukari joins (~ukari@unaffiliated/ukari) |
| 20:57:19 | → | coddinkn joins (~coddinkn@octayn.net) |
| 20:57:50 | → | AbtractSingleton joins (rasurumatr@gateway/shell/matrix.org/x-cptnkbgcmbcsygri) |
| 20:57:52 | → | johnnyboy[m] joins (gifumatrix@gateway/shell/matrix.org/x-taasofpihtwizvlh) |
| 20:58:11 | → | pqwy[m] joins (pqwymatrix@gateway/shell/matrix.org/x-qaosueuqeqkwbwhe) |
| 20:58:21 | → | toasty_avocado[m joins (toastyavoc@gateway/shell/matrix.org/x-juhwyrkxyxnxfauu) |
| 20:58:24 | → | kadoban joins (kadobanmat@gateway/shell/matrix.org/x-apivwpznfnnlclpi) |
| 20:58:31 | → | domenkozar[m] joins (domenkozar@NixOS/user/domenkozar) |
| 20:58:39 | → | jerin joins (jerinmatri@gateway/shell/matrix.org/x-tmtfndsdvjlsjrsi) |
| 20:58:51 | <monochrom> | maerwald: My position is pro hands-on, against armchair. I'm sure you're sympathetic to it. |
| 20:59:02 | × | soft-warm quits (44695313@ip68-105-83-19.sd.sd.cox.net) (Quit: Connection closed) |
| 20:59:03 | × | chisui quits (59f77ca6@i59F77CA6.versanet.de) (Ping timeout: 240 seconds) |
| 20:59:06 | <monochrom> | Failure is just a side effect of being hands-on. |
| 20:59:08 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 20:59:14 | <maerwald> | it surely is |
| 20:59:18 | <monochrom> | In an armchair, you always suceeds. |
| 20:59:20 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
| 20:59:26 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 20:59:37 | <ski> | dminuoso, yw :) |
| 21:00:09 | <maerwald> | But there has to be frustration management. Otherwise we're filtering for the ppl with high frustration tolerance, not talent. |
| 21:00:21 | → | maralorn joins (maralornma@gateway/shell/matrix.org/x-yxejhfyxkpgpcjvz) |
| 21:00:30 | → | Lurkki[m]1 joins (lurkkifene@gateway/shell/matrix.org/x-nxoeksmofthnqmyh) |
| 21:00:32 | → | shutendoji[m] joins (shutendoji@gateway/shell/matrix.org/x-ugeduntrngcqbunt) |
| 21:00:35 | → | brightly-salty[m joins (brightly-s@gateway/shell/matrix.org/x-prtibkvrqqntdkpm) |
| 21:00:35 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 21:00:41 | → | PotatoHatsue joins (berbermanp@gateway/shell/matrix.org/x-rihddaeggjdzhxqs) |
| 21:00:49 | → | darkcodi[m] joins (darkcodima@gateway/shell/matrix.org/x-yuxcrrjvakxjaoby) |
| 21:00:51 | <maerwald> | why is it so hard to find a way to test arm binaries -_- |
| 21:00:52 | <ski> | monochrom : yes, i recall considering a similar example to your `example_zz'. i think what i ended up wanting was to ensure that when finding an element on the diagonal, that the full square that element is the corner of is present |
| 21:01:36 | <monochrom> | So for the associative law, you basically need the full cube. |
| 21:01:42 | <ski> | yep |
| 21:01:48 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 21:02:06 | <mouseghost> | in ghci, can i see which constructor was used to construct a variable of some type? eg. data Meow = Cat | Dog; a = Cat; is it possible to check if `a' is Cat, or if it is a Dog? |
| 21:02:16 | × | geowiesnot_bis quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 276 seconds) |
| 21:02:27 | <ski> | (i guess what i did wasn't making it partial, but to terminate the list earlier than one might imagine) |
| 21:02:29 | <monochrom> | This scheme works for a subset of ZipLists but alas it's probably an impractical restriction. |
| 21:02:43 | <monochrom> | Oh! Heh. |
| 21:02:51 | → | pera joins (~pera@unaffiliated/pera) |
| 21:02:52 | <ski> | yea .. it's up for debate how useful this would be |
| 21:03:46 | <ski> | mouseghost : you can use pattern-matching. also, you could add `deriving Show' after your `data' declaration to be able to display values of that type |
| 21:03:54 | <mouseghost> | thanks |
| 21:04:09 | <ski> | mouseghost : if you use `deriving Eq', you can check with `a == Cat' |
| 21:04:40 | <mouseghost> | i see; but i suppose there isnt a dirty trick with some kind of :whatis a ? |
| 21:05:07 | <monochrom> | But the positive thing I learned is that the two identity laws force you to go some kind of diagonal. So at least you get to conclude "if even diagonal doesn't work, nothing does". |
| 21:05:10 | <geekosaur> | not via ghci as such |
| 21:05:11 | <ski> | mouseghost : but if you're looking for checking programmatically, i suggest using pattern-matching rather than `==' or `/=' |
| 21:05:39 | <mouseghost> | thanks |
| 21:05:53 | <mouseghost> | thats what id do, but i am purely about ghci rn :P |
| 21:05:54 | <ski> | mouseghost : if you have `Show', you can simply type `a' into the interactor, and it'll display either `Cat' or `Dog' (assuming there's no error) |
| 21:06:06 | <mouseghost> | yep i have just checked and works as advertised, so thanks uwu |
| 21:06:20 | × | ktp28 quits (459d4473@bras-base-toroon6126w-grc-07-69-157-68-115.dsl.bell.ca) (Quit: Connection closed) |
| 21:06:24 | <ski> | (perhaps your actual example is more complicated and there might be more relevant stuff one could say about it) |
| 21:06:40 | <mouseghost> | naw |
| 21:06:55 | <dminuoso> | % :t toConstr -- mouseghost |
| 21:06:56 | <yahb> | dminuoso: Data a => a -> Constr |
| 21:07:00 | ba | is now known as bandali |
| 21:07:05 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) |
| 21:07:06 | <dminuoso> | If, for some reason, you really wanted this. |
| 21:07:10 | <ski> | @let data Meow = Cat | Dog |
| 21:07:11 | <lambdabot> | Defined. |
| 21:07:35 | <ski> | > let mouseghost_a = Dog |
| 21:07:37 | <lambdabot> | <no location info>: error: |
| 21:07:37 | <lambdabot> | not an expression: ‘let mouseghost_a = Dog’ |
| 21:07:43 | <ski> | @let mouseghost_a = Dog |
| 21:07:44 | <lambdabot> | Defined. |
| 21:08:02 | <ski> | > case mouseghost_a of Cat -> "yes"; Dog -> "no" |
| 21:08:04 | <lambdabot> | "no" |
| 21:08:10 | <ski> | > case mouseghost_a of Cat -> () |
| 21:08:12 | <lambdabot> | *Exception: <interactive>:(3,1)-(4,22): Non-exhaustive patterns in case |
| 21:08:20 | <mouseghost> | thats nice, thanks |
| 21:08:25 | <dminuoso> | % data Meow = Cat Int | Dog String deriving (Data, Typeable) |
| 21:08:25 | <yahb> | dminuoso: |
| 21:08:31 | <dminuoso> | % toConstr (Cat 10) |
| 21:08:32 | <yahb> | dminuoso: Cat |
| 21:08:35 | <dminuoso> | mouseghost: ^- |
| 21:08:40 | <mouseghost> | i see, thanks :3 |
| 21:09:00 | <mouseghost> | though its still not ghci based ;p |
| 21:09:14 | <dminuoso> | mouseghost: Id keep in mind, Data/Typeable are probably not for every day use. If this is for debugging or exploration only, those are fine. If you want this to solve a problem, pattern matching is your better bet. |
| 21:09:14 | <mouseghost> | but i guess wanting to do that solely with the ghci fancy things is not the good approach hah |
| 21:09:28 | <dminuoso> | mouseghost: This is better, toConstr is just plain Haskell! :) |
| 21:09:35 | → | apache8080 joins (~rishi@wsip-70-168-153-252.oc.oc.cox.net) |
| 21:09:36 | <dminuoso> | Dont even need GHCi |
| 21:09:52 | <ski> | % let !Cat = mouseghost_a |
| 21:09:52 | <yahb> | ski: *** Exception: <interactive>:45:5-23: Non-exhaustive patterns in Cat |
| 21:09:55 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 21:10:09 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 21:10:15 | <mouseghost> | the point would be to find the type without adding anything |
| 21:10:23 | <mouseghost> | and that, as well as deriving Show, adds something ;v |
| 21:10:30 | <ski> | ok |
| 21:10:39 | <mouseghost> | meow |
| 21:10:46 | mouseghost | meows |
| 21:10:56 | ski | mews |
| 21:11:08 | → | chisui joins (59f77ca6@i59F77CA6.versanet.de) |
| 21:11:29 | mouseghost | eyes |
| 21:11:34 | <dminuoso> | mouseghost: Mmm. You probably can hack something together akin to toConstr with TemplateHaskell |
| 21:11:39 | × | farn quits (~farn@46.38.243.131) (Read error: Connection reset by peer) |
| 21:11:46 | <dminuoso> | That doesnt need Data/Typeable instances |
| 21:11:55 | <mouseghost> | my knowledge of haskell be liek |
| 21:11:58 | <mouseghost> | @ 1+2 |
| 21:12:01 | <ski> | monochrom : "the two identity laws force you to go some kind of diagonal" -- interesting. you mean, if you want zipping behaviour ? |
| 21:12:21 | → | usr25 joins (~J@45.red-88-1-79.dynamicip.rima-tde.net) |
| 21:12:51 | → | MrMuffles[m] joins (mrmufflesm@gateway/shell/matrix.org/x-cbeqjcjrdmhenexl) |
| 21:13:01 | → | freeman42x[m] joins (freeman42x@gateway/shell/matrix.org/x-ytrisqdmzrzpisst) |
| 21:13:58 | → | farn joins (~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505) |
| 21:14:38 | → | mly[m] joins (mlydisenco@gateway/shell/matrix.org/x-shgeeswzywjapwlt) |
| 21:14:41 | <dminuoso> | mouseghost: Presumably this kind of information is hard to recover, because most gets erased during compilation. While GHCi compiles code to bytecode (which is executed by the runtime), Im not sure whether constructor information is preserved meaningfully |
| 21:14:48 | → | phittacus joins (bklmatrixo@gateway/shell/matrix.org/x-dbjtrcksijverjxv) |
| 21:14:50 | → | alexfmpe joins (alexfmpema@gateway/shell/matrix.org/x-jgcuajimrxmycwph) |
| 21:14:51 | → | tomsen[m] joins (tfbiomatri@gateway/shell/matrix.org/x-junoizbhiuyanlfn) |
| 21:14:51 | → | betrion[m] joins (betrionmat@gateway/shell/matrix.org/x-ffgdptepxqzbfrzi) |
| 21:14:51 | → | CrabMan joins (phi-matrix@gateway/shell/matrix.org/x-qnflepxzbgoiepgi) |
| 21:14:52 | → | bram[m]1 joins (bramvdbnet@gateway/shell/matrix.org/x-smrpthqlcycbdvqg) |
| 21:14:52 | → | alecs[m] joins (malumorema@gateway/shell/matrix.org/x-gkhumeppsvrovowp) |
| 21:14:52 | → | mjlbach joins (atriusmatr@gateway/shell/matrix.org/x-jbujsgkzleiuowmd) |
| 21:14:55 | → | my_name_is_not_j joins (mynameisno@gateway/shell/matrix.org/x-lnbatcivvyyktlgd) |
| 21:14:56 | → | sm[m] joins (simonmicma@gateway/shell/matrix.org/x-olgzldwdbozcvmla) |
| 21:14:56 | → | lnxw37d4 joins (lnxw37d4ma@gateway/shell/matrix.org/x-ehmcpjxutoidauup) |
| 21:15:00 | → | DamienCassou joins (damiencass@gateway/shell/matrix.org/x-eprxxdwijffydrdi) |
| 21:15:00 | → | berberman[T] joins (berberma4@gateway/shell/matrix.org/x-xacrdmjnxhrqsrnd) |
| 21:15:22 | → | maerwald[m] joins (maerwaldma@gateway/shell/matrix.org/x-bjunztlamgbiqsmk) |
| 21:15:37 | <dminuoso> | Data/Typeable give you these facilities as first-class haskell functions back (the compiler will just generate them, so roughly what ski suggested would be automatically generated by the compiler and more) |
| 21:15:40 | → | Liyang[m] joins (liyangmatr@gateway/shell/matrix.org/x-pppuhernsulwjyww) |
| 21:15:41 | → | dyniec[m] joins (dyniecmatr@gateway/shell/matrix.org/x-mpucxcqvuxckqpcu) |
| 21:15:42 | → | michaelpj joins (michaelpjm@gateway/shell/matrix.org/x-buxbodhkddveoaqd) |
| 21:15:53 | <mouseghost> | yeah i understand |
| 21:16:12 | <mouseghost> | kinda like with c unions :D |
| 21:16:15 | <mouseghost> | maybe |
| 21:16:22 | → | sigmacool[m] joins (sigmacoolm@gateway/shell/matrix.org/x-agbisjcyekothkzz) |
| 21:16:23 | → | utdemir[m] joins (utdemirmat@gateway/shell/matrix.org/x-pmladlzouojlwrsx) |
| 21:16:23 | → | Robin[m]2 joins (robinrobin@gateway/shell/matrix.org/x-qitylqaxjgpvphgf) |
| 21:16:23 | → | enya[m] joins (enyaismatr@gateway/shell/matrix.org/x-qrvidzgjkxctjdul) |
| 21:16:23 | → | mentaal[m] joins (mentaalmat@gateway/shell/matrix.org/x-cldzerqnoqwflcto) |
| 21:16:23 | <dminuoso> | In the sense that they are erased you mean? |
| 21:16:24 | → | Lurkki[m] joins (lurkkipriv@gateway/shell/matrix.org/x-psmnesknsmvebscb) |
| 21:16:24 | → | simara[m] joins (simaramatr@gateway/shell/matrix.org/x-yieaikiuesgqpxtf) |
| 21:16:25 | → | ManofLetters[m] joins (manoflette@gateway/shell/matrix.org/x-sdtdldljvtpokfgv) |
| 21:16:26 | → | jeffcasavant[m] joins (jeffcasava@gateway/shell/matrix.org/x-lucppnoruohzhaik) |
| 21:16:31 | <mouseghost> | dminuoso, more like not defined |
| 21:16:32 | → | pineapples[m] joins (pineapples@gateway/shell/matrix.org/x-rjnrgqpwuytdhsrb) |
| 21:16:32 | → | jesser[m] joins (jessermatr@gateway/shell/matrix.org/x-qjriisacmnwggisj) |
| 21:16:33 | → | jkaye[m] joins (jkayematri@gateway/shell/matrix.org/x-cdnoacaikcqweptz) |
| 21:16:33 | → | JaakkoLuttinen[m joins (jluttinema@gateway/shell/matrix.org/x-jxffrgesqwkjiyek) |
| 21:16:34 | → | CaptainYukinoshi joins (captain-yu@gateway/shell/matrix.org/x-wsmoytiqpsczqgmt) |
| 21:16:34 | → | oreoking[m] joins (oreokingma@gateway/shell/matrix.org/x-thhdqxzqtsmuurkl) |
| 21:16:36 | → | a-tsioh[m] joins (a-tsiohmat@gateway/shell/matrix.org/x-vxvzeinnodmgkchc) |
| 21:16:36 | → | Sarievo[m] joins (sarievoale@gateway/shell/matrix.org/x-pwulriigshezukrd) |
| 21:16:39 | → | jchia[m] joins (jchiamatri@gateway/shell/matrix.org/x-mkoiivxvcbjgzwnc) |
| 21:16:53 | <dminuoso> | No we actually do have some information artifacts behind, which is why we can do case-of. |
| 21:16:57 | <mouseghost> | oh |
| 21:17:01 | → | jtojnar joins (jtojnarmat@gateway/shell/matrix.org/x-uzqgiiovyutwaadq) |
| 21:17:45 | <mouseghost> | also, regarding datatypes, can i somehow namespace `data' declaration or something? say i wanted to like... data Sign = + | - |
| 21:17:54 | <mouseghost> | i guess also () would need to go there huh |
| 21:17:55 | → | speakerspivakeem joins (speakerdea@gateway/shell/matrix.org/x-turkzvpwerbcobxw) |
| 21:17:58 | <dminuoso> | Yes and no. |
| 21:18:07 | × | borne quits (~fritjof@200116b8648b430010f2d07664396fd4.dip.versatel-1u1.de) (Ping timeout: 260 seconds) |
| 21:18:27 | → | alar[m] joins (alarmxalat@gateway/shell/matrix.org/x-ijjeysxxnkrgutme) |
| 21:18:28 | → | the_1_[m] joins (the1matrix@gateway/shell/matrix.org/x-jjrqmrcdxkntsvvj) |
| 21:18:30 | → | themsay[m] joins (themsaymat@gateway/shell/matrix.org/x-ljaenuxzhfzsbgci) |
| 21:18:36 | <mouseghost> | hm maybe types need to actually be alphanum.. |
| 21:18:43 | → | immae joins (immaematri@gateway/shell/matrix.org/x-mtnokboauunjkgre) |
| 21:18:57 | → | sm2n joins (~sm2n@bras-base-hmtnon1497w-grc-43-64-231-95-247.dsl.bell.ca) |
| 21:18:59 | → | fgaz joins (fgazmatrix@gateway/shell/matrix.org/x-altyhdajrdgkwiga) |
| 21:19:02 | → | boistordu joins (boistordum@gateway/shell/matrix.org/x-zehlrpuclgbsmcgb) |
| 21:19:04 | → | Ericson2314 joins (ericson231@gateway/shell/matrix.org/x-gwwwaooyqtgnnprg) |
| 21:19:05 | → | siraben joins (sirabenmat@gateway/shell/matrix.org/x-ofqfbyaxrzohrkzu) |
| 21:19:10 | <dminuoso> | mouseghost: You can just create types constructors, data constructors or just values, shadowing names of existing identifiers, in a module. |
| 21:19:13 | <geekosaur> | alphanumeric and initial uppercase, or symbol and initial colon (and infix) |
| 21:19:17 | → | darjeeling_ joins (~darjeelin@122.245.218.150) |
| 21:19:21 | → | hsiktas[m] joins (hsiktasmat@gateway/shell/matrix.org/x-lkcvikipshxfqrsl) |
| 21:19:48 | → | ThaEwat joins (thaewraptm@gateway/shell/matrix.org/x-pcdsttlbmkuhuhxo) |
| 21:19:57 | <koz_> | With cabal test, how do I pass a '-with-rtsopts' to the executable it runs? |
| 21:20:02 | <dminuoso> | mouseghost: So modules (or more generally any declaration group) can shadow identifiers. |
| 21:20:03 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) (Remote host closed the connection) |
| 21:20:35 | × | jonathanx quits (~jonathan@h-176-109.A357.priv.bahnhof.se) (Ping timeout: 272 seconds) |
| 21:20:36 | <mouseghost> | allright.. |
| 21:20:39 | <dminuoso> | `module Foo where id x = go x where go x = x` Here we shadow things two times. |
| 21:20:42 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:54c9:782b:f60f:635d) |
| 21:20:51 | → | MichaelHoffmannb joins (brisadmozi@gateway/shell/matrix.org/x-semsqtjqhulgolab) |
| 21:20:51 | → | sramsay64[m] joins (sramsay64p@gateway/shell/matrix.org/x-nofjuyisaelgsjpz) |
| 21:20:54 | → | adziahel[m] joins (adziahelma@gateway/shell/matrix.org/x-gzxprvasiinkibkp) |
| 21:21:11 | <dminuoso> | First, we shadow the `id` binding from the Prelude module (which is always implicitly imported), and inside the definition of `id`, the nested `go` binding shadows the outer `x` binder |
| 21:22:07 | ← | redcherri parts (bab7259d@186.183.37.157) () |
| 21:22:10 | <mouseghost> | i see, thanks |
| 21:23:24 | kjak_ | is now known as kjak |
| 21:24:09 | → | bitonic joins (bitonicmat@gateway/shell/matrix.org/x-plynbbjxllctgqmg) |
| 21:25:04 | → | borne joins (~fritjof@200116b8648b430010f2d07664396fd4.dip.versatel-1u1.de) |
| 21:26:41 | × | Mrbuck quits (~Mrbuck@gateway/tor-sasl/mrbuck) (Quit: WeeChat 1.9.1) |
| 21:27:02 | → | acdsystemliorg[m joins (acdsysteml@gateway/shell/matrix.org/x-yldclcynujkdrkug) |
| 21:28:17 | → | mud joins (kadobanemp@gateway/shell/matrix.org/x-ivqsxeohuglvlsqy) |
| 21:28:50 | → | geowiesnot_bis joins (~user@87-89-181-157.abo.bbox.fr) |
| 21:28:54 | → | Hanma[m] joins (hanmamatri@gateway/shell/matrix.org/x-uvqceisbsyumooad) |
| 21:29:01 | → | aarvar joins (~foewfoiew@2601:602:a080:fa0:49bc:1f9e:3510:3fc5) |
| 21:29:07 | × | dhouthoo quits (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 3.0) |
| 21:29:30 | → | lambdaclan joins (lambdaclan@gateway/shell/matrix.org/x-ipvngrvyhnqhbylj) |
| 21:29:32 | → | unclechu joins (unclechuma@gateway/shell/matrix.org/x-tqwhdmxbxpfopxbc) |
| 21:29:39 | → | VarikValefor[m] joins (varikvalef@gateway/shell/matrix.org/x-kxjsrbtdhgrazfgo) |
| 21:30:57 | × | ddellacosta quits (~ddellacos@86.106.143.189) (Remote host closed the connection) |
| 21:31:00 | → | dcoutts__ joins (~duncan@85.186.125.91.dyn.plus.net) |
| 21:36:06 | → | frozenErebus joins (~frozenEre@94.128.219.166) |
| 21:36:06 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 21:36:28 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 21:36:43 | × | chisui quits (59f77ca6@i59F77CA6.versanet.de) (Ping timeout: 240 seconds) |
| 21:38:17 | × | geekosaur quits (82650c7a@130.101.12.122) (Quit: Connection closed) |
| 21:39:35 | × | mananamenos quits (~mananamen@193.red-88-11-66.dynamicip.rima-tde.net) (Ping timeout: 272 seconds) |
| 21:40:52 | hackage | tidal 1.7.2 - Pattern language for improvised music https://hackage.haskell.org/package/tidal-1.7.2 (AlexMcLean) |
| 21:41:51 | → | flocks joins (~user@lfbn-idf2-1-666-131.w86-247.abo.wanadoo.fr) |
| 21:42:02 | × | aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) |
| 21:42:29 | → | rankispanki joins (59bbbb70@gateway/web/cgi-irc/kiwiirc.com/ip.89.187.187.112) |
| 21:42:35 | → | aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net) |
| 21:42:49 | ← | flocks parts (~user@lfbn-idf2-1-666-131.w86-247.abo.wanadoo.fr) () |
| 21:43:01 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection) |
| 21:44:25 | → | kam1 joins (~kam1@5.125.126.175) |
| 21:45:41 | × | egp_ quits (~egp_@2.95.74.168) (Quit: EXIT) |
| 21:46:02 | → | egp_ joins (~egp_@2.95.74.168) |
| 21:46:08 | × | xff0x_ quits (~xff0x@2001:1a81:5295:6100:2300:7794:1c77:29ff) (Ping timeout: 260 seconds) |
| 21:46:22 | → | adam34 joins (a5a68021@dsl-33.static.grp38.tnmmrl.infoave.net) |
| 21:47:07 | × | adam34 quits (a5a68021@dsl-33.static.grp38.tnmmrl.infoave.net) (Client Quit) |
| 21:47:42 | → | xff0x_ joins (~xff0x@2001:1a81:5295:6100:2300:7794:1c77:29ff) |
| 21:48:00 | → | adam10 joins (a5a68021@dsl-33.static.grp38.tnmmrl.infoave.net) |
| 21:48:27 | <adam10> | Would it be smart (if at all possible) to rice together xmonad and Plasma, similar to how you do it with i3? |
| 21:48:40 | × | rankispanki quits (59bbbb70@gateway/web/cgi-irc/kiwiirc.com/ip.89.187.187.112) (Quit: Connection closed) |
| 21:49:19 | → | chisui joins (59f77ca6@i59F77CA6.versanet.de) |
| 21:49:33 | <dminuoso> | adam10: Sure its possible |
| 21:50:17 | <adam10> | Would it be smart? Also I’m wondering how well xmonad handles two monitors, cause when I tried i3+KDE it was awful |
| 21:52:14 | <dminuoso> | two monitors, it depends |
| 21:52:26 | <adam10> | How so? |
| 21:52:42 | <dminuoso> | There's two modes of operation. One is IndependentScreens (which is a pile of hacks that badly interfaces with half of xmonad-contrib) |
| 21:52:51 | <dminuoso> | And the other is just plain xmonad |
| 21:53:32 | <adam10> | I mean as long as it doesn’t register one monitor as two so I cant see anything I’m fine lmao |
| 21:53:50 | <dminuoso> | Well, the thing is xmonad has a single StackSet |
| 21:54:24 | <adam10> | I’m sorry I’m new to tiling WMs, what does that mean |
| 21:54:28 | <chisui> | adam10 what are your issues with i3s multimonitor setup? |
| 21:54:39 | <dminuoso> | adam10: https://hackage.haskell.org/package/xmonad-0.15/docs/XMonad-StackSet.html |
| 21:54:45 | → | acidjnk_new joins (~acidjnk@p200300d0c73909037c8935151300e6fb.dip0.t-ipconnect.de) |
| 21:55:18 | <dminuoso> | adam10: (So roughly, for each workspace we keep a stack of windows, in which one window is in focus). And we then keep a focus marker for which workspace is active. |
| 21:55:48 | <adam10> | chisui it would register one monitor as two so like certain things would be on one side of the monitor that i cant reach because its in a sort of “limbo.” I dont know exactly how to describe it, but think of it when you drag a window almost off screen, except its fully offscreen in this case |
| 21:56:01 | <dminuoso> | adam10: Note that "workspace" is meant in a virtual sense! |
| 21:56:13 | <dminuoso> | And that's where it gets slightly messy |
| 21:56:24 | <dminuoso> | Workspaces can shift between your monitors around, depending on your operation |
| 21:56:46 | <adam10> | Yea i know that, i just hope it doesn’t pull an i3 lol |
| 21:56:59 | <dminuoso> | IndependentScreens tries to "virtualize workspaces", such that each physical screen has its own set of workspaces. |
| 21:57:23 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:57:30 | <adam10> | But you said it doesn’t play nice with xmonad? |
| 21:57:37 | <dminuoso> | With many xmonad-contrib stuff |
| 21:57:58 | <adam10> | But with just xmonad? |
| 21:58:05 | <dminuoso> | If you dont use those, then its fine. Or maybe you *want* the default xmonad behavior with sharing these workspaces on all physical screens |
| 21:58:09 | <dminuoso> | Oh it works just fine |
| 21:58:25 | <adam10> | i mean it would be nice both way |
| 21:58:33 | <adam10> | ways* |
| 21:58:46 | <dminuoso> | Personally I found, if you have a single center/main monitor that you stare at, then the xmonad behavior is great. |
| 21:59:03 | <dminuoso> | If you have a setup where you have one monitor to the left and one to the right, IndependentScreen seems like a better fit |
| 21:59:28 | <adam10> | I mean its kinda like that, i want a setup where I have one single panel on my “main” monitor and then 4-ish panels on my second |
| 21:59:43 | <adam10> | it kinda swaps tho as i constantly look back and forth |
| 22:00:50 | <adam10> | But thanks for your time! |
| 22:01:04 | <adam10> | is there a starting configuration file it generates that i could play around with and such? |
| 22:03:03 | × | chisui quits (59f77ca6@i59F77CA6.versanet.de) (Ping timeout: 240 seconds) |
| 22:04:28 | → | soft-warm joins (44695313@ip68-105-83-19.sd.sd.cox.net) |
| 22:04:49 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Ping timeout: 272 seconds) |
| 22:06:46 | → | bencark joins (~cark@91.110.54.64) |
| 22:06:49 | × | cgfbee quits (~bot@oc1.itim-cj.ro) (Ping timeout: 265 seconds) |
| 22:07:02 | × | darjeeling_ quits (~darjeelin@122.245.218.150) (Ping timeout: 265 seconds) |
| 22:07:08 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 22:07:58 | × | avn quits (~avn@78-56-108-78.static.zebra.lt) (Read error: Connection reset by peer) |
| 22:08:37 | → | ddere joins (uid110888@gateway/web/irccloud.com/x-mbygtejiccludvmt) |
| 22:08:55 | <monochrom> | ski: Yes. More weakly, if you want "return a = repeat a", which is of course a prerequsite for zipping behaviour but probably isn't enough to imply zipping. |
| 22:09:34 | → | darjeeling_ joins (~darjeelin@122.245.218.150) |
| 22:09:43 | → | theelous3 joins (~theelous3@unaffiliated/theelous3) |
| 22:10:34 | → | pavonia^\_^\ joins (~user@unaffiliated/siracusa) |
| 22:11:53 | <monochrom> | There is a related finding about homogeneous 2-tuples "data Pair a = MkPair a a". Most people quickly see that it's the same as Bool->a so you can just translate the well-known (->)Bool monad. What interests me is whether there are other choices and why or why not. |
| 22:12:12 | <monochrom> | Turns out again the identity laws rule out all other choices. |
| 22:12:23 | × | adam10 quits (a5a68021@dsl-33.static.grp38.tnmmrl.infoave.net) (Ping timeout: 240 seconds) |
| 22:12:57 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 22:13:41 | → | cgfbee joins (~bot@oc1.itim-cj.ro) |
| 22:14:17 | × | mp___ quits (~mp@hell.cx) (Remote host closed the connection) |
| 22:17:08 | × | cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye) |
| 22:17:17 | <monochrom> | Heh, if return a = [a], then the identity laws strongly suggest join = concat. I am not sure if it is forced, but it is very limiting either way. |
| 22:18:39 | × | pera quits (~pera@unaffiliated/pera) (Ping timeout: 246 seconds) |
| 22:18:45 | <monochrom> | Now let me try this on State too... |
| 22:18:51 | <monochrom> | (wish me luck) |
| 22:19:07 | <monochrom> | (or "good luck with that" if you know it's doomed) |
| 22:20:09 | <ski> | i guess i'm not really following why the identity laws rule out the other choices, there |
| 22:20:15 | → | cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
| 22:21:15 | → | adam28 joins (a5a68021@dsl-33.static.grp38.tnmmrl.infoave.net) |
| 22:21:17 | <monochrom> | For Pair: return x = MkPair x x is pretty much forced by parametricity plus totality. |
| 22:21:21 | × | cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Client Quit) |
| 22:21:50 | × | adam28 quits (a5a68021@dsl-33.static.grp38.tnmmrl.infoave.net) (Client Quit) |
| 22:21:50 | <monochrom> | With that, you want join . return = id, join . fmap return = id. |
| 22:22:12 | <ski> | hm, i see |
| 22:22:23 | → | cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
| 22:23:26 | <monochrom> | So suppose join (MkPair (MkPair a00 a01) (MkPair a10 a11)) = MkPair b0 b1, where b0 and b1 each has to choose one of the aij's, and we're trying to find what they choose. |
| 22:24:33 | → | adam10 joins (a5a68021@dsl-33.static.grp38.tnmmrl.infoave.net) |
| 22:24:36 | → | ddellaco_ joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 22:24:51 | <monochrom> | join (return (MkPair 0 1)) = join (MkPair (MkPair 0 1) (MkPair 0 1)), we want that to = MkPair 0 1. The 0 has to "come from the 1st column", the 1 has to "come from the 2nd column", so b0 can only choose from a00 or a10, b1 from a01 or a11. |
| 22:25:13 | → | Franciman joins (~francesco@host-82-49-79-189.retail.telecomitalia.it) |
| 22:25:19 | <ski> | so apply `join . return' and `join . fmap return' to two pairs |
| 22:25:21 | × | Pickchea quits (~private@unaffiliated/pickchea) (Quit: Leaving) |
| 22:25:34 | <ski> | er, one pair of two values |
| 22:25:45 | <monochrom> | join (fmap return (MkPair 0 1)) basically does the transpose after the dust settles. So join is diagonal once again. |
| 22:25:46 | <ski> | yes |
| 22:26:04 | <monochrom> | (And cite "parametricity" to finish the rigour :) ) |
| 22:26:11 | <monochrom> | (or "naturality") |
| 22:26:14 | <ski> | forcing it to pick indices `i' and `j' that are equal to each other |
| 22:26:16 | × | frozenErebus quits (~frozenEre@94.128.219.166) (Quit: leaving) |
| 22:27:36 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 265 seconds) |
| 22:29:10 | → | Mrbuck joins (~Mrbuck@gateway/tor-sasl/mrbuck) |
| 22:29:13 | → | Jd007 joins (~Jd007@162.156.11.151) |
| 22:30:44 | → | kadobanana joins (~mud@unaffiliated/kadoban) |
| 22:32:16 | <nshepperd> | since it's equivalent to Bool -> a, you could also do the parametricity argument in that representation, which might be simpler |
| 22:33:00 | <monochrom> | I am skeptical with that. Bool->a is parametric on a only. |
| 22:33:15 | × | catt quits (~r@31.127.31.99) (Ping timeout: 256 seconds) |
| 22:33:42 | <monochrom> | I need a reason for "why I can't fiddle with the Bool" |
| 22:34:29 | × | cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye) |
| 22:34:30 | <monochrom> | General e->a with "you have to do something that works for all e" would benefit much from parametricity in e. |
| 22:34:43 | × | adam10 quits (a5a68021@dsl-33.static.grp38.tnmmrl.infoave.net) (Ping timeout: 240 seconds) |
| 22:35:19 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 22:35:25 | → | hiroaki__ joins (~hiroaki@2a02:8108:8c40:2bb8:cedc:3317:ccec:602b) |
| 22:35:36 | <monochrom> | Likewise, "instance Monad ((,) w)" is very different from "instance Monad Pair" even though Pair a = (,) a a |
| 22:36:32 | × | slack1256 quits (~slack1256@45.4.2.52) (Remote host closed the connection) |
| 22:36:39 | → | xelxebar_ joins (~xelxebar@gateway/tor-sasl/xelxebar) |
| 22:37:14 | × | xelxebar quits (~xelxebar@gateway/tor-sasl/xelxebar) (Quit: ZNC 1.7.2+deb3 - https://znc.in) |
| 22:37:28 | × | hiroaki_ quits (~hiroaki@2a02:8108:8c40:2bb8:d62a:148b:cd1:9dfb) (Ping timeout: 260 seconds) |
| 22:38:00 | <monochrom> | Hrm, maybe I misread you. |
| 22:38:49 | <dolio> | Parametricity would limit the functions you have to consider. |
| 22:38:52 | → | cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
| 22:38:54 | → | epicte7us joins (~epictetus@ip72-194-215-136.sb.sd.cox.net) |
| 22:39:01 | <nshepperd> | join (return f) = join (\i j -> f j) = f |
| 22:39:07 | × | Franciman quits (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving) |
| 22:39:32 | <nshepperd> | join (return <$> f) = join (\i j -> f i) = f |
| 22:40:15 | <nshepperd> | therefore join (\i j -> f i j) k = f k k |
| 22:40:58 | <nshepperd> | something like that |
| 22:41:18 | <dolio> | There are only finitely many permutations of booleans to feed into the `Bool -> Bool -> a`. |
| 22:41:20 | <monochrom> | Yeah I misread you, you meant that, it works. Thanks. |
| 22:41:54 | × | ep1ctetus quits (~epictetus@ip72-194-215-136.sb.sd.cox.net) (Ping timeout: 246 seconds) |
| 22:42:56 | → | ransom joins (~c4264035@8.48.134.49) |
| 22:43:08 | × | Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
| 22:45:13 | → | __minoru__shirae joins (~shiraeesh@109.166.59.137) |
| 22:45:38 | × | augnun quits (~augnun@2804:14c:658b:41bb:bd15:cb53:9582:4622) (Ping timeout: 264 seconds) |
| 22:46:19 | × | fendor_ quits (~fendor@178.115.128.24.wireless.dyn.drei.com) (Read error: Connection reset by peer) |
| 22:48:09 | × | mouseghost quits (~draco@wikipedia/desperek) (Quit: mew wew) |
| 22:50:49 | <dolio> | I don't think it's significantly different in function from the version with pairs. You're given 4 a values and you need to return 2, and parametricity tells you the function must just select the outputs from the inputs. |
| 22:51:12 | <dolio> | And must make the same selections regardless of the exact values of the inputs. |
| 22:51:43 | × | ddellaco_ quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection) |
| 22:51:51 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 22:53:17 | × | acidjnk_new quits (~acidjnk@p200300d0c73909037c8935151300e6fb.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
| 22:53:26 | × | borne quits (~fritjof@200116b8648b430010f2d07664396fd4.dip.versatel-1u1.de) (Ping timeout: 265 seconds) |
| 22:54:10 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 22:54:21 | <nshepperd> | knowing that the input is Bool doesn't help you, because the equations still have to hold for every possible input |
| 22:54:42 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 22:57:08 | × | pfurla_ quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Quit: gone to sleep. ZZZzzz…) |
| 22:58:27 | × | son0p quits (~son0p@181.136.122.143) (Quit: Lost terminal) |
| 23:02:20 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection) |
| 23:02:55 | → | adam10 joins (6b4dedab@mobile-107-77-237-171.mobile.att.net) |
| 23:03:12 | × | adam10 quits (6b4dedab@mobile-107-77-237-171.mobile.att.net) (Client Quit) |
| 23:05:58 | × | cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye) |
| 23:06:58 | → | cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
| 23:07:40 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 23:09:51 | × | xwvvvvwx quits (xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx) (Quit: ZNC 1.8.2 - https://znc.in) |
| 23:10:02 | → | xwvvvvwx joins (xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx) |
| 23:10:55 | × | vimto quits (~vimto@unaffiliated/vimto) (Ping timeout: 258 seconds) |
| 23:11:01 | → | drewolson joins (~drewolson@64.227.24.16) |
| 23:11:45 | → | mp___ joins (mp@hell.cx) |
| 23:12:13 | × | gr33nbits quits (~gr33nbits@a109-49-87-64.cpe.netcabo.pt) (Quit: Konversation terminated!) |
| 23:13:31 | → | Alleria joins (~textual@zrcout.mskcc.org) |
| 23:13:34 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds) |
| 23:13:54 | Alleria | is now known as Guest77245 |
| 23:15:11 | × | Guest30451 quits (~textual@zrcout.mskcc.org) (Ping timeout: 256 seconds) |
| 23:18:07 | <tomsmeding> | maerwald: if you have an android device, you can run it there (I have an android phone, can try to test -- though I'll be sleeping for a while) |
| 23:18:17 | → | conal joins (~conal@64.71.133.70) |
| 23:18:18 | × | xsperry quits (~as@unaffiliated/xsperry) (Remote host closed the connection) |
| 23:19:22 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 23:23:09 | × | o1lo01o__ quits (~o1lo01ol1@95.69.63.87) (Remote host closed the connection) |
| 23:23:31 | → | ezzieyguywuf joins (~Unknown@unaffiliated/ezzieyguywuf) |
| 23:23:48 | → | o1lo01ol1o joins (~o1lo01ol1@95.69.63.87) |
| 23:25:29 | × | gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving) |
| 23:27:38 | → | zar joins (~zar@fw1.ciirc.cvut.cz) |
| 23:28:50 | → | xsperry joins (~as@unaffiliated/xsperry) |
| 23:29:10 | × | o1lo01ol1o quits (~o1lo01ol1@95.69.63.87) (Ping timeout: 276 seconds) |
| 23:29:57 | × | apache8080 quits (~rishi@wsip-70-168-153-252.oc.oc.cox.net) (Ping timeout: 264 seconds) |
| 23:30:05 | × | crobbins quits (~crobbins@2600:1700:48eb:8490:f085:4e3f:f643:338d) (Ping timeout: 240 seconds) |
| 23:30:43 | → | crobbins joins (~crobbins@2600:1700:48eb:8490:f085:4e3f:f643:338d) |
| 23:33:39 | → | c-rog joins (~c-rog@traffic.simst.im) |
| 23:34:02 | × | c-rog quits (~c-rog@traffic.simst.im) (Quit: quitin) |
| 23:34:02 | → | c-rog joins (~c-rog@traffic.simst.im) |
| 23:34:43 | × | epicte7us quits (~epictetus@ip72-194-215-136.sb.sd.cox.net) (Remote host closed the connection) |
| 23:34:43 | × | bencark quits (~cark@91.110.54.64) (Remote host closed the connection) |
| 23:34:47 | → | apache8080 joins (~rishi@wsip-70-168-153-252.oc.oc.cox.net) |
| 23:35:04 | → | epicte7us joins (~epictetus@ip72-194-215-136.sb.sd.cox.net) |
| 23:35:24 | → | aenesidemus joins (~aenesidem@c-73-53-247-25.hsd1.fl.comcast.net) |
| 23:35:30 | → | GZJ0X_ joins (~gzj@unaffiliated/gzj) |
| 23:37:01 | → | Riviera joins (Riviera@2a03:b0c0:1:d0::10:b001) |
| 23:37:33 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.0) |
| 23:38:03 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 23:38:38 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 23:39:58 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 23:42:35 | → | gzj joins (~gzj@unaffiliated/gzj) |
| 23:43:28 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 276 seconds) |
| 23:43:29 | × | GZJ0X_ quits (~gzj@unaffiliated/gzj) (Ping timeout: 265 seconds) |
| 23:44:03 | × | skregas_ quits (~skregas_@201.89-10-150.nextgentel.com) (Quit: skregas_) |
| 23:44:59 | dmwit_ | is now known as dmwit |
| 23:46:31 | × | ransom quits (~c4264035@8.48.134.49) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 23:48:24 | → | buttbutter joins (5ec62a96@unaffiliated/buttbutter) |
| 23:48:30 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 23:50:28 | → | boxscape joins (4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) |
| 23:51:33 | <boxscape> | % type Bar :: (forall s . s) -> *; type family Bar x where Bar y = Int |
| 23:51:33 | <yahb> | boxscape: ; <interactive>:50:62: error:; * Expected kind `forall s. s', but `y' has kind `k0'; Cannot instantiate unification variable `k0'; with a kind involving polytypes: forall s. s; * In the first argument of `Bar', namely `y'; In the type family declaration for `Bar' |
| 23:51:43 | × | buttbutter quits (5ec62a96@unaffiliated/buttbutter) (Client Quit) |
| 23:51:52 | <boxscape> | is there a way to make this work or do type families just not support rank n types |
| 23:53:08 | Guest58072 | is now known as notzmv |
| 23:53:15 | × | notzmv quits (~zmv@191.255.89.231) (Changing host) |
| 23:53:15 | → | notzmv joins (~zmv@unaffiliated/zmv) |
| 23:53:18 | EvanR_ | is now known as EvanR |
| 23:53:37 | × | EvanR quits (~evan@mail.evanr.info) (Changing host) |
| 23:53:37 | → | EvanR joins (~evan@unaffiliated/evanr) |
| 23:57:27 | remexre_ | is now known as remexre |
| 23:58:09 | × | Tario quits (~Tario@201.192.165.173) (Ping timeout: 260 seconds) |
| 23:58:21 | → | hexo- joins (~hexo@83.167.228.130) |
| 23:58:25 | × | geowiesnot_bis quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 276 seconds) |
| 23:58:37 | × | _Adluc_ quits (~Adluc@83.167.228.130) (Ping timeout: 260 seconds) |
| 23:58:57 | × | Rudd0 quits (~Rudd0@185.189.115.108) (Ping timeout: 265 seconds) |
| 23:58:59 | → | Adluc joins (~Adluc@2a01:430:17:1::ffff:328) |
| 23:59:05 | × | hexo| quits (~hexo@83.167.228.130) (Ping timeout: 260 seconds) |
All times are in UTC on 2021-02-25.