2021-11-05 00:00:29 +0100 | xff0x | (~xff0x@2001:1a81:5236:1e00:dda8:eac2:4d01:562e) |
2021-11-05 00:06:50 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-11-05 00:09:45 +0100 | michalz | (~michalz@185.246.204.58) (Remote host closed the connection) |
2021-11-05 00:17:49 +0100 | unit73e | (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 268 seconds) |
2021-11-05 00:20:26 +0100 | myShoggoth | (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 260 seconds) |
2021-11-05 00:28:39 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-11-05 00:31:38 +0100 | onion | (~z@user/zero) |
2021-11-05 00:32:04 +0100 | onion | (~z@user/zero) () |
2021-11-05 00:32:08 +0100 | onion | (~z@user/zero) |
2021-11-05 00:32:52 +0100 | onion | (~z@user/zero) () |
2021-11-05 00:37:11 +0100 | nvmd | (~nvmd@user/nvmd) |
2021-11-05 00:39:20 +0100 | brainfreeze | (~brainfree@2a03:1b20:4:f011::20d) |
2021-11-05 00:40:09 +0100 | myShoggoth | (~myShoggot@97-120-85-195.ptld.qwest.net) |
2021-11-05 00:41:55 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-11-05 00:41:55 +0100 | myShoggoth | (~myShoggot@97-120-85-195.ptld.qwest.net) (Client Quit) |
2021-11-05 00:41:55 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-11-05 00:41:55 +0100 | wroathe | (~wroathe@user/wroathe) |
2021-11-05 00:45:12 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
2021-11-05 00:50:54 +0100 | emf | (~emf@2620:10d:c090:400::5:ba1c) (Quit: emf) |
2021-11-05 00:51:33 +0100 | burnsidesLlama | (~burnsides@dhcp168-032.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-11-05 01:00:02 +0100 | euandreh | (~euandreh@2804:14c:33:9fe5:25ae:baa7:4680:70ca) (Ping timeout: 260 seconds) |
2021-11-05 01:08:52 +0100 | aegon | (~mike@174.127.249.180) (Remote host closed the connection) |
2021-11-05 01:13:41 +0100 | [_] | [itchyjunk] |
2021-11-05 01:13:56 +0100 | lemonsnicks | (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Ping timeout: 268 seconds) |
2021-11-05 01:14:11 +0100 | Katarushisu | (~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net) (Ping timeout: 264 seconds) |
2021-11-05 01:15:09 +0100 | lemonsnicks | (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) |
2021-11-05 01:16:35 +0100 | Katarushisu | (~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net) |
2021-11-05 01:17:43 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-11-05 01:19:23 +0100 | fryguybob | (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) (Quit: leaving) |
2021-11-05 01:22:02 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds) |
2021-11-05 01:23:25 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2021-11-05 01:27:54 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-11-05 01:28:54 +0100 | jespada | (~jespada@190.7.36.46) |
2021-11-05 01:32:35 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3) |
2021-11-05 01:33:12 +0100 | euandreh | (~euandreh@2804:14c:33:9fe5:90d0:563b:3279:f95b) |
2021-11-05 01:47:55 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2021-11-05 01:48:28 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-05 01:54:02 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2021-11-05 02:02:42 +0100 | ub | (~Thunderbi@p548c9652.dip0.t-ipconnect.de) |
2021-11-05 02:03:53 +0100 | ubert | (~Thunderbi@p200300ecdf4fca7ce019fddc82d0353e.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2021-11-05 02:03:54 +0100 | ub | ubert |
2021-11-05 02:03:57 +0100 | mestre | (~mestre@191.177.175.57) |
2021-11-05 02:08:49 +0100 | acidjnk_new | (~acidjnk@p200300d0c726704784feaa35b47dd204.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2021-11-05 02:13:09 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
2021-11-05 02:14:03 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds) |
2021-11-05 02:14:26 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2021-11-05 02:17:06 +0100 | <awpr> | anybody already making a `type-ord-compat` library? one exists as part of `numeric-kinds`, but it looks like I need to split it out into a standalone library to avoid a cycle, and I want to double-check before I duplicate effort |
2021-11-05 02:17:13 +0100 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) |
2021-11-05 02:18:06 +0100 | <awpr> | (https://github.com/google/hs-dependent-literals/commit/65c553447d3c6d083b2886feb44bd3817f121ece turns my previous implementation into a compatibility layer for the one in `base`) |
2021-11-05 02:19:11 +0100 | <awpr> | there's `type-ord`, which is similar, but currently broken, unmodified since 2013, and has no repo link, so... probably not that one |
2021-11-05 02:22:19 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.) |
2021-11-05 02:22:40 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-11-05 02:29:44 +0100 | abrantesasf | (abrantesas@gateway/vpn/protonvpn/abrantesasf) (Remote host closed the connection) |
2021-11-05 02:29:55 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-11-05 02:29:56 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-11-05 02:29:56 +0100 | wroathe | (~wroathe@user/wroathe) |
2021-11-05 02:32:44 +0100 | Psybur | (~Psybur@mobile-166-170-30-165.mycingular.net) (Remote host closed the connection) |
2021-11-05 02:34:34 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2021-11-05 02:40:30 +0100 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2021-11-05 02:46:21 +0100 | jespada | (~jespada@190.7.36.46) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-11-05 02:51:18 +0100 | slack1256 | (~slack1256@191.125.227.82) |
2021-11-05 02:52:31 +0100 | dsamperi | (~dsamperi@2603-7000-3b42-5400-218f-2d4f-d1df-c673.res6.spectrum.com) |
2021-11-05 02:58:10 +0100 | vysn | (~vysn@user/vysn) (Ping timeout: 268 seconds) |
2021-11-05 03:01:05 +0100 | SeungheonOh | (~Thunderbi@2600:1700:5168:1400:43da:65d:86ef:94ff) |
2021-11-05 03:01:59 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2021-11-05 03:05:01 +0100 | SeungheonOh | (~Thunderbi@2600:1700:5168:1400:43da:65d:86ef:94ff) () |
2021-11-05 03:05:07 +0100 | SeungheonOh | (~Thunderbi@2600:1700:5168:1400:43da:65d:86ef:94ff) |
2021-11-05 03:05:50 +0100 | gzj | (~GZJ0X@199.193.127.57.16clouds.com) |
2021-11-05 03:10:25 +0100 | gzj | (~GZJ0X@199.193.127.57.16clouds.com) (Client Quit) |
2021-11-05 03:11:13 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-11-05 03:11:13 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-11-05 03:11:13 +0100 | wroathe | (~wroathe@user/wroathe) |
2021-11-05 03:15:15 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
2021-11-05 03:15:42 +0100 | SeungheonOh | (~Thunderbi@2600:1700:5168:1400:43da:65d:86ef:94ff) (Quit: SeungheonOh) |
2021-11-05 03:16:03 +0100 | SeungheonOh | (~Thunderbi@2600:1700:5168:1400:43da:65d:86ef:94ff) |
2021-11-05 03:16:10 +0100 | SeungheonOh | (~Thunderbi@2600:1700:5168:1400:43da:65d:86ef:94ff) (Client Quit) |
2021-11-05 03:21:30 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Read error: Connection reset by peer) |
2021-11-05 03:21:42 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2021-11-05 03:26:08 +0100 | Inst_ | (~Inst@2601:6c4:4080:3f80:1d49:739d:9075:d5df) (Remote host closed the connection) |
2021-11-05 03:26:15 +0100 | nitrix | (~nitrix@user/nitrix) (Quit: Genius is one percent inspiration and ninety-nine percent perspiration) |
2021-11-05 03:26:24 +0100 | Inst_ | (~Inst@2601:6c4:4080:3f80:1d49:739d:9075:d5df) |
2021-11-05 03:26:29 +0100 | nitrix_ | (~nitrix@user/nitrix) |
2021-11-05 03:26:53 +0100 | nitrix_ | nitrix |
2021-11-05 03:27:34 +0100 | Athas | (athas@sigkill.dk) (Ping timeout: 260 seconds) |
2021-11-05 03:27:36 +0100 | Athas_ | (athas@2a01:7c8:aaac:1cf:431c:d49e:2f86:91cc) |
2021-11-05 03:29:18 +0100 | deni_ | (~deni@user/deni) |
2021-11-05 03:29:39 +0100 | deni | (~deni@user/deni) (Read error: Connection reset by peer) |
2021-11-05 03:29:54 +0100 | kilolympus | (~kilolympu@185.65.135.177) (Ping timeout: 260 seconds) |
2021-11-05 03:29:58 +0100 | alphabeta | (~kilolympu@185.65.135.177) |
2021-11-05 03:30:57 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-11-05 03:35:02 +0100 | micro | (~micro@user/micro) (Ping timeout: 260 seconds) |
2021-11-05 03:35:37 +0100 | fizzsegfaultbuzz | (~segfaultf@135-180-0-138.static.sonic.net) (Remote host closed the connection) |
2021-11-05 03:35:39 +0100 | res0nat0r8 | (~Fletch@dia.whatbox.ca) (Quit: Ping timeout (120 seconds)) |
2021-11-05 03:35:48 +0100 | micro | (~micro@user/micro) |
2021-11-05 03:35:56 +0100 | fizzsegfaultbuzz | (~segfaultf@135-180-0-138.static.sonic.net) |
2021-11-05 03:35:58 +0100 | tomjaguarpaw | (~tom@li367-225.members.linode.com) (Ping timeout: 260 seconds) |
2021-11-05 03:36:12 +0100 | res0nat0r8 | (~Fletch@dia.whatbox.ca) |
2021-11-05 03:36:21 +0100 | nshepperd24 | (~nshepperd@li364-218.members.linode.com) |
2021-11-05 03:37:14 +0100 | erisco_ | (~erisco@d24-57-249-233.home.cgocable.net) |
2021-11-05 03:37:22 +0100 | nshepperd2 | (~nshepperd@li364-218.members.linode.com) (Ping timeout: 260 seconds) |
2021-11-05 03:37:22 +0100 | nshepperd24 | nshepperd2 |
2021-11-05 03:37:26 +0100 | segfaultbuzzfizz | (~segfaultf@135-180-0-138.static.sonic.net) |
2021-11-05 03:38:18 +0100 | energizer | (~energizer@user/energizer) (Ping timeout: 260 seconds) |
2021-11-05 03:39:26 +0100 | yinghua_ | (~yinghua@2800:2121:1400:900:c56e:96f4:75cd:50ac) (Quit: Leaving) |
2021-11-05 03:39:49 +0100 | res0nat0r8 | (~Fletch@dia.whatbox.ca) (Client Quit) |
2021-11-05 03:40:01 +0100 | res0nat0r8 | (~Fletch@dia.whatbox.ca) |
2021-11-05 03:41:05 +0100 | tomjaguarpaw | (~tom@li367-225.members.linode.com) |
2021-11-05 03:41:06 +0100 | erisco | (~erisco@d24-57-249-233.home.cgocable.net) (Ping timeout: 260 seconds) |
2021-11-05 03:41:06 +0100 | erisco_ | erisco |
2021-11-05 03:41:20 +0100 | fizzsegfaultbuzz | (~segfaultf@135-180-0-138.static.sonic.net) (Ping timeout: 268 seconds) |
2021-11-05 03:41:26 +0100 | slack1256 | (~slack1256@191.125.227.82) (Ping timeout: 256 seconds) |
2021-11-05 03:42:57 +0100 | energizer | (~energizer@user/energizer) |
2021-11-05 03:46:52 +0100 | xff0x | (~xff0x@2001:1a81:5236:1e00:dda8:eac2:4d01:562e) (Ping timeout: 268 seconds) |
2021-11-05 03:48:40 +0100 | xff0x | (~xff0x@2001:1a81:5273:3700:28cd:42fe:3b9:2637) |
2021-11-05 03:52:35 +0100 | Guest4193 | (~Guest41@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: Client closed) |
2021-11-05 03:52:47 +0100 | NieDzejkob | (~quassel@212.87.13.106) (Quit: No Ping reply in 180 seconds.) |
2021-11-05 03:53:25 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2) |
2021-11-05 03:54:48 +0100 | mmhat | (~mmh@55d4a8dc.access.ecotel.net) (Quit: WeeChat 3.3) |
2021-11-05 03:58:52 +0100 | yrlnry | (~mjd@pool-74-109-22-90.phlapa.fios.verizon.net) |
2021-11-05 04:00:08 +0100 | shapr | (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 256 seconds) |
2021-11-05 04:16:32 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) |
2021-11-05 04:19:06 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-05 04:21:50 +0100 | Guest41 | (~Guest41@eth-west-pareq2-46-193-4-100.wb.wifirst.net) |
2021-11-05 04:35:48 +0100 | alx741 | (~alx741@181.196.68.55) (Quit: alx741) |
2021-11-05 04:39:14 +0100 | <dsal> | I just tried using Control.Monad.Trans.List and found out it doesn't work. That seems bad. |
2021-11-05 04:39:48 +0100 | segfaultbuzzfizz | (~segfaultf@135-180-0-138.static.sonic.net) (Ping timeout: 256 seconds) |
2021-11-05 04:40:08 +0100 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2021-11-05 04:40:08 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2021-11-05 04:40:08 +0100 | finn_elija | FinnElija |
2021-11-05 04:40:11 +0100 | mbuf | (~Shakthi@136.185.75.83) |
2021-11-05 04:41:51 +0100 | <Axman6> | it's that basically the domain of pipes, conduit, streaming etc.? |
2021-11-05 04:44:56 +0100 | wroathe | (~wroathe@user/wroathe) (Quit: Lost terminal) |
2021-11-05 04:47:50 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2021-11-05 04:48:08 +0100 | ozzloy_ | (~ozzloy@ozzloy.lifeafterking.org) |
2021-11-05 04:48:15 +0100 | lbseale | (~lbseale@user/ep1ctetus) (Quit: Leaving) |
2021-11-05 04:48:32 +0100 | pgib | (~textual@173.38.117.89) |
2021-11-05 04:48:45 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-11-05 04:49:42 +0100 | <ozzloy_> | hi |
2021-11-05 04:50:07 +0100 | <Axman6> | Hello! |
2021-11-05 04:50:37 +0100 | <ozzloy_> | i am learning haskell and am stuck on a homework |
2021-11-05 04:50:52 +0100 | <Axman6> | great, what's the problem, and what have you tried? |
2021-11-05 04:51:13 +0100 | <Axman6> | Given that it's homework, we won't give you the answers, but we'll help you find them yourself |
2021-11-05 04:51:46 +0100 | <Axman6> | also, if you have code to share, please use... |
2021-11-05 04:51:53 +0100 | <Axman6> | @where paste |
2021-11-05 04:51:53 +0100 | <lambdabot> | Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com |
2021-11-05 04:53:01 +0100 | Guest99 | (~Guest99@pool-100-8-45-127.nwrknj.fios.verizon.net) |
2021-11-05 04:53:29 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
2021-11-05 04:54:27 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2021-11-05 04:54:36 +0100 | <ozzloy_> | here https://paste.tomsmeding.com/3nengedR line 66 - 85 show the error for listTree, which starts on line 88 |
2021-11-05 04:54:58 +0100 | <ozzloy_> | i'm not sure why the type is mismatched |
2021-11-05 04:56:22 +0100 | <ozzloy_> | why are j and l Tree a type? |
2021-11-05 04:56:51 +0100 | <ozzloy_> | am i reading that correctly? are they tree types on line 91? |
2021-11-05 04:57:27 +0100 | dsamperi | (~dsamperi@2603-7000-3b42-5400-218f-2d4f-d1df-c673.res6.spectrum.com) (Quit: Konversation terminated!) |
2021-11-05 04:57:44 +0100 | <Axman6> | so, you have the type foldTree :: (b -> a -> b -> b) -> b -> Tree a -> b |
2021-11-05 04:58:02 +0100 | <Axman6> | you want your result to be [a], which means that b must be [a] |
2021-11-05 04:58:11 +0100 | <ozzloy_> | yes |
2021-11-05 04:58:15 +0100 | <ozzloy_> | so far so good? |
2021-11-05 04:58:26 +0100 | <Axman6> | so that gives us: foldTree :: ([a] -> a -> [a] -> [a]) -> [a] -> Tree a -> [a] |
2021-11-05 04:58:51 +0100 | <ozzloy_> | yeah, that makes sense |
2021-11-05 04:58:58 +0100 | <Axman6> | so that means the function you give to foldTree needs to have the type ([a] -> a -> [a] -> [a]) |
2021-11-05 04:59:29 +0100 | <Axman6> | but you have applied listTree to the first and third arguments, which means l and r must be Tree a |
2021-11-05 04:59:32 +0100 | <Axman6> | which is not [a] |
2021-11-05 04:59:35 +0100 | <ozzloy_> | oooh |
2021-11-05 04:59:45 +0100 | <ozzloy_> | right |
2021-11-05 04:59:49 +0100 | <ozzloy_> | ok, so then... |
2021-11-05 04:59:55 +0100 | <Axman6> | you should be able to sort it out from there I hope :) |
2021-11-05 05:00:56 +0100 | <ozzloy_> | lol, maybe? |
2021-11-05 05:01:09 +0100 | <ozzloy_> | i will have to come back to this, shoot. thanks for your help so far |
2021-11-05 05:01:47 +0100 | <Axman6> | basically, your f is trying to do more than it needs to |
2021-11-05 05:01:52 +0100 | <monochrom> | If you use foldTree you are not supposed to use your own recursion on Tree anymore. |
2021-11-05 05:02:11 +0100 | <Axman6> | yeah foldTree abstracts recursion for you |
2021-11-05 05:06:12 +0100 | <Axman6> | ozzloy_: for minTree, can you assume that the tree is ordered? |
2021-11-05 05:08:28 +0100 | <monochrom> | I think no. |
2021-11-05 05:10:19 +0100 | <Axman6> | that makes me sad |
2021-11-05 05:10:30 +0100 | <Axman6> | ... this isn't your course by any chance is it monochrom? :P |
2021-11-05 05:10:41 +0100 | <monochrom> | Nah. |
2021-11-05 05:11:33 +0100 | <Axman6> | I forgot to give me usual warning about whoever runs the course likely being in here... |
2021-11-05 05:11:34 +0100 | <monochrom> | minTree would be no fun and a poor exercise for foldTree if a binary search tree were guaranteed. :) |
2021-11-05 05:14:16 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-11-05 05:18:12 +0100 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Quit: WeeChat 3.3) |
2021-11-05 05:19:22 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
2021-11-05 05:26:12 +0100 | kupi | (uid212005@id-212005.hampstead.irccloud.com) |
2021-11-05 05:27:06 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds) |
2021-11-05 05:29:01 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-11-05 05:34:58 +0100 | slowButPresent | (~slowButPr@user/slowbutpresent) (Quit: leaving) |
2021-11-05 05:38:44 +0100 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 256 seconds) |
2021-11-05 05:39:35 +0100 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2021-11-05 05:55:50 +0100 | Inst_ | Inst |
2021-11-05 05:55:58 +0100 | segfaultbuzzfizz | (~segfaultf@135-180-0-138.static.sonic.net) |
2021-11-05 06:08:42 +0100 | shidima | (~shidima@84-104-108-90.cable.dynamic.v4.ziggo.nl) |
2021-11-05 06:09:42 +0100 | betelgeuse | (~betelgeus@94-225-47-8.access.telenet.be) (Quit: The Lounge - https://thelounge.chat) |
2021-11-05 06:11:22 +0100 | betelgeuse | (~betelgeus@94-225-47-8.access.telenet.be) |
2021-11-05 06:11:30 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) |
2021-11-05 06:13:38 +0100 | danso | (~danso@23-233-111-52.cpe.pppoe.ca) (Ping timeout: 268 seconds) |
2021-11-05 06:13:54 +0100 | <ozzloy_> | so f x y z = f x ++ y ++ f z ? |
2021-11-05 06:14:01 +0100 | <ozzloy_> | i'm back |
2021-11-05 06:14:25 +0100 | <ozzloy_> | or ... |
2021-11-05 06:15:49 +0100 | <ozzloy_> | no |
2021-11-05 06:15:59 +0100 | <ozzloy_> | f j k l = j ++ [k] ++ l |
2021-11-05 06:16:24 +0100 | <ozzloy_> | yep |
2021-11-05 06:16:33 +0100 | <ozzloy_> | monochrom, no, tree1 is not sorted |
2021-11-05 06:17:52 +0100 | <ozzloy_> | yeah, that works. ok so now the rose |
2021-11-05 06:18:02 +0100 | <ozzloy_> | something thorny something something |
2021-11-05 06:20:19 +0100 | <ozzloy_> | what does this notation mean: |
2021-11-05 06:20:34 +0100 | <ozzloy_> | data Rose a = Node a [Rose a] |
2021-11-05 06:20:34 +0100 | <ozzloy_> | ? |
2021-11-05 06:21:12 +0100 | <ozzloy_> | it looks like typedef from c or type from ocaml |
2021-11-05 06:22:47 +0100 | <pavonia> | It's the definition of a new type Rose that takes one type parameter a, and has one value constructor Node :: a -> [Rose a] -> Rose a |
2021-11-05 06:22:57 +0100 | <ozzloy_> | there's a type called Rose which consists of a Node with 2 things in it. the two things are a thing of type a and a list of things of type "Rose a"? |
2021-11-05 06:23:20 +0100 | <ozzloy_> | pavonia, thanks |
2021-11-05 06:24:00 +0100 | <ozzloy_> | is "deriving (Show, Eq)" something like mixins in ruby, or implementing interfaces in java? |
2021-11-05 06:24:40 +0100 | <ozzloy_> | oh, so Node is more like a function? |
2021-11-05 06:24:46 +0100 | <ozzloy_> | that takes 2 arguments? |
2021-11-05 06:25:58 +0100 | Adran | (adran@botters/adran) (Ping timeout: 252 seconds) |
2021-11-05 06:26:06 +0100 | <pavonia> | Yes, but it can also be used in patterns to decompose values |
2021-11-05 06:28:01 +0100 | Adran | (~adran@botters/adran) |
2021-11-05 06:36:55 +0100 | segfaultbuzzfizz | (~segfaultf@135-180-0-138.static.sonic.net) (Remote host closed the connection) |
2021-11-05 06:41:27 +0100 | Guest41 | (~Guest41@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: Client closed) |
2021-11-05 06:43:14 +0100 | <ozzloy_> | i see |
2021-11-05 06:43:20 +0100 | <ozzloy_> | thanks |
2021-11-05 06:47:45 +0100 | <ozzloy_> | what about the syntax: minTree :: (Ord a) => Tree a -> Maybe a |
2021-11-05 06:48:58 +0100 | <ozzloy_> | the "(Ord a)" part. does that mean a is some type that is orderable? |
2021-11-05 06:49:37 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-05 06:59:41 +0100 | <c_wraith> | ozzloy_: yes, that's exactly what it means. |
2021-11-05 07:01:33 +0100 | <ozzloy_> | c_wraith, thanks |
2021-11-05 07:06:08 +0100 | <ski> | <ozzloy_> is "deriving (Show, Eq)" something like mixins in ruby, or implementing interfaces in java? |
2021-11-05 07:06:11 +0100 | <ski> | neither, really |
2021-11-05 07:06:24 +0100 | <ozzloy_> | ski, oh? |
2021-11-05 07:06:26 +0100 | <energizer> | `newtype Fix f = Fix (f (Fix f))` looks kinda magical. can that be written in a less powerful language than haskell? |
2021-11-05 07:07:00 +0100 | <energizer> | i'm still trying to wrap my head around it, maybe porting to a dumber language i know better will help |
2021-11-05 07:07:00 +0100 | <ski> | `deriving' auto-generates instances for type classes (only for a few select, built-in, type classes) |
2021-11-05 07:07:36 +0100 | <ski> | writing an instance of a type for a type class can be more closely compared to implementing an interface in Java .. but there's still important differences |
2021-11-05 07:07:51 +0100 | aleator | (~aleator@188-67-216-232.bb.dnainternet.fi) |
2021-11-05 07:08:09 +0100 | <c_wraith> | energizer: doing exactly what Fix does requires higher-kinded types. So you could do it in Scala, but I can't imagine that makes it easier to understand. |
2021-11-05 07:08:13 +0100 | <ski> | methods of a type class are not bundled with values of the type in question. they're "freestanding" |
2021-11-05 07:08:59 +0100 | <c_wraith> | energizer: but essentially, Fix nests a type infinitely. Fix Maybe is roughly Maybe (Maybe (Maybe (Maybe (Maybe ... |
2021-11-05 07:09:25 +0100 | <c_wraith> | Except with some extra wrappers that prevent the type from being visibly infinite |
2021-11-05 07:09:30 +0100 | <ski> | this means that you can easily do e.g. "binary" methods (like `compare :: a -> a -> Ordering' in `Ord a') or "clone" methods. and that you can have type class methods that don't take an input value of the type in question, at all ! (like `minBound,maxBound :: a' in `Bounded a') |
2021-11-05 07:10:06 +0100 | <energizer> | c_wraith: is `unfix Fix Maybe` the same as `Fix Maybe`? |
2021-11-05 07:10:20 +0100 | <remexre> | is it just me, or does it seem like parsing the . in haskell is really hard at this point? |
2021-11-05 07:10:31 +0100 | <ski> | energizer : `unfix' ? |
2021-11-05 07:10:51 +0100 | <c_wraith> | remexre: it's not just you. RecordDotSyntax took something ridiculous and made it even worse |
2021-11-05 07:10:56 +0100 | <energizer> | nfix :: Fix f -> f (Fix f) |
2021-11-05 07:10:56 +0100 | <energizer> | unfix (Fix f) = f |
2021-11-05 07:11:15 +0100 | <remexre> | at least they didn't do the worst proposal of all worlds, |
2021-11-05 07:11:25 +0100 | <remexre> | foo<<<bar ==> getField @"bar" foo |
2021-11-05 07:11:49 +0100 | <energizer> | s/nfix/unfix/ |
2021-11-05 07:12:01 +0100 | <c_wraith> | energizer: you're mixing type and value levels |
2021-11-05 07:12:13 +0100 | <ski> | ozzloy_ : i suppose you could perhaps liken a parametric instance like e.g. `instance Eq a => Eq [a] where ...' to a mixin .. automatically deriving an instance of `Eq' for `[a]', as soon as you have an instance of `Eq' for `a'. so, since we know `Eq Integer' holds, we also know `Eq [Integer]',`Eq [[Integer]]',&c. holds |
2021-11-05 07:12:27 +0100 | <ski> | (s/parametric/parametric and conditional/) |
2021-11-05 07:12:43 +0100 | <c_wraith> | energizer: unfix operates at the value level. Maybe operates at the type level. Fix is punned to be the name of a value and type |
2021-11-05 07:12:54 +0100 | <energizer> | oh |
2021-11-05 07:13:06 +0100 | <ski> | energizer : do you mean `unfix x', where `x :: Fix Maybe' ? |
2021-11-05 07:13:14 +0100 | <energizer> | ski: yes |
2021-11-05 07:13:23 +0100 | <energizer> | er |
2021-11-05 07:13:31 +0100 | <ski> | well, then `unfix x :: Maybe (Fix Maybe)' |
2021-11-05 07:13:46 +0100 | <energizer> | ok |
2021-11-05 07:13:51 +0100 | <ski> | so `x' and `unfix x' doesn't even have the same type |
2021-11-05 07:14:17 +0100 | <ski> | (and so it doesn't make sense to ask whether they are the same. your question was ill-typed) |
2021-11-05 07:14:50 +0100 | <ski> | energizer : would you like to submit a patch to your question, perhaps ? |
2021-11-05 07:14:58 +0100 | <c_wraith> | energizer: it's worth looking at some values of type Fix Maybe. You've got (Fix Nothing), (Fix (Just (Fix Nothing))), (Fix (Just (Fix (Just (Fix Nothing))))), etc |
2021-11-05 07:15:40 +0100 | <c_wraith> | infinite type doesn't imply infinite value! |
2021-11-05 07:17:23 +0100 | <ski> | % :t fix (Fix . Just) |
2021-11-05 07:17:23 +0100 | <yahb> | ski: Fix Maybe |
2021-11-05 07:17:37 +0100 | <c_wraith> | that one is infinite, yes. :) |
2021-11-05 07:18:38 +0100 | ski | glances at ozzloy_ |
2021-11-05 07:22:42 +0100 | Guest41 | (~Guest41@eth-west-pareq2-46-193-4-100.wb.wifirst.net) |
2021-11-05 07:23:54 +0100 | <Guest41> | I'm wondering if GHC is a single-pass compiler, my guess is no because it wouldn't know the function arity for example so it can't tell how many arguments to parse for each function? |
2021-11-05 07:23:57 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
2021-11-05 07:25:14 +0100 | <c_wraith> | The only languages anyone cares about that use single-pass compilers are C and C++. |
2021-11-05 07:26:25 +0100 | <Guest41> | oh, I was writing a parser for a toy language of mine and I thought "omg I need more than one pass, my grammar must be too complicated" x) |
2021-11-05 07:27:37 +0100 | brainfreeze | (~brainfree@2a03:1b20:4:f011::20d) (Remote host closed the connection) |
2021-11-05 07:28:17 +0100 | zaquest | (~notzaques@5.128.210.178) (Quit: Leaving) |
2021-11-05 07:30:34 +0100 | <Axman6> | > iterate (Fix . Just) (Fix Nothing) |
2021-11-05 07:30:35 +0100 | <lambdabot> | error: |
2021-11-05 07:30:35 +0100 | <lambdabot> | • Data constructor not in scope: Fix :: Maybe a -> a |
2021-11-05 07:30:35 +0100 | <lambdabot> | • Perhaps you meant one of these: |
2021-11-05 07:30:39 +0100 | <ski> | Guest41 : the language has no notion of arity. every function takes exactly one argument |
2021-11-05 07:30:58 +0100 | <ski> | try yahb |
2021-11-05 07:31:03 +0100 | <c_wraith> | still, there are fixity declarations, which make Haskell's grammar fully context-sensitive... |
2021-11-05 07:31:13 +0100 | <Axman6> | c_wraith: well, it's also one of the selling points of Go. not worth a whole lot though |
2021-11-05 07:31:23 +0100 | <Axman6> | % iterate (Fix . Just) (Fix Nothing) |
2021-11-05 07:31:28 +0100 | <yahb> | Axman6: [Fix Nothing,Fix (Just (Fix Nothing)),Fix (Just (Fix (Just (Fix Nothing)))),Fix (Just (Fix (Just (Fix (Just (Fix Nothing)))))),Fix (Just (Fix (Just (Fix (Just (Fix (Just (Fix Nothing)))))))),Fix (Just (Fix (Just (Fix (Just (Fix (Just (Fix (Just (Fix Nothing)))))))))),Fix (Just (Fix (Just (Fix (Just (Fix (Just (Fix (Just (Fix (Just (Fix Nothing)))))))))))),Fix (Just (Fix (Just (Fix (Just (Fix (Just |
2021-11-05 07:31:59 +0100 | <Axman6> | ^^^ good software maintenence advice, that gets worse as you go on. Fix Nothing |
2021-11-05 07:32:19 +0100 | zaquest | (~notzaques@5.128.210.178) |
2021-11-05 07:33:10 +0100 | <Guest41> | ski: so how do know how many applications to expect? do you just rely on the type system? |
2021-11-05 07:33:21 +0100 | <ski> | huh ? |
2021-11-05 07:33:39 +0100 | <ski> | what do you mean, "how many applications to expect?" ? |
2021-11-05 07:33:47 +0100 | <Guest41> | no no I'm not making sense, nevermind! I'm better of reading the grammar haha |
2021-11-05 07:33:51 +0100 | <Axman6> | all functions take exactly one argument Guest41 |
2021-11-05 07:34:00 +0100 | <awpr> | > True 4 |
2021-11-05 07:34:02 +0100 | <lambdabot> | error: |
2021-11-05 07:34:02 +0100 | <lambdabot> | • Couldn't match expected type ‘t0 -> t’ with actual type ‘Bool’ |
2021-11-05 07:34:02 +0100 | <lambdabot> | • The function ‘True’ is applied to one argument, |
2021-11-05 07:34:03 +0100 | <Axman6> | this is always true |
2021-11-05 07:34:05 +0100 | <awpr> | this is valid syntax. |
2021-11-05 07:34:09 +0100 | <ski> | you get as many as you get. then you (the type checker) check that it wasn't too many |
2021-11-05 07:34:47 +0100 | <Guest41> | yes but they can return functions that take more arguments and you need to know when you stop taking arguments either because you reached an `a` or there are no more arguments |
2021-11-05 07:34:49 +0100 | <Axman6> | so figuring out the arity of Haskell functions is very east, in fact it can be implemented as const 1 |
2021-11-05 07:34:50 +0100 | <awpr> | the parser doesn't care whether the thing you applied is a function; it's unambiguously a function application either way, and it's up to the type-checker to say whether it makes sense to apply that |
2021-11-05 07:35:18 +0100 | <Axman6> | that's exactly what the type of a value tells you |
2021-11-05 07:35:21 +0100 | <ski> | Guest41 : you only need to know whether each particular application is valid or not. the type checker checks that |
2021-11-05 07:35:43 +0100 | <ski> | none of this "you need to know when you stop taking arguments" nonsense |
2021-11-05 07:35:45 +0100 | Inst | (~Inst@2601:6c4:4080:3f80:1d49:739d:9075:d5df) (Remote host closed the connection) |
2021-11-05 07:35:52 +0100 | kupi | (uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2021-11-05 07:36:03 +0100 | Inst | (~Inst@2601:6c4:4080:3f80:1d49:739d:9075:d5df) |
2021-11-05 07:36:38 +0100 | <Axman6> | > 7 "Hello" True -- Valid syntax, but the type system doesn't know how to make a function from 7 (but that is also possible) |
2021-11-05 07:36:39 +0100 | <lambdabot> | error: |
2021-11-05 07:36:39 +0100 | <lambdabot> | • No instance for (Num ([Char] -> Bool -> ())) |
2021-11-05 07:36:39 +0100 | <lambdabot> | arising from a use of ‘e_177’ |
2021-11-05 07:36:50 +0100 | <Guest41> | aha, so I'm approaching this the wrong way |
2021-11-05 07:37:41 +0100 | <Axman6> | in fact, you cannot know how many arguments something will ultimately take until you type check it. |
2021-11-05 07:37:51 +0100 | <Guest41> | ski: where can I find haskell's (or any lambda calculus for that matter) grammar, alongside an AST. I'm too scared to open GHC code |
2021-11-05 07:38:00 +0100 | <Axman6> | > printf "A string %s" "Hello" |
2021-11-05 07:38:02 +0100 | <lambdabot> | error: |
2021-11-05 07:38:02 +0100 | <lambdabot> | • Ambiguous type variable ‘a0’ arising from a use of ‘show_M625737254890... |
2021-11-05 07:38:02 +0100 | <lambdabot> | prevents the constraint ‘(Show a0)’ from being solved. |
2021-11-05 07:38:10 +0100 | <Axman6> | > printf "A string %s" "Hello" :: String |
2021-11-05 07:38:12 +0100 | <lambdabot> | "A string Hello" |
2021-11-05 07:38:38 +0100 | <Axman6> | > printf "A string %s, an integer %i" "Hello" (7 :: Integer) :: String |
2021-11-05 07:38:39 +0100 | <lambdabot> | "A string Hello, an integer 7" |
2021-11-05 07:38:58 +0100 | <Axman6> | :t printf |
2021-11-05 07:38:59 +0100 | <lambdabot> | PrintfType r => String -> r |
2021-11-05 07:39:18 +0100 | <ski> | @let instance Num a => Num (rho -> a) where (f + g) r = f r + g r; (f - g) r = f r - g r; (f * g) r = f r * g r; negate f r = negate (f r); abs f r = abs (f r); signum f r = signum (f r); fromInteger n r = fromInteger n |
2021-11-05 07:39:20 +0100 | <lambdabot> | Defined. |
2021-11-05 07:39:22 +0100 | <ski> | @let instance Fractional a => Fractional (rho -> a) where (f / g) r = f r / g r; recip f r = recip (f r); fromRational x r = fromRational x |
2021-11-05 07:39:23 +0100 | <lambdabot> | Defined. |
2021-11-05 07:39:30 +0100 | <Axman6> | what the compiler _does_ know is how many arguments something has been _applied_ to |
2021-11-05 07:39:39 +0100 | <ski> | > 7 "Hello" True -- now the type system accepts it |
2021-11-05 07:39:40 +0100 | <lambdabot> | 7 |
2021-11-05 07:41:02 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-11-05 07:41:26 +0100 | <Guest41> | so your code can influence the type system's decision too ... |
2021-11-05 07:41:43 +0100 | <ski> | M ∷= x |
2021-11-05 07:41:46 +0100 | <ski> | │ λ x . M |
2021-11-05 07:41:47 +0100 | <Axman6> | well of course, you can define new types |
2021-11-05 07:41:48 +0100 | <ski> | │ M M |
2021-11-05 07:41:56 +0100 | <ski> | Guest41 : lambda-calculus grammar ^ |
2021-11-05 07:42:21 +0100 | <Axman6> | Haskell is just sexy syntax for that |
2021-11-05 07:42:29 +0100 | <ski> | (abstract syntax, so no production for brackets. add that, if you want concrete syntax) |
2021-11-05 07:45:25 +0100 | <ski> | > [(id^2 - id + 1) n | n <- [-3 .. 3]] |
2021-11-05 07:45:26 +0100 | <lambdabot> | [13,7,3,1,1,3,7] |
2021-11-05 07:45:59 +0100 | Inst | (~Inst@2601:6c4:4080:3f80:1d49:739d:9075:d5df) (Ping timeout: 264 seconds) |
2021-11-05 07:46:06 +0100 | <ski> | > [[(fst^2 - fst*snd + snd^2) (m,n) | n <- [-2 .. 2]] | m <- [-2 .. 2]] |
2021-11-05 07:46:08 +0100 | <lambdabot> | [[4,3,4,7,12],[3,1,1,3,7],[4,1,0,1,4],[7,3,1,1,3],[12,7,4,3,4]] |
2021-11-05 07:46:56 +0100 | <int-e> | . o O ( not confusing at all ) |
2021-11-05 07:47:39 +0100 | <ski> | > [(cos^2 + sin^2) (n*pi/4) | n <- [-2 .. 2]] |
2021-11-05 07:47:41 +0100 | <lambdabot> | [1.0,1.0,1.0,1.0,1.0] |
2021-11-05 07:48:21 +0100 | <int-e> | > let _1 = const; _2 = flip const in (_1^2 - _1*_2 + _2^2) <$> [-2..2] <*> [-2..2] |
2021-11-05 07:48:22 +0100 | <lambdabot> | [4,3,4,7,12,3,1,1,3,7,4,1,0,1,4,7,3,1,1,3,12,7,4,3,4] |
2021-11-05 07:48:43 +0100 | <ski> | yeap :) |
2021-11-05 07:50:10 +0100 | <ski> | anyway, this is "just" "pointwise definition" of the arithmetical operations, in terms of the corresponding arithmetical operations on the result of the functions |
2021-11-05 07:50:44 +0100 | <ski> | a more amusing example of something similar may be |
2021-11-05 07:51:21 +0100 | <ski> | > sortBy (comparing length <> compare) (words "The quick brown fox jumps over the lazy dog") |
2021-11-05 07:51:23 +0100 | <lambdabot> | ["The","dog","fox","the","lazy","over","brown","jumps","quick"] |
2021-11-05 07:51:49 +0100 | doyougnu | (~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) |
2021-11-05 07:51:52 +0100 | <ski> | (primarily sort by length, secondarily by ordinary (lexicographic) order on the words (of the same length)) |
2021-11-05 07:52:02 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-11-05 07:53:59 +0100 | <ski> | this is using the "pointwise" definition of `(<>)', like `(f <> g) r = f r <> g r'. this way, `comparing length <> compare' amounts to `\x y -> comparing length x y <> compare x y'. so now we're down to `<>' on `Ordering' .. which happens to be defined in the correct way to pull off this lexicographic ordering ("primarly order by this, secondarily by that") |
2021-11-05 07:54:57 +0100 | <ski> | @where monoids |
2021-11-05 07:54:57 +0100 | <lambdabot> | comment on "Monoids? In my programming language?" by Cale in 2008 (or 2009 ?) at <http://www.reddit.com/r/programming/comments/7cf4r/monoids_in_my_programming_language/c06adnx> about a use of ` |
2021-11-05 07:54:57 +0100 | <lambdabot> | instance Monoid a => Monoid (rho -> a)' |
2021-11-05 07:55:32 +0100 | <ozzloy_> | ski, thanks! |
2021-11-05 07:55:39 +0100 | Guest41 | (~Guest41@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: Client closed) |
2021-11-05 07:56:01 +0100 | shidima | (~shidima@84-104-108-90.cable.dynamic.v4.ziggo.nl) (Ping timeout: 268 seconds) |
2021-11-05 07:56:10 +0100 | <ski> | (although, nowadays `(<>)' is in `Semigroup', which is a (new) superclass of `Monoid'. also, that post uses the name `(++)', rather than `(<>)'/`mappend') |
2021-11-05 07:57:06 +0100 | <ski> | anyway, the definition here would be |
2021-11-05 07:57:25 +0100 | <ski> | (<>) :: Ordering -> Ordering -> Ordering |
2021-11-05 07:57:37 +0100 | <ski> | LT <> _ = LT |
2021-11-05 07:57:42 +0100 | <ski> | GT <> _ = GT |
2021-11-05 07:57:51 +0100 | <ski> | EQ <> o = o |
2021-11-05 07:58:18 +0100 | <ski> | so, only in case the comparision to the left turned out to be equal, do we look at (force) the comparision to the right |
2021-11-05 08:00:29 +0100 | <ozzloy_> | i am now stuck on sumRose https://paste.tomsmeding.com/caDJTMZT and maybe on foldRose |
2021-11-05 08:00:43 +0100 | <ozzloy_> | line 88 gives the error starting at line 93 |
2021-11-05 08:01:23 +0100 | <int-e> | :t (+) |
2021-11-05 08:01:24 +0100 | <lambdabot> | Num a => a -> a -> a |
2021-11-05 08:01:57 +0100 | <int-e> | ozzloy_: you need to use (+) instead of + there |
2021-11-05 08:02:18 +0100 | <int-e> | :t foldr + ?n ?r |
2021-11-05 08:02:19 +0100 | <lambdabot> | (Num b, Foldable t1, ?n::t2 -> (a -> b -> b) -> b -> t1 a -> b, ?r::t2) => (a -> b -> b) -> b -> t1 a -> b |
2021-11-05 08:02:32 +0100 | <ozzloy_> | oh |
2021-11-05 08:02:33 +0100 | <int-e> | :t foldr (+) ?n ?r |
2021-11-05 08:02:34 +0100 | <lambdabot> | (Foldable t, Num b, ?n::b, ?r::t b) => b |
2021-11-05 08:02:37 +0100 | <ozzloy_> | oooh |
2021-11-05 08:02:49 +0100 | <ski> | `foldr + n r' parses as `foldr + (n r)' |
2021-11-05 08:02:50 +0100 | <int-e> | unfortunately the former has a type so the error is attributed to line 88 instead |
2021-11-05 08:03:08 +0100 | <ozzloy_> | got it |
2021-11-05 08:03:17 +0100 | <ozzloy_> | so my definition of foldRose is good? |
2021-11-05 08:03:29 +0100 | <ozzloy_> | line 84 |
2021-11-05 08:03:32 +0100 | <ski> | yes |
2021-11-05 08:03:33 +0100 | <int-e> | @undef |
2021-11-05 08:03:33 +0100 | <lambdabot> | Undefined. |
2021-11-05 08:03:36 +0100 | <int-e> | :t foldr + ?n ?r |
2021-11-05 08:03:37 +0100 | <lambdabot> | (Num ((a -> b -> b) -> b -> t1 a -> b), Foldable t1, ?n::t2 -> (a -> b -> b) -> b -> t1 a -> b, ?r::t2) => (a -> b -> b) -> b -> t1 a -> b |
2021-11-05 08:03:40 +0100 | <ozzloy_> | thanks |
2021-11-05 08:06:01 +0100 | ubert | (~Thunderbi@p548c9652.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
2021-11-05 08:07:20 +0100 | Athas_ | Athas |
2021-11-05 08:08:21 +0100 | pony | (sid524992@smol/hors) |
2021-11-05 08:12:15 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) (Remote host closed the connection) |
2021-11-05 08:12:52 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) |
2021-11-05 08:12:54 +0100 | michalz | (~michalz@185.246.204.40) |
2021-11-05 08:17:58 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
2021-11-05 08:19:23 +0100 | typedfern_ | (~Typedfern@171.red-83-51-60.dynamicip.rima-tde.net) (Remote host closed the connection) |
2021-11-05 08:27:11 +0100 | fendor | (~fendor@178.115.33.172.wireless.dyn.drei.com) |
2021-11-05 08:28:37 +0100 | kenran | (~kenran@b2b-37-24-119-190.unitymedia.biz) |
2021-11-05 08:32:06 +0100 | mbuf | (~Shakthi@136.185.75.83) (Quit: Leaving) |
2021-11-05 08:32:33 +0100 | <sshine> | I'm trying to write a servant-client type for an API that has one endpoint that lets me search for two different kinds of things (company names, company details). if this were req/wreq, I made a data SearchQuery = SearchX X | SearchY Y, and made it a ToJSON instance. |
2021-11-05 08:34:23 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:76a9:f65d:22e8:2e7b) |
2021-11-05 08:34:59 +0100 | <sshine> | but so far I've just had the search function return an IO Value. I'm not sure if I should create a union type for the kinds of things that it can find... I guess I'll just have to disambiguate later, depending on the context. |
2021-11-05 08:35:49 +0100 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) |
2021-11-05 08:36:04 +0100 | danso | (~danso@23-233-111-52.cpe.pppoe.ca) |
2021-11-05 08:36:58 +0100 | son0p- | (~ff@181.136.122.143) (Ping timeout: 260 seconds) |
2021-11-05 08:37:09 +0100 | chomwitt | (~chomwitt@2a02:587:dc02:9f00:12c3:7bff:fe6d:d374) |
2021-11-05 08:37:21 +0100 | trcc | (~trcc@2-104-60-169-cable.dk.customer.tdc.net) |
2021-11-05 08:42:20 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2021-11-05 08:42:30 +0100 | trcc | (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Ping timeout: 260 seconds) |
2021-11-05 08:43:08 +0100 | trcc | (~trcc@2-104-60-169-cable.dk.customer.tdc.net) |
2021-11-05 08:47:39 +0100 | <sshine> | type MyApi = "blah" :> ReqBody '[JSON] SearchQuery :> Post '[JSON] [SearchResult] -- it becomes a little generic, but at least symmetric. |
2021-11-05 08:49:55 +0100 | vysn | (~vysn@user/vysn) |
2021-11-05 08:53:16 +0100 | shidima | (~shidima@46.44.183.25) |
2021-11-05 08:57:12 +0100 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Quit: WeeChat 3.3) |
2021-11-05 09:00:27 +0100 | shidima | (~shidima@46.44.183.25) (Remote host closed the connection) |
2021-11-05 09:05:14 +0100 | hendursa1 | (~weechat@user/hendursaga) |
2021-11-05 09:08:45 +0100 | hendursaga | (~weechat@user/hendursaga) (Ping timeout: 276 seconds) |
2021-11-05 09:11:57 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-11-05 09:12:45 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2021-11-05 09:15:56 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) |
2021-11-05 09:16:19 +0100 | chele | (~chele@user/chele) |
2021-11-05 09:17:27 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-11-05 09:17:52 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-11-05 09:19:30 +0100 | hendursa1 | (~weechat@user/hendursaga) (Remote host closed the connection) |
2021-11-05 09:19:59 +0100 | hendursa1 | (~weechat@user/hendursaga) |
2021-11-05 09:20:14 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-05 09:21:05 +0100 | vpan | (~0@212.117.1.172) |
2021-11-05 09:25:32 +0100 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) |
2021-11-05 09:30:11 +0100 | max22- | (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) |
2021-11-05 09:37:07 +0100 | kuribas | (~user@ptr-25vy0i9zmp0qcl8wvlj.18120a2.ip6.access.telenet.be) |
2021-11-05 09:41:28 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
2021-11-05 09:42:16 +0100 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) |
2021-11-05 09:42:53 +0100 | MoC | (~moc@user/moc) |
2021-11-05 09:43:53 +0100 | pop3 | (~pop3@user/pop3) (Remote host closed the connection) |
2021-11-05 09:45:01 +0100 | pop3 | (~pop3@user/pop3) |
2021-11-05 09:45:50 +0100 | phma | (~phma@host-67-44-209-61.hnremote.net) (Read error: Connection reset by peer) |
2021-11-05 09:46:09 +0100 | mc47 | (~mc47@xmonad/TheMC47) |
2021-11-05 09:46:17 +0100 | phma | (~phma@host-67-44-209-61.hnremote.net) |
2021-11-05 09:47:50 +0100 | Kaipi | (~Kaiepi@156.34.44.192) |
2021-11-05 09:48:18 +0100 | hongminhee | (sid295@id-295.tinside.irccloud.com) (Ping timeout: 260 seconds) |
2021-11-05 09:48:28 +0100 | hongminhee | (sid295@id-295.tinside.irccloud.com) |
2021-11-05 09:49:07 +0100 | alzgh | (~alzgh@user/alzgh) |
2021-11-05 09:50:38 +0100 | Kaiepi | (~Kaiepi@156.34.44.192) (Ping timeout: 260 seconds) |
2021-11-05 09:52:30 +0100 | cosimone | (~user@93-44-186-19.ip98.fastwebnet.it) |
2021-11-05 09:53:19 +0100 | Guest4382 | (~cat@h-98-128-128-173.A351.priv.bahnhof.se) (Remote host closed the connection) |
2021-11-05 09:54:22 +0100 | Guest99 | (~Guest99@pool-100-8-45-127.nwrknj.fios.verizon.net) (Ping timeout: 256 seconds) |
2021-11-05 09:55:01 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
2021-11-05 09:55:46 +0100 | acidjnk_new | (~acidjnk@p200300d0c726704784feaa35b47dd204.dip0.t-ipconnect.de) |
2021-11-05 09:57:45 +0100 | __monty__ | (~toonn@user/toonn) |
2021-11-05 09:58:33 +0100 | Kaipi | (~Kaiepi@156.34.44.192) (Quit: Leaving) |
2021-11-05 09:58:58 +0100 | Kaiepi | (~Kaiepi@156.34.44.192) |
2021-11-05 10:00:06 +0100 | shiraeeshi[m] | (~shiraeesh@2001:470:69fc:105::1:77) (Quit: You have been kicked for being idle) |
2021-11-05 10:00:14 +0100 | hsek[m] | (~hsekmatri@2001:470:69fc:105::d18f) (Quit: You have been kicked for being idle) |
2021-11-05 10:00:42 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-05 10:09:53 +0100 | polux | (~polux@51.15.169.172) (Quit: The Lounge - https://thelounge.github.io) |
2021-11-05 10:10:22 +0100 | polux | (~polux@51.15.169.172) |
2021-11-05 10:12:27 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-11-05 10:14:11 +0100 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 264 seconds) |
2021-11-05 10:16:14 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) (Remote host closed the connection) |
2021-11-05 10:17:00 +0100 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) |
2021-11-05 10:17:14 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds) |
2021-11-05 10:17:42 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) |
2021-11-05 10:20:18 +0100 | hightower2 | (~hightower@213.147.110.20) (Ping timeout: 268 seconds) |
2021-11-05 10:22:07 +0100 | Kaiepi | (~Kaiepi@156.34.44.192) (Read error: Connection reset by peer) |
2021-11-05 10:22:10 +0100 | _xor | (~xor@72.49.199.147) (Ping timeout: 268 seconds) |
2021-11-05 10:22:19 +0100 | Kaiepi | (~Kaiepi@156.34.44.192) |
2021-11-05 10:22:30 +0100 | juhp | (~juhp@128.106.188.220) (Remote host closed the connection) |
2021-11-05 10:22:46 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
2021-11-05 10:23:50 +0100 | ski | (~ski@remote12.chalmers.se) (Ping timeout: 260 seconds) |
2021-11-05 10:24:03 +0100 | ski | (~ski@remote12.chalmers.se) |
2021-11-05 10:24:05 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 264 seconds) |
2021-11-05 10:25:46 +0100 | notzmv | (~zmv@user/notzmv) |
2021-11-05 10:26:15 +0100 | shriekingnoise | (~shrieking@186.137.144.80) (Quit: Quit) |
2021-11-05 10:27:56 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) |
2021-11-05 10:28:11 +0100 | df | (~ben@justworks.xyz) (Ping timeout: 246 seconds) |
2021-11-05 10:28:19 +0100 | ubert | (~Thunderbi@p200300ecdf4fcafee019fddc82d0353e.dip0.t-ipconnect.de) |
2021-11-05 10:28:28 +0100 | df | (~ben@justworks.xyz) |
2021-11-05 10:28:41 +0100 | cfricke | (~cfricke@user/cfricke) |
2021-11-05 10:33:39 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2021-11-05 10:34:16 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2021-11-05 10:35:26 +0100 | ubert | (~Thunderbi@p200300ecdf4fcafee019fddc82d0353e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2021-11-05 10:41:30 +0100 | mestre | (~mestre@191.177.175.57) (Quit: Lost terminal) |
2021-11-05 10:44:44 +0100 | fendor | (~fendor@178.115.33.172.wireless.dyn.drei.com) (Remote host closed the connection) |
2021-11-05 10:45:18 +0100 | johnny_sitar | (~artur@078088015209.bialystok.vectranet.pl) |
2021-11-05 10:46:50 +0100 | Codaraxis | (~Codaraxis@user/codaraxis) (Ping timeout: 268 seconds) |
2021-11-05 10:52:01 +0100 | ubert | (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) |
2021-11-05 11:00:43 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2021-11-05 11:01:08 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2021-11-05 11:05:47 +0100 | _xor | (~xor@72.49.199.147) |
2021-11-05 11:06:30 +0100 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Quit: WeeChat 3.3) |
2021-11-05 11:11:39 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
2021-11-05 11:12:00 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) (Remote host closed the connection) |
2021-11-05 11:12:39 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) |
2021-11-05 11:13:37 +0100 | dsrt^ | (~dsrt@wsip-98-188-242-6.mc.at.cox.net) (Remote host closed the connection) |
2021-11-05 11:14:02 +0100 | nschoe | (~quassel@2a01:e0a:8e:a190:161c:6858:2d6b:fc1f) |
2021-11-05 11:15:42 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) (Remote host closed the connection) |
2021-11-05 11:16:01 +0100 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) |
2021-11-05 11:16:16 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) |
2021-11-05 11:19:46 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-11-05 11:20:42 +0100 | johnny_sitar | (~artur@078088015209.bialystok.vectranet.pl) (Ping timeout: 260 seconds) |
2021-11-05 11:21:23 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) (Ping timeout: 264 seconds) |
2021-11-05 11:24:16 +0100 | mmhat | (~mmh@55d4b909.access.ecotel.net) |
2021-11-05 11:24:25 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 256 seconds) |
2021-11-05 11:28:08 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
2021-11-05 11:28:39 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-11-05 11:29:31 +0100 | desantra | (~skykanin@user/skykanin) |
2021-11-05 11:33:37 +0100 | madjestic | (~madjestic@88-159-247-120.fixed.kpn.net) |
2021-11-05 11:36:29 +0100 | shapr | (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
2021-11-05 11:37:10 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:e9ee:3bd5:4988:8148) |
2021-11-05 11:41:51 +0100 | phma | (~phma@host-67-44-209-61.hnremote.net) (Read error: Connection reset by peer) |
2021-11-05 11:42:31 +0100 | phma | (~phma@host-67-44-208-102.hnremote.net) |
2021-11-05 11:43:11 +0100 | timCF | (~timCF@200-149-20-81.sta.estpak.ee) |
2021-11-05 11:45:55 +0100 | <timCF> | Hello! In my program I do need Generic instance of UTCTime (to derive Generic for my own types which are using UTCTime), but seems like standard UTCTime does not export all constructors, and GHC refuses to stock derive Generic |
2021-11-05 11:46:03 +0100 | <timCF> | What's the best option there? |
2021-11-05 11:46:18 +0100 | <timCF> | Write orphan Generic instance for UTCTime by hand? |
2021-11-05 11:47:09 +0100 | <timCF> | Not sure it's also possible because of missing constructors in scope |
2021-11-05 11:47:50 +0100 | msmhnd^ | (~msmhnd@wsip-98-188-242-6.mc.at.cox.net) |
2021-11-05 11:48:19 +0100 | pop3 | (~pop3@user/pop3) (Remote host closed the connection) |
2021-11-05 11:49:59 +0100 | whatsupdoc | (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2021-11-05 11:50:25 +0100 | pop3 | (~pop3@user/pop3) |
2021-11-05 11:52:13 +0100 | <[exa]> | timCF: can you derive from Data ? both DiffTime and Day (in UTCTime) seem to have Data |
2021-11-05 11:52:49 +0100 | <timCF> | [exa]: you mean it's possible to use Data to manually write orphan Generic instance? |
2021-11-05 11:53:00 +0100 | <maerwald> | timCF: duplicate the type internally and then unsafeCoerce to make sure your functions always take the original UTCTime only |
2021-11-05 11:54:09 +0100 | <maerwald> | that's the only way to really get around non-exported constructors |
2021-11-05 11:55:16 +0100 | <timCF> | maerwald: ouch |
2021-11-05 11:55:25 +0100 | <timCF> | maerwald: but thanks for reply! |
2021-11-05 11:55:33 +0100 | Cajun | (~Cajun@user/cajun) |
2021-11-05 11:57:13 +0100 | <Hecate> | hi |
2021-11-05 11:57:22 +0100 | <geekosaur> | œ |
2021-11-05 11:59:36 +0100 | chomwitt | (~chomwitt@2a02:587:dc02:9f00:12c3:7bff:fe6d:d374) (Ping timeout: 268 seconds) |
2021-11-05 12:00:53 +0100 | alx741 | (~alx741@181.196.68.55) |
2021-11-05 12:02:04 +0100 | jumper149 | (~jumper149@80.240.31.34) |
2021-11-05 12:02:46 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) |
2021-11-05 12:07:56 +0100 | johnny_sitar | (~artur@ip-89-161-55-249.tel.tkb.net.pl) |
2021-11-05 12:08:03 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
2021-11-05 12:12:23 +0100 | johnny_sitar | (~artur@ip-89-161-55-249.tel.tkb.net.pl) (Ping timeout: 264 seconds) |
2021-11-05 12:16:38 +0100 | pop3 | (~pop3@user/pop3) (Remote host closed the connection) |
2021-11-05 12:17:26 +0100 | pop3 | (~pop3@user/pop3) |
2021-11-05 12:23:15 +0100 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Quit: WeeChat 3.3) |
2021-11-05 12:25:11 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) |
2021-11-05 12:28:34 +0100 | johnny_sitar | (~artur@user-5-173-132-197.play-internet.pl) |
2021-11-05 12:29:57 +0100 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
2021-11-05 12:40:23 +0100 | Lycurgus | (~juan@98.4.112.204) |
2021-11-05 12:40:33 +0100 | boxscape_ | (~boxscape_@134.171.69.87) |
2021-11-05 12:40:45 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) (Remote host closed the connection) |
2021-11-05 12:41:22 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) |
2021-11-05 12:41:46 +0100 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Quit: WeeChat 3.3) |
2021-11-05 12:42:38 +0100 | kammao | (~kammao@188.27.128.253) |
2021-11-05 12:43:52 +0100 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) |
2021-11-05 12:44:10 +0100 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Client Quit) |
2021-11-05 12:44:42 +0100 | <kammao> | Hello! Any of you guys used Heroku with a haskell app? I'm having quite a bit of trouble with the Procfile.. Heroku does not find the directory that I give it therefore the app crashes even if it's deployed |
2021-11-05 12:44:54 +0100 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) |
2021-11-05 12:45:21 +0100 | desantra | (~skykanin@user/skykanin) (Quit: WeeChat 3.3) |
2021-11-05 12:45:43 +0100 | <Lycurgus> | you are not the first person to come here with that complaint |
2021-11-05 12:46:25 +0100 | mmhat | (~mmh@55d4b909.access.ecotel.net) (Quit: WeeChat 3.3) |
2021-11-05 12:46:30 +0100 | <Lycurgus> | and this would not be the first time I responded that heroku doesn't really do hs, but that may have changed by now, your complaint notwithstanding |
2021-11-05 12:48:10 +0100 | <kammao> | Ahh..That's encouraging!! I used the Yesod Framework and followed their guide to deploy this so I thought It would be a clear process and maybe I was missing something |
2021-11-05 12:48:19 +0100 | nschoe | (~quassel@2a01:e0a:8e:a190:161c:6858:2d6b:fc1f) (Ping timeout: 268 seconds) |
2021-11-05 12:48:59 +0100 | whez | (sid470288@id-470288.lymington.irccloud.com) |
2021-11-05 12:50:47 +0100 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 268 seconds) |
2021-11-05 12:50:54 +0100 | <Lycurgus> | prolly snippets and toy apps will work |
2021-11-05 12:54:27 +0100 | <kammao> | It's just a simple blog.. I couldn't really figure out in the Procfile `web: ./dist/bin/{app}/{app} -p $PORT` how I should approach the path differently? Or how can I check that I'm using a wrong path since most of the websites that I've seen use that specific location.. |
2021-11-05 12:54:29 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) (Remote host closed the connection) |
2021-11-05 12:57:14 +0100 | sudden | (~cat@h-98-128-128-173.A351.priv.bahnhof.se) |
2021-11-05 12:57:35 +0100 | sudden | (~cat@h-98-128-128-173.A351.priv.bahnhof.se) (Changing host) |
2021-11-05 12:57:35 +0100 | sudden | (~cat@user/sudden) |
2021-11-05 12:57:35 +0100 | gentauro | (~gentauro@user/gentauro) (Read error: Connection reset by peer) |
2021-11-05 12:58:52 +0100 | <Lycurgus> | by coming to know what path the stuff ur using requires |
2021-11-05 13:03:21 +0100 | gentauro | (~gentauro@user/gentauro) |
2021-11-05 13:06:06 +0100 | Lycurgus | (~juan@98.4.112.204) (Quit: Exeunt) |
2021-11-05 13:10:47 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-11-05 13:12:27 +0100 | aleator | (~aleator@188-67-216-232.bb.dnainternet.fi) (Ping timeout: 260 seconds) |
2021-11-05 13:13:05 +0100 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) |
2021-11-05 13:14:53 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-11-05 13:15:34 +0100 | v01d4lph4 | (~v01d4lph4@user/v01d4lph4) |
2021-11-05 13:19:42 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
2021-11-05 13:19:48 +0100 | kenran | (~kenran@b2b-37-24-119-190.unitymedia.biz) (Quit: WeeChat info:version) |
2021-11-05 13:20:38 +0100 | v01d4lph4 | (~v01d4lph4@user/v01d4lph4) (Ping timeout: 260 seconds) |
2021-11-05 13:23:16 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2021-11-05 13:23:34 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2021-11-05 13:23:35 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2021-11-05 13:23:54 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-05 13:24:32 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2021-11-05 13:27:11 +0100 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) |
2021-11-05 13:28:05 +0100 | werner100 | (~werner100@2601:2c2:400:4440:dc41:dccb:7773:558f) |
2021-11-05 13:30:13 +0100 | yrlnry | (~mjd@pool-74-109-22-90.phlapa.fios.verizon.net) (Ping timeout: 256 seconds) |
2021-11-05 13:30:14 +0100 | xsperry | (~xs@user/xsperry) () |
2021-11-05 13:30:20 +0100 | <werner100> | Hi everyone, yesterday I was reviewing the libraries available for handling command line options and arguments. I have experimented with cmdargs and it seems to do what I need. Which library are you guys using? |
2021-11-05 13:30:38 +0100 | kammao | (~kammao@188.27.128.253) (Quit: Client closed) |
2021-11-05 13:30:47 +0100 | <geekosaur> | optparse=applicative is common |
2021-11-05 13:30:58 +0100 | <geekosaur> | s/=/-/ |
2021-11-05 13:33:21 +0100 | chomwitt | (~chomwitt@ppp-2-85-245-90.home.otenet.gr) |
2021-11-05 13:35:00 +0100 | shriekingnoise | (~shrieking@186.137.144.80) |
2021-11-05 13:36:16 +0100 | <maerwald> | I just started using cmdargs too |
2021-11-05 13:36:25 +0100 | <maerwald> | optparse-applicative is powerful, but not very declarative |
2021-11-05 13:36:33 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds) |
2021-11-05 13:37:50 +0100 | <maerwald> | but cmdargs has oddities: invalid configuration crashes at runtime instead of raising a type error |
2021-11-05 13:38:11 +0100 | <maerwald> | not hard to test, but yeah |
2021-11-05 13:39:03 +0100 | <maerwald> | exampe https://paste.tomsmeding.com/qf6oVZZP |
2021-11-05 13:42:08 +0100 | <maerwald> | you also can't have mandatory flags |
2021-11-05 13:43:15 +0100 | doyougnu | (~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 256 seconds) |
2021-11-05 13:43:21 +0100 | <werner100> | I found it handy but was looking for hooks to connect custom argument handling functions. It does a nice job for help, version, and when options are missing or incomplete. But it seems for processing other options and particularly commands/modes you need to tool your own parser. |
2021-11-05 13:44:07 +0100 | slowButPresent | (~slowButPr@user/slowbutpresent) |
2021-11-05 13:44:13 +0100 | <werner100> | Today, I'm going to look at System.Console.ArgParser. |
2021-11-05 13:44:14 +0100 | Lycurgus | (~juan@98.4.112.204) |
2021-11-05 13:45:14 +0100 | <Lycurgus> | shouldn't the topic be adjusted? |
2021-11-05 13:45:50 +0100 | <geekosaur> | for the logs being down? I hope that'll be fixed soon, the kerfuffle seems to be over |
2021-11-05 13:46:02 +0100 | <Lycurgus> | "Archived" added before Public would do it |
2021-11-05 13:46:09 +0100 | <Lycurgus> | they're not down |
2021-11-05 13:46:47 +0100 | <Lycurgus> | they are turned off |
2021-11-05 13:46:55 +0100 | <geekosaur> | right |
2021-11-05 13:47:12 +0100 | <Lycurgus> | who are the parties? |
2021-11-05 13:47:51 +0100 | zincy | (~tom@2a00:23c8:970c:4801:e02d:7bbd:5337:7d58) |
2021-11-05 13:48:17 +0100 | <Lycurgus> | (contend in the GDPR issue) |
2021-11-05 13:48:19 +0100 | <zincy> | Why do so many coders love regular expressions for validation? |
2021-11-05 13:48:21 +0100 | <Lycurgus> | *contending |
2021-11-05 13:48:49 +0100 | <geekosaur> | zincy, because it's what they know about |
2021-11-05 13:48:54 +0100 | <Lycurgus> | zincy because of the power as a solution to string recognition and processing? |
2021-11-05 13:48:58 +0100 | sudden | (~cat@user/sudden) (Quit: leaving) |
2021-11-05 13:49:01 +0100 | <geekosaur> | (not necessarily know, just know about) |
2021-11-05 13:49:17 +0100 | <geekosaur> | and they're afraid of parsers |
2021-11-05 13:49:19 +0100 | <maerwald> | zincy: because they are to be prefeerred over parsers whenever possible |
2021-11-05 13:49:21 +0100 | <maerwald> | geekosaur: no |
2021-11-05 13:49:33 +0100 | <maerwald> | parsers carry more semantic power |
2021-11-05 13:49:47 +0100 | <Lycurgus> | also the ubiquity of use for that purpose |
2021-11-05 13:49:54 +0100 | <werner100> | ...and regex have been around for long time. |
2021-11-05 13:50:29 +0100 | <zincy> | I just can't imagine when a regex is the right approach |
2021-11-05 13:50:49 +0100 | <Lycurgus> | how long have you been programming? |
2021-11-05 13:50:57 +0100 | <[exa]> | zincy: regexes can't be easily decompiled and validated -> they get away with pretty much anything |
2021-11-05 13:51:04 +0100 | <werner100> | I think for string handling it's simple enough. Been programming since the seventies... |
2021-11-05 13:51:11 +0100 | <[exa]> | s/decompiled/read humanely/ |
2021-11-05 13:51:20 +0100 | <zincy> | Lycurgus: 7 years |
2021-11-05 13:51:33 +0100 | geekosaur | wishes more regex engines supported, and more people used, /x |
2021-11-05 13:51:41 +0100 | <werner100> | Machine language -> Basic -> Pascal -> C -> Scheme -> Java -> Haskell |
2021-11-05 13:52:05 +0100 | <maerwald> | zincy: when your input is a regular language, then you use a regex |
2021-11-05 13:52:20 +0100 | <zincy> | So its okay to use regexes to say validate this text is uppercase? |
2021-11-05 13:52:28 +0100 | <zincy> | I just assumed regex = evil |
2021-11-05 13:52:37 +0100 | <maerwald> | that's just an odd narrative sometimes spread here |
2021-11-05 13:52:40 +0100 | <zincy> | But maybe in that case parsing would be too heavyweight |
2021-11-05 13:52:42 +0100 | rokoe | (~roskoe@79-68-160-163.dynamic.dsl.as9105.com) |
2021-11-05 13:52:44 +0100 | <[exa]> | one thing on the regexes that's uncanny is how people assume that matching is going to be roughly O(1) in the size of the input because "it can be compiled to a DFA right?" [padme_meme_the_dfa_is_small_right.jpg] |
2021-11-05 13:52:47 +0100 | <Lycurgus> | right i don't think people today appreciate the extent to which assembly was used for systems and even applications before the 80s |
2021-11-05 13:53:02 +0100 | <[exa]> | there have been literal DoSes exploiting that |
2021-11-05 13:53:09 +0100 | <maerwald> | the problem is people using regexes for input that a regex can't possibly correctly validate |
2021-11-05 13:53:12 +0100 | <maerwald> | that depends on the input |
2021-11-05 13:53:42 +0100 | <zincy> | But modern implementations of regex can parse non-regular stuff |
2021-11-05 13:53:43 +0100 | <werner100> | Correct |
2021-11-05 13:53:45 +0100 | <maerwald> | if you use monadic parser combinators for everything, you're doing something wrong too (in terms of containing complexity) |
2021-11-05 13:53:54 +0100 | <zincy> | oh ok |
2021-11-05 13:54:01 +0100 | <maerwald> | zincy: yeah, those I avoid |
2021-11-05 13:54:22 +0100 | yrlnry | (~mjd@pool-100-11-2-80.phlapa.fios.verizon.net) |
2021-11-05 13:55:03 +0100 | <zincy> | So the rule is regex is fine when it comes to regular languages because it gets nasty on non-regular with recursive regex |
2021-11-05 13:55:38 +0100 | <Lycurgus> | so 1 solution to the GDPR issue would be to just block the log in the EU or where the GDPR is in effect |
2021-11-05 13:56:31 +0100 | <maerwald> | Lycurgus: uhm.. |
2021-11-05 13:56:39 +0100 | <maerwald> | I don't think so |
2021-11-05 13:56:49 +0100 | <geekosaur> | one problem there being that it's hosted in the EU |
2021-11-05 13:56:52 +0100 | <Lycurgus> | scrubbing nicks would address the specific issue |
2021-11-05 13:57:04 +0100 | <Lycurgus> | why is that a problem? |
2021-11-05 13:57:35 +0100 | <maerwald> | as per GDPR I even need the ability to email an advertisement company and tell them I want all my cookies deleted from all their backends, not just my incoming ads |
2021-11-05 13:57:56 +0100 | <maerwald> | no one knows how to enforce that |
2021-11-05 13:57:58 +0100 | <maerwald> | but yeah |
2021-11-05 13:58:02 +0100 | <Lycurgus> | that can only be true for ops in the GDPR jurisdiction |
2021-11-05 13:58:37 +0100 | max22- | (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Ping timeout: 268 seconds) |
2021-11-05 13:58:56 +0100 | <Lycurgus> | stuff being done from yurope but not allowed there is fairly well established in tradition |
2021-11-05 14:00:15 +0100 | <lortabac> | my main problem with regexes is the obfuscated and error-prone syntax |
2021-11-05 14:00:28 +0100 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 268 seconds) |
2021-11-05 14:01:10 +0100 | <Lycurgus> | they front the sound and proven automata |
2021-11-05 14:02:45 +0100 | <zincy> | lortabac: So would you avoid regexes entirely? |
2021-11-05 14:02:47 +0100 | <maerwald> | lortabac: I've probably written more bugs with monadic parser combinators |
2021-11-05 14:03:32 +0100 | <lortabac> | I use regexes when I need them, but I wish they had a more human-friendly syntax |
2021-11-05 14:03:56 +0100 | <geekosaur> | lortabac, there are regex extensions that help with the syntax. /x is one of them. raku extends the syntax to make a reasonable — and reasonably readable — parser syntax |
2021-11-05 14:04:25 +0100 | <geekosaur> | (/x allows whitespace and comments, which helps a lot with readability) |
2021-11-05 14:04:57 +0100 | <boxscape_> | Lycurgus rather than not offering the logs in the EU, I think you'd have to not log any user from the EU, no? |
2021-11-05 14:05:32 +0100 | <Lycurgus> | right that might be easier too |
2021-11-05 14:05:49 +0100 | <boxscape_> | it sounds harder to me, but also necessary |
2021-11-05 14:06:09 +0100 | <boxscape_> | (that is if logging like this is subject to GDPR to begin with) |
2021-11-05 14:06:30 +0100 | <zincy> | Doesnt the "rule of least power" imply that one should use regexes for trivial cases of parsing and validation vs a monadic parser |
2021-11-05 14:06:31 +0100 | <zincy> | https://en.wikipedia.org/wiki/Rule_of_least_power |
2021-11-05 14:06:41 +0100 | sprout_ | (~quassel@2a02:a467:ccd6:1:49b2:5c3a:dea0:5ca1) |
2021-11-05 14:06:44 +0100 | <lortabac> | geekosaur: it still looks needlessly obfuscated to me, even in raku |
2021-11-05 14:07:01 +0100 | <lortabac> | I'd prefer something like regex-applicative |
2021-11-05 14:08:51 +0100 | sudden | (~cat@h-98-128-128-173.A351.priv.bahnhof.se) |
2021-11-05 14:09:00 +0100 | sudden | (~cat@h-98-128-128-173.A351.priv.bahnhof.se) (Changing host) |
2021-11-05 14:09:00 +0100 | sudden | (~cat@user/sudden) |
2021-11-05 14:09:56 +0100 | <lortabac> | zincy: sounds reasonable |
2021-11-05 14:10:20 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:5495:68b3:d03c:732e) (Ping timeout: 268 seconds) |
2021-11-05 14:11:56 +0100 | nschoe | (~quassel@2a01:e0a:8e:a190:c6dc:21f9:bc16:feb3) |
2021-11-05 14:13:26 +0100 | <Lycurgus> | the power of regexes seems well matched to the complexity of the target ops to me |
2021-11-05 14:14:30 +0100 | Lycurgus | but I'm just an ol fart, don't pay me no mind |
2021-11-05 14:14:38 +0100 | Lycurgus | (~juan@98.4.112.204) (Quit: Exeunt) |
2021-11-05 14:16:09 +0100 | kupi | (uid212005@id-212005.hampstead.irccloud.com) |
2021-11-05 14:16:10 +0100 | werner100 | (~werner100@2601:2c2:400:4440:dc41:dccb:7773:558f) (Ping timeout: 256 seconds) |
2021-11-05 14:23:20 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2021-11-05 14:25:07 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
2021-11-05 14:27:43 +0100 | <zincy> | So in a dynamic language is can it be a good idea to first parse a JSON request body and then validate individual fields which are strings with regexes? |
2021-11-05 14:27:45 +0100 | phma | (~phma@host-67-44-208-102.hnremote.net) (Read error: Connection reset by peer) |
2021-11-05 14:28:21 +0100 | <zincy> | I've mostly used Haskell so don't know how parsing/validation is best done in mainstream languages? |
2021-11-05 14:29:09 +0100 | slack1256 | (~slack1256@191.126.227.82) |
2021-11-05 14:31:01 +0100 | <maerwald> | you can do the same in haskell |
2021-11-05 14:31:29 +0100 | jess | (~jess@libera/staff/jess) () |
2021-11-05 14:34:06 +0100 | bastelfreak | (~bastelfre@basteles-bastelknecht.bastelfreak.org) (Quit: WeeChat 3.3) |
2021-11-05 14:36:42 +0100 | johnny_sitar | (~artur@user-5-173-132-197.play-internet.pl) (Ping timeout: 260 seconds) |
2021-11-05 14:38:13 +0100 | yrlnry | (~mjd@pool-100-11-2-80.phlapa.fios.verizon.net) (Ping timeout: 256 seconds) |
2021-11-05 14:40:08 +0100 | bastelfreak | (~bastelfre@basteles-bastelknecht.bastelfreak.org) |
2021-11-05 14:41:22 +0100 | acidjnk_new | (~acidjnk@p200300d0c726704784feaa35b47dd204.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2021-11-05 14:41:38 +0100 | fryguybob | (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) |
2021-11-05 14:45:59 +0100 | juhp | (~juhp@128.106.188.220) |
2021-11-05 14:47:16 +0100 | jespada | (~jespada@190.7.36.46) |
2021-11-05 14:47:56 +0100 | Sgeo | (~Sgeo@user/sgeo) |
2021-11-05 14:52:28 +0100 | syd | (~syd@cpc91646-hart11-2-0-cust432.11-3.cable.virginm.net) |
2021-11-05 14:54:36 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-05 14:55:16 +0100 | <zincy> | maewald: So no fundamental difference between langauges? |
2021-11-05 14:56:26 +0100 | <geekosaur> | there are several ways to do parsing, they're all language-agnostic |
2021-11-05 14:57:11 +0100 | <geekosaur> | some of them may be easier in some languages than others, but parsing is parsing regardless of implementation language |
2021-11-05 14:57:13 +0100 | brschkv | (~jbrusch@185.223.145.18) |
2021-11-05 14:57:30 +0100 | <zincy> | Ah ok, need to do more reading then |
2021-11-05 14:58:22 +0100 | <zincy> | I guess I am confused because the parsing and validation is usually done in one step with in Haskell |
2021-11-05 14:59:11 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-11-05 14:59:25 +0100 | <geekosaur> | that's more or less because parser combinators come more naturally in Haskell. but we still have happy which implements a yacc-like LALR(1) (or more recently GLR) parser for Haskell |
2021-11-05 15:00:01 +0100 | <geekosaur> | and parser combinators make it easier to combine the parsing and validation. they do not require it, however |
2021-11-05 15:01:23 +0100 | yrlnry | (~mjd@2603:301d:775:0:3569:8496:7f44:52c9) |
2021-11-05 15:01:29 +0100 | pera | (~pera@user/pera) |
2021-11-05 15:05:05 +0100 | <maerwald> | there are parser combinators for C |
2021-11-05 15:05:10 +0100 | <maerwald> | it's nothing unique to haskell anymore |
2021-11-05 15:05:49 +0100 | <maerwald> | zincy: you can parse json strings into Aeson Value and then do the validation/extraction manually |
2021-11-05 15:06:20 +0100 | <syd> | there's a blog article "Parse, don't validate" which you might find interesting in that regard. |
2021-11-05 15:06:48 +0100 | <Hecate> | yes it's lovely :p |
2021-11-05 15:06:59 +0100 | yrlnry | (~mjd@2603:301d:775:0:3569:8496:7f44:52c9) (Ping timeout: 264 seconds) |
2021-11-05 15:07:41 +0100 | <maerwald> | zincy: one advantage might be that it's easier to support multiple schemas ad-hoc that way |
2021-11-05 15:09:02 +0100 | <maerwald> | here's a real-world example where the aeson parser just produces Value and then you have a manual extraction: https://github.com/input-output-hk/cardano-node/blob/d95ef21062a50acf8f35f1f5d94f8a8a70f7510b/card… |
2021-11-05 15:12:08 +0100 | <zincy> | Thanks syd and Maerwald |
2021-11-05 15:13:11 +0100 | <zincy> | I guess there is nothing magical about combining parsing and validation in one step |
2021-11-05 15:13:43 +0100 | <zincy> | And sometimes you will definitely want to separate them if you have semantic validation which cannot be easily expressed in a type |
2021-11-05 15:14:02 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-05 15:15:34 +0100 | max22- | (~maxime@2a01cb088335980058acad91096e7c9d.ipv6.abo.wanadoo.fr) |
2021-11-05 15:17:10 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-11-05 15:17:35 +0100 | <zincy> | Getting past the intermediate stage of coding seems to be more about unlearning than learning |
2021-11-05 15:17:51 +0100 | <zincy> | Going from absolutes to it depends |
2021-11-05 15:18:06 +0100 | <maerwald> | zincy: well, if you parse unrestricted into `Value`, then I think that's a DoS angle in fact |
2021-11-05 15:18:12 +0100 | <geekosaur> | it's about learning flexibility instead of expecting strict rules |
2021-11-05 15:18:24 +0100 | <zincy> | yeah |
2021-11-05 15:20:10 +0100 | <maerwald> | but I think most derived aeson parsers are DoS prone |
2021-11-05 15:20:26 +0100 | <zincy> | Denial of service? |
2021-11-05 15:21:51 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
2021-11-05 15:23:36 +0100 | vpan | (~0@212.117.1.172) (Quit: Leaving.) |
2021-11-05 15:26:10 +0100 | yrlnry | (~mjd@pool-74-109-22-90.phlapa.fios.verizon.net) |
2021-11-05 15:30:33 +0100 | jumper149 | (~jumper149@80.240.31.34) (Quit: WeeChat 3.3) |
2021-11-05 15:39:22 +0100 | <merijn> | zincy: In the sense that malicious input can take down your parser |
2021-11-05 15:41:34 +0100 | v01d4lph4 | (~v01d4lph4@106.215.93.204) |
2021-11-05 15:41:34 +0100 | v01d4lph4 | (~v01d4lph4@106.215.93.204) (Changing host) |
2021-11-05 15:41:34 +0100 | v01d4lph4 | (~v01d4lph4@user/v01d4lph4) |
2021-11-05 15:44:01 +0100 | <zincy> | ah right |
2021-11-05 15:44:02 +0100 | jespada | (~jespada@190.7.36.46) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-11-05 15:48:56 +0100 | Guest99 | (~Guest99@pool-100-8-45-127.nwrknj.fios.verizon.net) |
2021-11-05 15:49:44 +0100 | pgib | (~textual@173.38.117.89) (Quit: 00 PC LOAD LETTER) |
2021-11-05 15:53:47 +0100 | trcc | (~trcc@2-104-60-169-cable.dk.customer.tdc.net) () |
2021-11-05 15:54:33 +0100 | chomwitt | (~chomwitt@ppp-2-85-245-90.home.otenet.gr) (Ping timeout: 268 seconds) |
2021-11-05 15:54:46 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:76a9:f65d:22e8:2e7b) (Quit: WeeChat 2.8) |
2021-11-05 15:56:20 +0100 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.3) |
2021-11-05 15:58:22 +0100 | slack1256 | (~slack1256@191.126.227.82) (Ping timeout: 260 seconds) |
2021-11-05 16:01:06 +0100 | slack1256 | (~slack1256@191.125.227.82) |
2021-11-05 16:01:39 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2021-11-05 16:01:47 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:8d15:54ac:ed5f:296c) |
2021-11-05 16:02:56 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2021-11-05 16:07:33 +0100 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Quit: WeeChat 3.3) |
2021-11-05 16:10:28 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2021-11-05 16:10:54 +0100 | SeungheonOh | (~Thunderbi@2600:1700:5168:1400:2f4a:5df3:56f6:843a) |
2021-11-05 16:10:54 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2021-11-05 16:11:03 +0100 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) |
2021-11-05 16:15:51 +0100 | chomwitt | (~chomwitt@2a02:587:dc02:9f00:12c3:7bff:fe6d:d374) |
2021-11-05 16:17:28 +0100 | f-a | (f2a@f2a.jujube.ircnow.org) |
2021-11-05 16:19:40 +0100 | <f-a> | hello. I am writing a simple «select language» menu. As now I am keeping all langs in a list and rotate it when the user presses ← →, and pick _head on ⏎. It works, but I wonder: is there a more appropriate data type? |
2021-11-05 16:20:01 +0100 | <merijn> | Sounds like a Zipper :> |
2021-11-05 16:20:09 +0100 | <yrlnry> | I was going to say sounds like a zipper. |
2021-11-05 16:20:11 +0100 | <f-a> | mhh let us see if microlens packs it |
2021-11-05 16:21:09 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-11-05 16:21:33 +0100 | <yrlnry> | The original (1997) Huet paper discusses list zippers specifically, and wikipedia has that as an example: https://en.wikipedia.org/wiki/Zipper_(data_structure)#Example:_Bidirectional_list_traversal |
2021-11-05 16:22:39 +0100 | <f-a> | thansk |
2021-11-05 16:22:40 +0100 | <f-a> | *thanks |
2021-11-05 16:25:48 +0100 | kupi | (uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2021-11-05 16:26:38 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:8d15:54ac:ed5f:296c) (Remote host closed the connection) |
2021-11-05 16:27:28 +0100 | MoC | (~moc@user/moc) (Quit: Konversation terminated!) |
2021-11-05 16:30:02 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-11-05 16:31:33 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 268 seconds) |
2021-11-05 16:31:35 +0100 | boxscape_ | (~boxscape_@134.171.69.87) (Ping timeout: 264 seconds) |
2021-11-05 16:31:43 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-11-05 16:31:54 +0100 | timCF | (~timCF@200-149-20-81.sta.estpak.ee) (Quit: leaving) |
2021-11-05 16:34:00 +0100 | msmhnd^ | (~msmhnd@wsip-98-188-242-6.mc.at.cox.net) (Ping timeout: 268 seconds) |
2021-11-05 16:34:26 +0100 | lbseale | (~lbseale@user/ep1ctetus) |
2021-11-05 16:37:22 +0100 | SeungheonOh | (~Thunderbi@2600:1700:5168:1400:2f4a:5df3:56f6:843a) (Quit: SeungheonOh) |
2021-11-05 16:37:41 +0100 | SeungheonOh | (~Thunderbi@2600:1700:5168:1400:2f4a:5df3:56f6:843a) |
2021-11-05 16:38:40 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-11-05 16:39:23 +0100 | jakalx | (~jakalx@base.jakalx.net) () |
2021-11-05 16:40:43 +0100 | SeungheonOh | (~Thunderbi@2600:1700:5168:1400:2f4a:5df3:56f6:843a) (Client Quit) |
2021-11-05 16:41:06 +0100 | SeungheonOh | (~Thunderbi@2600:1700:5168:1400:2f4a:5df3:56f6:843a) |
2021-11-05 16:43:52 +0100 | SeungheonOh | (~Thunderbi@2600:1700:5168:1400:2f4a:5df3:56f6:843a) (Client Quit) |
2021-11-05 16:44:26 +0100 | <remexre> | if I have some variable foo of concrete type Foo, why does DuplicateRecordFields not like (foo { bar = 1 }) when there are two types with a bar::Int field in scope? |
2021-11-05 16:44:38 +0100 | <remexre> | shouldn't it be able to disambiguate based on the type of foo? |
2021-11-05 16:44:57 +0100 | <remexre> | (the error message even indicates that it knows the type!) |
2021-11-05 16:45:24 +0100 | johnny_sitar | (~artur@078088015209.bialystok.vectranet.pl) |
2021-11-05 16:46:29 +0100 | Sgeo_ | (~Sgeo@user/sgeo) |
2021-11-05 16:46:30 +0100 | <geekosaur> | https://downloads.haskell.org/ghc/latest/docs/html/users_guide/exts/duplicate_record_fields.html#r… |
2021-11-05 16:47:23 +0100 | <geekosaur> | it's not real smart about the ambiguity check even if it knows the type (I'm not even sure it knows the type fully until it prints the error message, tbh) |
2021-11-05 16:47:27 +0100 | moerlitz | (d9eb32b7ed@knopi.disroot.org) |
2021-11-05 16:47:55 +0100 | <remexre> | I think the h x = (x :: T) { foo = 3 } case applies to my situation |
2021-11-05 16:48:12 +0100 | <remexre> | but even when I give an explicit type for the thing being updated, no joy |
2021-11-05 16:49:07 +0100 | Sgeo | (~Sgeo@user/sgeo) (Ping timeout: 256 seconds) |
2021-11-05 16:51:20 +0100 | <geekosaur> | mrr. wonder if they broke it at some point. I think I'm quoting the 9.0.1 manual, what version of ghc are you using? |
2021-11-05 16:51:48 +0100 | <remexre> | 9.2.1 |
2021-11-05 16:52:15 +0100 | <remexre> | annoying that "latest" isn't updated for it... |
2021-11-05 16:52:29 +0100 | <geekosaur> | hm. could imagine something broke while adding RecordDotSyntax |
2021-11-05 16:52:46 +0100 | <remexre> | oh, I think the error might actually be from -Werror with the new warning they mention there? |
2021-11-05 16:53:06 +0100 | <remexre> | maybe they're afraid it will in the future? |
2021-11-05 16:54:14 +0100 | <syd> | does DisambiguateRecordFields help? |
2021-11-05 16:54:56 +0100 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2021-11-05 16:54:56 +0100 | <remexre> | nope, have that on as well |
2021-11-05 16:55:25 +0100 | <remexre> | both of the ambiguous fields are of the same... dunno the term; are both F a for different concrete a |
2021-11-05 16:55:55 +0100 | <merijn> | I just blindly assume that any RecordFields extension will just make everything worse and has no determinism :p |
2021-11-05 16:56:58 +0100 | <remexre> | and I think deep down I just want {-# LANGUAGE PureScript #-} for all that :P |
2021-11-05 16:57:02 +0100 | <syd> | hmm, I think it might qualify as ambiguous. what should the type of h be generally? |
2021-11-05 16:57:22 +0100 | <remexre> | ABunchOfMonadConstraints m => ... -> m Foo |
2021-11-05 16:57:23 +0100 | <syd> | I think it might be this case from DisambiguateRecordFields: "bad1 k = k { x = 3 } -- Ambiguous" |
2021-11-05 16:57:30 +0100 | <remexre> | ah |
2021-11-05 16:57:38 +0100 | <remexre> | yeah, that could do it, where k=pure |
2021-11-05 16:58:08 +0100 | <syd> | I was thinking more as in, k being a value of either of the types with the field x. |
2021-11-05 16:58:11 +0100 | <remexre> | I qualified the name (foo { Foo.bar = ... }) and it works, so I'm gonna call it that |
2021-11-05 16:58:19 +0100 | <remexre> | oh whooops misread that |
2021-11-05 16:58:37 +0100 | <remexre> | no, it's a do-block ending with (pure $ foo { ... }) |
2021-11-05 16:58:44 +0100 | <syd> | there's a blog post about how to import and use them ergonomically, let me see if I can find it |
2021-11-05 17:00:08 +0100 | ftzm[m] | (~ftzmmatri@2001:470:69fc:105::1:dfc) (Quit: You have been kicked for being idle) |
2021-11-05 17:00:08 +0100 | reddishblue[m] | (~reddishbl@2001:470:69fc:105::21eb) (Quit: You have been kicked for being idle) |
2021-11-05 17:00:24 +0100 | <syd> | https://chrisdone.com/posts/import-aliases-field-names/ |
2021-11-05 17:00:27 +0100 | reddishblue[m] | (~reddishbl@2001:470:69fc:105::21eb) |
2021-11-05 17:00:31 +0100 | reddishblue[m] | (~reddishbl@2001:470:69fc:105::21eb) () |
2021-11-05 17:00:35 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2021-11-05 17:01:08 +0100 | <remexre> | ooh, I hadn't seen that before |
2021-11-05 17:01:39 +0100 | <remexre> | I'm already importing the module qualified (and the module only defines this type), so I'm probably gonna stick with that; thanks for showing me the different technique though! |
2021-11-05 17:01:49 +0100 | <remexre> | and thanks to everyone for helping debug! |
2021-11-05 17:04:01 +0100 | <syd> | np, I just use personName/companyName prefixes, ergonomics be damned lol. Lenses can work how you initially wanted I believe, makeClassy is the thing to google iirc. |
2021-11-05 17:04:42 +0100 | <np> | picking `np` as my nick was a mistake |
2021-11-05 17:05:16 +0100 | <geekosaur> | we used to have someone with the nick "so". imagine *that* one |
2021-11-05 17:05:19 +0100 | <syd> | haha, np np ;) |
2021-11-05 17:06:10 +0100 | _________ | (~nobody@user/noodly) (Ping timeout: 252 seconds) |
2021-11-05 17:06:24 +0100 | v01d4lph4 | (~v01d4lph4@user/v01d4lph4) (Remote host closed the connection) |
2021-11-05 17:08:03 +0100 | <syd> | regarding future stuff, if/when HasField gets setField, I believe it'll be possible to write row-polymorphic-esque get/set functions for any record with a type-level literal field name; right now I'm pretty sure it's possible to write get functions that way. |
2021-11-05 17:08:41 +0100 | rokoe | (~roskoe@79-68-160-163.dynamic.dsl.as9105.com) (Quit: Konversation terminated!) |
2021-11-05 17:10:37 +0100 | <syd> | getName :: HasField "name" r String -> String (or something like that) |
2021-11-05 17:11:07 +0100 | _________ | (~nobody@user/noodly) |
2021-11-05 17:11:09 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-11-05 17:11:10 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 260 seconds) |
2021-11-05 17:13:35 +0100 | <yushyin> | syd: ah yes :D I found this by chance the other day https://github.com/ElderEphemera/instance-impl |
2021-11-05 17:17:05 +0100 | <remexre> | yeah, I was using labelled optics, but their TH stuff doesn't support 9.2.1 at the moment |
2021-11-05 17:17:11 +0100 | <remexre> | (or didn't on monday at least!) |
2021-11-05 17:17:30 +0100 | <remexre> | I expect in a few weeks I'll be able to use it again |
2021-11-05 17:17:43 +0100 | <remexre> | but I was basically just using it to disambiguate fields |
2021-11-05 17:20:04 +0100 | <syd> | yushyin: nice, that blog post is what alerted me to the existence of HasField. Awesome blog in general, "Invert Your Mocks" and "The Trouble With Typed Errors" come to mind. |
2021-11-05 17:21:21 +0100 | v01d4lph4 | (~v01d4lph4@106.215.93.204) |
2021-11-05 17:21:21 +0100 | v01d4lph4 | (~v01d4lph4@106.215.93.204) (Changing host) |
2021-11-05 17:21:21 +0100 | v01d4lph4 | (~v01d4lph4@user/v01d4lph4) |
2021-11-05 17:23:41 +0100 | f-a | (f2a@f2a.jujube.ircnow.org) () |
2021-11-05 17:23:54 +0100 | Athas | (athas@2a01:7c8:aaac:1cf:431c:d49e:2f86:91cc) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-11-05 17:24:04 +0100 | Athas | (athas@2a01:7c8:aaac:1cf:a0d4:8908:cfdb:b9c0) |
2021-11-05 17:26:41 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2021-11-05 17:27:29 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-11-05 17:28:20 +0100 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) |
2021-11-05 17:33:19 +0100 | brschkv | (~jbrusch@185.223.145.18) (Ping timeout: 256 seconds) |
2021-11-05 17:34:49 +0100 | jjhoo | (jahakala@user/jjhoo) (Remote host closed the connection) |
2021-11-05 17:40:08 +0100 | alzgh | (~alzgh@user/alzgh) (Remote host closed the connection) |
2021-11-05 17:40:28 +0100 | alzgh | (~alzgh@user/alzgh) |
2021-11-05 17:43:14 +0100 | aegon | (~mike@174.127.249.180) |
2021-11-05 17:44:37 +0100 | v01d4lph4 | (~v01d4lph4@user/v01d4lph4) (Read error: No route to host) |
2021-11-05 17:44:57 +0100 | v01d4lph4 | (~v01d4lph4@106.215.93.204) |
2021-11-05 17:44:57 +0100 | v01d4lph4 | (~v01d4lph4@106.215.93.204) (Changing host) |
2021-11-05 17:44:57 +0100 | v01d4lph4 | (~v01d4lph4@user/v01d4lph4) |
2021-11-05 17:45:35 +0100 | Cajun | (~Cajun@user/cajun) (Quit: Client closed) |
2021-11-05 17:45:59 +0100 | Sgeo | (~Sgeo@user/sgeo) |
2021-11-05 17:48:23 +0100 | Sgeo_ | (~Sgeo@user/sgeo) (Ping timeout: 264 seconds) |
2021-11-05 17:49:37 +0100 | zebrag | (~chris@user/zebrag) |
2021-11-05 17:49:48 +0100 | Guest99 | (~Guest99@pool-100-8-45-127.nwrknj.fios.verizon.net) (Quit: Client closed) |
2021-11-05 17:49:49 +0100 | jjhoo | (~jahakala@user/jjhoo) |
2021-11-05 17:55:09 +0100 | emf | (~emf@2620:10d:c090:400::5:38d) |
2021-11-05 17:55:42 +0100 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-11-05 17:55:58 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 260 seconds) |
2021-11-05 18:03:07 +0100 | _ht | (~quassel@82-169-194-8.biz.kpn.net) |
2021-11-05 18:06:07 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Quit: WeeChat 3.1) |
2021-11-05 18:11:46 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-11-05 18:12:51 +0100 | v01d4lph4 | (~v01d4lph4@user/v01d4lph4) (Remote host closed the connection) |
2021-11-05 18:15:34 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-11-05 18:15:54 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-11-05 18:17:46 +0100 | Lycurgus | (~juan@98.4.112.204) |
2021-11-05 18:18:14 +0100 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-11-05 18:21:43 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-11-05 18:22:30 +0100 | chele | (~chele@user/chele) (Remote host closed the connection) |
2021-11-05 18:24:26 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-11-05 18:24:38 +0100 | <awpr> | timCF: you don't need an instance of Generic for UTCTime to derive Generic for types that have UTCTime fields |
2021-11-05 18:25:00 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
2021-11-05 18:25:10 +0100 | <awpr> | oh, not online :/ |
2021-11-05 18:25:49 +0100 | Vajb | (~Vajb@2001:999:66:281c:27a0:1549:39e5:8b1a) |
2021-11-05 18:26:01 +0100 | ubert | (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Quit: ubert) |
2021-11-05 18:28:33 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-11-05 18:34:37 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) |
2021-11-05 18:35:30 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 268 seconds) |
2021-11-05 18:36:03 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) (Remote host closed the connection) |
2021-11-05 18:36:38 +0100 | aweinstock | (~aweinstoc@cpe-67-248-65-250.nycap.res.rr.com) (Ping timeout: 260 seconds) |
2021-11-05 18:38:08 +0100 | aweinstock | (~aweinstoc@cpe-67-248-65-250.nycap.res.rr.com) |
2021-11-05 18:38:26 +0100 | econo | (uid147250@user/econo) |
2021-11-05 18:40:12 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
2021-11-05 18:41:13 +0100 | pop3 | (~pop3@user/pop3) (Remote host closed the connection) |
2021-11-05 18:41:20 +0100 | <dsal> | I used a ContT for the first time along with These to replace a fairly simple list monad and my program is slower. |
2021-11-05 18:41:44 +0100 | pop3 | (~pop3@user/pop3) |
2021-11-05 18:44:04 +0100 | <dsal> | Also, I feel like callCC has the wrong signature. I had to do something gross to get a thing to typecheck because I was calling the exit function in a context that wanted an `a` but it was returning something else. `exit Whatever *> undefined` works, but seems a little wrong. |
2021-11-05 18:44:27 +0100 | <c_wraith> | dsal: yes, it does |
2021-11-05 18:44:35 +0100 | <c_wraith> | it should be higher-rank |
2021-11-05 18:45:21 +0100 | <dsal> | Overall, I didn't find it too weird. I was expecting it to be confusing and scary or something. |
2021-11-05 18:47:36 +0100 | <dolio> | dsal: https://okmij.org/ftp/continuations/against-callcc.html#performance-hit |
2021-11-05 18:49:21 +0100 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-11-05 18:50:06 +0100 | <dsal> | Heh. Yeah. I'm not too surprised. I was using the list monad originally which was pretty great. I might be able to just use These directly, though the monad looks slightly strange to me. |
2021-11-05 18:50:24 +0100 | <dolio> | I.E. don't confuse 'conceptual beauty' arguments about how call/cc can technically implement everything for actual practicality. |
2021-11-05 18:50:48 +0100 | kuribas | (~user@ptr-25vy0i9zmp0qcl8wvlj.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
2021-11-05 18:51:09 +0100 | <dolio> | (Although it can't actually implement everything, as that page also argues.) |
2021-11-05 18:51:10 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:350f:7ee:191a:6f65) |
2021-11-05 18:52:04 +0100 | brschkv | (~jbrusch@dynamic-095-116-017-025.95.116.pool.telefonica.de) |
2021-11-05 18:53:53 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-05 18:54:55 +0100 | syd | (~syd@cpc91646-hart11-2-0-cust432.11-3.cable.virginm.net) (Ping timeout: 256 seconds) |
2021-11-05 18:56:11 +0100 | Vajb | (~Vajb@2001:999:66:281c:27a0:1549:39e5:8b1a) (Read error: Connection reset by peer) |
2021-11-05 18:56:16 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-11-05 18:56:27 +0100 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 268 seconds) |
2021-11-05 18:58:53 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-11-05 18:59:10 +0100 | ubert | (~Thunderbi@p200300ecdf4fcafee019fddc82d0353e.dip0.t-ipconnect.de) |
2021-11-05 19:00:16 +0100 | nurupo | (~nurupo.ga@user/nurupo) (Quit: nurupo.ga) |
2021-11-05 19:00:30 +0100 | nurupo | (~nurupo.ga@user/nurupo) |
2021-11-05 19:01:12 +0100 | whatsupdoc | (uid509081@id-509081.hampstead.irccloud.com) |
2021-11-05 19:01:48 +0100 | Kaiepi | (~Kaiepi@156.34.44.192) (Read error: Connection reset by peer) |
2021-11-05 19:01:52 +0100 | fef | (~thedawn@user/thedawn) |
2021-11-05 19:02:02 +0100 | Kaiepi | (~Kaiepi@156.34.44.192) |
2021-11-05 19:04:40 +0100 | pera | (~pera@user/pera) (Quit: leaving) |
2021-11-05 19:04:51 +0100 | slac76440 | (~slack1256@191.125.99.211) |
2021-11-05 19:05:07 +0100 | syd | (~syd@cpc91646-hart11-2-0-cust432.11-3.cable.virginm.net) |
2021-11-05 19:05:20 +0100 | <syd> | dsal: not sure what your use case is, but does the Logic Monad suit your needs perchance? |
2021-11-05 19:05:37 +0100 | <syd> | (you mentioned List, so I figured it might involve backtracking or something) |
2021-11-05 19:07:02 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) |
2021-11-05 19:07:34 +0100 | slack1256 | (~slack1256@191.125.227.82) (Ping timeout: 268 seconds) |
2021-11-05 19:09:30 +0100 | <dsal> | Thanks. I'll take a look at that later -- might help. There's nothing serious here. Just doodling on some old AoC things that are varying grossness. I have an initial state and then a few child states may fall out of it that need to be recursed. It's one of these things where I'm trying to figure out what is expressive and not hard to read. |
2021-11-05 19:11:55 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
2021-11-05 19:13:56 +0100 | vladl | (~vladl@174.127.234.115) |
2021-11-05 19:14:53 +0100 | v01d4lph4 | (~v01d4lph4@106.215.93.204) |
2021-11-05 19:14:53 +0100 | v01d4lph4 | (~v01d4lph4@106.215.93.204) (Changing host) |
2021-11-05 19:14:53 +0100 | v01d4lph4 | (~v01d4lph4@user/v01d4lph4) |
2021-11-05 19:15:54 +0100 | <Lycurgus> | ocaml at least has delimited continuations |
2021-11-05 19:16:31 +0100 | <c_wraith> | eh? delimited continuations are just... functions. that's what Cont/ContT are, too |
2021-11-05 19:18:06 +0100 | <Lycurgus> | ah, from callCC i thought it was like the scheme thing |
2021-11-05 19:18:36 +0100 | pop3 | (~pop3@user/pop3) (Remote host closed the connection) |
2021-11-05 19:19:40 +0100 | pop3 | (~pop3@user/pop3) |
2021-11-05 19:21:53 +0100 | <dolio> | It is, sort of. |
2021-11-05 19:22:24 +0100 | alzgh | (~alzgh@user/alzgh) (Remote host closed the connection) |
2021-11-05 19:22:36 +0100 | <dolio> | It's undelimited inside of a single call to runContT, obviously, but the runContT delimits the scope in a way. |
2021-11-05 19:22:45 +0100 | alzgh | (~alzgh@user/alzgh) |
2021-11-05 19:23:44 +0100 | <dolio> | Which is also how many Scheme implementations really work. The REPL delimits your call/cc. |
2021-11-05 19:24:42 +0100 | <c_wraith> | Well, it's clearly delimited in terms of only being able to jump to a point inside Cont/ContT |
2021-11-05 19:25:00 +0100 | <c_wraith> | unlike scheme, which doesn't provide that clean separation |
2021-11-05 19:25:46 +0100 | <dolio> | My "obviously" was probably not ideally placed. I meant it's obvious that you can't capture continuations that go beyond the `runContT`. |
2021-11-05 19:27:33 +0100 | fef | (~thedawn@user/thedawn) (Ping timeout: 276 seconds) |
2021-11-05 19:30:32 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-11-05 19:31:00 +0100 | euandreh | (~euandreh@2804:14c:33:9fe5:90d0:563b:3279:f95b) (Ping timeout: 268 seconds) |
2021-11-05 19:33:30 +0100 | <vladl> | Hi, I'm a C++ dev learning haskell and I'm trying to solve a design problem. I have no idea what the Haskelly way of doing what I want to do is. I have a short file and a problem description in the comments here http://dpaste.com//CFTUNYCJC |
2021-11-05 19:36:35 +0100 | Lycurgus | (~juan@98.4.112.204) (Quit: Exeunt) |
2021-11-05 19:37:14 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2021-11-05 19:37:52 +0100 | <gentauro> | vladl: you don't, that's the beauty of Haskell and a `sound typesystem` :) |
2021-11-05 19:38:13 +0100 | gentauro | perhaps there are some PRAGMAS and some HaskellTemplate … |
2021-11-05 19:38:22 +0100 | <c_wraith> | vladl: how silly are you willing to get? Because there are answers that are very concise but require really sophisticated tools. Like uniplate, or the lensy versions thereof |
2021-11-05 19:38:56 +0100 | <vladl> | gentauro: yes I figured I couldn't get away with adhoc polymorphism... I don't want to get too silly, I'd rather do this in a canonical way than bend haskell to look like C++ |
2021-11-05 19:39:23 +0100 | <gentauro> | vladl: btw, your 3 last statements point to variables that don't exisit? |
2021-11-05 19:39:34 +0100 | <vladl> | yes, its psuedocode |
2021-11-05 19:39:38 +0100 | <gentauro> | ahhh |
2021-11-05 19:39:41 +0100 | <gentauro> | fair enough |
2021-11-05 19:40:16 +0100 | <vladl> | c_wraith: i'll totally change my design, i figured there's a good chance this is an XY problem or whatever its called |
2021-11-05 19:40:42 +0100 | <vladl> | where the asker asks how to do X when they actually wanna accomplish Y but are missing the forest for the trees |
2021-11-05 19:41:20 +0100 | <vladl> | I'm trying to make it so i can request a layout and then any contained widgets, if they have a notion of time, or tags, then they will apply those rules to their filters |
2021-11-05 19:41:59 +0100 | <gentauro> | vladl: why are all types of widgets in the same (sum) `type`? |
2021-11-05 19:42:37 +0100 | <vladl> | gentauro: I wanted to make a layout tree that i could throw together in ghci repl |
2021-11-05 19:43:03 +0100 | <vladl> | so a widget might just be a container of other widgets |
2021-11-05 19:43:06 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2021-11-05 19:43:21 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-11-05 19:43:31 +0100 | <vladl> | but i basically want properties set at a node to affect the subtree |
2021-11-05 19:43:36 +0100 | <gentauro> | vladl: got it |
2021-11-05 19:44:02 +0100 | euandreh | (~euandreh@2804:14c:33:9fe5:90d0:563b:3279:f95b) |
2021-11-05 19:46:27 +0100 | <dsal> | https://xyproblem.info |
2021-11-05 19:46:56 +0100 | <dsal> | It's particularly funny when someone is doing 2D graphics and has an XY problem. heh |
2021-11-05 19:47:21 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2021-11-05 19:48:21 +0100 | alzgh | (~alzgh@user/alzgh) (Remote host closed the connection) |
2021-11-05 19:48:41 +0100 | alzgh | (~alzgh@user/alzgh) |
2021-11-05 19:49:40 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-05 19:55:06 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2021-11-05 19:58:08 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
2021-11-05 19:58:46 +0100 | zer0bitz | (~zer0bitz@dsl-hkibng31-54fae3-116.dhcp.inet.fi) (Ping timeout: 260 seconds) |
2021-11-05 20:00:12 +0100 | v01d4lph4 | (~v01d4lph4@user/v01d4lph4) (Remote host closed the connection) |
2021-11-05 20:03:04 +0100 | max22- | (~maxime@2a01cb088335980058acad91096e7c9d.ipv6.abo.wanadoo.fr) (Ping timeout: 268 seconds) |
2021-11-05 20:03:43 +0100 | <janus> | why don't people mention XY problem and SSCCE together? Are they in opposition to each other? SSCCE says "Minimise bandwidth for the example, do not bore the audience.". That could be interpreted as omitting the context. Both of their goals is to convince the asker to provide the right context. But both of them use simplistic terms, in one case 'minimal' in other case 'solution vs problem'. In fact it's |
2021-11-05 20:03:49 +0100 | <janus> | just about learning how to ask well. |
2021-11-05 20:04:36 +0100 | <ski> | ("SSCCE" standing for ?) |
2021-11-05 20:05:21 +0100 | <vladl> | single self-contained compiling example. |
2021-11-05 20:05:55 +0100 | <vladl> | i generally agree but in more boilerplatey languages sometimes psuedocode gets the point across more efficiently |
2021-11-05 20:05:55 +0100 | <ski> | ty |
2021-11-05 20:06:59 +0100 | burnsidesLlama | (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
2021-11-05 20:08:22 +0100 | toreiussd | (uid469671@id-469671.lymington.irccloud.com) |
2021-11-05 20:08:27 +0100 | <vladl> | sscce's are useful for more concrete questions, like bughunting where a repro is required |
2021-11-05 20:10:02 +0100 | brschkv | (~jbrusch@dynamic-095-116-017-025.95.116.pool.telefonica.de) (Quit: Leaving) |
2021-11-05 20:11:07 +0100 | <toreiussd> | Obtaining min element using a foldtree function https://www.irccloud.com/pastebin/nqt2N6lQ/Haskell_message_1 |
2021-11-05 20:15:30 +0100 | <ski> | toreiussd : check whether you get `Nothing', in `f' ? |
2021-11-05 20:16:05 +0100 | <ski> | > min Nothing (Just 2) |
2021-11-05 20:16:07 +0100 | <lambdabot> | Nothing |
2021-11-05 20:16:46 +0100 | <ski> | since every tree has at least one leaf, you'll always, with current code, have at least one `Nothing', that you're passing to `minimum'. which causes the result of all `minimum' calls to be `Nothing' |
2021-11-05 20:18:05 +0100 | <ski> | instead, you only want to give `Nothing' as result, in case you have the an empty tree (so a single `Tip', and no element) |
2021-11-05 20:18:50 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-11-05 20:18:58 +0100 | <toreiussd> | copy |
2021-11-05 20:19:22 +0100 | <ski> | (you could have four cases .. or, maybe there could be a way of expressing it more succinctly) |
2021-11-05 20:19:56 +0100 | <toreiussd> | the issue is how would have multiple cases for the z value |
2021-11-05 20:20:11 +0100 | <toreiussd> | Nothing is one yes only if the tree is empty |
2021-11-05 20:20:18 +0100 | <toreiussd> | but how would I add another case |
2021-11-05 20:21:06 +0100 | barrucadu | (~barrucadu@carcosa.barrucadu.co.uk) (Ping timeout: 260 seconds) |
2021-11-05 20:21:21 +0100 | barrucadu | (~barrucadu@carcosa.barrucadu.co.uk) |
2021-11-05 20:21:58 +0100 | <ski> | `z' is just a single case |
2021-11-05 20:22:12 +0100 | <ski> | for a `Tip', there is no minimum, since there's no elements |
2021-11-05 20:22:14 +0100 | hexagoxel | (~hexagoxel@2a01:4f8:c0c:e::2) (Ping timeout: 265 seconds) |
2021-11-05 20:22:43 +0100 | fiddlerwoaroof | (~fiddlerwo@user/fiddlerwoaroof) (Ping timeout: 265 seconds) |
2021-11-05 20:22:43 +0100 | <ski> | `f' handles `Bin' nodes |
2021-11-05 20:23:08 +0100 | <ski> | toreiussd : you agree that if you have at least one element, then you should not get `Nothing' as result, yes ? |
2021-11-05 20:23:14 +0100 | hiato | (~op_4@user/op-4/x-9116473) |
2021-11-05 20:23:18 +0100 | <toreiussd> | correct |
2021-11-05 20:23:35 +0100 | op_4 | (~op_4@user/op-4/x-9116473) (Ping timeout: 260 seconds) |
2021-11-05 20:23:39 +0100 | unit73e | (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) |
2021-11-05 20:24:02 +0100 | canta | (~canta@user/canta) (Ping timeout: 268 seconds) |
2021-11-05 20:24:08 +0100 | hexagoxel | (~hexagoxel@hexagoxel.de) |
2021-11-05 20:24:14 +0100 | <toreiussd> | I just don't know what to use to express multiple cases |
2021-11-05 20:24:28 +0100 | <ski> | so, for the recursive/inductive case, the case handling `Bin' (which is `f', in your case, since you're using a fold/catamorphism), you're now allowed to *assume* ("trust", if you prefer), that it'll only get passed `Nothing' as first/last argument, in case the corresponding subtree was empty (was a `Tip') |
2021-11-05 20:24:51 +0100 | <ski> | toreiussd : use pattern-matching, just like you already did, for `foldTree' |
2021-11-05 20:25:43 +0100 | fiddlerwoaroof | (~fiddlerwo@user/fiddlerwoaroof) |
2021-11-05 20:25:58 +0100 | canta | (~canta@user/canta) |
2021-11-05 20:26:03 +0100 | <ski> | so, `f' ought to check whether it gets `Nothing's or `Just's (with a minimum element of the subtree). then, it should take the minimum of all the elements it's got : which are (a) (possibly) a minimum element, for each subtree; (b) the element in the `Bin' node itself |
2021-11-05 20:27:52 +0100 | <toreiussd> | mmmh confused but only because of the formatting of the text |
2021-11-05 20:28:48 +0100 | <monochrom> | janus: I mention "XY" and "I can't reproduce your error" all the time :) |
2021-11-05 20:29:04 +0100 | <monochrom> | The only problem is that I am not here all the time. |
2021-11-05 20:30:11 +0100 | zer0bitz | (~zer0bitz@dsl-hkibng31-54fae3-116.dhcp.inet.fi) |
2021-11-05 20:30:43 +0100 | <monochrom> | But generally I champion for "do your due dilegence", "ask high-quality informative questions" when I'm around. |
2021-11-05 20:31:26 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 268 seconds) |
2021-11-05 20:32:05 +0100 | max22- | (~maxime@2a01cb08833598006eec136a4e6fc13b.ipv6.abo.wanadoo.fr) |
2021-11-05 20:32:23 +0100 | <monochrom> | "Worse", I fight against "qurents are entitled to conceal information, answerers are obliged to spew out lectures after lectures" |
2021-11-05 20:33:17 +0100 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) |
2021-11-05 20:35:00 +0100 | Sgeo_ | (~Sgeo@user/sgeo) |
2021-11-05 20:35:23 +0100 | <monochrom> | Oh, you asked about whether they oppose each other. |
2021-11-05 20:35:48 +0100 | <monochrom> | Nah, they happen hand-in-hand all the time. |
2021-11-05 20:36:10 +0100 | <monochrom> | For example, suppose someone runs into a type error. |
2021-11-05 20:36:55 +0100 | tremon | (~tremon@217-63-61-89.cable.dynamic.v4.ziggo.nl) |
2021-11-05 20:37:01 +0100 | <monochrom> | They decide to conceal their code and just say "hi, how do I trouble-shoot type errors?" So, it is an XY problem and a refusal to show any code at all at the same time. They feed each other. |
2021-11-05 20:37:10 +0100 | <toreiussd> | https://www.irccloud.com/pastebin/3lMua9X3/ |
2021-11-05 20:37:58 +0100 | Sgeo | (~Sgeo@user/sgeo) (Ping timeout: 260 seconds) |
2021-11-05 20:38:44 +0100 | <toreiussd> | https://www.irccloud.com/pastebin/oAoHVf9x/ |
2021-11-05 20:39:07 +0100 | <maerwald> | monochrom: XY is the reason I'm making money. Shh |
2021-11-05 20:39:20 +0100 | trriplex | (~trriplex@user/trriplex) |
2021-11-05 20:39:28 +0100 | <maerwald> | most of programming is XY |
2021-11-05 20:39:37 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2021-11-05 20:39:42 +0100 | <maerwald> | "we need a web app" |
2021-11-05 20:39:44 +0100 | <maerwald> | ok, yeah... sure |
2021-11-05 20:39:54 +0100 | <monochrom> | Don't worry maerwald. People won't change their ways even after I point out what's wrong. :) |
2021-11-05 20:40:32 +0100 | <maerwald> | now someone needs to put their money onto a blockchain... why? Hell, Idc! |
2021-11-05 20:41:00 +0100 | <vladl> | oh i misread your question as well janus. my mistake. I think in the case of a lot of XY errors (at least the XY errors I experience), its usually a design issue, like an issue with the fundamental approach to the problem, and in these cases trying to obtain an SSCCE is going to waste everyone's time when the answer winds up containing "throw out your current approach" |
2021-11-05 20:41:25 +0100 | max22- | (~maxime@2a01cb08833598006eec136a4e6fc13b.ipv6.abo.wanadoo.fr) (Remote host closed the connection) |
2021-11-05 20:42:05 +0100 | <maerwald> | or a CTO who accidentially read a blog post about functional programming starts to hire haskellers, because "zomg, such academic" |
2021-11-05 20:42:12 +0100 | dumptruckman | (~dumptruck@45-79-175-133.ip.linodeusercontent.com) (Quit: ZNC - https://znc.in) |
2021-11-05 20:42:20 +0100 | <monochrom> | toreiussd, it is not true that every function needs pattern matching. |
2021-11-05 20:43:19 +0100 | <ski> | toreiussd : yea, `listTree' doesn't need it, because it's producing a list (which is actually pattern-matched by `(++)'). however, `minTree' wants to produce a value of the same type as the elements. but if the tree is empty, it can't, and so it needs to `Maybe' produce such a value. and therefore the fold needs to handle the `Maybe's coming from the folding of the subtrees, in the `Bin' case (being your `f') |
2021-11-05 20:44:07 +0100 | <monochrom> | Well, a CTO who respects academics is still good news. |
2021-11-05 20:45:25 +0100 | <monochrom> | Better than a CTO reading a blog post about PHP and going "zomg such anti-academic" |
2021-11-05 20:46:03 +0100 | <toreiussd> | so Id need another case for the f |
2021-11-05 20:46:21 +0100 | <ski> | you need to split cases, yea |
2021-11-05 20:46:38 +0100 | <monochrom> | Seriously Java was successful because, only because, CTOs read magazine articles (remember those? blogs didn't exist back then, but hey, same difference) about Java and went "zomg, such enterprise" |
2021-11-05 20:46:39 +0100 | wrengr | (~wrengr@150.12.83.34.bc.googleusercontent.com) (Quit: leaving) |
2021-11-05 20:46:41 +0100 | <toreiussd> | what would I use for that. Im new to haskell that's why |
2021-11-05 20:47:08 +0100 | <ski> | `l' and `r' are `Maybe a's. you need to handle the possible cases for those, separately, rather than trying to have a single defining equation handling all |
2021-11-05 20:47:17 +0100 | <ski> | toreiussd : pattern-matching |
2021-11-05 20:47:52 +0100 | dumptruckman | (~dumptruck@45-79-175-133.ip.linodeusercontent.com) |
2021-11-05 20:48:01 +0100 | <ski> | toreiussd : note how `foldTree' pattern-matches on the `Tree a' argument, doing case analysis, doing different things, depending on whether it got a `Tip' or a `Node' ? |
2021-11-05 20:48:10 +0100 | <maerwald> | that's the thing, there are no average CTOs... either they rule or no one knows how they got where they are |
2021-11-05 20:48:31 +0100 | <ski> | do the same thing, for `f', except you're now pattern-matching on the possible shapes of `Maybe a', rather than `Tree a' |
2021-11-05 20:48:47 +0100 | <monochrom> | Actually the CTO title didn't exist back then either, heh. But you know who they were. |
2021-11-05 20:49:38 +0100 | isovector1 | (~isovector@172.103.216.166) |
2021-11-05 20:49:47 +0100 | <monochrom> | OK how about one sample line of code? You can go "f Nothing x Nothing = Just x" for the 1st case. |
2021-11-05 20:49:50 +0100 | <isovector1> | does anyone have a working stack config for ghc 9.2.1? |
2021-11-05 20:49:54 +0100 | max22- | (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) |
2021-11-05 20:49:55 +0100 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 268 seconds) |
2021-11-05 20:50:11 +0100 | <monochrom> | There are like 3 more cases. |
2021-11-05 20:50:31 +0100 | <toreiussd> | thx for that |
2021-11-05 20:50:36 +0100 | msmhnd^ | (~msmhnd@h50.174.139.63.static.ip.windstream.net) |
2021-11-05 20:50:56 +0100 | <awpr> | best I've managed is to use ghcup to get a system GHC-9.2.1, then use `stack --system-ghc --resolver nightly --compiler ghc-9.2.1` |
2021-11-05 20:51:47 +0100 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) |
2021-11-05 20:51:53 +0100 | <awpr> | plus making a custom resolver to get newer versions that support 9.2, and even get a few packages from GitHub where needed |
2021-11-05 20:51:55 +0100 | <ski> | toreiussd : that's the case in which both subtrees were empty (and so `foldTree' gave `z', that is `Nothing', for those. remember, you're assuming that you'll only get `Nothing' when the tree is empty. (but you'll then also need to ensure that `f' satisfies this condition)) |
2021-11-05 20:52:37 +0100 | <isovector1> | awpr: yeesh. maybe it's time to swithc back to cabal? |
2021-11-05 20:52:53 +0100 | <isovector1> | :( |
2021-11-05 20:52:57 +0100 | <aegon> | aaaaa, my dev cycle lately is spec-delta, haskell-prototype-components-delta, haskell-prototype-lib-delta, c-lib-delta. The haskell-prototype -> c-library path is the worst. Way more source lines of code and way more tedium within that code |
2021-11-05 20:53:14 +0100 | <aegon> | awpr: so is stack pretty laggy with releases compared to cabal-v2? |
2021-11-05 20:53:21 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:e9ee:3bd5:4988:8148) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-11-05 20:53:25 +0100 | <awpr> | because Stackage hasn't made GHC-9.2 available in 4 days? idk, I don't mind so much |
2021-11-05 20:53:29 +0100 | <aegon> | i thought 9.3 was just released |
2021-11-05 20:53:55 +0100 | <awpr> | aggressive curation of dependency versions is always going to come with a cost of taking time to incorporate updates |
2021-11-05 20:54:07 +0100 | <monochrom> | Nah, x.(odd number) is never released. |
2021-11-05 20:54:30 +0100 | <toreiussd> | i think for that one I now understand thx. however im still attempting to build a definition for a fold over RoseTree. |
2021-11-05 20:54:38 +0100 | <toreiussd> | thx nonetheless guys |
2021-11-05 20:55:11 +0100 | <geekosaur> | aegon, stack is curated so they are unlikely to move immediately to 9.2.1 |
2021-11-05 20:55:35 +0100 | <geekosaur> | and given how things have gone they make a 9.0.1 lts before a 9.2.1 nightly |
2021-11-05 20:55:35 +0100 | <aegon> | monochrom: wierd, so x.(odd) releases are kinda tech previews for the next even release? |
2021-11-05 20:55:42 +0100 | <ski> | toreiussd : look at the definition of `RoseTree'. `foldTree n t' is supposed to replace all the `Node's in `t' by `n' |
2021-11-05 20:55:45 +0100 | <geekosaur> | they're development versions |
2021-11-05 20:55:52 +0100 | <isovector1> | oh i didn't realize how fresh ghc 9.2.1 was |
2021-11-05 20:55:58 +0100 | <geekosaur> | 9.3.date |
2021-11-05 20:56:03 +0100 | <ski> | er, `foldRose', rather |
2021-11-05 20:56:04 +0100 | <isovector1> | tho there's still not an lts for 9.0 |
2021-11-05 20:56:05 +0100 | <monochrom> | Not released at all. |
2021-11-05 20:56:10 +0100 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 260 seconds) |
2021-11-05 20:56:35 +0100 | <geekosaur> | right, that's why I said they might hold off until they can make a 9.0.1 lts before they consider 9.2.1 as nightly |
2021-11-05 20:56:36 +0100 | <ski> | just like `foldTree f z t' is replacing all the `Tip's in `t' with `z', and all the `Bin's in `t' with `f' |
2021-11-05 20:56:39 +0100 | dumptruckman | (~dumptruck@45-79-175-133.ip.linodeusercontent.com) (Quit: ZNC - https://znc.in) |
2021-11-05 20:56:43 +0100 | <monochrom> | And I don't think GHC has a "tech preview" notion. |
2021-11-05 20:57:06 +0100 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
2021-11-05 20:57:45 +0100 | nosewings | (~ngpc@2603-8081-3e05-e2d0-91fa-0be4-4222-fe4b.res6.spectrum.com) |
2021-11-05 20:58:07 +0100 | <ski> | so `foldTree f z (Bin (Bin Tip 0 Tip) 1 (Bin (Bin Tip 2 Tip) 3 Tip))' is going to be `f (f z 0 z) 1 (f (f z 2 z) 3 z)' |
2021-11-05 20:58:58 +0100 | <unit73e> | afaik GHC only has a stable release notion |
2021-11-05 20:59:07 +0100 | <unit73e> | and it has been like that since forever |
2021-11-05 20:59:19 +0100 | <unit73e> | also hi |
2021-11-05 20:59:24 +0100 | <geekosaur> | there are release candidates, although they too can be iffy |
2021-11-05 20:59:26 +0100 | <toreiussd> | Im also trying to optimize the listTree function to be in linear time however i think i should pass a function parameter |
2021-11-05 20:59:32 +0100 | <geekosaur> | like 9.2 has been a cursed release |
2021-11-05 20:59:47 +0100 | <ski> | similarly, `foldRose n (Node 0 [Node 1 [Node 2 [],Node 3 []],Node 4 [],Node 5 [Node 6 [Node 7 []]]])' is supposed to be `n 0 [n 1 [n 2 [],n 3 []],n 4 [],n 5 [n 6 [n 7 []]]]' |
2021-11-05 21:00:13 +0100 | <geekosaur> | (and continues to be cursed; I gather a 9.2.2 may be appearing sooner rather than later) |
2021-11-05 21:00:25 +0100 | madjestic | (~madjestic@88-159-247-120.fixed.kpn.net) (Ping timeout: 268 seconds) |
2021-11-05 21:00:36 +0100 | <unit73e> | I see that GHC still has that ugly site :P but the documentation has the pretty theme |
2021-11-05 21:00:51 +0100 | <geekosaur> | sadly the docs are still for 9.0.1 |
2021-11-05 21:00:56 +0100 | <awpr> | hmm, if they're looking at a new release, I should probably rush to report the `type (<)` bug |
2021-11-05 21:01:05 +0100 | <ski> | toreiussd : yes, left-nestedness of `++' (like `(((as ++ bs) ++ cs) ++ ds) ++ es', which results from the "left-recursion" `20:44 < monochrom> Well, a CTO who respects academics is still good news. |
2021-11-05 21:01:09 +0100 | <ski> | 20:45 < monochrom> Better than a CTO reading a blog post about PHP and going "zomg such anti-academic" |
2021-11-05 21:01:15 +0100 | <ski> | er, sorry |
2021-11-05 21:01:22 +0100 | <aegon> | i was just reading thorugh the 9.3 users guide last night... I guess i got excited for non releasable features until 9.4 :X. The record dot syntax seems cool but between that and record punning and wild cards etc.. modifying records is turning into a wild world. Is the distaste for lens the compile time only or is there some overhead to the way its formed? I notice since workign with lenses there are a |
2021-11-05 21:01:28 +0100 | <aegon> | bunch of micro / mini alternatives. |
2021-11-05 21:01:29 +0100 | a6a45081-2b83 | (~aditya@2603-6080-0800-8e4a-0000-0000-0000-01a8.res6.spectrum.com) |
2021-11-05 21:01:29 +0100 | a6a45081-2b83 | (~aditya@2603-6080-0800-8e4a-0000-0000-0000-01a8.res6.spectrum.com) (Read error: Connection reset by peer) |
2021-11-05 21:01:38 +0100 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 268 seconds) |
2021-11-05 21:01:58 +0100 | <geekosaur> | lenses only have compile time overhead if you use TH to construct them |
2021-11-05 21:02:20 +0100 | dumptruckman | (~dumptruck@45-79-173-88.ip.linodeusercontent.com) |
2021-11-05 21:02:21 +0100 | <maerwald> | hmm... I'm starting to think big modules are advantegous... they allow to see unfactored code sharing. When you jump across many modules, it's harder to notice similarities |
2021-11-05 21:02:26 +0100 | <toreiussd> | so should i make it rightnestedness similar to the gains for foldr vs foldl |
2021-11-05 21:02:33 +0100 | <geekosaur> | the main reason for micro and mini versions is that full lens provides lenses for half the ecosystem, meaning it has half the ecosystem as dependencies |
2021-11-05 21:02:40 +0100 | <ski> | toreiussd : yes, left-nestedness of `++' (like `(((as ++ bs) ++ cs) ++ ds) ++ es', which results from the "left-recursion" `f l x r = l ++ ..', where `l' here represents a recursive call to `foldTree') is going to be less efficient than one can reasonably expect |
2021-11-05 21:02:56 +0100 | a6a45081-2b83 | (~aditya@2603-6080-0800-8e4a-0000-0000-0000-01a8.res6.spectrum.com) |
2021-11-05 21:03:26 +0100 | <toreiussd> | how would I change the calls type |
2021-11-05 21:03:30 +0100 | ralu3 | (~ralu@static.211.245.203.116.clients.your-server.de) |
2021-11-05 21:03:33 +0100 | <toreiussd> | from left recursive |
2021-11-05 21:03:48 +0100 | hexagoxel | (~hexagoxel@hexagoxel.de) (Ping timeout: 260 seconds) |
2021-11-05 21:03:57 +0100 | <ski> | you could introduce an extra argument, an accumulator |
2021-11-05 21:04:00 +0100 | isovector1 | (~isovector@172.103.216.166) (Quit: Leaving) |
2021-11-05 21:04:03 +0100 | ralu | (~ralu@static.211.245.203.116.clients.your-server.de) (Read error: Connection reset by peer) |
2021-11-05 21:04:03 +0100 | ralu3 | ralu |
2021-11-05 21:04:27 +0100 | <toreiussd> | what would it accumulate though |
2021-11-05 21:04:32 +0100 | <ski> | it might be easier to see how this works, if you write `listTree' using direct recursion, rather than using `foldTree' |
2021-11-05 21:04:57 +0100 | <ski> | it would accumulate the list of all the elements of the tree, traversed in-order |
2021-11-05 21:05:58 +0100 | juhp | (~juhp@128.106.188.220) (Ping timeout: 268 seconds) |
2021-11-05 21:06:33 +0100 | hexagoxel | (~hexagoxel@2a01:4f8:c0c:e::2) |
2021-11-05 21:06:36 +0100 | a6a45081-2b83 | (~aditya@2603-6080-0800-8e4a-0000-0000-0000-01a8.res6.spectrum.com) (Read error: Connection reset by peer) |
2021-11-05 21:07:35 +0100 | <toreiussd> | hey stefan do you know where I can learn more about this, there seems to be multiple holes as evidenced here and Im new to this coming from imperative |
2021-11-05 21:07:49 +0100 | juhp | (~juhp@128.106.188.220) |
2021-11-05 21:09:46 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:e9ee:3bd5:4988:8148) |
2021-11-05 21:10:22 +0100 | a6a45081-2b83 | (~aditya@2603-6080-0800-8e4a-0000-0000-0000-01a8.res6.spectrum.com) |
2021-11-05 21:11:20 +0100 | <aegon> | geekosaur: interesting, should I be using microlens-platform then as opposed to lens or is it the same outside of dependencies and lenses for other types |
2021-11-05 21:11:26 +0100 | <aegon> | it looks like minilens is no longer kept up |
2021-11-05 21:11:39 +0100 | a6a45081-2b83 | (~aditya@2603-6080-0800-8e4a-0000-0000-0000-01a8.res6.spectrum.com) (Read error: Connection reset by peer) |
2021-11-05 21:11:59 +0100 | <geekosaur> | it's basically the same, just lets you pick and choose what extra dependencies you want to pull in / what you want to use lenses for |
2021-11-05 21:12:07 +0100 | a6a45081-2b83 | (~aditya@2603-6080-0800-8e4a-0000-0000-0000-01a8.res6.spectrum.com) |
2021-11-05 21:12:34 +0100 | shapr | (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Remote host closed the connection) |
2021-11-05 21:12:58 +0100 | ski | glances over shoulder at stefan-_ |
2021-11-05 21:13:03 +0100 | <geekosaur> | the lenses themmselves are very simple and can even be built without a lens framework, but you probably want the basic lens "combinators" provided by microlens |
2021-11-05 21:13:29 +0100 | <geekosaur> | and microlens and lens are therefore inter-compatible |
2021-11-05 21:13:50 +0100 | <geekosaur> | you can start with microlens and then upgrade to lens more or less transparently |
2021-11-05 21:14:16 +0100 | <davean> | Why wouldn't you just start with 'lens'? |
2021-11-05 21:14:39 +0100 | <geekosaur> | dependencies on half the ecosystem |
2021-11-05 21:14:49 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-11-05 21:15:06 +0100 | bjobjo | (~bjobjo@user/bjobjo) (Quit: leaving) |
2021-11-05 21:15:11 +0100 | <geekosaur> | since lens aims to be complete, it has *lots* of deps on things it makes "canned" lenses for |
2021-11-05 21:15:25 +0100 | <davean> | Right? |
2021-11-05 21:15:29 +0100 | <geekosaur> | microlens leaves that part off, but has ancillary packages providing various of them |
2021-11-05 21:15:35 +0100 | <aegon> | iterative builds locally dont bug me with lens but i have a fairly small service and it takes ~5 minutes to build in a container at this point |
2021-11-05 21:16:02 +0100 | <davean> | IMO builds are cached and you'll need half of hackage anyway |
2021-11-05 21:16:09 +0100 | <aegon> | i bet thats way low compared to what some of you are all dealing with daily |
2021-11-05 21:16:12 +0100 | <davean> | Managing more packages seems like a much larger pain |
2021-11-05 21:16:44 +0100 | a6a45081-2b83 | (~aditya@2603-6080-0800-8e4a-0000-0000-0000-01a8.res6.spectrum.com) (Read error: Connection reset by peer) |
2021-11-05 21:18:07 +0100 | <davean> | aegon: do you clear the cache every time or something? |
2021-11-05 21:18:23 +0100 | <aegon> | docker does :P |
2021-11-05 21:18:31 +0100 | <aegon> | its just an issue when i'm packaging it up for integration testing or whatnot |
2021-11-05 21:18:40 +0100 | <aegon> | i use local dev with caching while working on a component |
2021-11-05 21:18:53 +0100 | <aegon> | but when it comes time for the final unit and integration i shove it into the to be released container |
2021-11-05 21:18:59 +0100 | <davean> | I mean keeping cache across systems even was standard in 2000 |
2021-11-05 21:20:22 +0100 | a6a45081-2b83 | (~aditya@2603-6080-0800-8e4a-0000-0000-0000-01a8.res6.spectrum.com) |
2021-11-05 21:20:46 +0100 | chomwitt | (~chomwitt@2a02:587:dc02:9f00:12c3:7bff:fe6d:d374) (Ping timeout: 268 seconds) |
2021-11-05 21:21:27 +0100 | <davean> | aegon: So why does your container start with an empty cache? |
2021-11-05 21:21:47 +0100 | a6a45081-2b83 | (~aditya@2603-6080-0800-8e4a-0000-0000-0000-01a8.res6.spectrum.com) (Read error: Connection reset by peer) |
2021-11-05 21:22:15 +0100 | a6a45081-2b83 | (~aditya@2603-6080-0800-8e4a-0000-0000-0000-01a8.res6.spectrum.com) |
2021-11-05 21:24:46 +0100 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) |
2021-11-05 21:25:00 +0100 | <aegon> | i feel like its best practice, i don't want any released service to have a dependency on container state that it doesn't specify within it's dockerfile. This means outside of some container wide stuff that is done and making sure ghc / systemtools are on the thing. I don't know how I would cache anything else without violating that |
2021-11-05 21:25:28 +0100 | <aegon> | if you keep intermediate stuff in the container your container gets to be multiple gigerbytes for a 300k executable |
2021-11-05 21:25:44 +0100 | <aegon> | and removing a layer of the image before pushing it also seems evil to me |
2021-11-05 21:26:24 +0100 | <davean> | I mean I'd think you'd build the executable into a final image - having the build tools for it on the image seems senseless unless it'll use those tools while running |
2021-11-05 21:26:52 +0100 | <aegon> | yeah, buti want to make sure the image has the right version of any libs linked against and that the unit / integration tests run using those libs |
2021-11-05 21:26:52 +0100 | a6a45081-2b83 | (~aditya@2603-6080-0800-8e4a-0000-0000-0000-01a8.res6.spectrum.com) (Read error: Connection reset by peer) |
2021-11-05 21:27:18 +0100 | <davean> | Right? You can still run the tests on the final image as an overlay |
2021-11-05 21:27:30 +0100 | bjobjo | (~bjobjo@user/bjobjo) |
2021-11-05 21:27:32 +0100 | <davean> | but your lib versions can't really different if build on the same base |
2021-11-05 21:27:41 +0100 | <aegon> | if your not building on the image how do you do continous integration without relying on development machine configuration states |
2021-11-05 21:28:19 +0100 | <aegon> | maybe i'm being overly guarded against state but the more self contained your code -> bits running on the box is the less of a headache digging into any odd behavior is |
2021-11-05 21:28:37 +0100 | <davean> | make the base image, make an overlay with the build tools, build it, put the produced files ontop of the origional image, put the tests on top, run them, push the one below the tests - or just tell nixos to build you an image with the executable |
2021-11-05 21:29:04 +0100 | <davean> | s/nixos/nix |
2021-11-05 21:29:47 +0100 | <davean> | none of that in any way talks about the developement machine state |
2021-11-05 21:30:00 +0100 | haskl | (~haskl@user/haskl) (Ping timeout: 268 seconds) |
2021-11-05 21:30:05 +0100 | <davean> | and you don't need to even if you build on the system - you can unpack your distro into a folder |
2021-11-05 21:30:21 +0100 | <davean> | chroots a very standard *nix thing |
2021-11-05 21:30:39 +0100 | a6a45081-2b83 | (~aditya@2603-6080-0800-8e4a-0000-0000-0000-01a8.res6.spectrum.com) |
2021-11-05 21:30:46 +0100 | <davean> | but you can use containers to not think about that like above |
2021-11-05 21:32:01 +0100 | <aegon> | i haven't piled on the nix wagon yet, i'm trying to put it off till next year. If you have any recommended guides or intro's to nix i def want to start reading up on it |
2021-11-05 21:32:25 +0100 | <davean> | I made sure to give you the way following your current strategy first |
2021-11-05 21:33:24 +0100 | <aegon> | yeah, i'm not trying to be combative. I think i'm missing something about that way. So you build an executable first outside the image, then as part of the docker file you copy that bin into the image? |
2021-11-05 21:33:53 +0100 | <aegon> | then you unit and run integration tests on the packaged image to catch any missing or differing librarie |
2021-11-05 21:33:56 +0100 | <davean> | No, I didn't use that approach because I wanted to satisfy your fears |
2021-11-05 21:33:56 +0100 | <aegon> | *s |
2021-11-05 21:33:59 +0100 | <davean> | So |
2021-11-05 21:34:14 +0100 | <davean> | start with creatinage base_image, which is the base you want your executable to run on |
2021-11-05 21:34:28 +0100 | <davean> | create overlay on _base_image of build_tools with ghc/cabal |
2021-11-05 21:34:40 +0100 | <davean> | in build_tools, build your executable |
2021-11-05 21:34:59 +0100 | <davean> | now, export your executable package and inject it ontop of base_image to make final_image |
2021-11-05 21:35:13 +0100 | <davean> | now overlay test_package on final_image to make verification_image |
2021-11-05 21:35:17 +0100 | <davean> | in verification_image run tests |
2021-11-05 21:35:25 +0100 | <davean> | now when tests pass, push final_image |
2021-11-05 21:36:49 +0100 | <aegon> | i see, so then you can use the build_tools version to keep a cache of past binary builds, thats a neat trick. I've been starting from scratch and just doing the dev tools setup / removal all in one step to avoid the intermediary junk from staying in history |
2021-11-05 21:36:55 +0100 | <davean> | so you get your container image, with the same libraries the executable was built with, guarrentteed, and tested as it is pushed |
2021-11-05 21:36:58 +0100 | a6a45081-2b83 | (~aditya@2603-6080-0800-8e4a-0000-0000-0000-01a8.res6.spectrum.com) (Remote host closed the connection) |
2021-11-05 21:37:13 +0100 | <davean> | Yep! |
2021-11-05 21:37:22 +0100 | <davean> | it does caching inherently! :) |
2021-11-05 21:37:34 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) |
2021-11-05 21:37:45 +0100 | <davean> | now, nix manages a nicer way of doing this FOR you but I certaintly wasn't pushing nix - I have a love hate relationship with it |
2021-11-05 21:38:00 +0100 | <davean> | I wanted to show you how you could solve your problems by using the way you were doing it better |
2021-11-05 21:40:19 +0100 | <aegon> | yeah thats neat, i'll try setting it up next server-ish pass. I'm on client side libary stuff now so I can sit on these images for a little. How do you extract the built bin from the build image at the end. Do you do that as part of a build script using the docker cli or is there a slicker way from within the dockerfile |
2021-11-05 21:40:52 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) |
2021-11-05 21:41:19 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
2021-11-05 21:41:32 +0100 | <aegon> | oh i guess you could mount a host folder and target that for the bins |
2021-11-05 21:41:37 +0100 | <davean> | yah |
2021-11-05 21:41:43 +0100 | <davean> | thats what I was startign to type |
2021-11-05 21:41:59 +0100 | <davean> | you just have an output directory |
2021-11-05 21:42:13 +0100 | <davean> | can you tell cabal to build to there (for executables) |
2021-11-05 21:42:20 +0100 | yauhsien | (~yauhsien@118-167-41-229.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
2021-11-05 21:43:21 +0100 | pop3 | (~pop3@user/pop3) (Remote host closed the connection) |
2021-11-05 21:44:15 +0100 | hololeap | (~hololeap@user/hololeap) |
2021-11-05 21:44:48 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-11-05 21:44:49 +0100 | <aegon> | thats cool, thanks for sharing. If every dev has that build image locally thats a much better sanity check before pushing than waiting for some ci pipeline to tell you a lib is off after you've context switched |
2021-11-05 21:45:03 +0100 | <davean> | hell yes |
2021-11-05 21:45:42 +0100 | <davean> | Its always my instinct when people complain about build times in Haskell to look closer |
2021-11-05 21:48:10 +0100 | <maerwald> | go builds faster than haskell |
2021-11-05 21:48:17 +0100 | <davean> | maerwald: lol |
2021-11-05 21:50:39 +0100 | a6a45081-2b83 | (~aditya@2603-6080-0800-8e4a-0000-0000-0000-01a8.res6.spectrum.com) |
2021-11-05 21:50:56 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) |
2021-11-05 21:52:19 +0100 | a6a45081-2b83 | (~aditya@2603-6080-0800-8e4a-0000-0000-0000-01a8.res6.spectrum.com) (Read error: Connection reset by peer) |
2021-11-05 21:52:49 +0100 | a6a45081-2b83 | (~aditya@2603-6080-0800-8e4a-0000-0000-0000-01a8.res6.spectrum.com) |
2021-11-05 21:54:55 +0100 | <syd> | are First and Last valid Semigroups when implemented for any old a rather than Maybe a? |
2021-11-05 21:54:59 +0100 | <syd> | that is, (<>) for First a is const, and for Last a is const id. |
2021-11-05 21:55:17 +0100 | fuzzypixelz | (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) |
2021-11-05 21:55:24 +0100 | <fuzzypixelz> | hello! |
2021-11-05 21:55:30 +0100 | <dolio> | syd: Yes. |
2021-11-05 21:55:47 +0100 | <syd> | dolio: much appreciated, thank you :) |
2021-11-05 21:55:50 +0100 | trriplex | (~trriplex@user/trriplex) (Remote host closed the connection) |
2021-11-05 21:57:08 +0100 | <dolio> | Also if you make `Maybe a` a Monoid whenever `a` is a semigroup by using `Nothing` to adjoin an identity element, you get back the possibly empty version. |
2021-11-05 21:57:24 +0100 | a6a45081-2b83 | (~aditya@2603-6080-0800-8e4a-0000-0000-0000-01a8.res6.spectrum.com) (Read error: Connection reset by peer) |
2021-11-05 21:58:42 +0100 | <dolio> | But is also works for any other semigroup. |
2021-11-05 22:00:14 +0100 | yrlnry | (~mjd@pool-74-109-22-90.phlapa.fios.verizon.net) (Ping timeout: 268 seconds) |
2021-11-05 22:00:28 +0100 | <syd> | I'm trying to write a Monoid for custom type isomorphic (I think) to (Maybe Bool), with (Red | Blue) taking place of Bool. |
2021-11-05 22:00:40 +0100 | <syd> | I'd like are to parameterize over the Maybe Monoid part as thought it was like either And/Or, and the Colour part as though it was either First/Last. |
2021-11-05 22:01:01 +0100 | <syd> | https://pastebin.com/JLpAhA2u excuse my bad Haskell, this is my first time trying to write a Semigroup. |
2021-11-05 22:01:25 +0100 | <syd> | (though i've used most of the stdlib ones in the past to varying degrees) |
2021-11-05 22:02:10 +0100 | <c_wraith> | do you need to define your own First and Last? the ones in Data.SemiGroup are equivalent |
2021-11-05 22:02:37 +0100 | <c_wraith> | errr. Data.Semigroup |
2021-11-05 22:02:48 +0100 | pop3 | (~pop3@user/pop3) |
2021-11-05 22:03:20 +0100 | nschoe | (~quassel@2a01:e0a:8e:a190:c6dc:21f9:bc16:feb3) (Remote host closed the connection) |
2021-11-05 22:04:01 +0100 | <syd> | in honesty, I kept tripping myself up with the extra Maybe wrapper due to the one already used for the And/Or bit.. |
2021-11-05 22:04:33 +0100 | nschoe | (~quassel@2a01:e0a:8e:a190:a0c8:bcb7:cb64:d44d) |
2021-11-05 22:04:33 +0100 | nschoe | (~quassel@2a01:e0a:8e:a190:a0c8:bcb7:cb64:d44d) (Client Quit) |
2021-11-05 22:05:04 +0100 | <monochrom> | OK, where, in that paste, can I find "custom type isomorphic (I think) to (Maybe Bool), with (Red | Blue) taking place of Bool"? |
2021-11-05 22:05:52 +0100 | <syd> | argh sorry, the actual type I want to work with is (Maybe Colour), with Colour being Red | Blue |
2021-11-05 22:06:11 +0100 | <syd> | but using those newtype wrappers and instances to mix-and-match how the layers are combined Semigroup..ally? |
2021-11-05 22:07:02 +0100 | <monochrom> | The Colour part is like Bool, therefore First and Last are not very relevant. |
2021-11-05 22:11:27 +0100 | <syd> | Howso? When trying to combine the Red | Blue layer monoidally, I'd like to parameterize whether the first is preferred or the second independent of how the Maybe layers are combined. |
2021-11-05 22:11:45 +0100 | <monochrom> | That describes the Maybe level. |
2021-11-05 22:11:57 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2021-11-05 22:12:13 +0100 | <ski> | how's "first vs. second" related to `Red | Blue' ? |
2021-11-05 22:12:27 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2021-11-05 22:12:34 +0100 | <monochrom> | Unrelated. That's what I said. |
2021-11-05 22:12:35 +0100 | <syd> | Hmm, what about choosing whether the Maybe layer is combined in And/Or (with Nothing being like False) |
2021-11-05 22:13:01 +0100 | <monochrom> | Ah OK sorry ski I misread your nick. |
2021-11-05 22:13:20 +0100 | ski | grins |
2021-11-05 22:13:53 +0100 | <monochrom> | Sure, you can prove that AnyMay and AllMay satisfy the laws. |
2021-11-05 22:14:24 +0100 | ski | 's still not sure what the question is |
2021-11-05 22:14:42 +0100 | <syd> | for context, I got carried away implementing this: http://www.mmhp.net/Passwords/PassCrack3.html |
2021-11-05 22:14:44 +0100 | <monochrom> | It is an extremely unclear question. |
2021-11-05 22:15:51 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-05 22:15:57 +0100 | <syd> | yeah I need to think about it more, should have stopped at the "is First/Last a" a Semigroup. I'll think on it more, thanks for the help! |
2021-11-05 22:17:29 +0100 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 268 seconds) |
2021-11-05 22:17:51 +0100 | cheater1__ | (~Username@user/cheater) |
2021-11-05 22:18:07 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 268 seconds) |
2021-11-05 22:18:08 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-11-05 22:18:15 +0100 | cheater1__ | cheater |
2021-11-05 22:23:28 +0100 | lbseale_ | (~lbseale@user/ep1ctetus) |
2021-11-05 22:24:27 +0100 | haskl | (~haskl@user/haskl) |
2021-11-05 22:24:30 +0100 | bollu1 | (~bollu@139.59.46.74) |
2021-11-05 22:24:35 +0100 | ridcully_ | (~ridcully@p57b523cc.dip0.t-ipconnect.de) |
2021-11-05 22:25:18 +0100 | cfebs_ | (~cfebs@user/cfebs) |
2021-11-05 22:25:19 +0100 | thaumavorio_ | (~thaumavor@thaumavor.io) |
2021-11-05 22:25:28 +0100 | Papa_ | (~papa@user/papa) |
2021-11-05 22:25:34 +0100 | adamCS_ | (~adamCS@ec2-34-207-160-255.compute-1.amazonaws.com) |
2021-11-05 22:25:49 +0100 | peutri_ | (~peutri@ns317027.ip-94-23-46.eu) |
2021-11-05 22:25:51 +0100 | ian_ | (~ian@matrix.chaos.earth.li) |
2021-11-05 22:25:56 +0100 | shanemikel_ | (~shanemike@desk.roadwar.net) |
2021-11-05 22:26:08 +0100 | xacktm_ | (xacktm@user/xacktm) |
2021-11-05 22:26:12 +0100 | _koolazer | (~koo@user/koolazer) |
2021-11-05 22:26:14 +0100 | zer0bitz | (~zer0bitz@dsl-hkibng31-54fae3-116.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-11-05 22:26:34 +0100 | dka_ | (~code-is-a@ns3059207.ip-193-70-33.eu) |
2021-11-05 22:26:38 +0100 | lbseale | (~lbseale@user/ep1ctetus) (Ping timeout: 260 seconds) |
2021-11-05 22:26:41 +0100 | jlamothe_ | (~jlamothe@198.251.61.229) |
2021-11-05 22:26:43 +0100 | nf__ | (~n@monade.li) |
2021-11-05 22:26:43 +0100 | papa | (~papa@user/papa) (Ping timeout: 246 seconds) |
2021-11-05 22:26:43 +0100 | cfebs | (~cfebs@user/cfebs) (Ping timeout: 246 seconds) |
2021-11-05 22:26:43 +0100 | alexfmpe[m] | (~alexfmpem@2001:470:69fc:105::38ba) (Ping timeout: 246 seconds) |
2021-11-05 22:26:43 +0100 | kevin[m]1 | (~pnotequal@2001:470:69fc:105::a54) (Ping timeout: 246 seconds) |
2021-11-05 22:26:43 +0100 | cfebs_ | cfebs |
2021-11-05 22:26:48 +0100 | alex[m]123 | (~alexchete@2001:470:69fc:105::1:1001) (Ping timeout: 246 seconds) |
2021-11-05 22:26:48 +0100 | PotatoHatsue | (~berberman@2001:470:69fc:105::b488) (Ping timeout: 246 seconds) |
2021-11-05 22:26:48 +0100 | peutri | (~peutri@ns317027.ip-94-23-46.eu) (Ping timeout: 246 seconds) |
2021-11-05 22:26:48 +0100 | Igloo | (~ian@matrix.chaos.earth.li) (Ping timeout: 246 seconds) |
2021-11-05 22:26:48 +0100 | denbrahe[m] | (~denbrahem@2001:470:69fc:105::19c0) (Ping timeout: 246 seconds) |
2021-11-05 22:26:48 +0100 | bitonic | (~bitonic@2001:470:69fc:105::1812) (Ping timeout: 246 seconds) |
2021-11-05 22:26:48 +0100 | kadoban | (~kadoban@user/kadoban) (Ping timeout: 246 seconds) |
2021-11-05 22:26:49 +0100 | fr33domlover1 | (~fr33domlo@angeley.es) |
2021-11-05 22:26:54 +0100 | _ht | (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
2021-11-05 22:26:54 +0100 | jmtd | (jon@dow.land) |
2021-11-05 22:27:03 +0100 | cocreatu1 | (~moritz@2a03:b0c0:3:d0::c8:f001) |
2021-11-05 22:27:07 +0100 | bollu | (~bollu@139.59.46.74) (Read error: Connection reset by peer) |
2021-11-05 22:27:07 +0100 | ridcully | (~ridcully@p57b523cc.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
2021-11-05 22:27:07 +0100 | thaumavorio | (~thaumavor@thaumavor.io) (Ping timeout: 268 seconds) |
2021-11-05 22:27:07 +0100 | shanemikel | (~shanemike@desk.roadwar.net) (Ping timeout: 268 seconds) |
2021-11-05 22:27:07 +0100 | xacktm | (xacktm@user/xacktm) (Ping timeout: 268 seconds) |
2021-11-05 22:27:07 +0100 | Domino[m] | (~dominothe@2001:470:69fc:105::1:271b) (Ping timeout: 268 seconds) |
2021-11-05 22:27:07 +0100 | bollu1 | bollu |
2021-11-05 22:27:15 +0100 | moats | (~oats@user/oats) (Ping timeout: 268 seconds) |
2021-11-05 22:27:15 +0100 | ilkecan[m] | (~ilkecanma@2001:470:69fc:105::1:79b) (Ping timeout: 268 seconds) |
2021-11-05 22:27:16 +0100 | afotgkmnzj7asv3r | (~afotgkmnz@2001:470:69fc:105::c24b) (Ping timeout: 268 seconds) |
2021-11-05 22:27:16 +0100 | thomasjm[m] | (~thomasjmm@2001:470:69fc:105::c6d9) (Ping timeout: 268 seconds) |
2021-11-05 22:27:16 +0100 | ericson2314 | (~ericson23@2001:470:69fc:105::70c) (Ping timeout: 268 seconds) |
2021-11-05 22:27:16 +0100 | cdsmith | (~cdsmithma@2001:470:69fc:105::284) (Ping timeout: 268 seconds) |
2021-11-05 22:27:16 +0100 | Arathorn | (~arathorn@2001:470:69fc:105::1f) (Ping timeout: 268 seconds) |
2021-11-05 22:27:16 +0100 | jneira[m] | (~jneiramat@2001:470:69fc:105::d729) (Ping timeout: 268 seconds) |
2021-11-05 22:27:16 +0100 | st | (~ts@46.101.20.9) (Ping timeout: 268 seconds) |
2021-11-05 22:27:18 +0100 | ts1 | (~ts@46.101.20.9) |
2021-11-05 22:27:24 +0100 | yushyin2 | (rzPUwQNnp2@karif.server-speed.net) |
2021-11-05 22:27:25 +0100 | alex[m]1231 | (~alexchete@2001:470:69fc:105::1:1001) |
2021-11-05 22:27:39 +0100 | nf | (~n@monade.li) (Killed (NickServ (GHOST command used by nf__))) |
2021-11-05 22:27:42 +0100 | nf__ | nf |
2021-11-05 22:27:46 +0100 | dka | (~code-is-a@ns3059207.ip-193-70-33.eu) (Ping timeout: 246 seconds) |
2021-11-05 22:27:46 +0100 | gdhffd[m] | (~gdhffdmat@2001:470:69fc:105::1:799) (Ping timeout: 246 seconds) |
2021-11-05 22:27:46 +0100 | fendor[m] | (~fendormat@2001:470:69fc:105::fcbd) (Ping timeout: 246 seconds) |
2021-11-05 22:27:46 +0100 | orzo | (~joe@lasker.childrenofmay.org) (Ping timeout: 246 seconds) |
2021-11-05 22:27:47 +0100 | conphiz[m] | (~conphizma@2001:470:69fc:105::c052) (Ping timeout: 246 seconds) |
2021-11-05 22:27:47 +0100 | Jon | (jon@dow.land) (Ping timeout: 246 seconds) |
2021-11-05 22:27:47 +0100 | cocreature | (~moritz@2a03:b0c0:3:d0::c8:f001) (Ping timeout: 246 seconds) |
2021-11-05 22:28:08 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-11-05 22:28:13 +0100 | PotatoHatsue | (~berberman@2001:470:69fc:105::b488) |
2021-11-05 22:28:19 +0100 | <aegon> | server hiccup or did an astroid hit the earth |
2021-11-05 22:28:22 +0100 | adamCS | (~adamCS@ec2-34-207-160-255.compute-1.amazonaws.com) (Ping timeout: 264 seconds) |
2021-11-05 22:28:23 +0100 | koolazer | (~koo@user/koolazer) (Ping timeout: 264 seconds) |
2021-11-05 22:28:23 +0100 | leah2 | (~leah@vuxu.org) (Ping timeout: 264 seconds) |
2021-11-05 22:28:23 +0100 | adamCS_ | adamCS |
2021-11-05 22:28:23 +0100 | unclechu | (~unclechu@2001:470:69fc:105::354) (Ping timeout: 264 seconds) |
2021-11-05 22:28:23 +0100 | fakehacker[m] | (~fakehacke@2001:470:69fc:105::b5f0) (Ping timeout: 264 seconds) |
2021-11-05 22:28:23 +0100 | fcortesi | (~fcortesi@2001:470:69fc:105::f3a9) (Ping timeout: 264 seconds) |
2021-11-05 22:28:23 +0100 | the-coot[m] | (~the-cootm@2001:470:69fc:105::95f) (Ping timeout: 264 seconds) |
2021-11-05 22:28:23 +0100 | jlamothe | (~jlamothe@198.251.61.229) (Ping timeout: 264 seconds) |
2021-11-05 22:28:23 +0100 | fgaz | (~fgaz@2001:470:69fc:105::842) (Ping timeout: 264 seconds) |
2021-11-05 22:28:23 +0100 | MatrixTravelerbo | (~voyagert2@2001:470:69fc:105::22) (Ping timeout: 264 seconds) |
2021-11-05 22:28:23 +0100 | kosmikus[m] | (~andresloe@2001:470:69fc:105::95d) (Ping timeout: 264 seconds) |
2021-11-05 22:28:23 +0100 | jesser[m] | (~jessermat@2001:470:69fc:105::d5ae) (Ping timeout: 264 seconds) |
2021-11-05 22:28:23 +0100 | craige[m] | (~craigemcw@2001:470:69fc:105::35f1) (Ping timeout: 264 seconds) |
2021-11-05 22:28:23 +0100 | mekeor[m] | (~mekeormat@2001:470:69fc:105::17e4) (Ping timeout: 264 seconds) |
2021-11-05 22:28:23 +0100 | glider_ | (~glider@user/glider) (Ping timeout: 264 seconds) |
2021-11-05 22:28:23 +0100 | fr33domlover | (~fr33domlo@angeley.es) (Ping timeout: 264 seconds) |
2021-11-05 22:28:23 +0100 | yushyin | (vmwyqzEgOc@karif.server-speed.net) (Ping timeout: 264 seconds) |
2021-11-05 22:28:23 +0100 | Square | (~a@178.62.91.8) (Ping timeout: 264 seconds) |
2021-11-05 22:28:23 +0100 | TomasJakl[m] | (~jaklttchn@2001:470:69fc:105::a42) (Ping timeout: 264 seconds) |
2021-11-05 22:28:23 +0100 | bb010g | (~bb010g@2001:470:69fc:105::9a5) (Ping timeout: 264 seconds) |
2021-11-05 22:28:23 +0100 | Topik[m] | (~topikmatr@2001:470:69fc:105::a082) (Ping timeout: 264 seconds) |
2021-11-05 22:28:53 +0100 | xsarnik | (xsarnik@lounge.fi.muni.cz) (Ping timeout: 264 seconds) |
2021-11-05 22:29:01 +0100 | leah2 | (~leah@vuxu.org) |
2021-11-05 22:29:05 +0100 | xsarnik | (xsarnik@lounge.fi.muni.cz) |
2021-11-05 22:29:14 +0100 | <geekosaur> | looks like someone kicked the matrix |
2021-11-05 22:29:18 +0100 | yushyin2 | yushyin |
2021-11-05 22:29:18 +0100 | <ski> | matrix bridge, maybe ? |
2021-11-05 22:29:22 +0100 | <ski> | mm |
2021-11-05 22:29:50 +0100 | alexfmpe[m] | (~alexfmpem@2001:470:69fc:105::38ba) |
2021-11-05 22:29:54 +0100 | <monochrom> | The matrix bridge quantum-tunneled to Jupiter :) |
2021-11-05 22:29:55 +0100 | Square | (~a@178.62.91.8) |
2021-11-05 22:30:02 +0100 | kevin[m]1 | (~pnotequal@2001:470:69fc:105::a54) |
2021-11-05 22:31:46 +0100 | kadoban | (~kadoban@user/kadoban) |
2021-11-05 22:32:19 +0100 | bitonic | (~bitonic@2001:470:69fc:105::1812) |
2021-11-05 22:32:30 +0100 | denbrahe[m] | (~denbrahem@2001:470:69fc:105::19c0) |
2021-11-05 22:32:31 +0100 | haskl | (~haskl@user/haskl) (Ping timeout: 256 seconds) |
2021-11-05 22:32:38 +0100 | haskl[error] | (~haskl@user/haskl) |
2021-11-05 22:33:10 +0100 | Arathorn | (~arathorn@2001:470:69fc:105::1f) |
2021-11-05 22:33:26 +0100 | ericson2314 | (~ericson23@2001:470:69fc:105::70c) |
2021-11-05 22:33:29 +0100 | glider | (~glider@user/glider) |
2021-11-05 22:33:33 +0100 | MoC | (~moc@user/moc) |
2021-11-05 22:33:38 +0100 | moats | (~oats@user/oats) |
2021-11-05 22:34:46 +0100 | Domino[m] | (~dominothe@2001:470:69fc:105::1:271b) |
2021-11-05 22:34:50 +0100 | ilkecan[m] | (~ilkecanma@2001:470:69fc:105::1:79b) |
2021-11-05 22:34:51 +0100 | thomasjm[m] | (~thomasjmm@2001:470:69fc:105::c6d9) |
2021-11-05 22:34:51 +0100 | afotgkmnzj7asv3r | (~afotgkmnz@2001:470:69fc:105::c24b) |
2021-11-05 22:34:53 +0100 | cdsmith | (~cdsmithma@2001:470:69fc:105::284) |
2021-11-05 22:34:58 +0100 | marinelli[m] | (~marinelli@2001:470:69fc:105::2d8) (Quit: Reconnecting) |
2021-11-05 22:36:54 +0100 | <aegon> | for any hls contributers out there, first, thank you for your service, second is there a reason go to definition doesn't work for package dependencies? |
2021-11-05 22:37:53 +0100 | <aegon> | i've been using a local hackage but its pretty great to be able to hope around in editor to stuff |
2021-11-05 22:37:59 +0100 | <geekosaur> | would this be a queston for #haskell-language-server ? |
2021-11-05 22:38:47 +0100 | gdhffd[m] | (~gdhffdmat@2001:470:69fc:105::1:799) |
2021-11-05 22:38:48 +0100 | shapr | (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
2021-11-05 22:38:51 +0100 | fendor[m] | (~fendormat@2001:470:69fc:105::fcbd) |
2021-11-05 22:38:58 +0100 | <aegon> | oh snap, it would be, headed over there |
2021-11-05 22:39:42 +0100 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
2021-11-05 22:40:41 +0100 | unclechu | (~unclechu@2001:470:69fc:105::354) |
2021-11-05 22:41:01 +0100 | slac76440 | (~slack1256@191.125.99.211) (Ping timeout: 256 seconds) |
2021-11-05 22:41:08 +0100 | mekeor[m] | (~mekeormat@2001:470:69fc:105::17e4) |
2021-11-05 22:41:49 +0100 | fgaz | (~fgaz@2001:470:69fc:105::842) |
2021-11-05 22:42:53 +0100 | kosmikus[m] | (~andresloe@2001:470:69fc:105::95d) |
2021-11-05 22:42:54 +0100 | craige[m] | (~craigemcw@2001:470:69fc:105::35f1) |
2021-11-05 22:42:54 +0100 | fcortesi | (~fcortesi@2001:470:69fc:105::f3a9) |
2021-11-05 22:42:56 +0100 | the-coot[m] | (~the-cootm@2001:470:69fc:105::95f) |
2021-11-05 22:43:31 +0100 | jesser[m] | (~jessermat@2001:470:69fc:105::d5ae) |
2021-11-05 22:43:32 +0100 | fakehacker[m] | (~fakehacke@2001:470:69fc:105::b5f0) |
2021-11-05 22:46:29 +0100 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 268 seconds) |
2021-11-05 22:46:50 +0100 | stiell | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2021-11-05 22:46:53 +0100 | jneira[m] | (~jneiramat@2001:470:69fc:105::d729) |
2021-11-05 22:47:27 +0100 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2021-11-05 22:48:59 +0100 | jespada | (~jespada@190.7.36.46) |
2021-11-05 22:49:29 +0100 | bb010g | (~bb010g@2001:470:69fc:105::9a5) |
2021-11-05 22:50:09 +0100 | TomasJakl[m] | (~jaklttchn@2001:470:69fc:105::a42) |
2021-11-05 22:50:11 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
2021-11-05 22:50:39 +0100 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3) |
2021-11-05 22:51:35 +0100 | MatrixTravelerbo | (~voyagert2@2001:470:69fc:105::22) |
2021-11-05 22:51:45 +0100 | Topik[m] | (~topikmatr@2001:470:69fc:105::a082) |
2021-11-05 22:51:57 +0100 | random-jellyfish | (~random-je@user/random-jellyfish) |
2021-11-05 22:52:52 +0100 | conphiz[m] | (~conphizma@2001:470:69fc:105::c052) |
2021-11-05 22:52:52 +0100 | marinelli[m] | (~marinelli@2001:470:69fc:105::2d8) |
2021-11-05 22:56:21 +0100 | haskl[error] | (~haskl@user/haskl) (Ping timeout: 245 seconds) |
2021-11-05 22:56:24 +0100 | pavonia | (~user@user/siracusa) |
2021-11-05 23:00:21 +0100 | pgib | (~textual@173.38.117.89) |
2021-11-05 23:00:28 +0100 | joel135 | (sid136450@hampstead.irccloud.com) |
2021-11-05 23:02:36 +0100 | <joel135> | could you help me get this to compile? https://paste.tomsmeding.com/C86kwGkO |
2021-11-05 23:03:42 +0100 | <joel135> | i thought i had learned how to handle this situation, namely by making my `Poly` type into a datatype, but alas no |
2021-11-05 23:05:29 +0100 | <joel135> | i thought the constructor would hide the `forall` business from the typechecker and make it happy |
2021-11-05 23:06:25 +0100 | <fuzzypixelz> | I wrote this a couple weeks ago: https://github.com/fuzzypixelz/Hustle |
2021-11-05 23:06:55 +0100 | <fuzzypixelz> | I'd like your opinions on how it can improved |
2021-11-05 23:08:13 +0100 | <fuzzypixelz> | I'm afraid I've made some irrecoverable decisions from the start (like using Megaparsec instead of attoparsec ... only after I was done did I notice all parsing libs use atto) |
2021-11-05 23:09:33 +0100 | <geekosaur> | joel135, what sticks out to me immediately is that the foldr already produces a Poly, so you shouldn't need to wrap it in another one |
2021-11-05 23:09:53 +0100 | <joel135> | ah thanks |
2021-11-05 23:10:01 +0100 | <joel135> | silly mistake :) |
2021-11-05 23:16:16 +0100 | haasn` | (~nand@haasn.dev) |
2021-11-05 23:16:23 +0100 | LiaoTao | (~LiaoTao@gateway/tor-sasl/liaotao) (Remote host closed the connection) |
2021-11-05 23:16:41 +0100 | jespada | (~jespada@190.7.36.46) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-11-05 23:16:46 +0100 | hololeap | (~hololeap@user/hololeap) (Read error: Connection reset by peer) |
2021-11-05 23:16:52 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2021-11-05 23:17:08 +0100 | aforemny | (~aforemny@static.248.158.34.188.clients.your-server.de) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-11-05 23:17:18 +0100 | LiaoTao | (~LiaoTao@gateway/tor-sasl/liaotao) |
2021-11-05 23:17:20 +0100 | fuzzypixelz | (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 256 seconds) |
2021-11-05 23:17:20 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2021-11-05 23:17:24 +0100 | haasn | (~nand@haasn.dev) (Ping timeout: 268 seconds) |
2021-11-05 23:17:25 +0100 | tired | (~tired@user/tired) (Quit: /) |
2021-11-05 23:17:27 +0100 | aforemny | (~aforemny@static.248.158.34.188.clients.your-server.de) |
2021-11-05 23:17:29 +0100 | V | (~v@anomalous.eu) (Ping timeout: 264 seconds) |
2021-11-05 23:17:30 +0100 | xnbya | (~xnbya@2a01:4f8:c17:cbdd::1) (Ping timeout: 260 seconds) |
2021-11-05 23:17:40 +0100 | haasn` | haasn |
2021-11-05 23:17:42 +0100 | xnbya | (~xnbya@2a01:4f8:c17:cbdd::1) |
2021-11-05 23:17:43 +0100 | tired | (~tired@user/tired) |
2021-11-05 23:17:47 +0100 | V | (~v@anomalous.eu) |
2021-11-05 23:18:02 +0100 | hololeap | (~hololeap@user/hololeap) |
2021-11-05 23:19:11 +0100 | jpds1 | (~jpds@gateway/tor-sasl/jpds) |
2021-11-05 23:19:27 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2021-11-05 23:19:30 +0100 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2021-11-05 23:19:30 +0100 | finn_elija | FinnElija |
2021-11-05 23:20:32 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2021-11-05 23:22:33 +0100 | EvanR | (~evan@user/evanr) |
2021-11-05 23:22:56 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2021-11-05 23:23:52 +0100 | vladl | (~vladl@174.127.234.115) (Quit: Lost terminal) |
2021-11-05 23:24:23 +0100 | johnny_sitar | (~artur@078088015209.bialystok.vectranet.pl) (Ping timeout: 264 seconds) |
2021-11-05 23:27:20 +0100 | JSharp | (sid4580@id-4580.lymington.irccloud.com) (Ping timeout: 260 seconds) |
2021-11-05 23:28:21 +0100 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) |
2021-11-05 23:28:25 +0100 | max22- | (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Quit: Leaving) |
2021-11-05 23:28:39 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-11-05 23:28:49 +0100 | JSharp | (sid4580@id-4580.lymington.irccloud.com) |
2021-11-05 23:30:08 +0100 | Kaiepi | (~Kaiepi@156.34.44.192) (Remote host closed the connection) |
2021-11-05 23:32:32 +0100 | Kaiepi | (~Kaiepi@156.34.44.192) |
2021-11-05 23:33:26 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
2021-11-05 23:38:40 +0100 | <joel135> | now i finished the file i was working on https://github.com/JoelSjogren/diff-poly/blob/main/DiffPoly.hs |
2021-11-05 23:41:02 +0100 | haskl | (~haskl@user/haskl) |
2021-11-05 23:41:26 +0100 | michalz | (~michalz@185.246.204.40) (Remote host closed the connection) |
2021-11-05 23:41:29 +0100 | dolio | (~dolio@130.44.130.54) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-11-05 23:43:21 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
2021-11-05 23:44:02 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-11-05 23:45:55 +0100 | alphabeta | (~kilolympu@185.65.135.177) (Quit: Quitting IRC :() |
2021-11-05 23:46:32 +0100 | toreiussd | (uid469671@id-469671.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2021-11-05 23:47:34 +0100 | dolio | (~dolio@130.44.130.54) |
2021-11-05 23:48:22 +0100 | haskl | (~haskl@user/haskl) (Ping timeout: 260 seconds) |
2021-11-05 23:48:34 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-11-05 23:50:03 +0100 | <ski> | joel135 : "next step" after naturals ? |
2021-11-05 23:50:12 +0100 | <joel135> | yes!! |
2021-11-05 23:50:15 +0100 | <joel135> | hej stefan |
2021-11-05 23:50:28 +0100 | <ski> | hejs :) |
2021-11-05 23:51:10 +0100 | <ski> | this reminds me of some investigation i did recently, comparing church numerals to logic programming |
2021-11-05 23:51:29 +0100 | haskl | (~haskl@user/haskl) |
2021-11-05 23:51:39 +0100 | <joel135> | let me write out the induction hypothesis for https://github.com/JoelSjogren/diff-poly/blob/main/DiffPoly.hs#L85 |
2021-11-05 23:51:49 +0100 | <joel135> | (in unerased form) |
2021-11-05 23:53:12 +0100 | <joel135> | "whenever k : Poly is such that for all f : Poly differentiability of f implies that of f+k (= g), then for all h : Poly differentiability of h implies that of h+xg" |
2021-11-05 23:53:51 +0100 | <ski> | (and, to a prototype i did, years ago, that implemented goal implications (with the possibility of arbitrary left-nesting) on top of basic logic programming, by employing a stack of `ContT's, nested as deep as you with (left-nesting implication increases depth by one), and then some mutation at the bottom, for logic variables. using this, you can "backtrack backtracking",&c. .. also an interesting "duality" |
2021-11-05 23:53:57 +0100 | <ski> | of sorts between logic variables and skolems/atoms emerged) |
2021-11-05 23:54:26 +0100 | <joel135> | (there may be some subtle error in what i just wrote) |
2021-11-05 23:54:59 +0100 | <joel135> | hmm, let me switch gears and start to take in what you are writing |
2021-11-05 23:55:51 +0100 | <ski> | imagine something like `forall o. Fix (ContT o) a' .. although not quite that |
2021-11-05 23:57:13 +0100 | <joel135> | oh yes, that left-nesting is actually how i sketched `level_2` out on paper first, namely `((f, f') ↦ (g, g')) ↦ ((h, h') ↦ (l, l'))` |
2021-11-05 23:59:02 +0100 | <ski> | addition and multiplication can be done with plain `ContT' (iow the same global "answer type" `o'), but exponentiation seems to require `Codensity' (iow, you pass around `forall o.'-ed stuff, rank-2) |
2021-11-05 23:59:22 +0100 | <ski> | (addition = disjunction, multiplication = conjunction, exponentiation = implication) |