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