2021/01/07

2021-01-07 00:00:24 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-07 00:01:12 +0100 <pie_> aha
2021-01-07 00:03:42 +0100kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2021-01-07 00:04:06 +0100darjeeling_(~darjeelin@122.245.218.97) (Ping timeout: 265 seconds)
2021-01-07 00:04:36 +0100kyali(~kyali@APN-123-253-144-gprs.simobil.net) (Ping timeout: 240 seconds)
2021-01-07 00:06:25 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Remote host closed the connection)
2021-01-07 00:06:57 +0100nhs_(~nhs@c-67-180-177-103.hsd1.ca.comcast.net)
2021-01-07 00:09:00 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2021-01-07 00:13:14 +0100manjaro-user_(~manjaro-u@2601:285:c000:a6c0::4f77) (Ping timeout: 264 seconds)
2021-01-07 00:13:29 +0100 <pie_> monochrom: this wont make you happy because it doesnt help understand the code but unless it doesnt do what it says on the tin, adding gc "fixes" the crash https://bpa.st/raw/DNGA
2021-01-07 00:13:38 +0100 <pie_> code 139 is segfault, code 141 is sigpipe
2021-01-07 00:13:49 +0100matryoshka(~matryoshk@184.75.223.227) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-07 00:14:34 +0100dansho(~dansho@ec2-13-231-43-236.ap-northeast-1.compute.amazonaws.com)
2021-01-07 00:14:45 +0100matryoshka(~matryoshk@184.75.223.227)
2021-01-07 00:16:06 +0100matryoshka(~matryoshk@184.75.223.227) (Client Quit)
2021-01-07 00:18:05 +0100darjeeling_(~darjeelin@122.245.218.97)
2021-01-07 00:18:52 +0100aarvar(~foewfoiew@2601:602:a080:fa0:4532:73f5:3132:822a)
2021-01-07 00:19:20 +0100 <monochrom> $? = 141 isn't exactly good news either.
2021-01-07 00:19:30 +0100aarvar(~foewfoiew@2601:602:a080:fa0:4532:73f5:3132:822a) (Client Quit)
2021-01-07 00:20:05 +0100plutoniix(~q@ppp-27-55-91-8.revip3.asianet.co.th) (Ping timeout: 240 seconds)
2021-01-07 00:20:06 +0100 <monochrom> Ah you already said that.
2021-01-07 00:20:10 +0100 <pie_> monochrom: thats because i figure head is closing the pipe to ghc or what
2021-01-07 00:20:27 +0100asthasr(~asthasr@162.210.29.120) (Quit: asthasr)
2021-01-07 00:20:37 +0100 <monochrom> No, sigpipe happens to the writer
2021-01-07 00:20:49 +0100 <pie_> oh hm thats weird then
2021-01-07 00:21:11 +0100 <monochrom> But in "... writer | reader" the writer's exit code is completely forgotten.
2021-01-07 00:21:16 +0100 <pie_> (sigpipe happens to the writer does make more sense in general)
2021-01-07 00:23:40 +0100 <pie_> i should have said, ive probably just got some funky FFI stuff somewhere
2021-01-07 00:23:53 +0100 <pie_> because i _am_ screwing around with FFI
2021-01-07 00:23:54 +0100 <monochrom> I would strace ghcpls2 to confirm or refute a lot of hypotheses.
2021-01-07 00:24:09 +0100 <pie_> i just would have expected increasing GC would lead to more crash
2021-01-07 00:24:40 +0100 <pie_> i did throw gdb at it crashing twice and it was in different parts of clang code
2021-01-07 00:25:05 +0100 <monochrom> But looking at exit codes is a good idea.
2021-01-07 00:25:37 +0100 <pie_> errrr , sorry, not actually sure 141 is sigpipe
2021-01-07 00:25:39 +0100 <monochrom> unveiled that things were never right even when there was no error message
2021-01-07 00:25:49 +0100matryoshka(~matryoshk@184.75.223.227)
2021-01-07 00:26:11 +0100 <pie_> ok i just googled it ant it looks like it is
2021-01-07 00:27:17 +0100 <pie_> monochrom: this is the stdout of a code 141 and it looks fine to me? https://bpa.st/FUFA
2021-01-07 00:28:12 +0100 <ephemient> for future reference: `$ trap -l` `11) SIGSEGV` `13) SIGPIPE` killed by signal sets the high bit of the status code (128)
2021-01-07 00:28:38 +0100qqvat(~private@176.167.9.201) (Quit: Lost terminal)
2021-01-07 00:28:50 +0100Benzi-Junior(~BenziJuni@dsl-149-65-135.hive.is) (Ping timeout: 256 seconds)
2021-01-07 00:28:54 +0100 <pie_> the sigpipe has something to do with using the yes command
2021-01-07 00:29:32 +0100 <ephemient> hmm unless you have shopt -s pipefail it should be ignored in bash
2021-01-07 00:29:41 +0100 <pie_> https://bpa.st/L3YQ
2021-01-07 00:29:52 +0100 <pie_> so that part seems fien
2021-01-07 00:30:08 +0100 <monochrom> What is &> ?
2021-01-07 00:30:35 +0100 <ephemient> 2&> redirects file descriptor 2
2021-01-07 00:31:30 +0100 <monochrom> "./ghcpls2 &>" does not parse as "./ghcpls 2&>"
2021-01-07 00:31:33 +0100 <ephemient> btw, `yes 'print "asd"' | head -n1 | ghci; echo $?` prints 0 here
2021-01-07 00:31:40 +0100 <Uniaika> (what is &>? baby don't pipe me, don't pipe me no more)
2021-01-07 00:33:03 +0100plutoniix(~q@node-use.pool-125-24.dynamic.totinternet.net)
2021-01-07 00:34:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-01-07 00:34:47 +0100Ariakenom(~Ariakenom@2001:9b1:efb:fc00:dc2c:66b9:92e6:b921) (Quit: Leaving)
2021-01-07 00:35:36 +0100 <ephemient> anyhow, I think this looks consistent with (but does not necessarily imply) my guess that GC causes finalizers to run earlier than they would otherwise, leading to some leak not occurring
2021-01-07 00:36:43 +0100manjaro-user_(~manjaro-u@c-73-34-23-13.hsd1.co.comcast.net)
2021-01-07 00:36:45 +0100 <ephemient> maybe there is some foreign state that is being reused when it is not safe to
2021-01-07 00:38:17 +0100pera(~pera@unaffiliated/pera) (Quit: leaving)
2021-01-07 00:39:08 +0100knupfer1(~Thunderbi@200116b824b6e000a132a85041d580a8.dip.versatel-1u1.de)
2021-01-07 00:39:18 +0100knupfer(~Thunderbi@i5E86B49C.versanet.de) (Read error: Connection reset by peer)
2021-01-07 00:39:18 +0100knupfer1knupfer
2021-01-07 00:43:43 +0100knupfer(~Thunderbi@200116b824b6e000a132a85041d580a8.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2021-01-07 00:45:25 +0100conal(~conal@66.115.157.28) (Quit: Computer has gone to sleep.)
2021-01-07 00:45:54 +0100Guest20273(~textual@mskresolve-a.mskcc.org) (Ping timeout: 246 seconds)
2021-01-07 00:46:08 +0100conal(~conal@66.115.157.28)
2021-01-07 00:46:08 +0100conal(~conal@66.115.157.28) (Client Quit)
2021-01-07 00:47:17 +0100conal(~conal@66.115.157.28)
2021-01-07 00:54:03 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-07 00:55:49 +0100emptyflask(~jon@136.49.71.178) (Ping timeout: 256 seconds)
2021-01-07 00:56:20 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2021-01-07 00:56:28 +0100emptyflask(~jon@136.49.71.178)
2021-01-07 00:58:51 +0100Alleria(~textual@2603-7000-3040-0000-f8bc-1046-d481-0a5d.res6.spectrum.com)
2021-01-07 00:59:15 +0100AlleriaGuest41259
2021-01-07 01:01:26 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2021-01-07 01:03:28 +0100 <pie_> ephemient: I was guessing something like this as well. Something I dont have a guess for is, if it's getting GC-d, that should mean it isnt referenced by anything on the haskell side yea? which means foreign side stuff might be referring to something - but in that case, shouldnt the "something" being missing result in a crash if its cleaned up?
2021-01-07 01:03:52 +0100 <pie_> or is it a reasonable possibility that it's checked for null, but if its not GC-d, its not null:
2021-01-07 01:03:58 +0100 <pie_> s/:/?
2021-01-07 01:04:08 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 272 seconds)
2021-01-07 01:04:08 +0100 <pie_> and then crashes ina deeper unchecked portion?
2021-01-07 01:04:22 +0100 <pie_> what other possibilities could there be?
2021-01-07 01:04:57 +0100Guest41259(~textual@2603-7000-3040-0000-f8bc-1046-d481-0a5d.res6.spectrum.com) (Quit: Textual IRC Client: www.textualapp.com)
2021-01-07 01:05:04 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-01-07 01:05:23 +0100 <ephemient> the crash might not be on the Haskell side. e.g. something like C's `strtok()` has internal state that makes it unsafe to intermingle calls with different arguments
2021-01-07 01:05:43 +0100 <ephemient> (although that wouldn't crash, but something like that)
2021-01-07 01:06:36 +0100 <pie_> ephemient: right, i think what im trying to say is, how would a GC _fix_ that?
2021-01-07 01:07:30 +0100 <ephemient> imagine GC cleans up a ForeignPtr that has an associated finalizer that resets some state on the foreign side such that it can be re-used safely by the next operation
2021-01-07 01:09:53 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-07 01:11:10 +0100 <pie_> oh hm
2021-01-07 01:11:32 +0100 <pie_> that sounds quite reasonable under the circumstances
2021-01-07 01:11:47 +0100 <pie_> ephemient: can I get a list of active foreignptrs or something?
2021-01-07 01:12:35 +0100mouseghost(~draco@wikipedia/desperek) (Quit: mew wew)
2021-01-07 01:13:22 +0100aarvar(~foewfoiew@2601:602:a080:fa0:dc6:3a84:1bde:cb55)
2021-01-07 01:13:38 +0100aarvar(~foewfoiew@2601:602:a080:fa0:dc6:3a84:1bde:cb55) (Client Quit)
2021-01-07 01:13:48 +0100 <ephemient> not as far as I know. only GC can find them
2021-01-07 01:13:56 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-07 01:14:06 +0100Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2021-01-07 01:14:31 +0100 <pie_> ephemient: ok what if i have a good guess which foreign ptr it is?
2021-01-07 01:15:13 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-01-07 01:15:20 +0100 <pie_> though in this case i think thats hypothetical because the one guess i do have is actually static i think (or whichever is the one that remains active forever) - so that wouldnt get gc-d
2021-01-07 01:15:22 +0100 <ephemient> you could try GHC.ForeignPtr.finalizeForeignPtr to force the finalizer to run now
2021-01-07 01:15:42 +0100 <pie_> thats an idea, given that the crashing is relatively consistent
2021-01-07 01:16:19 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007)
2021-01-07 01:16:25 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 264 seconds)
2021-01-07 01:19:13 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 272 seconds)
2021-01-07 01:19:25 +0100manjaro-user_(~manjaro-u@c-73-34-23-13.hsd1.co.comcast.net) (Ping timeout: 264 seconds)
2021-01-07 01:19:58 +0100dandels(~dandels@unaffiliated/dandels)
2021-01-07 01:20:48 +0100 <pie_> ephemient: how hard would it be in theory to wrap these foreign types so they maintain a global list of their instances?
2021-01-07 01:21:15 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Quit: mputz)
2021-01-07 01:21:25 +0100 <ephemient> depends on whether it's in code you can modify or not, I guess
2021-01-07 01:22:38 +0100texasmynsted(~texasmyns@99.96.221.112)
2021-01-07 01:22:43 +0100pfurla_(~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 246 seconds)
2021-01-07 01:24:17 +0100Entertainment(~entertain@104.246.132.210) (Ping timeout: 272 seconds)
2021-01-07 01:25:47 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-01-07 01:26:24 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Read error: Connection reset by peer)
2021-01-07 01:26:36 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net) (Ping timeout: 240 seconds)
2021-01-07 01:26:39 +0100cdan`(~user@122-58-46-96-vdsl.sparkbb.co.nz)
2021-01-07 01:27:40 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:12e2:ad75:1255:fdff:5733)
2021-01-07 01:28:16 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2021-01-07 01:29:47 +0100 <cdan`> hi everyone
2021-01-07 01:30:03 +0100cdan`(~user@122-58-46-96-vdsl.sparkbb.co.nz) ()
2021-01-07 01:30:51 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-01-07 01:33:09 +0100cdan(~user@122-58-46-96-vdsl.sparkbb.co.nz)
2021-01-07 01:33:14 +0100 <cdan> Hello
2021-01-07 01:36:50 +0100ransom(~c4264035@8.47.12.52) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-07 01:38:28 +0100 <pie_> ephemient: hm though i suppose that cant be the full solution because without the extra gc commands it still crashes on the first run sometimes
2021-01-07 01:41:01 +0100 <pie_> guess ill start cleaning up my code, maybe that will hep
2021-01-07 01:41:41 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2021-01-07 01:42:24 +0100christo(~chris@81.96.113.213)
2021-01-07 01:44:50 +0100fosterite(~fosterite@2600:6c46:7880:410a:3cda:cdb5:75e9:b6e9)
2021-01-07 01:46:49 +0100christo(~chris@81.96.113.213) (Ping timeout: 256 seconds)
2021-01-07 01:47:42 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net)
2021-01-07 01:47:58 +0100ransom(~c4264035@8.47.12.52)
2021-01-07 01:49:26 +0100justsomeguy(~justsomeg@216.186.218.241)
2021-01-07 01:49:26 +0100justsomeguy(~justsomeg@216.186.218.241) (Changing host)
2021-01-07 01:49:26 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2021-01-07 01:49:33 +0100conal(~conal@66.115.157.28) (Quit: Computer has gone to sleep.)
2021-01-07 01:51:24 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.0)
2021-01-07 01:51:31 +0100conal(~conal@143.244.61.236)
2021-01-07 01:52:17 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 260 seconds)
2021-01-07 01:57:33 +0100jedws(~jedws@121.209.189.201)
2021-01-07 01:58:41 +0100rajivr(uid269651@gateway/web/irccloud.com/x-txjindmtwxpzdgyt)
2021-01-07 02:01:05 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Ping timeout: 240 seconds)
2021-01-07 02:03:22 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2021-01-07 02:04:03 +0100livvy(~livvy@gateway/tor-sasl/livvy) (Ping timeout: 240 seconds)
2021-01-07 02:07:07 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
2021-01-07 02:08:36 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007)
2021-01-07 02:10:48 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net)
2021-01-07 02:16:19 +0100 <Axman6> Anyone else noticed that cabal doesn't respond to ^C? :\
2021-01-07 02:18:33 +0100 <monochrom> ctrl-c worked for me in the few times I needed it.
2021-01-07 02:19:32 +0100jollygood2(~bc812391@217.29.117.252) (Quit: http://www.okay.uz/)
2021-01-07 02:20:51 +0100Tario(~Tario@201.192.165.173)
2021-01-07 02:24:34 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Ping timeout: 272 seconds)
2021-01-07 02:26:46 +0100chenshen(~chenshen@2620:10d:c090:400::5:af56) (Ping timeout: 244 seconds)
2021-01-07 02:27:22 +0100 <int-e> Axman6: which platform?
2021-01-07 02:27:33 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-07 02:27:49 +0100 <maerwald> Axman6: it's with parallel jobs only I think
2021-01-07 02:28:23 +0100 <ezzieyguywuf> is there a way to tell from the info on hackage which git commit corresponds to version 0.1.1.0? https://hackage.haskell.org/package/saltine
2021-01-07 02:29:05 +0100slack1256(~slack1256@dvc-186-186-101-190.movil.vtr.net)
2021-01-07 02:30:37 +0100columbarius1(~columbari@87.123.198.204) (Ping timeout: 246 seconds)
2021-01-07 02:30:44 +0100Tario(~Tario@201.192.165.173)
2021-01-07 02:33:03 +0100columbarius1(~columbari@i5E86B3D0.versanet.de)
2021-01-07 02:33:57 +0100 <sm[m]> I guess not ezzieyguywuf, which is an interesting point. I guess you go to the repo and look for the appropriate tag, and trust that. (You could also make a tarball at that tag and compare it with the hackage tarball, but I think pretty often those won't match exactly.)
2021-01-07 02:34:19 +0100plutoniix(~q@node-use.pool-125-24.dynamic.totinternet.net) (Quit: Leaving)
2021-01-07 02:35:54 +0100 <ezzieyguywuf> sm[m]: except repo doesn't include tag for 0.1.1.0
2021-01-07 02:35:55 +0100 <ezzieyguywuf> which is odd
2021-01-07 02:36:01 +0100 <ezzieyguywuf> :\
2021-01-07 02:37:16 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2021-01-07 02:38:13 +0100conal(~conal@143.244.61.236) (Quit: Computer has gone to sleep.)
2021-01-07 02:38:13 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33) (Remote host closed the connection)
2021-01-07 02:38:35 +0100 <Axman6> int-e: macOS
2021-01-07 02:39:03 +0100 <Axman6> maerwald: it did eventually stop the build but I'd hit ^C a dozen times or so :\
2021-01-07 02:39:15 +0100 <ezzieyguywuf> anyone here ever use saltine?
2021-01-07 02:39:21 +0100 <ezzieyguywuf> project seems to be a bit of a mess...
2021-01-07 02:39:32 +0100slack1256(~slack1256@dvc-186-186-101-190.movil.vtr.net) (Remote host closed the connection)
2021-01-07 02:39:36 +0100 <ezzieyguywuf> but hnix is a revdep, and I dunno hnix, but it seems/sounds legit/important
2021-01-07 02:40:28 +0100conal(~conal@89.187.183.187)
2021-01-07 02:41:03 +0100 <sm[m]> ezzieyguywuf: highly suspect
2021-01-07 02:41:58 +0100tmciver(~tmciver@cpe-172-101-40-226.maine.res.rr.com) (Read error: Connection reset by peer)
2021-01-07 02:42:42 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-07 02:43:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-07 02:44:19 +0100 <ezzieyguywuf> glad it's not just me
2021-01-07 02:46:03 +0100 <sm[m]> johnw made hnix I think
2021-01-07 02:46:53 +0100 <sm[m]> I don't seriously mean saltine is suspicious, but it must be a bit under-maintained
2021-01-07 02:47:25 +0100 <ezzieyguywuf> the test-suite seems extremely legit
2021-01-07 02:47:41 +0100 <ezzieyguywuf> although the v0.1.1.0 tarball is missing a test module *facepalm*
2021-01-07 02:48:38 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-01-07 02:48:48 +0100jmchael(~jmchael@81.174.205.210) (Ping timeout: 268 seconds)
2021-01-07 02:49:23 +0100conal(~conal@89.187.183.187) (Quit: Computer has gone to sleep.)
2021-01-07 02:49:25 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2021-01-07 02:49:43 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-07 02:49:53 +0100darjeeling_(~darjeelin@122.245.218.97) (Ping timeout: 265 seconds)
2021-01-07 02:50:25 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33)
2021-01-07 02:50:56 +0100 <ezzieyguywuf> this seems to be the commit that the "release" is bassed off of https://github.com/tel/saltine/commit/b5270645f40f17dcebba960a31819789509b5218
2021-01-07 02:51:03 +0100 <ezzieyguywuf> but the missing test module isn't added until the next commit
2021-01-07 02:51:08 +0100Tario(~Tario@201.192.165.173)
2021-01-07 02:51:19 +0100 <ezzieyguywuf> it seems v0.1.1.0 was never actually finished, but somehow got onto hackage (by way of stack I think....)
2021-01-07 02:51:46 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
2021-01-07 02:53:15 +0100 <int-e> Axman6: I wonder whether this trick applies to MacOS as well: I often find myself using ^Z sending a job into the background, followed by kill %1 (kill the latest job... probably shell specific; I'm using bash).
2021-01-07 02:53:19 +0100 <ezzieyguywuf> nah, the release has to be from later, b/c tests/Main.hs in the tarball is from later
2021-01-07 02:53:22 +0100 <ezzieyguywuf> *shrug*
2021-01-07 02:53:37 +0100 <ezzieyguywuf> int-e: that works in linux
2021-01-07 02:53:57 +0100 <int-e> Axman6: because somehow, ^Z tends to be immediate even when ^C isn't.
2021-01-07 02:55:00 +0100 <MarcelineVQ> ^D is the secret sauce
2021-01-07 02:55:05 +0100 <int-e> (probably because SIGSTOP cannot be caught or ignored)
2021-01-07 02:55:29 +0100jedws(~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-07 02:56:29 +0100 <ezzieyguywuf> I'll just spamm ctrl-c
2021-01-07 02:56:32 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007)
2021-01-07 02:56:35 +0100 <ezzieyguywuf> usually the second or 3rd time things die
2021-01-07 02:57:46 +0100jedws(~jedws@121.209.189.201)
2021-01-07 02:58:09 +0100 <maerwald> signal handling is embarrassing in haskell
2021-01-07 02:58:25 +0100 <maerwald> (e.g. some of them are async exceptions, others not)
2021-01-07 02:58:26 +0100 <ephemient> ctrl-z is SIGTSTP which can be trapped, though
2021-01-07 02:58:48 +0100christo(~chris@81.96.113.213)
2021-01-07 02:59:51 +0100 <ephemient> BSD-likes generally also have ctrl-t = SIGINFO, which isn't super commonly used
2021-01-07 03:04:28 +0100Varis(~Tadas@unaffiliated/varis) (Ping timeout: 272 seconds)
2021-01-07 03:04:44 +0100darjeeling_(~darjeelin@122.245.218.97)
2021-01-07 03:07:55 +0100 <ephemient> come to think of it, ctrl-c = SIGINT and kill = SIGTERM are also different…
2021-01-07 03:08:21 +0100tinwood(~tinwood@general.default.akavanagh.uk0.bigv.io) (Remote host closed the connection)
2021-01-07 03:10:53 +0100 <monochrom> unix has the highest signal-to-noise ratio >:)
2021-01-07 03:11:28 +0100tinwood(~tinwood@general.default.akavanagh.uk0.bigv.io)
2021-01-07 03:12:18 +0100 <Axman6> thanks dad
2021-01-07 03:12:29 +0100dandels(~dandels@unaffiliated/dandels) (Ping timeout: 260 seconds)
2021-01-07 03:12:46 +0100 <MarcelineVQ> I linked special+t to kill program with largest mem use
2021-01-07 03:12:50 +0100 <Axman6> ephemient: teah I wish more things used SIGINFO, the tools which do I find it really handy (dd is one IIRC)
2021-01-07 03:13:05 +0100 <Axman6> MarcelineVQ: one day it's going to kill you
2021-01-07 03:13:32 +0100 <MarcelineVQ> I don't have much memory :X
2021-01-07 03:13:51 +0100 <MarcelineVQ> I only remember you because you're an axe and that's novel.
2021-01-07 03:14:15 +0100 <MarcelineVQ> I can count on one hand the number of axe's I've spoken to
2021-01-07 03:14:30 +0100 <int-e> ephemient: hmm. maybe it's just that nobody bothers to catch SIGTSTP then? Well, what do I know.
2021-01-07 03:14:38 +0100 <MarcelineVQ> There's a joke in there about only having one hand due to an axe but I don't have the chops for it
2021-01-07 03:14:50 +0100 <Axman6> We axes have a proud history spanning tens of thousands od years, we are hardly novel
2021-01-07 03:14:59 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-07 03:15:06 +0100 <MarcelineVQ> But I've read a novel on them
2021-01-07 03:15:23 +0100 <ephemient> yeah handling TSTP is pretty rare. a few tools like scp catch it
2021-01-07 03:16:38 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-07 03:18:21 +0100 <Axman6> int-e: interesring trick, I'll keep it in mind (^Z; kill %1)
2021-01-07 03:19:06 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-07 03:19:11 +0100dandels(~dandels@unaffiliated/dandels)
2021-01-07 03:20:02 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 260 seconds)
2021-01-07 03:20:40 +0100 <int-e> Axman6: Hmm, reading the bash manpage... I should probably use %% instead, since %1 isn't the latest job, it's the first background job of the current shell.
2021-01-07 03:21:32 +0100conal(~conal@66.115.157.121)
2021-01-07 03:22:07 +0100conal(~conal@66.115.157.121) (Client Quit)
2021-01-07 03:22:48 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-07 03:23:07 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-07 03:23:56 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net)
2021-01-07 03:24:11 +0100 <ephemient> or just a single %
2021-01-07 03:26:01 +0100emptyflask(~jon@136.49.71.178) (Ping timeout: 264 seconds)
2021-01-07 03:27:04 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 260 seconds)
2021-01-07 03:27:41 +0100emptyflask(~jon@66.64.40.21)
2021-01-07 03:27:43 +0100manjaro-user_(~manjaro-u@c-73-34-23-13.hsd1.co.comcast.net)
2021-01-07 03:29:16 +0100 <maerwald> ephemient: yeah, ctrl-c in haskell is an async exception
2021-01-07 03:29:49 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007)
2021-01-07 03:30:25 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds)
2021-01-07 03:30:34 +0100 <maerwald> ephemient: and then ppl do this https://github.com/input-output-hk/cardano-wallet/blob/d5a5a5f9be8a560c53cad5235f0668d2f9bbebab/li…
2021-01-07 03:30:38 +0100conal(~conal@66.115.157.70)
2021-01-07 03:30:48 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-07 03:30:48 +0100conal(~conal@66.115.157.70) (Client Quit)
2021-01-07 03:31:43 +0100 <ephemient> I made a quick test program to see which signals the RTS installs handlers for by default; on my Linux system, seems to be HUP INT QUIT TERM
2021-01-07 03:31:57 +0100 <ephemient> haven't found where in the RTS that happens though
2021-01-07 03:32:41 +0100conal(~conal@89.187.183.136)
2021-01-07 03:33:50 +0100 <ephemient> actually I think I did find it, https://github.com/ghc/ghc/blob/480a38d4ad2f6fa2137e81e9f318dda445858e9c/rts/posix/Signals.c#L675
2021-01-07 03:33:59 +0100 <ephemient> so it's also doing some fakery around SIGPIPE
2021-01-07 03:34:40 +0100 <maerwald> I don't think it handles SIGTERM
2021-01-07 03:34:50 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 264 seconds)
2021-01-07 03:35:05 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 240 seconds)
2021-01-07 03:36:42 +0100 <ephemient> https://paste.tomsmeding.com/CCkZFEKK
2021-01-07 03:37:05 +0100 <ephemient> I don't know what the SIGTERM handler is, but it isn't SIG_DFL
2021-01-07 03:39:13 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
2021-01-07 03:41:05 +0100xff0x(~fox@2001:1a81:52e0:100:d64b:d56d:3d88:4e8b) (Ping timeout: 272 seconds)
2021-01-07 03:41:13 +0100aveltras(uid364989@gateway/web/irccloud.com/x-fhjjoqshwwdbqvei)
2021-01-07 03:42:04 +0100 <int-e> ephemient: this is with runhaskell? if so, https://gitlab.haskell.org/ghc/ghc/-/blob/master/compiler/GHC/Utils/Panic.hs#L251 would be my guess
2021-01-07 03:42:46 +0100xff0x(~fox@2001:1a81:5319:4600:235b:ce31:3a53:2cac)
2021-01-07 03:43:58 +0100 <ephemient> int-e: oh good point. if I compile it with ghc then I only see a SIGINT handler installed
2021-01-07 03:43:59 +0100 <int-e> (if I compile that program, only SIGINT is caught and you already found out where)
2021-01-07 03:46:27 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-07 03:46:46 +0100Tario(~Tario@201.192.165.173)
2021-01-07 03:48:03 +0100dandels(~dandels@unaffiliated/dandels) (Ping timeout: 272 seconds)
2021-01-07 03:49:11 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-07 03:50:00 +0100itnet7(~itnet7@195.140.213.38)
2021-01-07 03:51:11 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-01-07 03:51:38 +0100Varis(~Tadas@unaffiliated/varis)
2021-01-07 03:53:13 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-01-07 03:55:46 +0100manjaro-user_(~manjaro-u@c-73-34-23-13.hsd1.co.comcast.net) (Ping timeout: 272 seconds)
2021-01-07 03:56:50 +0100drbean(~drbean@TC210-63-209-55.static.apol.com.tw)
2021-01-07 03:58:16 +0100ke4pcx(~ke4pcx@024-158-093-129.res.spectrum.com) (Read error: Connection reset by peer)
2021-01-07 03:58:34 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2021-01-07 03:58:53 +0100ke4pcx(~ke4pcx@024-158-093-129.res.spectrum.com)
2021-01-07 04:01:43 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
2021-01-07 04:01:58 +0100emptyflask(~jon@66.64.40.21) (Ping timeout: 246 seconds)
2021-01-07 04:02:11 +0100jedws(~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-07 04:03:01 +0100amerigo(uid331857@gateway/web/irccloud.com/x-yfslrwncojbqmybp) (Quit: Connection closed for inactivity)
2021-01-07 04:03:54 +0100emptyflask(~jon@136.49.71.178)
2021-01-07 04:05:40 +0100xirhtogal(~lagothrix@unaffiliated/lagothrix)
2021-01-07 04:05:40 +0100lagothrix(~lagothrix@unaffiliated/lagothrix) (Killed (verne.freenode.net (Nickname regained by services)))
2021-01-07 04:05:40 +0100xirhtogallagothrix
2021-01-07 04:07:25 +0100urodna(~urodna@unaffiliated/urodna) (Quit: urodna)
2021-01-07 04:08:00 +0100heatsink_(~heatsink@2600:1700:bef1:5e10:fc43:21f6:957b:5d9f)
2021-01-07 04:09:03 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya) (Ping timeout: 240 seconds)
2021-01-07 04:10:07 +0100chaskell(604a977a@96.74.151.122)
2021-01-07 04:10:15 +0100aarvar(~foewfoiew@2601:602:a080:fa0:9c96:3f48:55e0:3c7)
2021-01-07 04:10:34 +0100conal(~conal@89.187.183.136) (Quit: Computer has gone to sleep.)
2021-01-07 04:10:50 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33) (Ping timeout: 264 seconds)
2021-01-07 04:11:46 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya)
2021-01-07 04:12:06 +0100aarvar(~foewfoiew@2601:602:a080:fa0:9c96:3f48:55e0:3c7) ()
2021-01-07 04:14:34 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Quit: p-core)
2021-01-07 04:14:55 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56)
2021-01-07 04:16:36 +0100conal(~conal@212.102.44.134)
2021-01-07 04:20:14 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-07 04:20:36 +0100plutoniix(~q@184.82.203.72)
2021-01-07 04:22:27 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
2021-01-07 04:22:31 +0100chaskell(604a977a@96.74.151.122) (Remote host closed the connection)
2021-01-07 04:22:48 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-07 04:23:07 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-07 04:24:21 +0100gedda(~gedda@185.195.233.164) (Ping timeout: 256 seconds)
2021-01-07 04:25:30 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-07 04:26:10 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-07 04:26:52 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving)
2021-01-07 04:29:24 +0100Tario(~Tario@201.192.165.173)
2021-01-07 04:31:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-01-07 04:31:36 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2021-01-07 04:41:01 +0100 <MrMobius> I was here yesterday trying to get stack ghci to work and it's still broken after resetting my computer: https://hastebin.com/ecaruyejaq.sql
2021-01-07 04:52:10 +0100theDon(~td@94.134.91.66) (Ping timeout: 256 seconds)
2021-01-07 04:53:10 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-07 04:54:04 +0100theDon(~td@muedsl-82-207-238-201.citykom.de)
2021-01-07 04:58:13 +0100fosterite(~fosterite@2600:6c46:7880:410a:3cda:cdb5:75e9:b6e9) (Remote host closed the connection)
2021-01-07 04:59:56 +0100fosterite(~fosterite@2600:6c46:7880:410a:3cda:cdb5:75e9:b6e9)
2021-01-07 05:00:02 +0100haasn(~nand@mpv/developer/haasn) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
2021-01-07 05:01:18 +0100haasn(~nand@mpv/developer/haasn)
2021-01-07 05:02:41 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-01-07 05:03:10 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-01-07 05:04:41 +0100fosterite(~fosterite@2600:6c46:7880:410a:3cda:cdb5:75e9:b6e9) (Ping timeout: 272 seconds)
2021-01-07 05:04:48 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 272 seconds)
2021-01-07 05:05:50 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-07 05:08:49 +0100SupaYoshii(~supayoshi@213-10-140-13.fixed.kpn.net)
2021-01-07 05:09:09 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Ping timeout: 260 seconds)
2021-01-07 05:13:05 +0100Anthaas(~Anthaas@unaffiliated/anthaas) (Ping timeout: 256 seconds)
2021-01-07 05:13:43 +0100dftxbs3e(~dftxbs3e@unaffiliated/dftxbs3e) (Remote host closed the connection)
2021-01-07 05:13:58 +0100dftxbs3e(~dftxbs3e@unaffiliated/dftxbs3e)
2021-01-07 05:15:43 +0100Anthaas(~Anthaas@unaffiliated/anthaas)
2021-01-07 05:16:01 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-07 05:17:34 +0100sword865(uid208942@gateway/web/irccloud.com/x-sjphxpixcxrxjevu)
2021-01-07 05:18:15 +0100drbean(~drbean@TC210-63-209-55.static.apol.com.tw) (Ping timeout: 256 seconds)
2021-01-07 05:18:23 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2021-01-07 05:20:00 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2021-01-07 05:20:43 +0100SupaYoshii(~supayoshi@213-10-140-13.fixed.kpn.net) (Ping timeout: 246 seconds)
2021-01-07 05:21:00 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-01-07 05:21:42 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net)
2021-01-07 05:22:48 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-07 05:23:14 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-07 05:27:41 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net) (Remote host closed the connection)
2021-01-07 05:30:52 +0100texasmynsted(~texasmyns@99.96.221.112) (Ping timeout: 246 seconds)
2021-01-07 05:33:11 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 272 seconds)
2021-01-07 05:33:18 +0100texasmynsted(~texasmyns@99.96.221.112)
2021-01-07 05:33:50 +0100fosterite(~fosterite@2600:6c46:7880:410a:3cda:cdb5:75e9:b6e9)
2021-01-07 05:39:02 +0100fosterite(~fosterite@2600:6c46:7880:410a:3cda:cdb5:75e9:b6e9) (Ping timeout: 264 seconds)
2021-01-07 05:40:04 +0100Katarushisu5(~Katarushi@cpc149726-finc20-2-0-cust203.4-2.cable.virginm.net)
2021-01-07 05:40:04 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-01-07 05:40:31 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-01-07 05:40:45 +0100Katarushisu(~Katarushi@cpc149726-finc20-2-0-cust203.4-2.cable.virginm.net) (Ping timeout: 240 seconds)
2021-01-07 05:40:45 +0100Katarushisu5Katarushisu
2021-01-07 05:40:53 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-01-07 05:43:50 +0100sorki(~sorki@gateway/tor-sasl/sorki)
2021-01-07 05:43:54 +0100hacxman(~hexo@gateway/tor-sasl/hexo)
2021-01-07 05:44:03 +0100hexo(~hexo@gateway/tor-sasl/hexo) (Ping timeout: 240 seconds)
2021-01-07 05:44:04 +0100srk(~sorki@gateway/tor-sasl/sorki) (Ping timeout: 240 seconds)
2021-01-07 05:44:18 +0100hacxmanhexo
2021-01-07 05:44:57 +0100sorkisrk
2021-01-07 05:49:22 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 05:49:57 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 05:55:05 +0100berberman(~berberman@unaffiliated/berberman) (Quit: ZNC 1.7.5 - https://znc.in)
2021-01-07 05:55:26 +0100berberman(~berberman@unaffiliated/berberman)
2021-01-07 05:57:17 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2021-01-07 05:57:30 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-01-07 05:59:23 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2021-01-07 05:59:37 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-01-07 05:59:55 +0100 <sm[m]> MrMobius: maybe time to compare some other install methods - what about a GHC installed yourself from https://haskell.org/ghc ?
2021-01-07 06:00:10 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2021-01-07 06:00:27 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-01-07 06:00:56 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2021-01-07 06:00:57 +0100aveltras(uid364989@gateway/web/irccloud.com/x-fhjjoqshwwdbqvei) (Quit: Connection closed for inactivity)
2021-01-07 06:01:10 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-01-07 06:01:42 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2021-01-07 06:01:45 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 240 seconds)
2021-01-07 06:02:22 +0100jfe(~user@pool-71-184-149-134.bstnma.fios.verizon.net) (Ping timeout: 246 seconds)
2021-01-07 06:02:27 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-07 06:04:23 +0100 <sm[m]> MrMobius: also, consider reporting it at https://github.com/commercialhaskell/stack/issues?q=is%3Aissue+label%3A%22component%3A+windows%22+ - I don't see it there
2021-01-07 06:04:56 +0100jespada(~jespada@90.254.245.49)
2021-01-07 06:08:15 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-07 06:08:35 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-07 06:09:34 +0100jedws(~jedws@121.209.189.201)
2021-01-07 06:10:04 +0100 <ephemient> those errors look like something is wrong with your terminal
2021-01-07 06:12:30 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2021-01-07 06:12:52 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2021-01-07 06:12:53 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 265 seconds)
2021-01-07 06:13:34 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-01-07 06:13:43 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-07 06:13:58 +0100jfe(~user@pool-71-184-149-134.bstnma.fios.verizon.net)
2021-01-07 06:15:01 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a898:ee90:1b20:e047) (Remote host closed the connection)
2021-01-07 06:16:57 +0100Wuzzy(~Wuzzy@p5790ed14.dip0.t-ipconnect.de) (Quit: Wuzzy)
2021-01-07 06:18:28 +0100jfe(~user@pool-71-184-149-134.bstnma.fios.verizon.net) (Ping timeout: 256 seconds)
2021-01-07 06:22:48 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-07 06:23:00 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 06:23:07 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-07 06:23:15 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 06:26:28 +0100Tops21(~Tobias@dyndsl-095-033-017-251.ewe-ip-backbone.de)
2021-01-07 06:27:03 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:12e2:ad75:1255:fdff:5733) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-07 06:28:30 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2021-01-07 06:29:00 +0100Tops2(~Tobias@dyndsl-095-033-026-219.ewe-ip-backbone.de) (Ping timeout: 256 seconds)
2021-01-07 06:29:16 +0100DataComp_(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
2021-01-07 06:30:16 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Ping timeout: 240 seconds)
2021-01-07 06:31:04 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a898:ee90:1b20:e047)
2021-01-07 06:33:31 +0100ransom(~c4264035@8.47.12.52) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-07 06:33:44 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 260 seconds)
2021-01-07 06:33:48 +0100mizlan(~michaella@c-67-169-7-31.hsd1.ca.comcast.net)
2021-01-07 06:34:28 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-07 06:36:02 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a898:ee90:1b20:e047) (Ping timeout: 264 seconds)
2021-01-07 06:36:14 +0100 <MrMobius> sm[m], thanks. the chocolatey install instructions fail
2021-01-07 06:39:34 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2021-01-07 06:41:37 +0100conal(~conal@212.102.44.134) (Quit: Computer has gone to sleep.)
2021-01-07 06:42:12 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Quit: leaving)
2021-01-07 06:42:52 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:12e2:ad75:1255:fdff:5733)
2021-01-07 06:43:52 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-01-07 06:43:56 +0100fosterite(~fosterite@2600:6c46:7880:410a:3cda:cdb5:75e9:b6e9)
2021-01-07 06:45:40 +0100conal(~conal@66.115.176.141)
2021-01-07 06:48:15 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-07 06:48:34 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 246 seconds)
2021-01-07 06:49:28 +0100fosterite(~fosterite@2600:6c46:7880:410a:3cda:cdb5:75e9:b6e9) (Ping timeout: 260 seconds)
2021-01-07 06:51:42 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-07 06:54:01 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-07 06:54:12 +0100s00pcan(~chris@075-133-056-178.res.spectrum.com) (Remote host closed the connection)
2021-01-07 06:54:38 +0100s00pcan(~chris@075-133-056-178.res.spectrum.com)
2021-01-07 06:55:32 +0100itnet7(~itnet7@195.140.213.38) (Remote host closed the connection)
2021-01-07 06:57:29 +0100conal(~conal@66.115.176.141) (Quit: Computer has gone to sleep.)
2021-01-07 06:57:49 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2021-01-07 06:58:47 +0100 <sm[m]> MrMobius: https://www.haskell.org/ghc/download_ghc_8_10_3.html#windows64
2021-01-07 06:59:56 +0100 <jared-w> `choco install ghc --version 8.10.3` fails?
2021-01-07 07:02:39 +0100proteusguy(~proteusgu@cm-58-10-154-202.revip7.asianet.co.th) (Remote host closed the connection)
2021-01-07 07:02:52 +0100 <jared-w> (and are you running it in powershell? what version of powershell are you using?)
2021-01-07 07:04:28 +0100proteusguy(~proteusgu@cm-58-10-154-202.revip7.asianet.co.th)
2021-01-07 07:05:00 +0100dave_uy(~david@108.61.193.26) (Quit: The Lounge - https://thelounge.chat)
2021-01-07 07:05:00 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2021-01-07 07:05:15 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a898:ee90:1b20:e047)
2021-01-07 07:07:35 +0100new_haskeller(ae72a197@cpe00fc8d386d93-cm00fc8d386d90.cpe.net.cable.rogers.com)
2021-01-07 07:08:18 +0100dave_uy(~david@108.61.193.26)
2021-01-07 07:08:20 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-01-07 07:11:42 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:12e2:ad75:1255:fdff:5733) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-07 07:15:14 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-qmmrndshdhsgokli) (Quit: Connection closed for inactivity)
2021-01-07 07:15:38 +0100jrm(~jrm@freebsd/developer/jrm) (Read error: Connection reset by peer)
2021-01-07 07:15:44 +0100jrm2(~jrm@freebsd/developer/jrm)
2021-01-07 07:16:21 +0100jrm2jrm
2021-01-07 07:17:23 +0100echoreply(~echoreply@unaffiliated/echoreply) (Quit: WeeChat 1.9.1)
2021-01-07 07:17:51 +0100echoreply(~echoreply@unaffiliated/echoreply)
2021-01-07 07:17:54 +0100carlomagno(~cararell@148.87.23.11) (Remote host closed the connection)
2021-01-07 07:18:39 +0100hive-mind(~hivemind@rrcs-67-53-148-69.west.biz.rr.com) (Ping timeout: 260 seconds)
2021-01-07 07:19:40 +0100urb(5434a07f@tm.84.52.160.127.dc.cable.static.telemach.net) (Remote host closed the connection)
2021-01-07 07:19:52 +0100hive-mind(~hivemind@rrcs-67-53-148-69.west.biz.rr.com)
2021-01-07 07:21:57 +0100zaquest(~notzaques@5.128.210.178) (Quit: Leaving)
2021-01-07 07:22:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-01-07 07:22:49 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Read error: Connection reset by peer)
2021-01-07 07:23:07 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-07 07:23:55 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 246 seconds)
2021-01-07 07:26:30 +0100ADG1089__(~aditya@171.79.107.193)
2021-01-07 07:27:53 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye)
2021-01-07 07:28:11 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-01-07 07:28:37 +0100Ariakenom(~Ariakenom@2001:9b1:efb:fc00:96e:b740:520f:7fea)
2021-01-07 07:29:45 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-07 07:31:25 +0100da39a3ee5e6b4b0d(~da39a3ee5@183.88.107.112)
2021-01-07 07:32:01 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-07 07:32:22 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2021-01-07 07:33:15 +0100Tops21(~Tobias@dyndsl-095-033-017-251.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2021-01-07 07:34:39 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2021-01-07 07:34:58 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 260 seconds)
2021-01-07 07:34:58 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a898:ee90:1b20:e047) (Ping timeout: 260 seconds)
2021-01-07 07:38:40 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007)
2021-01-07 07:40:24 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-01-07 07:40:46 +0100rlaager1(~rlaager@84.39.117.57)
2021-01-07 07:46:34 +0100zaquest(~notzaques@5.128.210.178)
2021-01-07 07:48:48 +0100berberman_(~berberman@unaffiliated/berberman)
2021-01-07 07:50:07 +0100berberman_(~berberman@unaffiliated/berberman) (Max SendQ exceeded)
2021-01-07 07:50:07 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds)
2021-01-07 07:50:38 +0100berberman(~berberman@unaffiliated/berberman)
2021-01-07 07:50:50 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-07 07:53:39 +0100phasespace(~sar@89-162-33-21.fiber.signal.no) (Ping timeout: 260 seconds)
2021-01-07 07:55:05 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-01-07 07:55:12 +0100spopejoy(~stuart@ool-44c5f8c9.dyn.optonline.net) (Quit: spopejoy)
2021-01-07 07:56:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-01-07 08:02:01 +0100ericsagnes(~ericsagne@2405:6580:0:5100:e475:5ea1:1ccc:d1ed) (Ping timeout: 272 seconds)
2021-01-07 08:02:27 +0100 <itai33[m]> What is the best way to search a Text for substrings that match a regexp? or at least, a case insensitvie search? Text.SplitOn almost works, but I don't think it can do case insensitivity
2021-01-07 08:05:12 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a898:ee90:1b20:e047)
2021-01-07 08:06:19 +0100 <ephemient> all the common regex backends support Text (e.g. regex-tdfa, regex-pcre, etc.)
2021-01-07 08:07:56 +0100emptyflask(~jon@136.49.71.178) (Ping timeout: 240 seconds)
2021-01-07 08:08:19 +0100plakband(~plakband@softbank126227038054.bbtec.net)
2021-01-07 08:10:49 +0100Rudd0(~Rudd0@185.189.115.103) (Ping timeout: 246 seconds)
2021-01-07 08:14:07 +0100ericsagnes(~ericsagne@2405:6580:0:5100:abd5:d2f9:a1fb:762)
2021-01-07 08:14:21 +0100guest15(~user@49.5.6.87) (Remote host closed the connection)
2021-01-07 08:14:29 +0100 <ephemient> also, I haven't tried it myself, but if you're just searching for fixed strings, it looks like http://hackage.haskell.org/package/alfred-margaret supports case-insensitivity
2021-01-07 08:14:31 +0100guest15(~user@49.5.6.87)
2021-01-07 08:15:25 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-07 08:16:09 +0100phasespace(~sar@80-89-47-117.inet.signal.no)
2021-01-07 08:19:25 +0100ADG1089__(~aditya@171.79.107.193) (Remote host closed the connection)
2021-01-07 08:21:38 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a898:ee90:1b20:e047) (Ping timeout: 264 seconds)
2021-01-07 08:21:38 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net) (Read error: Connection reset by peer)
2021-01-07 08:22:12 +0100bitmagie(~Thunderbi@200116b806730e0049347085952886ab.dip.versatel-1u1.de)
2021-01-07 08:26:17 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-01-07 08:26:28 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-07 08:26:36 +0100petersen(~petersen@redhat/juhp) (Ping timeout: 240 seconds)
2021-01-07 08:26:57 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-01-07 08:28:25 +0100new_haskeller(ae72a197@cpe00fc8d386d93-cm00fc8d386d90.cpe.net.cable.rogers.com) (Ping timeout: 245 seconds)
2021-01-07 08:30:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-07 08:31:52 +0100revprez_1nzio(~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net)
2021-01-07 08:32:23 +0100 <itai33[m]> ephemient: i have to say i'm finding the regex packages to be a bit impenetrable
2021-01-07 08:32:47 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-01-07 08:33:12 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-01-07 08:34:26 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 272 seconds)
2021-01-07 08:35:01 +0100revprez_anzio(~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net) (Ping timeout: 264 seconds)
2021-01-07 08:35:16 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
2021-01-07 08:35:37 +0100da39a3ee5e6b4b0d(~da39a3ee5@183.88.107.112) (Ping timeout: 264 seconds)
2021-01-07 08:37:03 +0100petersen(~petersen@redhat/juhp)
2021-01-07 08:37:03 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net) (Read error: Connection reset by peer)
2021-01-07 08:41:45 +0100michalz(~user@185.246.204.78)
2021-01-07 08:44:15 +0100bitmagie(~Thunderbi@200116b806730e0049347085952886ab.dip.versatel-1u1.de) (Quit: bitmagie)
2021-01-07 08:44:37 +0100mizlan(~michaella@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
2021-01-07 08:44:58 +0100ADG1089__(~aditya@171.79.107.193)
2021-01-07 08:50:45 +0100 <plakband> Does anyone here maybe have a haskell evil mode indentation setup that they're happy with and willing to share?
2021-01-07 08:51:02 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246)
2021-01-07 08:53:09 +0100Jajik(xchlup2@gateway/shell/fi.muni.cz/x-zzgqerztklgehnpm) (Ping timeout: 260 seconds)
2021-01-07 08:55:50 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246) (Ping timeout: 264 seconds)
2021-01-07 08:56:06 +0100Jajik(xchlup2@gateway/shell/fi.muni.cz/x-bsesdxyajdvfiayr)
2021-01-07 08:58:19 +0100bitmagie(~Thunderbi@200116b806730e0049347085952886ab.dip.versatel-1u1.de)
2021-01-07 09:01:33 +0100da39a3ee5e6b4b0d(~da39a3ee5@ppp-223-24-94-18.revip6.asianet.co.th)
2021-01-07 09:02:27 +0100dandels(~dandels@unaffiliated/dandels)
2021-01-07 09:04:22 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-01-07 09:04:44 +0100jedws(~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-07 09:04:44 +0100kyali(~kyali@APN-123-254-73-gprs.simobil.net)
2021-01-07 09:05:15 +0100andreas303(~andreas@gateway/tor-sasl/andreas303) (Quit: andreas303)
2021-01-07 09:05:36 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds)
2021-01-07 09:06:11 +0100andreas303(~andreas@gateway/tor-sasl/andreas303)
2021-01-07 09:06:52 +0100dansho(~dansho@ec2-13-231-43-236.ap-northeast-1.compute.amazonaws.com) (Remote host closed the connection)
2021-01-07 09:07:18 +0100dansho(~dansho@ec2-13-231-43-236.ap-northeast-1.compute.amazonaws.com)
2021-01-07 09:07:27 +0100 <itai33[m]> plakband: I just use doom emacs which i'm pretty sure uses the default one and it's totally fine
2021-01-07 09:07:44 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
2021-01-07 09:08:17 +0100bitmagie(~Thunderbi@200116b806730e0049347085952886ab.dip.versatel-1u1.de) (Quit: bitmagie)
2021-01-07 09:10:14 +0100da39a3ee5e6b4b0d(~da39a3ee5@ppp-223-24-94-18.revip6.asianet.co.th) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-07 09:11:38 +0100idhugo(~idhugo@80-62-117-97-mobile.dk.customer.tdc.net)
2021-01-07 09:11:39 +0100idhugo(~idhugo@80-62-117-97-mobile.dk.customer.tdc.net) (Remote host closed the connection)
2021-01-07 09:12:03 +0100idhugo(~idhugo@80-62-117-97-mobile.dk.customer.tdc.net)
2021-01-07 09:12:15 +0100idhugo(~idhugo@80-62-117-97-mobile.dk.customer.tdc.net) (Remote host closed the connection)
2021-01-07 09:12:33 +0100kyali(~kyali@APN-123-254-73-gprs.simobil.net) (Remote host closed the connection)
2021-01-07 09:15:00 +0100 <plakband> itai33[m]: Doom's config has two tweaks to fix o and O. I've tried copying that but still ran into a number of cases where o, O, and RET have different behavior. Although, if you say you haven't had any issues, maybe there's some global config doom does that I should look into.
2021-01-07 09:15:28 +0100 <itai33[m]> plakband: what issues do you have with the indentation?
2021-01-07 09:16:21 +0100Deide(~Deide@217.155.19.23)
2021-01-07 09:17:18 +0100mizlan(~michaella@c-67-169-7-31.hsd1.ca.comcast.net)
2021-01-07 09:17:18 +0100pfurla(~pfurla@ool-3f8fc2ff.dyn.optonline.net)
2021-01-07 09:18:01 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 272 seconds)
2021-01-07 09:19:35 +0100da39a3ee5e6b4b0d(~da39a3ee5@ppp-223-24-94-18.revip6.asianet.co.th)
2021-01-07 09:20:28 +0100dandels(~dandels@unaffiliated/dandels) (Ping timeout: 246 seconds)
2021-01-07 09:21:09 +0100 <plakband> Mostly just that the different ways to start a new line have different behavior. If you write a one-line function and start a new line below it using o, O, cc, and RET, do those all start on the same column?
2021-01-07 09:22:06 +0100cfricke(~cfricke@unaffiliated/cfricke)
2021-01-07 09:22:47 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-07 09:22:55 +0100bitmagie(~Thunderbi@200116b806730e0049347085952886ab.dip.versatel-1u1.de)
2021-01-07 09:23:07 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-07 09:25:43 +0100jedws(~jedws@121.209.189.201)
2021-01-07 09:27:00 +0100petersen_(~petersen@redhat/juhp)
2021-01-07 09:27:07 +0100petersen(~petersen@redhat/juhp) (Read error: Connection reset by peer)
2021-01-07 09:28:08 +0100petersen_petersen
2021-01-07 09:32:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-07 09:32:43 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-01-07 09:37:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-01-07 09:38:20 +0100dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be)
2021-01-07 09:38:24 +0100mizlan(~michaella@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 272 seconds)
2021-01-07 09:38:32 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-07 09:38:54 +0100ur(5434a07f@tm.84.52.160.127.dc.cable.static.telemach.net)
2021-01-07 09:39:41 +0100 <ur> Using Hasql.TH
2021-01-07 09:39:57 +0100 <ur> any idea why this would give me a "parse error on input where"
2021-01-07 09:39:58 +0100 <ur> selectUserDetails :: Statement Int32 (Maybe (Text, Text, Maybe Text))
2021-01-07 09:40:36 +0100 <ur> the error is not tied to where, any code within maybeStatement gets that error
2021-01-07 09:42:49 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 256 seconds)
2021-01-07 09:43:21 +0100zar(~zar@89-24-42-225.nat.epc.tmcz.cz)
2021-01-07 09:46:44 +0100 <ur> Oh... I have to enable {-# LANGUAGE QuasiQuotes #-}
2021-01-07 09:47:48 +0100 <ur> Is that so self-evident that it isn't mentioned in any of the examples? Honest question
2021-01-07 09:48:29 +0100L29Ah(~L29Ah@unaffiliated/l29ah) (Ping timeout: 256 seconds)
2021-01-07 09:48:31 +0100pyx(~pyx@unaffiliated/pyx)
2021-01-07 09:48:46 +0100pyx(~pyx@unaffiliated/pyx) (Client Quit)
2021-01-07 09:51:19 +0100zar(~zar@89-24-42-225.nat.epc.tmcz.cz) (Remote host closed the connection)
2021-01-07 09:51:26 +0100zariuq(~zar@89-24-42-225.nat.epc.tmcz.cz)
2021-01-07 09:51:59 +0100petersen(~petersen@redhat/juhp) (Read error: Connection reset by peer)
2021-01-07 09:52:40 +0100petersen(~petersen@redhat/juhp)
2021-01-07 09:53:27 +0100 <idnar> ur: it's probably obvious when you're used to using TH/QQ, but I would submit a bug report to let them know it tripped you up as a newer user
2021-01-07 09:53:36 +0100 <plakband> ur: at least some of the examples do have it, and GHC should suggest turning it on, but if it tripped you up I suppose it can't hurt to open a PR for the places you feel it's missing
2021-01-07 09:53:40 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-07 09:54:06 +0100heatsink_(~heatsink@2600:1700:bef1:5e10:fc43:21f6:957b:5d9f) (Remote host closed the connection)
2021-01-07 09:54:49 +0100zariuq(~zar@89-24-42-225.nat.epc.tmcz.cz) (Remote host closed the connection)
2021-01-07 09:56:41 +0100zar(~zar@89-24-42-225.nat.epc.tmcz.cz)
2021-01-07 09:57:29 +0100 <idnar> ur: (LANGUAGE QuasiQuotes is what enables the `[blah|…|]` syntax)
2021-01-07 09:57:43 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2021-01-07 09:58:08 +0100petersen(~petersen@redhat/juhp) (Read error: Connection reset by peer)
2021-01-07 09:58:14 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds)
2021-01-07 09:58:34 +0100petersen_(~petersen@redhat/juhp)
2021-01-07 09:59:10 +0100petersen_petersen
2021-01-07 10:01:59 +0100 <ur> Well it's an issue I've had multiple times where something wouldn
2021-01-07 10:02:08 +0100chele(~chele@ip5b40237d.dynamic.kabel-deutschland.de)
2021-01-07 10:02:15 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-01-07 10:02:18 +0100 <ur> Well it's an issue I've had multiple times where something wouldn't work because of a missing extension
2021-01-07 10:03:48 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-07 10:03:56 +0100Varis(~Tadas@unaffiliated/varis) (Ping timeout: 240 seconds)
2021-01-07 10:04:14 +0100Varis(~Tadas@unaffiliated/varis)
2021-01-07 10:05:11 +0100jassob(~jassob@korrob.vth.sgsnet.se) (Quit: WeeChat 2.5-rc1)
2021-01-07 10:05:37 +0100 <tomsmeding> generally gcc suggests enabling language extensions in the error though
2021-01-07 10:05:48 +0100dansho(~dansho@ec2-13-231-43-236.ap-northeast-1.compute.amazonaws.com) (Quit: Leaving)
2021-01-07 10:06:14 +0100 <ur> But there are no imports in the github Hasql.TH example either. If I had looked up template haskell beforehand it would probably be second nature to add the QuasiQuotes extension.
2021-01-07 10:06:30 +0100 <ur> Yeah, it didn't for whatever reason
2021-01-07 10:09:43 +0100Boomerang(~Boomerang@2a05:f6c7:2179:0:8da5:2e46:f1e1:ab48)
2021-01-07 10:10:40 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-07 10:11:56 +0100mizlan(~michaella@c-67-169-7-31.hsd1.ca.comcast.net)
2021-01-07 10:12:09 +0100jassob(~jassob@korrob.vth.sgsnet.se)
2021-01-07 10:13:13 +0100cdan(~user@122-58-46-96-vdsl.sparkbb.co.nz) (Remote host closed the connection)
2021-01-07 10:13:55 +0100 <ephemient> GHC does warn when you're using a syntax that obviously requires an extension
2021-01-07 10:14:04 +0100pera(~pera@unaffiliated/pera)
2021-01-07 10:14:40 +0100tsrt^(tsrt@ip98-184-89-2.mc.at.cox.net) ()
2021-01-07 10:15:37 +0100 <ephemient> it would be nice to warn on quasiquotes too, but it's not obvious from looking at `[blah|...` whether it's a quasiquote or a list comprehension...
2021-01-07 10:16:07 +0100mizlan(~michaella@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
2021-01-07 10:17:27 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
2021-01-07 10:17:43 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-07 10:18:15 +0100madjesti1(~madjestic@86-88-72-244.fixed.kpn.net)
2021-01-07 10:18:45 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-zznalggusqjucmjb) (Quit: Connection closed for inactivity)
2021-01-07 10:18:57 +0100 <madjesti1> hey guys, https://stackoverflow.com/questions/65609361/n-body-with-yampa-frp-haskell
2021-01-07 10:20:13 +0100eacameron(uid256985@gateway/web/irccloud.com/x-ycbifkwtkicpetrm) (Quit: Connection closed for inactivity)
2021-01-07 10:22:47 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-07 10:23:07 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net)
2021-01-07 10:23:07 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-07 10:25:52 +0100kuribas(~user@ptr-25vy0i9xeq5rwmxnhs4.18120a2.ip6.access.telenet.be)
2021-01-07 10:27:29 +0100 <kuribas> I found another handy combinator: whenApp :: (Applicative f, Alternative t) => Bool -> f (t a) -> f (t a)
2021-01-07 10:27:29 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2021-01-07 10:28:02 +0100 <tomsmeding> kuribas: what's its definition?
2021-01-07 10:28:09 +0100 <kuribas> like do maybeResult <- whenApp someFlag $ just <$> doFetchAction
2021-01-07 10:28:14 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 264 seconds)
2021-01-07 10:28:34 +0100 <kuribas> whenApp True m = m; whenApp False _ = pure empty
2021-01-07 10:28:43 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-07 10:29:03 +0100 <tomsmeding> oh man I was wondering why the Alternative was necessary, but didn't think what to put in the 'pure' lol
2021-01-07 10:31:01 +0100 <kuribas> can be even implemented using whenMono: whenApp f = coerce . whenMono f . Ap . fmap Alt
2021-01-07 10:33:47 +0100knupfer(~Thunderbi@200116b82cd91d004c0e80fffea14553.dip.versatel-1u1.de)
2021-01-07 10:33:47 +0100knupfer(~Thunderbi@200116b82cd91d004c0e80fffea14553.dip.versatel-1u1.de) (Client Quit)
2021-01-07 10:34:02 +0100knupfer(~Thunderbi@i5E86B4EC.versanet.de)
2021-01-07 10:35:25 +0100knupfer(~Thunderbi@i5E86B4EC.versanet.de) (Client Quit)
2021-01-07 10:35:27 +0100knupfer1(~Thunderbi@200116b82cd91d009c1734bea44afe6a.dip.versatel-1u1.de)
2021-01-07 10:35:43 +0100 <idnar> :t guard
2021-01-07 10:35:44 +0100 <lambdabot> Alternative f => Bool -> f ()
2021-01-07 10:35:48 +0100polyrain(~polyrain@2001:8003:e501:6901:84b4:a1b1:5c92:a848)
2021-01-07 10:36:03 +0100 <idnar> @hoogle guarded
2021-01-07 10:36:04 +0100 <lambdabot> Protolude guarded :: Alternative f => (a -> Bool) -> a -> f a
2021-01-07 10:36:04 +0100 <lambdabot> Relude.Bool.Guard guarded :: Alternative f => (a -> Bool) -> a -> f a
2021-01-07 10:36:04 +0100 <lambdabot> module Foreign.Marshal.Array.Guarded
2021-01-07 10:36:12 +0100 <idnar> hmm
2021-01-07 10:36:22 +0100 <kuribas> or even whenApp f = coerce @(App f (Alt t)) . whenMono f . coerce
2021-01-07 10:36:31 +0100w2gzw1gz
2021-01-07 10:36:38 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 10:37:16 +0100bitmagie(~Thunderbi@200116b806730e0049347085952886ab.dip.versatel-1u1.de) (Quit: bitmagie)
2021-01-07 10:37:18 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 10:37:50 +0100knupfer1knupfer
2021-01-07 10:38:30 +0100 <kuribas> hmm, I could also make guard' :: (Applicative f, Alternative t) => Bool -> f (t ())
2021-01-07 10:39:34 +0100 <kuribas> then guard' someFlag <* (Just <$> doFetchAction)
2021-01-07 10:42:26 +0100polyrain(~polyrain@2001:8003:e501:6901:84b4:a1b1:5c92:a848) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-07 10:43:03 +0100 <kuribas> erm no guard' someFlag <* doFetchAction
2021-01-07 10:43:28 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 10:43:42 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 10:44:21 +0100 <kuribas> Alternative f => Bool -> f a
2021-01-07 10:44:28 +0100 <kuribas> @hoogle Alternative f => Bool -> f a
2021-01-07 10:44:29 +0100 <lambdabot> Universum.Container asum :: (Container t, Alternative f, Element t ~ f a) => t -> f a
2021-01-07 10:44:29 +0100 <lambdabot> Universum.Container.Class asum :: (Container t, Alternative f, Element t ~ f a) => t -> f a
2021-01-07 10:44:29 +0100 <lambdabot> Data.Generator.Combinators asum :: (Generator c, Alternative f, f a ~ Elem c) => c -> f a
2021-01-07 10:44:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-01-07 10:45:33 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 10:46:12 +0100ph88^(~ph88@2a02:8109:9e00:7e5c:f964:d8d4:1ec3:146c)
2021-01-07 10:46:14 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 10:46:27 +0100pera(~pera@unaffiliated/pera) (Ping timeout: 265 seconds)
2021-01-07 10:47:03 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2021-01-07 10:48:03 +0100hekkaidekapus(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2021-01-07 10:48:06 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 10:48:07 +0100pera(pera@gateway/vpn/mullvad/pera)
2021-01-07 10:48:20 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 10:49:02 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-07 10:50:05 +0100plakband(~plakband@softbank126227038054.bbtec.net) (Quit: WeeChat 2.9)
2021-01-07 10:50:09 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 10:50:49 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 10:52:35 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 10:52:49 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 10:54:36 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 10:54:49 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ddbb:ad3c:80ea:163a)
2021-01-07 10:54:58 +0100darjeeling_(~darjeelin@122.245.218.97) (Ping timeout: 246 seconds)
2021-01-07 10:55:14 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 10:56:50 +0100 <dminuoso> Is there a way to have GHC evaluate tyfams when emitting diagnostics?
2021-01-07 10:57:02 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-07 10:57:03 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 10:57:07 +0100 <dminuoso> This is just not helpful https://gist.github.com/dminuoso/9ae328604fccf07740f5f4d914360bbc
2021-01-07 10:57:18 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 10:57:29 +0100 <merijn> I mean, trivially "yes"
2021-01-07 10:57:42 +0100 <merijn> But that's probably not the answer you're looking for :p
2021-01-07 10:58:03 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-01-07 10:58:11 +0100aveltras(uid364989@gateway/web/irccloud.com/x-cgtozfrhtbhoalmq)
2021-01-07 10:58:11 +0100 <dminuoso> What do you mean?
2021-01-07 10:58:53 +0100 <merijn> I mean that "you could implement it in GHC", therefore there is a way xD
2021-01-07 10:59:03 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 10:59:26 +0100heatsink(~heatsink@2600:1700:bef1:5e10:ddbb:ad3c:80ea:163a) (Ping timeout: 264 seconds)
2021-01-07 10:59:44 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 11:00:55 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 11:01:10 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 11:01:55 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2021-01-07 11:02:26 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0)
2021-01-07 11:02:31 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 11:02:45 +0100 <dminuoso> I can already see that approach being thrown out, on account of possibly non-terminating tyfams...
2021-01-07 11:03:09 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 11:05:13 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-07 11:05:18 +0100Rudd0(~Rudd0@185.189.115.108)
2021-01-07 11:05:41 +0100 <dminuoso> Though.. it would be sleek as a compiler flag.
2021-01-07 11:05:48 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 11:06:00 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 11:06:02 +0100 <idnar> I have a function: foo :: forall (src :: Symbol) (dst :: Symbol). (KnownSymbol src, KnownSymbol dst) => …
2021-01-07 11:06:02 +0100 <idnar> can I optimize this somehow when src ~ dest?
2021-01-07 11:06:59 +0100da39a3ee5e6b4b0d(~da39a3ee5@ppp-223-24-94-18.revip6.asianet.co.th) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-07 11:07:52 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 11:08:31 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 11:08:32 +0100 <Boomerang> You could check if they are equal with https://hackage.haskell.org/package/base-4.14.1.0/docs/GHC-TypeLits.html#v:sameSymbol
2021-01-07 11:08:58 +0100fendor_fendor
2021-01-07 11:09:22 +0100 <Boomerang> case sameSymbol (Proxy @src) (Proxy @dst) of {Just Refl -> ...; Nothing -> ... }
2021-01-07 11:09:26 +0100jedws(~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-07 11:10:07 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 272 seconds)
2021-01-07 11:10:52 +0100 <idnar> ooh, nice
2021-01-07 11:10:56 +0100datajerk(~datajerk@sense.net) (Ping timeout: 240 seconds)
2021-01-07 11:14:18 +0100 <kuribas> > let coerced f = coerce . f . coerce in coerced @(Maybe (Max Int)) (<>) (Maybe 2) Nothing
2021-01-07 11:14:20 +0100 <lambdabot> error:
2021-01-07 11:14:20 +0100 <lambdabot> Pattern syntax in expression context: coerced@(Maybe (Max Int))
2021-01-07 11:14:20 +0100 <lambdabot> Did you mean to enable TypeApplications?
2021-01-07 11:14:26 +0100 <kuribas> % let coerced f = coerce . f . coerce in coerced @(Maybe (Max Int)) (<>) (Maybe 2) Nothing
2021-01-07 11:14:26 +0100 <yahb> kuribas: ; <interactive>:34:57: error:; Not in scope: type constructor or class `Max'; Perhaps you meant `M.Map' (imported from Data.Map)
2021-01-07 11:14:38 +0100datajerk(~datajerk@sense.net)
2021-01-07 11:15:55 +0100jedws(~jedws@121.209.189.201)
2021-01-07 11:15:58 +0100 <idnar> kuribas: that's just coerced = coerce I believe
2021-01-07 11:16:07 +0100jedws(~jedws@121.209.189.201) (Client Quit)
2021-01-07 11:16:07 +0100pfurla_(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-01-07 11:16:11 +0100zariuq(~zar@fw1.ciirc.cvut.cz)
2021-01-07 11:16:42 +0100 <kuribas> ah indeed!
2021-01-07 11:17:12 +0100pfurla(~pfurla@ool-3f8fc2ff.dyn.optonline.net) (Ping timeout: 272 seconds)
2021-01-07 11:18:05 +0100jneira(5127ac9c@gateway/web/cgi-irc/kiwiirc.com/ip.81.39.172.156) (Quit: Connection closed)
2021-01-07 11:18:14 +0100 <kuribas> idnar: but can it convert the type classes?
2021-01-07 11:18:26 +0100mizlan(~michaella@c-67-169-7-31.hsd1.ca.comcast.net)
2021-01-07 11:18:46 +0100zar(~zar@89-24-42-225.nat.epc.tmcz.cz) (Ping timeout: 246 seconds)
2021-01-07 11:21:21 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 11:21:38 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 11:21:53 +0100 <merijn> Whoo! I'm eligible for the FP Castle! ;) "You must have had at least one paper rejected from POPL, ICFP, PLDI or OOPSLA."
2021-01-07 11:22:28 +0100cfricke(~cfricke@unaffiliated/cfricke)
2021-01-07 11:22:36 +0100L29Ah(~L29Ah@unaffiliated/l29ah)
2021-01-07 11:22:37 +0100mizlan(~michaella@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
2021-01-07 11:22:51 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Read error: Connection reset by peer)
2021-01-07 11:23:07 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-07 11:23:25 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 11:23:38 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:12e2:1db3:d5d3:fa35:5ac1)
2021-01-07 11:23:56 +0100 <Boomerang> % import Data.Semigroup
2021-01-07 11:23:56 +0100 <yahb> Boomerang:
2021-01-07 11:24:03 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 11:24:08 +0100 <Boomerang> % coerce @(Maybe (Max Int) -> Maybe (Max Int) -> Maybe (Max Int)) @(Maybe Int -> Maybe Int -> Maybe Int) (<>) (Just 2) (Just 3)
2021-01-07 11:24:08 +0100 <yahb> Boomerang: Just 3
2021-01-07 11:25:25 +0100pera(pera@gateway/vpn/mullvad/pera) (Ping timeout: 246 seconds)
2021-01-07 11:27:23 +0100pera(~pera@unaffiliated/pera)
2021-01-07 11:28:19 +0100__monty__(~toonn@unaffiliated/toonn)
2021-01-07 11:29:09 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2021-01-07 11:31:09 +0100tito_04(~taurux@net-188-152-137-51.cust.dsl.teletu.it)
2021-01-07 11:32:46 +0100taurux(~taurux@net-93-144-87-101.cust.vodafonedsl.it) (Ping timeout: 246 seconds)
2021-01-07 11:34:27 +0100 <kuribas> @hoogle (Applicative f, Alternative t) => Bool -> f (t a) -> f (t a)
2021-01-07 11:34:28 +0100 <lambdabot> No results found
2021-01-07 11:37:26 +0100 <Boomerang> % :t flip (bool empty)
2021-01-07 11:37:26 +0100 <yahb> Boomerang: Alternative f => Bool -> f a -> f a
2021-01-07 11:37:59 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net) (Quit: -a- Connection Timed Out)
2021-01-07 11:38:12 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net)
2021-01-07 11:38:27 +0100 <Boomerang> % :t flip (bool $ pure empty)
2021-01-07 11:38:27 +0100 <yahb> Boomerang: (Alternative f1, Applicative f2) => Bool -> f2 (f1 a) -> f2 (f1 a)
2021-01-07 11:38:43 +0100kritzefitz(~kritzefit@212.86.56.80)
2021-01-07 11:45:49 +0100pera(~pera@unaffiliated/pera) (Ping timeout: 264 seconds)
2021-01-07 11:46:50 +0100 <tomsmeding> merijn: I like how the list of members in spirit is mostly alphabetically ordered, but not quite
2021-01-07 11:47:08 +0100ADG1089__(~aditya@171.79.107.193) (Read error: Connection reset by peer)
2021-01-07 11:47:26 +0100ADG1089__(~aditya@171.79.107.193)
2021-01-07 11:55:05 +0100jedws(~jedws@121.209.189.201)
2021-01-07 11:55:52 +0100 <itai33[m]> in regex-tdfa, how do i create a regexp to match digits? `compile defaultCompOpt defaultExecOpt "\\d"` doesn't work and just matches d
2021-01-07 11:56:06 +0100Franciman(~francesco@host-82-48-174-127.retail.telecomitalia.it)
2021-01-07 11:58:19 +0100pera(~pera@unaffiliated/pera)
2021-01-07 12:02:51 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-01-07 12:03:19 +0100pera(~pera@unaffiliated/pera) (Ping timeout: 260 seconds)
2021-01-07 12:03:25 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-01-07 12:04:59 +0100 <tomsmeding> [0-9] ?
2021-01-07 12:05:56 +0100 <tomsmeding> itai33[m]: ^
2021-01-07 12:07:18 +0100 <xerox_> itai33[m]: [:num:] works
2021-01-07 12:07:30 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-07 12:07:30 +0100 <itai33[m]> tomsmeding yeah, it seems that posix regexp doesn't support \d type stuff. do you have any idea how to do case insensitive matching?
2021-01-07 12:07:30 +0100 <itai33[m]> huh
2021-01-07 12:07:38 +0100 <itai33[m]> i tried [:digit:] and it didn't good to know
2021-01-07 12:07:52 +0100 <xerox_> [:digit:] also works for me
2021-01-07 12:07:57 +0100 <itai33[m]> oh cool it's in CompOptions
2021-01-07 12:08:25 +0100 <itai33[m]> xerox_: how did you do it?
2021-01-07 12:08:40 +0100 <xerox_> itai33[m]: and by works I mean doesn't work!
2021-01-07 12:08:43 +0100errst(~errst@unaffiliated/tirej)
2021-01-07 12:08:49 +0100Stanley00(~stanley00@unaffiliated/stanley00) ()
2021-01-07 12:08:52 +0100 <itai33[m]> lmao
2021-01-07 12:09:27 +0100 <itai33[m]> wait does [:num:] not work of work?
2021-01-07 12:09:52 +0100jedws(~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-07 12:10:00 +0100 <xerox_> I jumped the gun
2021-01-07 12:12:21 +0100 <kuribas> itai33[m]: don't forget to wrap twice, like [[:digit:]]
2021-01-07 12:12:30 +0100 <itai33[m]> wait what
2021-01-07 12:12:37 +0100 <itai33[m]> why do i have to do that
2021-01-07 12:12:38 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 260 seconds)
2021-01-07 12:12:45 +0100thc202(~thc202@unaffiliated/thc202)
2021-01-07 12:12:47 +0100 <xerox_> oooh..
2021-01-07 12:13:03 +0100 <merijn> I think crucial step 1 here is "figure out which regex syntax flavour this library supports"
2021-01-07 12:13:08 +0100 <kuribas> in a character class
2021-01-07 12:13:14 +0100 <merijn> Step 2 being "read the documentation of that flavour"
2021-01-07 12:13:20 +0100 <merijn> Instead of this guess work >.>
2021-01-07 12:13:35 +0100 <itai33[m]> ohhhh it's part of the posix stuff
2021-01-07 12:13:43 +0100 <kuribas> for example [_[:digit:]]
2021-01-07 12:13:56 +0100 <itai33[m]> merijn: i did but it was too late and then i missed the part in the docs that says to double wrap
2021-01-07 12:14:10 +0100 <itai33[m]> cause i just kind of assumed that all regexps are the same with minor differences
2021-01-07 12:14:19 +0100 <itai33[m]> I didn't know posix was so different
2021-01-07 12:15:30 +0100 <dminuoso> https://wiki.haskell.org/Regex_Posix
2021-01-07 12:15:34 +0100 <dminuoso> This is a hilarious read. :)
2021-01-07 12:15:54 +0100 <merijn> itai33[m]: PCRE and posix are basically entirely different syntax with very little similarities
2021-01-07 12:16:46 +0100 <itai33[m]> oops
2021-01-07 12:18:28 +0100new_haskeller(~new_haske@2607:fea8:be1f:ddc0:2d5f:bcd9:8fec:e874)
2021-01-07 12:18:44 +0100 <opqdonut> posix-compatible regular expressoins ;)
2021-01-07 12:19:04 +0100 <merijn> dminuoso: You know what's a hilarious read?
2021-01-07 12:19:47 +0100new_haskeller(~new_haske@2607:fea8:be1f:ddc0:2d5f:bcd9:8fec:e874) (Quit: new_haskeller)
2021-01-07 12:19:53 +0100 <merijn> dminuoso: Vanessa and maerwald whenever either of them talks about "tar" :p I'm at the same time surprised and not surprised at how broken some common tech is :p
2021-01-07 12:20:09 +0100 <dminuoso> Vanessa who?
2021-01-07 12:20:39 +0100 <Uniaika> McHale, dminuoso
2021-01-07 12:20:52 +0100 <merijn> dminuoso: What, you don't know our PL shitposting memelord (well, lady, I suppose)? :p
2021-01-07 12:20:55 +0100 <merijn> dminuoso: https://twitter.com/vamchale
2021-01-07 12:21:19 +0100 <__monty__> merijn: I'm interested in what they have to say. I submitted an issue to ghcup about making their tar invocations *more* compatible than POSIX but they didn't want it.
2021-01-07 12:21:19 +0100 <Uniaika> more than just PL shitposting, she's an APL adept
2021-01-07 12:21:24 +0100mizlan(~michaella@c-67-169-7-31.hsd1.ca.comcast.net)
2021-01-07 12:22:04 +0100 <merijn> Uniaika: Well, and ATS shill and really just "anything that no one would consider mainstream"-shill ;)
2021-01-07 12:22:15 +0100 <Uniaika> ah yes ATS thanks
2021-01-07 12:22:20 +0100 <Uniaika> I wasn't so certain between the two
2021-01-07 12:22:32 +0100 <merijn> Uniaika: She shills J all the time, so probably APL too :p
2021-01-07 12:22:41 +0100 <Uniaika> haha
2021-01-07 12:22:47 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Read error: Connection reset by peer)
2021-01-07 12:23:07 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-07 12:24:24 +0100 <merijn> dminuoso: https://twitter.com/vamchale/status/1337937290262417417 :)
2021-01-07 12:25:45 +0100afx237_(~afx237@107.170.10.178)
2021-01-07 12:26:05 +0100mizlan(~michaella@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2021-01-07 12:27:17 +0100jedws(~jedws@121.209.189.201)
2021-01-07 12:31:07 +0100pera(~pera@unaffiliated/pera)
2021-01-07 12:31:35 +0100new_haskeller(ae72a197@cpe00fc8d386d93-cm00fc8d386d90.cpe.net.cable.rogers.com)
2021-01-07 12:31:43 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2021-01-07 12:35:14 +0100Guest19(ae72a197@gateway/web/cgi-irc/kiwiirc.com/ip.174.114.161.151)
2021-01-07 12:36:18 +0100 <ur> I'm confused by Profunctors.
2021-01-07 12:36:25 +0100 <ur> dimap :: (a -> b) -> (c -> d) -> p b c -> p a d
2021-01-07 12:36:46 +0100 <ur> I think I understand it in the case where b and c are the same function
2021-01-07 12:37:45 +0100knupfer(~Thunderbi@200116b82cd91d009c1734bea44afe6a.dip.versatel-1u1.de) (Remote host closed the connection)
2021-01-07 12:37:54 +0100knupfer(~Thunderbi@200116b82cd91d007c6f9483115a4f67.dip.versatel-1u1.de)
2021-01-07 12:38:13 +0100 <ur> I mean where b and c are the same and a and d are the same type
2021-01-07 12:39:41 +0100 <ur> so (a -> b) and (b -> a) one converts from a to b so that some function can be done to b and the other converts b back to a
2021-01-07 12:39:46 +0100 <dminuoso> ur: Start off with a particular choice of a profunctor.
2021-01-07 12:39:59 +0100 <dminuoso> (->) is a simple example
2021-01-07 12:40:07 +0100 <dminuoso> If we set p ~ (->), then we obtain
2021-01-07 12:40:19 +0100 <dminuoso> dimap :: (a -> b) -> (c -> d) -> (b -> c) -> a -> d
2021-01-07 12:40:40 +0100 <dminuoso> This just composes two functions (the first two arguments) onto both ends of another function (the third argument)
2021-01-07 12:42:24 +0100jedws(~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-07 12:42:26 +0100 <dminuoso> In Haskell, a profunctor is a 2-ary type constructor, and you can contramap over one argument and map over the second argument. dimap does both in one go.
2021-01-07 12:42:43 +0100 <dminuoso> (Where contramap is the class method of Contravariant functors)
2021-01-07 12:43:24 +0100 <dminuoso> that gives us laws like `contramap f = dimap f id` and `fmap f = dimap id f`
2021-01-07 12:43:45 +0100 <dminuoso> (These laws are fictional because the type system is in the way)
2021-01-07 12:43:51 +0100 <ur> dminuoso: Thanks! Hm... it's getting a bit clearer I think. I have to think about it
2021-01-07 12:44:00 +0100sqrt2(~ben@unaffiliated/sqrt2)
2021-01-07 12:44:23 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64) (Ping timeout: 240 seconds)
2021-01-07 12:44:43 +0100sqrt2_(~ben@unaffiliated/sqrt2) (Ping timeout: 260 seconds)
2021-01-07 12:44:43 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya) (Ping timeout: 240 seconds)
2021-01-07 12:45:02 +0100ericsagnes(~ericsagne@2405:6580:0:5100:abd5:d2f9:a1fb:762) (Ping timeout: 264 seconds)
2021-01-07 12:45:13 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 264 seconds)
2021-01-07 12:46:51 +0100 <__monty__> :t contramap
2021-01-07 12:46:52 +0100 <lambdabot> Contravariant f => (a -> b) -> f b -> f a
2021-01-07 12:46:58 +0100 <dminuoso> ur: To clarify on that last remark: If we have `instance Profunctor T`, then we cant have `instance Contravariant (T a)` because the type parameter order is wrong).
2021-01-07 12:47:35 +0100 <dminuoso> So if we squint a bit, and imagine we had an `instance Contravariant FlippedT a` where `newtype FlippedT a b = FlippedT (T b a)`, and then the law would hold
2021-01-07 12:47:51 +0100 <dminuoso> Err, an `instance Contravariant (FlippedT a)` of course.
2021-01-07 12:48:42 +0100 <__monty__> I suppose ((->) r) isn't an instance of Contravariant? Yeah, doesn't make sense. I was thinking of it as "composition in the other direction" but that leads nowhere.
2021-01-07 12:48:54 +0100 <dminuoso> __monty__: Right, that's what we have the Op newtype wrapper for.
2021-01-07 12:49:11 +0100 <dminuoso> (Which is a concrete example of the FlippedT above)
2021-01-07 12:50:15 +0100 <idnar> ur: I like to think `dimap :: Profunctor (~>) => (a -> b) -> (c -> d) -> (b ~> c) -> (a ~> d)`
2021-01-07 12:50:45 +0100 <dminuoso> Back in the days, this used to be possible to write.. :)
2021-01-07 12:50:56 +0100jmchael(~jmchael@81.174.205.210)
2021-01-07 12:51:06 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64)
2021-01-07 12:51:12 +0100 <dminuoso> Or, alternatively, you can write type variables with ``
2021-01-07 12:51:29 +0100 <dminuoso> dimap :: Profunctor p => (a -> b) -> (c -> d) -> (b `p` c) -> (a `p` d)
2021-01-07 12:52:13 +0100 <ur> Hm... I think I may be getting confused because I'm assigning to much meaning to the order of arguments in the dimap type definition
2021-01-07 12:52:34 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246)
2021-01-07 12:52:47 +0100 <ur> too*
2021-01-07 12:52:55 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya)
2021-01-07 12:53:33 +0100 <__monty__> ur: I think it's easier to understand if you first grok variance/contravariance for functions.
2021-01-07 12:53:56 +0100 <dminuoso> ur: Perhaps, for this to be truly motivating, you should consider a second but similar example other than (->)
2021-01-07 12:54:19 +0100Alleria(~textual@zrcout.mskcc.org)
2021-01-07 12:54:27 +0100 <dminuoso> % newtype Star f d c = Star { runStar :: d -> f c }
2021-01-07 12:54:28 +0100 <yahb> dminuoso:
2021-01-07 12:54:33 +0100 <idnar> dimap :: Profunctor (~>) => (a' -> a) -> (b -> b') -> (a ~> b) -> (a' ~> b')
2021-01-07 12:54:43 +0100AlleriaGuest28673
2021-01-07 12:54:46 +0100 <dminuoso> Now, we can write an `instance Functor f => Profunctor (Star f)`
2021-01-07 12:54:51 +0100 <__monty__> % :info Op
2021-01-07 12:54:51 +0100 <yahb> __monty__: ; <interactive>:1:1: error: Not in scope: `Op'
2021-01-07 12:55:51 +0100jedws(~jedws@121.209.189.201)
2021-01-07 12:56:21 +0100 <dminuoso> ur: Now, it should be obvious that here, we too, can contramap over the `d` and `map` over the c` argument bits. Right?
2021-01-07 12:56:29 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e0a4:3836:b19:3d7)
2021-01-07 12:56:34 +0100 <dminuoso> (It's sort of like (->) but there's an extra functor on the right hand side)
2021-01-07 12:56:57 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246) (Ping timeout: 260 seconds)
2021-01-07 12:57:15 +0100ericsagnes(~ericsagne@2405:6580:0:5100:e26e:cf9:1dd6:9615)
2021-01-07 13:00:22 +0100 <ur> dminuoso: Hm... I don't know if this makes sense, but I'm not quite sure what the difference between map and contramap \means\
2021-01-07 13:00:31 +0100 <dminuoso> ur: Ah!
2021-01-07 13:00:39 +0100 <dminuoso> % :t contramap
2021-01-07 13:00:40 +0100 <yahb> dminuoso: Contravariant f => (a -> b) -> f b -> f a
2021-01-07 13:00:52 +0100 <dminuoso> ur: Stare at this for a while.
2021-01-07 13:01:14 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e0a4:3836:b19:3d7) (Ping timeout: 264 seconds)
2021-01-07 13:01:50 +0100 <dminuoso> c.f.:
2021-01-07 13:01:53 +0100 <dminuoso> % :t fmap
2021-01-07 13:01:53 +0100 <yahb> dminuoso: Functor f => (a -> b) -> f a -> f b
2021-01-07 13:02:22 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-07 13:03:15 +0100 <__monty__> fmap on (->) is contramap on Op, right?
2021-01-07 13:03:39 +0100 <dminuoso> No.
2021-01-07 13:04:03 +0100 <dminuoso> If we squint over the Op newtype wrapper, than `fmap` acts on what the function returns and `contramap` what the function accepts.
2021-01-07 13:06:04 +0100 <ur> dminuoso: I guess what confuses me is how a function which takes (a -> b) and f b and returns f a can do anything with (a -> b) given that none of the arguments are 'a'. I think here I'm missing something fundamental
2021-01-07 13:06:38 +0100 <opqdonut> ur: consider f b = b -> Int
2021-01-07 13:07:23 +0100dandart(~Thunderbi@home.dandart.co.uk) (Ping timeout: 256 seconds)
2021-01-07 13:08:29 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:12e2:1db3:d5d3:fa35:5ac1) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-07 13:09:34 +0100Torro(Torro@gateway/vpn/protonvpn/torro)
2021-01-07 13:09:36 +0100kritzefitz(~kritzefit@212.86.56.80) (Ping timeout: 240 seconds)
2021-01-07 13:09:38 +0100 <ur> opqdonut: so that converts some type b into Int? But I suppose b needs to be constrained to an instance of some typeclass otherwise the function is undefinable?
2021-01-07 13:10:00 +0100plutoniix(~q@184.82.203.72) (Read error: Connection reset by peer)
2021-01-07 13:11:01 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 264 seconds)
2021-01-07 13:13:22 +0100plutoniix(~q@184.82.203.72)
2021-01-07 13:13:33 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-07 13:14:26 +0100Lycurgus(~niemand@cpe-45-46-139-165.buffalo.res.rr.com)
2021-01-07 13:15:04 +0100 <idnar> ur: fmap uses (a -> b) to turn a thing that "gives" you as into one that "gives" you bs; contramap uses (a -> b) to turn a thing that "takes" bs into one that "takes" as
2021-01-07 13:16:56 +0100Guest19(ae72a197@gateway/web/cgi-irc/kiwiirc.com/ip.174.114.161.151) (Quit: Connection closed)
2021-01-07 13:18:48 +0100kritzefitz(~kritzefit@212.86.56.80)
2021-01-07 13:18:50 +0100andreas303(~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection)
2021-01-07 13:21:32 +0100Entertainment(~entertain@104.246.132.210)
2021-01-07 13:22:46 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-07 13:23:07 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-07 13:24:33 +0100 <opqdonut> ur: sure, there are no interesting functions of type `forall b. b -> Int`, but you can take a specific function like ord :: Char -> Int and give it to a function that expects a function of type b -> Int
2021-01-07 13:24:55 +0100FastestCoderOnEa(5ab2f14a@74.241.broadband11.iol.cz)
2021-01-07 13:25:06 +0100 <FastestCoderOnEa> Hi, anyone here?
2021-01-07 13:25:32 +0100 <opqdonut> ur: just like map has type (a -> b) -> [a] -> [b] but there are no useful functions of type forall a b. a -> b
2021-01-07 13:25:50 +0100 <Rembane> FastestCoderOnEa: We are here.
2021-01-07 13:26:38 +0100noop_noob(31e4c3d3@49.228.195.211)
2021-01-07 13:26:56 +0100 <Boomerang> % newtype Predicate a = Predicate (a -> Bool)
2021-01-07 13:26:56 +0100 <yahb> Boomerang:
2021-01-07 13:27:19 +0100 <ur> Right, right. I think contramap makes sense now. It's just slightly less intuitive to me than fmap
2021-01-07 13:27:32 +0100 <Boomerang> % mapPredicate f (Predicate g) = Predicate (f . g)
2021-01-07 13:27:32 +0100 <yahb> Boomerang:
2021-01-07 13:27:39 +0100 <Boomerang> % :t mapPredicate
2021-01-07 13:27:40 +0100 <yahb> Boomerang: (Bool -> Bool) -> Predicate a -> Predicate a
2021-01-07 13:27:47 +0100 <Boomerang> Hehe ^^
2021-01-07 13:28:01 +0100 <FastestCoderOnEa> yahb Cool, I have this question, https://pastebin.pl/view/fd07d3e6
2021-01-07 13:28:22 +0100 <Boomerang> % mapPredicate f (Predicate g) = Predicate (g . f)
2021-01-07 13:28:22 +0100 <yahb> Boomerang:
2021-01-07 13:28:24 +0100 <Boomerang> % :t mapPredicate
2021-01-07 13:28:25 +0100 <yahb> Boomerang: (a1 -> a2) -> Predicate a2 -> Predicate a1
2021-01-07 13:28:33 +0100 <ur> Basically it's just A -> B -> C and A -> C -> B. So if you have A and B and need C you use fmap if you have A and C and need B you use contramap
2021-01-07 13:28:57 +0100 <ur> and profunctor I suppose is just some kind of composition of these two concepts
2021-01-07 13:29:29 +0100 <FastestCoderOnEa> yahb Do you think it's something you can help with?
2021-01-07 13:29:49 +0100 <noop_noob> FastestCoderOnEa, why are you asking a bot
2021-01-07 13:29:51 +0100 <merijn> FastestCoderOnEa: Eh, yahb is a bot :)
2021-01-07 13:30:18 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2021-01-07 13:30:36 +0100 <noop_noob> FastestCoderOnEa, I clicked on your link and the page seems to not be loading...
2021-01-07 13:30:44 +0100 <FastestCoderOnEa> OH, can someone help me, I have this question, https://pastebin.pl/view/fd07d3e6
2021-01-07 13:30:48 +0100 <Boomerang> It doesn't load for me either
2021-01-07 13:31:25 +0100 <FastestCoderOnEa> I need some help with Haskell... I have this code so far: ``` {-# LANGUAGE OverloadedStrings #-} module Main where import System.Posix.Process import System.Process import System.Environment import Data.List executeChild = do putStrLn "Child
2021-01-07 13:31:25 +0100 <FastestCoderOnEa> executed!" main :: IO () main = do putStrLn "Your code goes here" -- Uncomment this to pass stage 1 args <- getArgs childPid <- forkProcess executeChild if childPid == -1 then putStrLn "Error forking!" else if childPid
2021-01-07 13:31:26 +0100 <FastestCoderOnEa> then putStrLn "Child terminates!" else do (errCode, stdout', stderr') <- readProcessWithExitCode (head $ drop 3 args) (tail $ drop 3 args) "" putStrLn stdout' return () ``` And I want to end up with something similiar to this Python code: ``` import
2021-01-07 13:31:26 +0100 <FastestCoderOnEa> sys import os def main(): print("Your code goes here!") # Uncomment this block to pass the first stage child_pid = os.fork() if child_pid == -1: print("Error forking!") elif child_pid: status = os.wait() print("Child
2021-01-07 13:31:27 +0100 <noop_noob> FastestCoderOnEa Try https://pastebin.com/?
2021-01-07 13:31:27 +0100 <FastestCoderOnEa> terminates!") else: # Replace current program with calling program. print(os.system(' '.join(sys.argv[3:]))) if __name__ == "__main__": main() ``` The shell command is executed correctly, the problem is creating the fork, can you help with that? Here's
2021-01-07 13:31:27 +0100 <FastestCoderOnEa> an example, I don't know if it's helpful, https://magnus.therning.org/posts/2009-08-21-727-forkexec-in-haskell.html
2021-01-07 13:31:44 +0100 <noop_noob> uhhhhhh pasting into IRC probably doesn't work well lol
2021-01-07 13:32:00 +0100 <FastestCoderOnEa> Here it is, https://pastebin.com/7B2SSAH2
2021-01-07 13:32:16 +0100 <merijn> FastestCoderOnEa: Don't use forkProcess
2021-01-07 13:32:43 +0100 <noop_noob> TIL you can fork in haskell
2021-01-07 13:32:52 +0100 <merijn> You can't sensibly fork Haskell processes, anyone who tells you differently is lying
2021-01-07 13:33:05 +0100 <merijn> noop_noob: That depends on your definition of "can"
2021-01-07 13:33:16 +0100 <FastestCoderOnEa> If someone could provide a complete code example that would be really much appreciated, I'm not very good at Haskell, thanks :)
2021-01-07 13:33:18 +0100 <noop_noob> Why is forking a haskell process hard?
2021-01-07 13:33:23 +0100 <merijn> noop_noob: If you meant "with anything resembling sane semantics/behaviour", then no
2021-01-07 13:33:32 +0100 <noop_noob> FastestCoderOnEa Why are you trying to fork in haskell? Parallelism?
2021-01-07 13:33:39 +0100 <noop_noob> Multithreading?
2021-01-07 13:33:44 +0100 <merijn> noop_noob: Forking *any* process is nearly impossible to do safely, which is why posix deprecated fork over 20 years ago
2021-01-07 13:34:01 +0100 <merijn> noop_noob: Haskell's runtime being multi-threaded just makes things even worse
2021-01-07 13:34:22 +0100 <noop_noob> What? Fork is deprecated?
2021-01-07 13:34:25 +0100 <noop_noob> THat's news to me.
2021-01-07 13:34:27 +0100 <merijn> noop_noob: You know what you can safely do in a forked process?
2021-01-07 13:34:36 +0100 <merijn> "exec", that's it
2021-01-07 13:34:56 +0100 <merijn> noop_noob: The correct posix way of creating new processes is posix_spawn
2021-01-07 13:35:02 +0100andreas303(~andreas@gateway/tor-sasl/andreas303)
2021-01-07 13:35:05 +0100jedws(~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-07 13:35:06 +0100 <Uniaika> merijn: wow, TIL
2021-01-07 13:35:16 +0100 <FastestCoderOnEa> I just want to program to work the same way as the Python program, which method is not so important.
2021-01-07 13:35:30 +0100 <merijn> Uniaika: forking in multi-threaded processes is just insanity
2021-01-07 13:35:37 +0100 <Uniaika> merijn: oh certainly lol
2021-01-07 13:35:44 +0100 <ur> Hm... with regard to types everything honestly seems much clearer if I disregard all the words and just look at the type variables. Basically function operating on type variables as complex as it may seem is basically just a way to get one configuration of types into another. That sounds obvious now that I say it, but I didn't quite realize it
2021-01-07 13:35:44 +0100 <ur> bfore
2021-01-07 13:36:33 +0100 <FastestCoderOnEa> Is it impossible to do what I want with Haskell?
2021-01-07 13:36:41 +0100 <merijn> FastestCoderOnEa: If you want to run another process the best way is to just use the process package
2021-01-07 13:38:24 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 260 seconds)
2021-01-07 13:38:28 +0100 <merijn> noop_noob: The problem is the fork creates a 1-to-1 copy of the *memory* of the process
2021-01-07 13:38:51 +0100 <merijn> noop_noob: But fork() creates only *1* thread in the new process (the thread corresponding to the one that called fork)
2021-01-07 13:39:22 +0100 <merijn> noop_noob: So if you have, say, any mutexes (probably pretty likely in multi-threaded code!) then any mutexes that are locked when you call fork are *permanently* locked
2021-01-07 13:39:40 +0100 <merijn> noop_noob: You know what code uses mutexes and stuff like that to be threadsafe?
2021-01-07 13:39:48 +0100 <merijn> noop_noob: "basically all off libc"
2021-01-07 13:40:27 +0100 <merijn> noop_noob: Which means that after calling fork() in a multi-threaded process it's unsafe to call *any* function that you are not aboslutely 100% sure does not use a mutex or your code can deadlock
2021-01-07 13:40:50 +0100 <merijn> In practice, this means that the only *reasonable* thing that you can call is "exec"
2021-01-07 13:41:30 +0100 <FastestCoderOnEa> I need to either create a child process (fork+exec), or replace your process with another one (exec).
2021-01-07 13:41:36 +0100 <FastestCoderOnEa> Is that possible?
2021-01-07 13:41:41 +0100geekosaur(ac3a8b34@172.58.139.52)
2021-01-07 13:41:49 +0100 <merijn> Since GHC's RTS uses threads internally any Haskell program is multi-threaded, meaning that stuff is radically unsafe
2021-01-07 13:41:50 +0100fosterite(~fosterite@071-082-136-216.res.spectrum.com)
2021-01-07 13:41:56 +0100 <merijn> FastestCoderOnEa: Like I said, use the process package
2021-01-07 13:41:59 +0100 <merijn> @hackage process
2021-01-07 13:41:59 +0100 <lambdabot> https://hackage.haskell.org/package/process
2021-01-07 13:42:18 +0100 <FastestCoderOnEa> Ok, I'm sorry but could you please provide a code example?
2021-01-07 13:42:27 +0100 <FastestCoderOnEa> I'm really bad at Haskell
2021-01-07 13:42:30 +0100 <FastestCoderOnEa> Sorry
2021-01-07 13:43:07 +0100 <tdammers> the `process` packages provides plenty of code examples
2021-01-07 13:43:34 +0100 <tdammers> https://hackage.haskell.org/package/process-1.6.10.0/docs/System-Process.html look here. lots and lots of examples.
2021-01-07 13:43:50 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-07 13:45:33 +0100 <merijn> noop_noob: basically, the posix_spawn API combines "fork+exec" and a bunch of other things like the environment in a single call, so less room to mess up. Now, posix_spawn likely *internally* still use the fork/clone/etc. syscalls, depending on the OS. It also allows you set all sorts of other things, such as process group, masking, scheduler, etc.
2021-01-07 13:45:55 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89)
2021-01-07 13:46:14 +0100noop_noob(31e4c3d3@49.228.195.211) (Remote host closed the connection)
2021-01-07 13:46:18 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2021-01-07 13:46:42 +0100plutoniix(~q@184.82.203.72) (Quit: Leaving)
2021-01-07 13:46:50 +0100 <ggVGc> has anyone had a real-world situation where Data.HashMap was faster than Data.Map? In my own usage, I tried changing, and HashMap was measurabily slower, but I guess I'm also doing about the same amount of inserts as lookups
2021-01-07 13:47:14 +0100 <merijn> ggVGc: I believe I've seen a few, but I don't recall where
2021-01-07 13:47:33 +0100FastestCoderOnEa(5ab2f14a@74.241.broadband11.iol.cz) (Remote host closed the connection)
2021-01-07 13:47:35 +0100 <ggVGc> in my mind, it seems hard for hashmap to be faster, since something that is easily hashable should also be easily implementing Ord
2021-01-07 13:47:39 +0100 <merijn> ggVGc: In general the (seemingly) universally accepted "fact" that hashmaps are better than tree based dictionaries is kinda bogus, tbh
2021-01-07 13:47:42 +0100 <ggVGc> easily meaning "fast"
2021-01-07 13:48:13 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 246 seconds)
2021-01-07 13:48:16 +0100 <merijn> Map has pretty solid performance, tbh. I've used with tens of thousands of keys in fairly tight loops without much problems
2021-01-07 13:48:57 +0100 <ggVGc> merijn: I feel the measurements people do and post measure the insertion and lookup with HashMap, not counting the hashing, which ends up being faster (inside the map implementation), but isn't really useful
2021-01-07 13:49:11 +0100 <lyxia> you only need to hash once and then lookup the hash, as opposed to repeatedly compare the keys themselves. That becomes worthwhile when the keys are big.
2021-01-07 13:49:12 +0100Alleria_(~AllahuAkb@2603-7000-3040-0000-6148-1689-ef18-302b.res6.spectrum.com) (Ping timeout: 260 seconds)
2021-01-07 13:49:15 +0100 <ggVGc> sinve you always have to hash anyway...
2021-01-07 13:49:23 +0100 <merijn> ggVGc: I would always default to Map unless there's either 1) a provable reason it's too slow and a reason to believe HashMap to be faster, or 2) you can only use HashMap due to lack of Ord
2021-01-07 13:49:51 +0100 <ggVGc> yeah, that second case I think is my only reason for using it, and I haven't had that vase yet
2021-01-07 13:50:00 +0100 <idnar> ggVGc: what is the type of your keys?
2021-01-07 13:50:14 +0100 <merijn> lyxia: Maybe, but I'd wanna see benchmarks first :p
2021-01-07 13:50:22 +0100Alleria_(~AllahuAkb@2603-7000-3040-0000-2c86-5e43-4646-d432.res6.spectrum.com)
2021-01-07 13:50:30 +0100bitmagie(~Thunderbi@200116b806730e0049347085952886ab.dip.versatel-1u1.de)
2021-01-07 13:50:31 +0100 <lyxia> fair enough!
2021-01-07 13:50:33 +0100 <kuribas> lyxia: when the keys are big, and need to be compared completely
2021-01-07 13:50:35 +0100 <tdammers> from a theoretical point of view, the best you can do given only Ord is O(log n), whereas hashmaps can deliver O(1). in practice, n is often small enough for the constant factors to matter, and an Ord-based map data structure may outperform a hashmap after all
2021-01-07 13:50:37 +0100worc3131(~quassel@2a02:c7f:dcc4:6500:cf0e:3346:8766:ab20)
2021-01-07 13:50:45 +0100 <merijn> ggVGc: I feel the "hashmaps are best" comes from the Python/JS/Ruby crowd where everyone uses hashmaps because that's what they happen to have and they have pretty optimised implementations
2021-01-07 13:50:56 +0100 <merijn> tdammers: Eh, that's just a lie
2021-01-07 13:50:59 +0100 <kuribas> lyxia: for example, comparing a set of different sizes is O(1)
2021-01-07 13:51:07 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:12e2:1db3:d5d3:fa35:5ac1)
2021-01-07 13:51:13 +0100 <tdammers> oh, and let's not forget the inherent gnarliness of hashmaps outside of the happy path
2021-01-07 13:51:15 +0100 <merijn> tdammers: Because that's *best* case complexity, not average or worst. It also ignores the cost of hashing keys
2021-01-07 13:51:18 +0100 <tdammers> including the famous hashdos
2021-01-07 13:51:33 +0100 <lyxia> kuribas: good point
2021-01-07 13:51:57 +0100 <merijn> Everyone always likes to gloss over the fact that HashMaps are more space hungry, have a terrible worst case complexity, etc.
2021-01-07 13:52:01 +0100 <ggVGc> idnar: for this specific instance they're an ADT, but they're almost always the fist constructor, and this constructor has an a cached hash of the content (which I use for other things), so the Hashable implementation is just using this already pre-calculated hash
2021-01-07 13:52:13 +0100 <ggVGc> and I also use this hash for the Ord implementation
2021-01-07 13:52:17 +0100 <ggVGc> and Data.Map is faster
2021-01-07 13:52:30 +0100Tario(~Tario@201.192.165.173)
2021-01-07 13:53:45 +0100 <idnar> ggVGc: yeah, I think things like Text are where HM shines
2021-01-07 13:53:56 +0100fosterite(~fosterite@071-082-136-216.res.spectrum.com) (Ping timeout: 240 seconds)
2021-01-07 13:53:57 +0100 <tdammers> I mean, in some cases hashmaps are next to impossible to beat - but those cases involve knowing more about your data than "we can serialize things into bytestrings of arbitrary but finite length"
2021-01-07 13:54:56 +0100 <ggVGc> idnar: the cached hash I have is of a Text though...
2021-01-07 13:55:46 +0100 <tdammers> like, on rare occasions, you can come up with a perfect hashing function that has reasonable memory overhead and can be computed fast, and when that is the case, you have a near-unbeatable hashmap. but usually you can't do that, especially not in the kind of general case that a library-provided hashmap has to cater for
2021-01-07 13:56:24 +0100 <idnar> ggVGc: oh sure, I mean like an unadorned Text
2021-01-07 13:56:27 +0100 <ggVGc> idnar: with some cruft removed, this is essentially it: https://gist.github.com/26722b6bc0cb65de9fd9dee8ef336328
2021-01-07 13:56:45 +0100p8m(p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 240 seconds)
2021-01-07 13:56:47 +0100Forlorn(~Forlorn@unaffiliated/forlorn) (Read error: Connection reset by peer)
2021-01-07 13:56:52 +0100 <kuribas> maybe it's better if your Ord is very slow, like when you have many similar strings.
2021-01-07 13:58:09 +0100 <merijn> uhoh...
2021-01-07 13:58:38 +0100 <merijn> New persistent's migration helpfully corrupt the entire database, that's...a problem
2021-01-07 13:58:52 +0100 <tdammers> oh, and there's another fun thing about hashmaps: the order in which keys are stored is, by design, unpredictable, at least in the normal case where your hashing function isn't perfect, and you have protected your hashmap against hashdos using a randomized seed. this means that sequential key access is going to have you jump around in memory, and your CPU caches will hate you for it
2021-01-07 13:59:04 +0100safinaskar(6dfc5ba3@109-252-91-163.nat.spd-mgts.ru)
2021-01-07 13:59:04 +0100 <ggVGc> great, then the software developers have work to do merijn. Creating jobs.
2021-01-07 13:59:26 +0100 <kuribas> yuck, I wouldn't trust any automatic migration software.
2021-01-07 13:59:33 +0100 <kuribas> the best is writing your own migrations IMO
2021-01-07 13:59:38 +0100 <tdammers> merijn: you know, I like hand-written migrations. It's a bit more work, but at least you can meaningfully test them.
2021-01-07 13:59:44 +0100 <ggVGc> tdammers: this is why I was asking for a real-world scenario where someone has used Data.HashMap (specifically the library implementation provided in Haskell)
2021-01-07 13:59:51 +0100 <ggVGc> Since it seems not very useful to me
2021-01-07 14:00:05 +0100 <tdammers> I believe Aeson does
2021-01-07 14:00:06 +0100 <kuribas> tdammers: to be fair, I don't think Data.Map is very cash local friendly.
2021-01-07 14:00:13 +0100 <kuribas> cache
2021-01-07 14:00:18 +0100 <ggVGc> I feel like every case where it would be fast, would also have a good implementation of Ord and hence Data.Map would work well
2021-01-07 14:00:20 +0100 <merijn> tdammers: I have a...combination of manual + persistent migrations
2021-01-07 14:01:36 +0100 <ggVGc> kuribas: if you're not friendly to your cache, you 're by extension not friendly to your cash, eventually, so you were right the first time
2021-01-07 14:01:42 +0100 <safinaskar> how to convert parse tree (i. e. raw output from dummy parser) to AST and vice versa without error-prone boilerplate? maybe this is possible somehow using lenses? this is example of types I want to convert between: https://mail.haskell.org/pipermail/haskell-cafe/2021-January/133296.html
2021-01-07 14:01:45 +0100worc3131(~quassel@2a02:c7f:dcc4:6500:cf0e:3346:8766:ab20) (Ping timeout: 272 seconds)
2021-01-07 14:02:26 +0100worc3131(~quassel@2a02:c7f:dcc4:6500:cf0e:3346:8766:ab20)
2021-01-07 14:02:47 +0100 <kuribas> safinaskar: why not parse into the AST directly?
2021-01-07 14:04:40 +0100 <tdammers> I don't think there is a free lunch solution for the general case
2021-01-07 14:04:56 +0100ADG1089__(~aditya@171.79.107.193) (Remote host closed the connection)
2021-01-07 14:05:09 +0100 <tdammers> simply because the CST -> AST transform is likely not reversible to begin with, or at least it cannot be guaranteed to be reversible in the general case
2021-01-07 14:05:18 +0100jb55(~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection)
2021-01-07 14:05:45 +0100centril(~centril@213-66-146-92-no250.tbcn.telia.com) (Ping timeout: 240 seconds)
2021-01-07 14:05:45 +0100 <merijn> tdammers: Basically, the newest version of persistent renumbers all primary keys on migration, violating every foreign key in the database
2021-01-07 14:05:50 +0100 <merijn> So, uh, yeah
2021-01-07 14:05:56 +0100 <tdammers> jesus christ
2021-01-07 14:06:01 +0100 <merijn> A bit of a problem
2021-01-07 14:06:08 +0100 <tdammers> I would say so
2021-01-07 14:06:11 +0100noop_noob(31e4c3d3@49.228.195.211)
2021-01-07 14:06:20 +0100 <merijn> I'm very happy I implemented in-depth foreign key validation in my SQLite database
2021-01-07 14:06:36 +0100 <tdammers> so my gut feeling on migrations has been for about two decades now that in order to do them right, you need all the information
2021-01-07 14:06:39 +0100 <kuribas> in that email example, it doesn't seem hard to parse directly into AExpr
2021-01-07 14:06:45 +0100ur(5434a07f@tm.84.52.160.127.dc.cable.static.telemach.net) (Remote host closed the connection)
2021-01-07 14:06:53 +0100bitmagie(~Thunderbi@200116b806730e0049347085952886ab.dip.versatel-1u1.de) (Quit: bitmagie)
2021-01-07 14:06:56 +0100 <tdammers> that is, you need to know 1) what is the old schema, 2) what is the new schema, and 3) how do the two relate
2021-01-07 14:07:09 +0100 <dminuoso> ur: By the way, there's an alternate class of things that admit Contravariant/Functor/Profunctor types, and that's things with phantom types!
2021-01-07 14:07:11 +0100 <merijn> tdammers: I do incremental migrations yes
2021-01-07 14:07:14 +0100 <tdammers> 1 and 2 are easy: 1 is what's currently in the DB, and 2 is what you're asking to be there, but 3 is tricky
2021-01-07 14:07:39 +0100 <merijn> tdammers: So all I really use persistent for is creating/copying dumb stuff, not any complicated alterations
2021-01-07 14:07:47 +0100 <safinaskar> kuribas: my task is reversible parsing. end-to-end. i. e. between stream of chars and AST. i searched existing solutions and all they did not go. here is description of my problem and why existing solutions are not for me: https://mail.haskell.org/pipermail/haskell-cafe/2021-January/133275.html
2021-01-07 14:07:55 +0100ADG1089__(~aditya@171.79.107.193)
2021-01-07 14:08:10 +0100kritzefitz(~kritzefit@212.86.56.80) (Ping timeout: 246 seconds)
2021-01-07 14:08:21 +0100fosterite(~fosterite@071-082-136-216.res.spectrum.com)
2021-01-07 14:08:29 +0100 <noop_noob> I'm using the Pipe type from the "pipes" package. https://hackage.haskell.org/package/pipes-4.3.14/docs/Pipes.html#t:Pipe
2021-01-07 14:08:39 +0100 <safinaskar> kuribas: i thing i can write translation between stream of chars and parse tree. so last remaining piece is translation between parse tree and AST
2021-01-07 14:08:43 +0100 <noop_noob> I want to feed its output back into its input
2021-01-07 14:08:45 +0100 <noop_noob> How can I do that?
2021-01-07 14:08:54 +0100 <kuribas> safinaskar: I dunno, I never did that. I write a separate parser and pretty printer.
2021-01-07 14:09:00 +0100 <tdammers> safinaskar: if I were to do this, I would start with developing a set of primitives that are known to be reversible, and try to make that set powerful enough to express the semantics of your compiler
2021-01-07 14:09:05 +0100 <noop_noob> If they exported the constructors of the Proxy type, it would be so easy.
2021-01-07 14:09:12 +0100 <noop_noob> But they didn't.
2021-01-07 14:09:15 +0100 <noop_noob> Any ideas?
2021-01-07 14:09:31 +0100 <safinaskar> kuribas: i will write parser which will produce parse tree. so i need separate algorithm which will convert between parse tree and AST
2021-01-07 14:10:37 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-01-07 14:10:56 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0)
2021-01-07 14:11:28 +0100 <kuribas> safinaskar: you could try making a new bi-directional parser library, which would be Apllicative, not Monadic I suppose.
2021-01-07 14:11:45 +0100 <[exa]> parsing by lensy isos!
2021-01-07 14:12:14 +0100 <safinaskar> tdammers: "simply because the CST -> AST transform is likely not reversible to begin with" - let's assume it is reversible. i plan to check reversibility. but let's at first assume it is reversible
2021-01-07 14:12:23 +0100 <merijn> ugh
2021-01-07 14:12:33 +0100 <merijn> Now I need to downgrade back to the previous persistent version
2021-01-07 14:13:09 +0100 <tomsmeding> safinaskar: the grammar you showed in that email is, I think, convertible to an LL(1) grammar via some basic standard replacements
2021-01-07 14:13:14 +0100fosterite(~fosterite@071-082-136-216.res.spectrum.com) (Ping timeout: 264 seconds)
2021-01-07 14:13:38 +0100 <tomsmeding> I didn't reply to your email then because I had no easy way to test whether the result is really LL(1), and my memory of the algorithm is foggy :p
2021-01-07 14:13:49 +0100 <tomsmeding> but I assume that you have other grammars that are not converted as easily
2021-01-07 14:14:07 +0100 <kuribas> safinaskar: so data PPParser a = PPParser (ReaderT a [Token]) (ExceptT ParseError (StateT [Token]) a)
2021-01-07 14:15:04 +0100knupfer(~Thunderbi@200116b82cd91d007c6f9483115a4f67.dip.versatel-1u1.de) (Remote host closed the connection)
2021-01-07 14:15:08 +0100 <tomsmeding> also safinaskar: CST -> AST is normally certainly not reversible, because the point of an AST is that you throw away redundant syntactic details like presence of parentheses; if you want reversible parsing, you'll have to (or someone will have to) explicitly retain that information in the AST
2021-01-07 14:15:18 +0100knupfer(~Thunderbi@200116b82cd91d0055d50078d8be1c36.dip.versatel-1u1.de)
2021-01-07 14:15:23 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-01-07 14:16:31 +0100 <dminuoso> GHC I think opts for re-parsing on errors. I sometimes modify files *during* compilation, so I get errors about pre-changed code, but the displayed code is post-modification
2021-01-07 14:16:54 +0100 <dminuoso> Got me by suprise at least two times. :)
2021-01-07 14:17:29 +0100 <merijn> tdammers: Friends don't let friends use persistent :\
2021-01-07 14:17:51 +0100 <safinaskar> okey, let's begin with something simple. how to convert between this two types: http://paste.debian.net/1180029/
2021-01-07 14:18:01 +0100 <safinaskar> as you can see, they differ only in one aspect
2021-01-07 14:18:09 +0100 <merijn> tdammers: Why didn't you stop me 6 years ago?! >.<
2021-01-07 14:18:21 +0100 <safinaskar> i. e. they differ only in one, well, "elementary step"
2021-01-07 14:18:30 +0100 <tdammers> merijn: can't remember, maybe I tried
2021-01-07 14:18:44 +0100 <safinaskar> I substituted product into expr and did nothing else
2021-01-07 14:18:56 +0100 <safinaskar> so, how to translate?
2021-01-07 14:19:32 +0100 <merijn> tdammers: The worst thing is that, if I hadn't f-ed up my data the same way earlier and written explicitly sanity checking to guard against it, I'd never have caught this
2021-01-07 14:19:47 +0100knupfer(~Thunderbi@200116b82cd91d0055d50078d8be1c36.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2021-01-07 14:19:53 +0100 <merijn> tdammers: So, uh, good luck for everyone not as paranoid as me using persistent. Hope you have backups >.>
2021-01-07 14:20:18 +0100 <merijn> Sucks I wasted 1.5 days updating to a new version just to have to immediately downgrade
2021-01-07 14:20:48 +0100 <dminuoso> See, I've fallen pray to "ORM" and "Automatic Migration" tools before.
2021-01-07 14:20:54 +0100 <dminuoso> My Haskell history is clean.
2021-01-07 14:21:10 +0100 <dminuoso> You will not see me in anonymous persistaholics.
2021-01-07 14:21:39 +0100 <merijn> dminuoso: I'm not ever gonna be using it for anything else, but sadly this code is "pot committed" :\
2021-01-07 14:22:17 +0100mizlan(~michaella@c-67-169-7-31.hsd1.ca.comcast.net)
2021-01-07 14:22:46 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-07 14:23:08 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-07 14:23:55 +0100 <safinaskar> tdammers: "I would start with developing a set of primitives that are known to be reversible" - i agree. but my experience with existing libraries show that this is hard. existing libraries provide such primitives, but do not guarantee reversibility (you can look that haskell-cafe thread for examples)
2021-01-07 14:24:13 +0100 <tdammers> yes
2021-01-07 14:24:32 +0100 <safinaskar> tdammers: so i decided to do this: separate task into 3 different problems: chars<-->tokens, tokens<--->parse tree, parse tree<--->ast
2021-01-07 14:24:34 +0100 <tdammers> of course the issue is that guaranteeing reversibility by construction severely limits what your parser can do
2021-01-07 14:24:39 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2021-01-07 14:25:01 +0100 <merijn> tdammers: Goddammit
2021-01-07 14:25:10 +0100 <merijn> tdammers: I found out what they broke
2021-01-07 14:25:13 +0100 <safinaskar> tdammers: i will not solve first at all, i. e. i will write separate printer and parser. on second: it is the easiest. i will simply generate parser and printer from grammar description
2021-01-07 14:25:25 +0100 <safinaskar> tdammers: so remaining is 3rd. so i am here
2021-01-07 14:25:41 +0100 <tdammers> and in fact, it looks to me like you aren't really interested in 100% accurate reversibility, but rather just interested in getting semantically equivalent code back out of a round-trip
2021-01-07 14:25:48 +0100 <merijn> tdammers: Look at the changes "hey, wait...didn't I add the code they removed here?"
2021-01-07 14:25:52 +0100 <tdammers> e.g., (a + b) + c might come back as a + b + c
2021-01-07 14:26:00 +0100 <merijn> tdammers: 2 years ago I added code to make this shit work properly
2021-01-07 14:26:13 +0100 <merijn> And they reverted it in some patch breaking it all over again >.<
2021-01-07 14:26:18 +0100 <tdammers> merijn: noice.
2021-01-07 14:26:44 +0100ADG1089__(~aditya@171.79.107.193) (Quit: Konversation terminated!)
2021-01-07 14:26:48 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds)
2021-01-07 14:26:49 +0100mizlan(~michaella@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
2021-01-07 14:27:12 +0100 <safinaskar> kuribas: "you could try making a new bi-directional parser library" - see my recent answer to tdammers
2021-01-07 14:27:25 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 240 seconds)
2021-01-07 14:27:25 +0100madjesti1(~madjestic@86-88-72-244.fixed.kpn.net) (Ping timeout: 246 seconds)
2021-01-07 14:30:00 +0100 <safinaskar> tdammers: tomsmeding: "CST -> AST is normally certainly not reversible, because the point of an AST is that you throw away redundant syntactic details like presence of parentheses" - yes. when i see "reversibility" i don't mean true reversibility. i mean "reversibility modulo braces etc". i mean this: http://paste.debian.net/1180030/
2021-01-07 14:30:34 +0100 <tdammers> right. but that makes "reversibility" much harder to embed into types
2021-01-07 14:30:36 +0100urodna(~urodna@unaffiliated/urodna)
2021-01-07 14:30:43 +0100 <tomsmeding> safinaskar: that is not the standard definition of "reversible"
2021-01-07 14:30:47 +0100 <dminuoso> Mmm, say you have a servant library with 50ish endpoints, all protected via BasicAuth. For a client, would you expect each endpoint to start with say an `User -> ...` argument to specify the BasicAuth?
2021-01-07 14:30:53 +0100 <tomsmeding> hence some people's confusion :)
2021-01-07 14:30:59 +0100 <tdammers> because what is and is not "semantically equivalent" now depends on the exact semantics of the desired transform
2021-01-07 14:31:01 +0100 <dminuoso> Or would you rather prefer the HTTP header to be baked in via the ClientEnv?
2021-01-07 14:31:10 +0100knupfer(~Thunderbi@200116b82cd91d00c5cb2cb8cc07eb23.dip.versatel-1u1.de)
2021-01-07 14:31:48 +0100 <tdammers> my gut feeling says if you want this kind of "loose reversibility", then your best bet is to buckle down and do it manually
2021-01-07 14:32:04 +0100 <tdammers> (and then write property tests to verify that round-tripping converges or sth)
2021-01-07 14:32:50 +0100dminuososmells an adjunction
2021-01-07 14:34:04 +0100 <safinaskar> tomsmeding: "the grammar you showed in that email is, I think, convertible to an LL(1) grammar via some basic standard replacements" - this is just example grammar i want to be able to parse. if there is some automatic way to convert it to LL(1), this would be very cool
2021-01-07 14:34:39 +0100 <tomsmeding> safinaskar: there is an automatic way to convert _this_ one to LL(1), but I'm sure you have others for which that method would not work
2021-01-07 14:34:55 +0100 <tomsmeding> basically, all your left-recursion here is trivial looping
2021-01-07 14:35:05 +0100 <tomsmeding> (I think)
2021-01-07 14:36:22 +0100ur(5434a07f@tm.84.52.160.127.dc.cable.static.telemach.net)
2021-01-07 14:36:26 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:12e2:1db3:d5d3:fa35:5ac1) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-07 14:37:02 +0100 <ur> You can't implement contravariant for data Container a = Container a
2021-01-07 14:37:04 +0100 <ur> right?
2021-01-07 14:37:09 +0100 <dminuoso> ur: Try it.
2021-01-07 14:37:34 +0100 <dminuoso> ur: When done, try to explain your findings.
2021-01-07 14:37:47 +0100 <dminuoso> That is, try and explain yourself why you can or cannot do it.
2021-01-07 14:40:10 +0100 <safinaskar> tomsmeding: "but I assume that you have other grammars that are not converted as easily" - grammar from my mail is the hardest grammar i will deal. Look at his rule: 't0 = "!!" id "::" t0 "." t0'. this doesn't seem as trivial looping
2021-01-07 14:41:26 +0100 <tomsmeding> but it's not left-recursion :)
2021-01-07 14:41:31 +0100p8m(p8m@gateway/vpn/protonvpn/p8m)
2021-01-07 14:41:41 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2021-01-07 14:44:05 +0100stilgart(~Christoph@chezlefab.net) (Quit: leaving)
2021-01-07 14:44:13 +0100stilgart(~Christoph@chezlefab.net)
2021-01-07 14:45:10 +0100danza(~francesco@151.53.94.29) (Quit: Leaving)
2021-01-07 14:45:42 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com)
2021-01-07 14:45:46 +0100p8m_(p8m@gateway/vpn/protonvpn/p8m)
2021-01-07 14:46:07 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246)
2021-01-07 14:46:19 +0100p8m(p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 246 seconds)
2021-01-07 14:46:31 +0100aveltras(uid364989@gateway/web/irccloud.com/x-cgtozfrhtbhoalmq) (Quit: Connection closed for inactivity)
2021-01-07 14:47:21 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2021-01-07 14:47:41 +0100 <safinaskar> tdammers: "because what is and is not "semantically equivalent" now depends on the exact semantics of the desired transform" - my definition of reversibility is here: http://paste.debian.net/1180030/
2021-01-07 14:47:47 +0100knupfer(~Thunderbi@200116b82cd91d00c5cb2cb8cc07eb23.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2021-01-07 14:47:58 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:12e2:1db3:d5d3:fa35:5ac1)
2021-01-07 14:50:52 +0100 <safinaskar> tdammers: "your best bet is to buckle down and do it manually" - i did so in the past. and it failed. i used grammar very similar to grammar from my email, but with difference in one nonterminal. the grammar was ambiguous and i didn't know about this. (i parsed using parsec.) and once i did know that the grammar is ambiguous! and i already had a
2021-01-07 14:50:52 +0100 <safinaskar> lot of files in this language by that time. it was sad. so i decided to do everything reversible this time. also i already know how to do this! the last remaining piece is converting between ast and parse tree
2021-01-07 14:51:53 +0100 <safinaskar> tomsmeding: "there is an automatic way to convert _this_ one to LL(1)" - cool, give me it, please
2021-01-07 14:52:16 +0100michalz(~user@185.246.204.78) (Read error: Connection reset by peer)
2021-01-07 14:52:36 +0100michalz(~user@185.246.204.80)
2021-01-07 14:52:39 +0100 <tdammers> if you can craft an AST that retains full reversibility (not the "loose reversibility" you have there), then correct-by-construction could work
2021-01-07 14:53:08 +0100coot(~coot@37.30.55.131.nat.umts.dynamic.t-mobile.pl)
2021-01-07 14:53:21 +0100LKoen(~LKoen@185.61.176.203)
2021-01-07 14:53:43 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar) (Ping timeout: 240 seconds)
2021-01-07 14:54:03 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
2021-01-07 14:54:27 +0100ClaudiusMaximus(~claude@196.67.6.51.dyn.plus.net)
2021-01-07 14:54:27 +0100ClaudiusMaximus(~claude@196.67.6.51.dyn.plus.net) (Changing host)
2021-01-07 14:54:27 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus)
2021-01-07 14:54:32 +0100kritzefitz(~kritzefit@212.86.56.80)
2021-01-07 14:54:48 +0100 <safinaskar> tomsmeding: "but it's not left-recursion" - hmm, right. i will try to use LL(1), thanks
2021-01-07 14:56:22 +0100 <tomsmeding> safinaskar: I may have spoken a bit too soon, my scribbling on paper wasn't fully sound
2021-01-07 14:56:37 +0100 <tomsmeding> however, I do believe that a standard left-recursion to right-recursion transformation will work here
2021-01-07 14:57:22 +0100 <tomsmeding> safinaskar: the only problematic point in the grammar, where the next token does not fully determine which production to take, is in choosing between (t4 "::" t3) and t4
2021-01-07 14:57:45 +0100michalz(~user@185.246.204.80) (Read error: No route to host)
2021-01-07 14:57:49 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e0a4:3836:b19:3d7)
2021-01-07 14:57:54 +0100 <tomsmeding> which is standard left-recursion, which can be eliminated by introducing an intermediate nonterminal
2021-01-07 14:58:12 +0100michalz(~user@185.246.204.75)
2021-01-07 14:58:33 +0100 <tomsmeding> safinaskar: my work to get there: https://paste.tomsmeding.com/UaZmcvNJ
2021-01-07 14:59:15 +0100 <tomsmeding> t4 and t0 have unambiguous arms, because their first token sets are disjoint
2021-01-07 14:59:22 +0100philopsos(~caecilius@45.133.192.92)
2021-01-07 14:59:24 +0100 <tomsmeding> only t3 is a problem as I statead
2021-01-07 14:59:35 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2021-01-07 15:02:10 +0100 <safinaskar> tomsmeding: thanks a lot. i will parse input using original non-modified left-recursive grammar using Earley. and i will try to use this suggested LL(1) conversion to prove unambiguity
2021-01-07 15:02:26 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e0a4:3836:b19:3d7) (Ping timeout: 264 seconds)
2021-01-07 15:02:34 +0100 <tomsmeding> good luck! I'm uncertain now what I said is correct, but I think it has a chance of working
2021-01-07 15:02:35 +0100 <safinaskar> tomsmeding: if you conversion will be able to prove unambiguity, this will be very cool. this will be magic
2021-01-07 15:02:48 +0100 <safinaskar> tomsmeding: bison could not prove unambiguity
2021-01-07 15:03:16 +0100 <safinaskar> tomsmeding: and even this dedicated tool was not able: https://www.brics.dk/grammar.html
2021-01-07 15:05:19 +0100 <tomsmeding> safinaskar: yes starting from the end of my paste, you can argue that when parsing t3, if the next token is "%" take the first production, else first parse a t4. Then, if the next token is "::", take the second production, else the third.
2021-01-07 15:05:44 +0100 <tomsmeding> the productions of t0 and t4 have disjoint first-token sets, so those work fine
2021-01-07 15:05:56 +0100 <tomsmeding> this is a manual proof of non-ambiguity though
2021-01-07 15:06:08 +0100 <tomsmeding> and a parsing algorithm, though I'm unsure whether it's literally LL(1)
2021-01-07 15:06:22 +0100new_haskeller(ae72a197@cpe00fc8d386d93-cm00fc8d386d90.cpe.net.cable.rogers.com) (Remote host closed the connection)
2021-01-07 15:06:26 +0100 <merijn> tdammers: \o/
2021-01-07 15:06:40 +0100 <merijn> tdammers: Looks like a one line fix, so that's good
2021-01-07 15:06:44 +0100 <tdammers> yay
2021-01-07 15:06:51 +0100 <tomsmeding> safinaskar: this works only because "::" is not a valid token for anything else than that second t3 production
2021-01-07 15:07:56 +0100 <tomsmeding> safinaskar: perhaps proving tools have more success if you explicitly tell them that 'id' doesn't match "::" ?
2021-01-07 15:08:13 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net)
2021-01-07 15:08:32 +0100cfricke(~cfricke@unaffiliated/cfricke)
2021-01-07 15:09:34 +0100s00pcan(~chris@075-133-056-178.res.spectrum.com) (Remote host closed the connection)
2021-01-07 15:09:52 +0100 <tomsmeding> indeed, if 'id' can match "::", then the grammar is ambiguous: t0 -> t3 -> t4 -> id id id and t0 -> t3 -> t4 "::" t3 -> t4 "::" t4 -> id "::" id would both match the token sequence "::" "::" "::"
2021-01-07 15:09:55 +0100ADG1089__(~aditya@171.79.107.193)
2021-01-07 15:11:04 +0100 <safinaskar> tomsmeding: "that 'id' doesn't match "::"" - of course, it doesn't match. these are two different terminals
2021-01-07 15:11:28 +0100LKoen(~LKoen@185.61.176.203) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
2021-01-07 15:12:17 +0100dandart(~Thunderbi@home.dandart.co.uk) (Ping timeout: 265 seconds)
2021-01-07 15:12:56 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-twbakplhwmmiboua)
2021-01-07 15:13:01 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-07 15:13:09 +0100centril(~centril@213-66-146-92-no250.tbcn.telia.com)
2021-01-07 15:14:58 +0100 <tomsmeding> well, 'id' looks like a nonterminal :)
2021-01-07 15:15:09 +0100 <tomsmeding> that it isn't, is not evident (to me) from your syntax
2021-01-07 15:15:31 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2021-01-07 15:15:38 +0100 <melkornms> hey guys, me again, can you help me a little here? https://gist.github.com/MelkorNemesis/8fc9dc1f3183ce0168dfaa851c662a22 I just need to visualize what's happening and cannot see what the last row would look like
2021-01-07 15:16:03 +0100 <melkornms> what it will actually look like in the form or "\x -> \f ..."
2021-01-07 15:17:44 +0100mouseghost(~draco@wikipedia/desperek)
2021-01-07 15:19:17 +0100 <ur> dminuoso: The best that I can come up with is that I can't implement it because there's no method of converting any b into an a so that you could feed that a to (a -> b)
2021-01-07 15:19:19 +0100 <ur> data Container a = Container a
2021-01-07 15:19:46 +0100 <merijn> melkornms: Well, have you tries doing it step by step?
2021-01-07 15:20:18 +0100 <ur> But if Container a = Container (a -> b) you can define it via function composition because composition a such a function for arbitrary functions
2021-01-07 15:20:41 +0100 <ur> composition is such a function~-
2021-01-07 15:20:44 +0100 <ur> *
2021-01-07 15:20:49 +0100 <melkornms> merijn: yeah, only 'on the paper', but end up with some nonsense
2021-01-07 15:20:51 +0100 <merijn> melkornms: Like, let's begin with . first if "f . g = \x -> f (g x)" then clearly "(<>) . (Any .)" becomes "\x -> ((<>) ((Any .) x))"
2021-01-07 15:21:11 +0100Torro(Torro@gateway/vpn/protonvpn/torro) ("bye")
2021-01-07 15:21:27 +0100 <merijn> Simplify parentheses a bit, we get "\x -> (<>) (Any . x)"
2021-01-07 15:22:11 +0100 <merijn> Which, we can also write as "\x -> \y -> (Any . x) <> y"
2021-01-07 15:22:29 +0100geekosaur(ac3a8b34@172.58.139.52) (Remote host closed the connection)
2021-01-07 15:22:41 +0100 <merijn> melkornms: Where 'x :: a -> Bool' and 'y :: a -> Any'
2021-01-07 15:22:46 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-07 15:23:02 +0100 <melkornms> thanks merijn, I'll have a look, sometimes I'm stuck on the little things
2021-01-07 15:23:07 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-07 15:26:47 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar)
2021-01-07 15:30:11 +0100 <dminuoso> ur: Okay, let's look at another interesting example.
2021-01-07 15:30:31 +0100McAnickle(~McAnickle@104.129.28.98)
2021-01-07 15:31:06 +0100 <dminuoso> ur: Initially, it seems as if "if its in function argument position, then it's contravariant". Right?
2021-01-07 15:31:14 +0100 <ur> yes
2021-01-07 15:31:20 +0100 <dminuoso> That is, if the type variable is in function argument position, it appears contravariant.
2021-01-07 15:31:25 +0100 <dminuoso> Alright. Let's check this.
2021-01-07 15:31:43 +0100 <dminuoso> % data Foo b a = Foo (a -> b)
2021-01-07 15:31:43 +0100 <yahb> dminuoso:
2021-01-07 15:31:52 +0100 <dminuoso> % data Foo1 b a = Foo ((a -> b) -> b)
2021-01-07 15:31:52 +0100 <yahb> dminuoso:
2021-01-07 15:32:04 +0100 <dminuoso> ur: Try to write a Contravariant instance for both these types.
2021-01-07 15:32:28 +0100 <ur> ok
2021-01-07 15:33:09 +0100Lycurgus(~niemand@cpe-45-46-139-165.buffalo.res.rr.com) (Quit: Exeunt)
2021-01-07 15:34:01 +0100carlomagno(~cararell@148.87.23.11)
2021-01-07 15:35:05 +0100jb55(~jb55@gateway/tor-sasl/jb55)
2021-01-07 15:35:15 +0100coot(~coot@37.30.55.131.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-01-07 15:36:24 +0100sword865(uid208942@gateway/web/irccloud.com/x-sjphxpixcxrxjevu) (Quit: Connection closed for inactivity)
2021-01-07 15:38:55 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2021-01-07 15:39:07 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246) (Remote host closed the connection)
2021-01-07 15:39:13 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246)
2021-01-07 15:39:41 +0100 <kuribas> what's the best way to generate and pretty print haskell code?
2021-01-07 15:40:05 +0100 <dminuoso> kuribas: haskell-src-exts
2021-01-07 15:40:35 +0100 <dminuoso> There's a bunch of related libraries that complement it well.
2021-01-07 15:40:51 +0100 <dminuoso> haskell-src-exts-simple, haskell-src-exts-qq, etc
2021-01-07 15:41:08 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-07 15:41:25 +0100 <dminuoso> If you dont need full module-scope, TH could be sufficient.
2021-01-07 15:41:38 +0100 <kuribas> can you pretty print TH?
2021-01-07 15:41:47 +0100 <dminuoso> Yeah
2021-01-07 15:42:12 +0100 <dminuoso> https://hackage.haskell.org/package/template-haskell-2.16.0.0/docs/Language-Haskell-TH.html#t:Ppr
2021-01-07 15:42:20 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Read error: Connection reset by peer)
2021-01-07 15:42:28 +0100 <kuribas> ok, nice :)
2021-01-07 15:43:08 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.0)
2021-01-07 15:45:22 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2021-01-07 15:48:16 +0100michalz(~user@185.246.204.75) (Read error: Connection reset by peer)
2021-01-07 15:54:41 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2021-01-07 15:56:03 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2021-01-07 15:56:25 +0100jollygood2(~bc812391@217.29.117.252)
2021-01-07 15:58:18 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2021-01-07 15:58:24 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Client Quit)
2021-01-07 15:58:59 +0100Neo----(~neo@BSN-143-24-94.dynamic.siol.net) (Ping timeout: 260 seconds)
2021-01-07 15:59:15 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e0a4:3836:b19:3d7)
2021-01-07 16:02:11 +0100Neo----(~neo@BSN-143-25-5.dynamic.siol.net)
2021-01-07 16:03:38 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e0a4:3836:b19:3d7) (Ping timeout: 264 seconds)
2021-01-07 16:04:40 +0100 <ur> dminuoso: Foo was quite simple but I can't figure out by what method I could possibly get from (a -> b) and (b -> t) to (a -> t) -> t
2021-01-07 16:04:44 +0100 <ur> data Foo b a = Foo (a -> b)
2021-01-07 16:07:20 +0100 <dminuoso> ur: https://www.schoolofhaskell.com/user/commercial/content/covariance-contravariance
2021-01-07 16:07:27 +0100 <dminuoso> ur: Give this entire article a long and thorough read.
2021-01-07 16:08:09 +0100phasespace(~sar@80-89-47-117.inet.signal.no) (Ping timeout: 256 seconds)
2021-01-07 16:10:39 +0100dandart(~Thunderbi@home.dandart.co.uk) (Remote host closed the connection)
2021-01-07 16:10:55 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-07 16:11:00 +0100ulidtko(~ulidtko@193.111.48.79)
2021-01-07 16:11:15 +0100perrier-jouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2021-01-07 16:11:45 +0100ADG1089__(~aditya@171.79.107.193) (Remote host closed the connection)
2021-01-07 16:11:55 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:12e2:1db3:d5d3:fa35:5ac1) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-07 16:15:49 +0100tomku(~tomku@unaffiliated/tomku) (Ping timeout: 264 seconds)
2021-01-07 16:15:54 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net)
2021-01-07 16:17:30 +0100tomku(~tomku@unaffiliated/tomku)
2021-01-07 16:18:51 +0100noop_noob(31e4c3d3@49.228.195.211) (Remote host closed the connection)
2021-01-07 16:21:23 +0100 <ezzieyguywuf> [this](https://hackage.haskell.org/package/wai-app-static) has a a dep of optparse-applicative >=0.7, but the higher version of optparse-applicative is 0.16.1.0 . do these versions conflict?
2021-01-07 16:22:46 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-07 16:23:08 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-07 16:23:09 +0100fendor_(~fendor@77.119.129.169.wireless.dyn.drei.com)
2021-01-07 16:23:12 +0100mizlan(~michaella@c-67-169-7-31.hsd1.ca.comcast.net)
2021-01-07 16:24:25 +0100darjeeling_(~darjeelin@122.245.218.97)
2021-01-07 16:26:16 +0100fendor(~fendor@178.115.129.99.wireless.dyn.drei.com) (Ping timeout: 272 seconds)
2021-01-07 16:27:32 +0100 <dminuoso> ezzieyguywuf: Probably, yes. Maybe.
2021-01-07 16:27:32 +0100Saukk(~Saukk@83-148-239-3.dynamic.lounea.fi)
2021-01-07 16:27:40 +0100 <dminuoso> fsvo "conflict"
2021-01-07 16:27:45 +0100 <ezzieyguywuf> "fsvo"?
2021-01-07 16:27:49 +0100mizlan(~michaella@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
2021-01-07 16:27:50 +0100 <ezzieyguywuf> i.e. how can cabal solve the dep
2021-01-07 16:27:51 +0100 <merijn> ezzieyguywuf: Do they conflict? No. Will that work? Also probably no
2021-01-07 16:27:54 +0100 <dminuoso> If the library adheres to PVP, then there was quite a bunch of API breaking changes.
2021-01-07 16:28:02 +0100 <dminuoso> If not, well. Go diff the source code..
2021-01-07 16:28:04 +0100 <merijn> ezzieyguywuf: ">=0.7" is a stupid bound
2021-01-07 16:28:15 +0100 <ezzieyguywuf> merijn: why is it a stupid bound?
2021-01-07 16:28:25 +0100 <merijn> ezzieyguywuf: between 0.7 and 0.16 the API of optparse-applicative has almost certainly broken
2021-01-07 16:28:37 +0100 <merijn> ezzieyguywuf: No upperbound == lies
2021-01-07 16:28:38 +0100 <dminuoso> ezzieyguywuf: In Haskell many try to adhere to PVP (which is roughly semver)
2021-01-07 16:28:49 +0100 <ezzieyguywuf> ahh I see what's happening
2021-01-07 16:28:52 +0100Cale(~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com)
2021-01-07 16:28:56 +0100 <dminuoso> So if you have no upper bound, it means you're claiming that you're forward compatible to any API breaking changes the library might introduce.
2021-01-07 16:28:59 +0100 <dminuoso> That's quite a bold claim
2021-01-07 16:29:13 +0100 <ezzieyguywuf> so actually, 0.7 is less than 0.16, but y'alls point is "dude, stuff probably changed"
2021-01-07 16:29:21 +0100 <merijn> Yeah
2021-01-07 16:29:30 +0100 <ezzieyguywuf> gotcha.
2021-01-07 16:29:50 +0100 <merijn> ezzieyguywuf: If the bound had been ">= 0.7 && < 0.17" then I would've believed it worked
2021-01-07 16:29:56 +0100christo(~chris@81.96.113.213)
2021-01-07 16:29:58 +0100guest15(~user@49.5.6.87) (Remote host closed the connection)
2021-01-07 16:30:08 +0100guest15(~user@49.5.6.87)
2021-01-07 16:30:17 +0100mizlan(~michaella@c-67-169-7-31.hsd1.ca.comcast.net)
2021-01-07 16:30:22 +0100 <merijn> Since an explicit upperbound implies someone has at least looked at it/tried it. No upperbound generally just means "lazy maintainer who doesn't care if things keep working in the future"
2021-01-07 16:30:43 +0100 <ezzieyguywuf> indeed
2021-01-07 16:30:51 +0100 <ezzieyguywuf> I'm starting to understand versioning in haskell more
2021-01-07 16:30:54 +0100 <ezzieyguywuf> I guess I leveled up
2021-01-07 16:31:17 +0100 <merijn> ezzieyguywuf: See also
2021-01-07 16:31:19 +0100 <merijn> @where pvp
2021-01-07 16:31:19 +0100 <lambdabot> https://pvp.haskell.org/
2021-01-07 16:32:18 +0100 <merijn> Actually, wai-static-app seems fairly recently maintained, so possibly it *does* in fact work with 0.16
2021-01-07 16:32:35 +0100 <merijn> But it also looks like a Snoyberg/FP Complete package
2021-01-07 16:32:42 +0100 <ezzieyguywuf> but they just don't put the upperbound
2021-01-07 16:33:25 +0100 <dminuoso> To be fair, there's multiple schools of thought.
2021-01-07 16:33:39 +0100 <merijn> ezzieyguywuf: Snoyberg is one of the original creators of Stack (which works with fixed snapshots) he...does not believe in upperbounds, so therefore doesn't add them on his packages by default, which means they're prone to break in the future leaving others to fix it with revisions >.>
2021-01-07 16:33:46 +0100 <dminuoso> There's the bunch of people who dont want to constantly bump version bounds, they might introduce an upper bound if something ever breaks.
2021-01-07 16:33:49 +0100 <merijn> dminuoso: Yes, the right one and the incorrect heretics
2021-01-07 16:34:10 +0100 <ezzieyguywuf> merijn: lol.
2021-01-07 16:34:18 +0100 <ezzieyguywuf> also, that's good to know regarding snoyberg and stack
2021-01-07 16:34:22 +0100 <ezzieyguywuf> I guess differet schools of thought..
2021-01-07 16:34:43 +0100 <dminuoso> If you're responsible for a large number of packages, then constantly managing upper bounds is a real hassle
2021-01-07 16:35:27 +0100phasespace(~sar@89-162-33-21.fiber.signal.no)
2021-01-07 16:35:31 +0100 <dminuoso> You might run into the situation where your dependencies are rarely bumped (lowering your workload), which however can break build plans over time.
2021-01-07 16:35:34 +0100 <ezzieyguywuf> true. in which case the stack approach with snapshots makes sense
2021-01-07 16:35:43 +0100 <dminuoso> Bumping them freely requires careful testing, so that's a lot of work too
2021-01-07 16:36:34 +0100 <dminuoso> Arguably, lack of an upper bound is probably better than non-maintained tight bounds
2021-01-07 16:36:48 +0100 <dminuoso> Since you can always just introduce constraints yourself
2021-01-07 16:38:00 +0100 <dminuoso> If there's api breaking changes, chances are it wont even compile with newer versions. But then you can just introduce a constraint to get it build again, if its bounds are too tight, then you're forced to either adopt the package and become a maintainer, or fork, fix, vendor, and not maintain your fork..
2021-01-07 16:38:29 +0100 <dminuoso> Life of a software developer I guess.
2021-01-07 16:38:48 +0100 <dminuoso> The real rationale here might be not to rely on unmaintained packages.. :P
2021-01-07 16:41:09 +0100madjest76(~Android@188-207-107-101.mobile.kpn.net)
2021-01-07 16:41:21 +0100worc3131(~quassel@2a02:c7f:dcc4:6500:cf0e:3346:8766:ab20) (Ping timeout: 272 seconds)
2021-01-07 16:42:02 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 264 seconds)
2021-01-07 16:44:01 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net) (Ping timeout: 264 seconds)
2021-01-07 16:45:09 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-07 16:45:31 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-07 16:46:25 +0100dandart(~Thunderbi@home.dandart.co.uk) (Ping timeout: 264 seconds)
2021-01-07 16:46:55 +0100kayvan(~user@52-119-115-160.PUBLIC.monkeybrains.net)
2021-01-07 16:49:34 +0100 <kayvan> @hoogle [a] -> [a]
2021-01-07 16:49:35 +0100 <lambdabot> Prelude tail :: [a] -> [a]
2021-01-07 16:49:35 +0100 <lambdabot> Prelude init :: [a] -> [a]
2021-01-07 16:49:35 +0100 <lambdabot> Prelude reverse :: [a] -> [a]
2021-01-07 16:50:18 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) (Ping timeout: 256 seconds)
2021-01-07 16:51:30 +0100 <kayvan> @hoogle maybeMap
2021-01-07 16:51:31 +0100 <lambdabot> CoreMap data MaybeMap m a
2021-01-07 16:51:31 +0100 <lambdabot> TrieMap data MaybeMap m a
2021-01-07 16:51:31 +0100 <lambdabot> MonadUtils maybeMapM :: Monad m => (a -> m b) -> Maybe a -> m (Maybe b)
2021-01-07 16:51:46 +0100 <boxscape> @hoogle mapMaybe
2021-01-07 16:51:47 +0100 <lambdabot> Data.Maybe mapMaybe :: (a -> Maybe b) -> [a] -> [b]
2021-01-07 16:51:47 +0100 <lambdabot> Data.IntMap.Internal mapMaybe :: (a -> Maybe b) -> IntMap a -> IntMap b
2021-01-07 16:51:47 +0100 <lambdabot> Data.IntMap.Lazy mapMaybe :: (a -> Maybe b) -> IntMap a -> IntMap b
2021-01-07 16:52:07 +0100 <kayvan> @hoogle Data.Map
2021-01-07 16:52:08 +0100 <lambdabot> module Data.Map
2021-01-07 16:52:08 +0100 <lambdabot> Data.Map.Internal data Map k a
2021-01-07 16:52:08 +0100 <lambdabot> Data.Map.Lazy data Map k a
2021-01-07 16:52:20 +0100 <kayvan> @hoogle Data.Vector
2021-01-07 16:52:20 +0100 <lambdabot> module Data.Vector
2021-01-07 16:52:20 +0100 <lambdabot> Data.Vector data Vector a
2021-01-07 16:52:21 +0100 <lambdabot> Data.Vector.Generic class MVector (Mutable v) a => Vector v a
2021-01-07 16:52:27 +0100 <Melanie> @where hoogle
2021-01-07 16:52:27 +0100 <lambdabot> http://haskell.org/hoogle http://hoogle.haskell.org http://fpcomplete.com/hoogle – See also Hayoo, which searches more packages: http://hayoo.fh-wedel.de/
2021-01-07 16:54:41 +0100 <sm[m]> that loose upper bound is saying "we're pretty sure the part of the lib we're using won't change", not "there will be no api changes"
2021-01-07 16:55:31 +0100Tario(~Tario@201.192.165.173)
2021-01-07 16:56:35 +0100 <Uniaika> and also the serokell hackage search engine
2021-01-07 16:58:15 +0100Saukk(~Saukk@83-148-239-3.dynamic.lounea.fi) (Remote host closed the connection)
2021-01-07 16:59:43 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-atpmuzdscbrrptko)
2021-01-07 17:00:08 +0100 <Rembane> Uniaika: This one? https://github.com/serokell/hackage-search
2021-01-07 17:01:55 +0100 <Uniaika> Rembane: the one and only
2021-01-07 17:02:29 +0100 <ski> @where serokell
2021-01-07 17:02:29 +0100 <lambdabot> I know nothing about serokell.
2021-01-07 17:03:07 +0100Melanieeither
2021-01-07 17:03:41 +0100 <Rembane> Uniaika: Sweet.
2021-01-07 17:04:49 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
2021-01-07 17:06:20 +0100jamm_(~jamm@unaffiliated/jamm)
2021-01-07 17:07:52 +0100tchar(sid301738@gateway/web/irccloud.com/x-xddtoyyurmxjtavh) ()
2021-01-07 17:10:08 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
2021-01-07 17:10:09 +0100philopsos(~caecilius@45.133.192.92) (Ping timeout: 260 seconds)
2021-01-07 17:11:48 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-07 17:12:05 +0100knupfer(~Thunderbi@200116b82cd91d00843f14fffe52ba74.dip.versatel-1u1.de)
2021-01-07 17:12:05 +0100knupfer(~Thunderbi@200116b82cd91d00843f14fffe52ba74.dip.versatel-1u1.de) (Client Quit)
2021-01-07 17:12:18 +0100knupfer(~Thunderbi@200116b82cd91d00118d0874356b5bdf.dip.versatel-1u1.de)
2021-01-07 17:13:43 +0100philopsos(~caecilius@45.133.192.92)
2021-01-07 17:16:11 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 272 seconds)
2021-01-07 17:16:12 +0100madjest76(~Android@188-207-107-101.mobile.kpn.net) (Read error: Connection reset by peer)
2021-01-07 17:16:21 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net)
2021-01-07 17:16:39 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-07 17:18:48 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 17:19:02 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 17:19:46 +0100 <kuribas> So when using the FFI, when a thread is blocked on a FFI call, it will automatically create a new thread to run another FFI call in parallel?
2021-01-07 17:21:38 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 264 seconds)
2021-01-07 17:22:33 +0100madjesti1(~madjestic@86-88-72-244.fixed.kpn.net)
2021-01-07 17:22:55 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 17:23:30 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 17:24:59 +0100shutendoji[m](shutendoji@gateway/shell/matrix.org/x-rahorqhngflcgpid)
2021-01-07 17:26:30 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-01-07 17:28:14 +0100Saukk(~Saukk@83-148-239-3.dynamic.lounea.fi)
2021-01-07 17:28:18 +0100aarvar(~foewfoiew@2601:602:a080:fa0:9c96:3f48:55e0:3c7)
2021-01-07 17:28:19 +0100aarvar(~foewfoiew@2601:602:a080:fa0:9c96:3f48:55e0:3c7) (Client Quit)
2021-01-07 17:29:25 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 17:30:53 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 17:31:28 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 17:32:02 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 17:35:21 +0100 <merijn> ENOTENOUGHINFO
2021-01-07 17:35:43 +0100 <merijn> Which runtime? Safe or unsafe foreign import? What is "it"?
2021-01-07 17:35:54 +0100 <Uniaika> it :: IO ()
2021-01-07 17:36:15 +0100 <int-e> it :: Num p => p
2021-01-07 17:36:23 +0100 <int-e> Uniaika: let's fight?
2021-01-07 17:36:52 +0100Saukk(~Saukk@83-148-239-3.dynamic.lounea.fi) (Remote host closed the connection)
2021-01-07 17:38:18 +0100 <Taneb> No instance for (Num (IO ())) arising from a use of ‘it’
2021-01-07 17:38:34 +0100 <int-e> kuribas: bound thread or unbound thread?
2021-01-07 17:39:07 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2021-01-07 17:39:09 +0100 <kuribas> int-e: I don't know?
2021-01-07 17:39:22 +0100 <int-e> kuribas: Just adding to the list of unknowns that merijn started.
2021-01-07 17:40:11 +0100 <kuribas> I mean, an unbound thread executing a FFI call will cause the bound thread to block right?
2021-01-07 17:40:50 +0100 <kuribas> then when another unbound thread wants to do FFI call, it will create a new OS thread to run the FFI call.
2021-01-07 17:41:13 +0100 <kuribas> safe or unsafe, those are confusing...
2021-01-07 17:41:19 +0100 <kuribas> one of the two :)
2021-01-07 17:41:28 +0100 <int-e> As I understand it, in ghc's threaded runtime, a safe call in an unbound thread will release the current capability which can then be picked up by another worker thread (which may or may not already exist). For a bound thread, it'll often wake up the associated OS thread to make the FFI call. For unsafe calls, none of this happens.
2021-01-07 17:41:33 +0100 <int-e> It's complicated.
2021-01-07 17:42:27 +0100 <kuribas> why would you want unsafe calls then?
2021-01-07 17:42:28 +0100 <int-e> The lawyer's standard answer number 1 applies: "It depends."
2021-01-07 17:42:54 +0100 <int-e> kuribas: Because they're faster and are not subject to GC happen concurrently.
2021-01-07 17:43:02 +0100 <int-e> *happening
2021-01-07 17:43:07 +0100christo(~chris@81.96.113.213)
2021-01-07 17:43:25 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net) (Ping timeout: 246 seconds)
2021-01-07 17:43:52 +0100 <kuribas> I wouldn't want my SQL query to block all other SQL queries until it got a response from the DB.
2021-01-07 17:44:10 +0100mirrorbird(~psutcliff@2a00:801:42b:8314:3772:eb7f:91f1:698c)
2021-01-07 17:44:33 +0100Neo----(~neo@BSN-143-25-5.dynamic.siol.net) (Remote host closed the connection)
2021-01-07 17:44:38 +0100madjestic(~Android@188-207-107-97.mobile.kpn.net)
2021-01-07 17:45:14 +0100McAnickle(~McAnickle@104.129.28.98) ("WeeChat 2.3")
2021-01-07 17:46:28 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Remote host closed the connection)
2021-01-07 17:46:47 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-07 17:46:51 +0100 <int-e> Use a safe call then.
2021-01-07 17:46:52 +0100michalz(~user@185.246.204.79)
2021-01-07 17:47:08 +0100ThoaiOnline(~ThoaiOnli@nv.tho.ai)
2021-01-07 17:47:38 +0100ADG1089__(~aditya@171.79.107.193)
2021-01-07 17:47:58 +0100 <kuribas> I am not going to rewrite DB libraries for concurrency...
2021-01-07 17:48:51 +0100 <int-e> Concurrency is kind of an orthogonal issue here anyway.
2021-01-07 17:49:13 +0100 <int-e> Every Haskell worker can make their own unsafe foreign call at the same time.
2021-01-07 17:49:44 +0100Saukk(~Saukk@83-148-239-3.dynamic.lounea.fi)
2021-01-07 17:49:57 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-07 17:50:38 +0100 <int-e> But while those are happening, GC cannot take place, so there's the risk of interrupting all progress while an unsafe foreign call is taking place.
2021-01-07 17:50:40 +0100 <kuribas> int-e: I think you mean use an unsafe call?
2021-01-07 17:50:47 +0100 <kuribas> because safe call block...
2021-01-07 17:50:48 +0100 <int-e> kuribas: No I did not.
2021-01-07 17:51:00 +0100 <int-e> ?
2021-01-07 17:51:50 +0100 <int-e> The function you're calling may block.
2021-01-07 17:52:06 +0100 <int-e> And you don't want that to prevent the Haskell runtime from making progress, which may involve doing a GC.
2021-01-07 17:53:11 +0100 <ThoaiOnline> would it be possible to "derive" MonadMask?
2021-01-07 17:53:12 +0100madjestic(~Android@188-207-107-97.mobile.kpn.net) (Read error: Connection reset by peer)
2021-01-07 17:53:33 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net)
2021-01-07 17:53:51 +0100 <ThoaiOnline> i have a function that needs to be run in MonadMask m
2021-01-07 17:54:05 +0100 <ThoaiOnline> and an App type that looks like this
2021-01-07 17:54:05 +0100 <ThoaiOnline> newtype App a =  App    { unApp :: ReaderT State IO a    }  deriving (Applicative, Functor, Monad, MonadReader State, MonadFail, MonadIO)
2021-01-07 17:55:07 +0100geekosaur(42d52137@66.213.33.55)
2021-01-07 17:55:07 +0100 <ThoaiOnline> MonadMask doesn't seem to be easily derivable
2021-01-07 17:56:15 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-07 17:56:48 +0100 <kuribas> int-e: so the idea is that an unsafe call cannot call into haskell, and in this way could be optimized by the compiler?
2021-01-07 17:56:52 +0100 <int-e> ThoaiOnline: so what does it say when you try
2021-01-07 17:57:00 +0100 <kuribas> int-e: but that optimization also kills concurrency?
2021-01-07 17:57:30 +0100 <kuribas> int-e: to me that looks like, never use unsafe calls...
2021-01-07 17:59:35 +0100 <kuribas> I suppose unsafe calls kill concurrency using green (unbound) threads, but not using OS (bound) threads.
2021-01-07 17:59:59 +0100 <int-e> kuribas: unsafe calls operate pretty much exactly like out of line primitive operations. and they have their use... for example they're the right choice if you want to use erf() from the C library (this one is fast, does not block, and the overhead of suspending the haskell execution dwarfs the duration of the vall).
2021-01-07 18:00:05 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 18:00:18 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 18:00:18 +0100 <int-e> vall -> call
2021-01-07 18:00:22 +0100 <ThoaiOnline> int-e: oh it force me to add MonadThrow, MonadCatch first, that kinda makes sense
2021-01-07 18:00:23 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e0a4:3836:b19:3d7)
2021-01-07 18:00:31 +0100`slikts(~nelabs@wikipedia/reinis) (Ping timeout: 272 seconds)
2021-01-07 18:00:34 +0100 <merijn> Anyone remember what the "right" way to mark a package version as unbuildable on Hackage?
2021-01-07 18:00:43 +0100 <kuribas> int-e: ah indeed. If you do something that takes just a few processor instructions, the overhead of the safe call would dominate.
2021-01-07 18:00:54 +0100 <merijn> Do I use do "base > 4 && < 4" or something?
2021-01-07 18:01:20 +0100 <int-e> merijn: isn't it enough to tweak the preferred versions in the maintainer's corner?
2021-01-07 18:02:03 +0100 <merijn> int-e: No, that just makes it *less* likely to be picked
2021-01-07 18:02:14 +0100 <merijn> int-e: It doesn't make it "unselectable"
2021-01-07 18:02:16 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 18:02:34 +0100 <merijn> A version that permanently corrupts user data should never be used >.>
2021-01-07 18:02:54 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 18:03:09 +0100 <kuribas> int-e: safe and unsafe or confusingly named. Better would be fast for unsafe calls.
2021-01-07 18:03:23 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e0a4:3836:b19:3d7) (Remote host closed the connection)
2021-01-07 18:03:25 +0100 <int-e> kuribas: yes the naming isn't great
2021-01-07 18:03:32 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e0a4:3836:b19:3d7)
2021-01-07 18:03:34 +0100`slikts(~nelabs@wikipedia/reinis)
2021-01-07 18:04:33 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 18:04:47 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 18:06:08 +0100 <merijn> kuribas: eh, fast would be a *terrible* name
2021-01-07 18:06:18 +0100Saukk(~Saukk@83-148-239-3.dynamic.lounea.fi) (Remote host closed the connection)
2021-01-07 18:06:19 +0100 <monochrom> fast, good, cheap --- pick two. short name, accurate name, meaningful name --- pick two.
2021-01-07 18:06:20 +0100 <dolio> Why would I use the slow foreign import?
2021-01-07 18:06:28 +0100 <merijn> People are *already* opening PRs to add "unsafe" to my foreign imports because "it's faster"
2021-01-07 18:06:36 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 18:06:41 +0100 <kuribas> ah right :)
2021-01-07 18:07:11 +0100 <merijn> Anyone know if/how I can open a PR to something other than master on github?
2021-01-07 18:07:13 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 18:07:36 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0)
2021-01-07 18:08:03 +0100hexo(~hexo@gateway/tor-sasl/hexo) (Ping timeout: 240 seconds)
2021-01-07 18:08:25 +0100hexo(~hexo@gateway/tor-sasl/hexo)
2021-01-07 18:08:26 +0100sorki(~sorki@gateway/tor-sasl/sorki)
2021-01-07 18:08:53 +0100 <lyxia> yes you can pick another branch when you make the pr
2021-01-07 18:09:03 +0100srk(~sorki@gateway/tor-sasl/sorki) (Ping timeout: 240 seconds)
2021-01-07 18:09:33 +0100 <kuribas> safe isn't "safe" either, because you cannot pass objects to it.
2021-01-07 18:10:32 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 18:10:42 +0100conal(~conal@64.71.133.70)
2021-01-07 18:10:45 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 18:11:02 +0100 <kuribas> well, "unpinned" objects
2021-01-07 18:11:22 +0100 <kuribas> so basically unsafe1 and unsafe2 :)
2021-01-07 18:11:22 +0100 <merijn> lyxia: bleh, I just noticed it didn't work because I selected a tag, rather than a branch
2021-01-07 18:11:24 +0100sorkisrk
2021-01-07 18:11:37 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-07 18:11:42 +0100ulidtko|k(~ulidtko@194.54.80.38)
2021-01-07 18:11:45 +0100 <merijn> kuribas: unsafe is unsafe subtle ways, "passing unpinnned stuff" is unsafe in obvious ways :p
2021-01-07 18:12:13 +0100 <dolio> I don't really see the problem if the way in which it's "safe" is explained.
2021-01-07 18:12:16 +0100conal(~conal@64.71.133.70) (Client Quit)
2021-01-07 18:12:25 +0100 <merijn> dolio: Sure
2021-01-07 18:12:32 +0100michalz(~user@185.246.204.79) (Remote host closed the connection)
2021-01-07 18:12:35 +0100 <int-e> merijn: but passing unpinned stuff to unsafe calls is safe (if you don't keep the references)... so two wrongs make a right?
2021-01-07 18:12:35 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 18:12:37 +0100 <dolio> You don't need to be "safe" with respect to every idea of what "safe" means that anyone could come up with to qualify as safe.
2021-01-07 18:13:03 +0100 <kuribas> dolio: sure in the end you just read the docs. But it's hard to remember which one is which...
2021-01-07 18:13:12 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 18:14:05 +0100ulidtko(~ulidtko@193.111.48.79) (Ping timeout: 240 seconds)
2021-01-07 18:14:35 +0100 <int-e> kuribas: most of the time "safe" is a good choice and "unsafe" is an optimization for the narrow niche case where a foreign call is extremely cheap and the overhead of a safe call is hurting your performance.
2021-01-07 18:14:45 +0100 <kuribas> ah indeed
2021-01-07 18:14:50 +0100conal(~conal@209.58.135.97)
2021-01-07 18:15:09 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-07 18:15:11 +0100 <int-e> so as a rule of thumb, that's what I'd do
2021-01-07 18:15:41 +0100 <kuribas> I'll try to remember it as that
2021-01-07 18:15:43 +0100v_m_v(~vm_v@2a02:aa12:3200:6480:14d3:e041:99da:4fe5)
2021-01-07 18:15:45 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Quit: The Lounge - https://thelounge.chat)
2021-01-07 18:16:20 +0100 <dolio> Is there actually a guarantee that passing pointers to unpinned things will work with `unsafe`?
2021-01-07 18:16:30 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 18:16:38 +0100 <merijn> dolio: Yes
2021-01-07 18:16:43 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 18:16:51 +0100 <merijn> dolio: Because GC can't start while a thread is in an unsafe foreign call
2021-01-07 18:16:57 +0100 <int-e> Also "safe" interacts well with thread local storage if you also use bound threads (forkOS or the main thread), while "unsafe" calls may come from what looks like arbitrary OS threads to the C world.
2021-01-07 18:17:08 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net)
2021-01-07 18:17:09 +0100 <merijn> Which is why unsafe foreign calls are so risky, you risk blocking every single Haskell thread on a GC barrier
2021-01-07 18:17:29 +0100 <int-e> So generally "unsafe" calls give you a lot more things to worry about.
2021-01-07 18:17:32 +0100spopejoy(~stuart@ool-44c5f8c9.dyn.optonline.net)
2021-01-07 18:18:33 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 18:18:40 +0100 <merijn> dolio: Or rather, GC can't start until all capabilities synchronise, but since unsafe foreign calls don't release their capability their capability can't synchronise until they're done
2021-01-07 18:18:43 +0100 <kuribas> int-e: so does unsafe set a mutex which blocks the GC thread from running?
2021-01-07 18:18:55 +0100 <int-e> no
2021-01-07 18:18:55 +0100 <merijn> kuribas: No, see above
2021-01-07 18:18:59 +0100 <int-e> not directly anyway
2021-01-07 18:19:10 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 18:19:18 +0100 <kuribas> ah right
2021-01-07 18:19:28 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Ping timeout: 246 seconds)
2021-01-07 18:19:42 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246) (Remote host closed the connection)
2021-01-07 18:19:47 +0100 <merijn> Safe calls explicitly release their capability, leaving the runtime free to start GC
2021-01-07 18:19:48 +0100 <kuribas> could many unsafe call prevent GC from happening at all?
2021-01-07 18:19:52 +0100 <merijn> kuribas: Yes
2021-01-07 18:20:00 +0100 <merijn> kuribas: So can long running unsafe calls
2021-01-07 18:20:01 +0100theNeuron(~theNeuron@177.8.129.7)
2021-01-07 18:20:04 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
2021-01-07 18:20:21 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 18:20:23 +0100 <merijn> kuribas: Worse, if threads are waiting for GC then those threads will be blocked until GC can happen
2021-01-07 18:20:31 +0100 <int-e> Well, I guess there is a mutex associated with what ghc calls a 'capability' (of which there is one per potential haskell worker thread). It's already taken when the unsafe call takes place.
2021-01-07 18:20:37 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 18:22:09 +0100Ariakenom(~Ariakenom@2001:9b1:efb:fc00:96e:b740:520f:7fea) (Quit: Leaving)
2021-01-07 18:22:18 +0100Ariakenom(~Ariakenom@2001:9b1:efb:fc00:acbc:1011:e13d:7bc8)
2021-01-07 18:22:22 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 18:22:35 +0100safinaskar(6dfc5ba3@109-252-91-163.nat.spd-mgts.ru) ()
2021-01-07 18:23:02 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 18:23:21 +0100theNeuron(~theNeuron@177.8.129.7) ()
2021-01-07 18:23:47 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 18:24:02 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 18:25:03 +0100plutoniix(~q@node-ujf.pool-125-24.dynamic.totinternet.net)
2021-01-07 18:25:21 +0100safinaskar(6dfc5ba3@109-252-91-163.nat.spd-mgts.ru)
2021-01-07 18:25:47 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 18:26:28 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 18:26:28 +0100 <safinaskar> tomsmeding: you have very cool pastebin! thanks a lot
2021-01-07 18:26:33 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2021-01-07 18:26:45 +0100fosterite(~fosterite@2600:6c46:7800:fecf:391b:8118:5f04:a726)
2021-01-07 18:27:14 +0100 <safinaskar> tomsmeding: this is pastebin i always searched for. it combines ability to paste multiple files, button "clone and edit this paste" and ability to download paste as an archive!
2021-01-07 18:27:31 +0100livvy(~livvy@gateway/tor-sasl/livvy)
2021-01-07 18:27:53 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 18:28:07 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 18:29:56 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 18:30:31 +0100 <kuribas> int-e: so, in the bound thread, if there are not FFI calls, other unbound threads could use the bound thread?
2021-01-07 18:30:36 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 18:32:09 +0100kaboom(~manjaro-u@2601:285:c000:a6c0::4f77)
2021-01-07 18:32:36 +0100 <int-e> kuribas: In principle, yes; I don't know what the RTS does in practice... it could reserve the OS thread for running the corresponding Haskell thread an nothing else.
2021-01-07 18:33:23 +0100 <int-e> (To avoid having to wait for it when a (safe) foreign call takes place.)
2021-01-07 18:33:27 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e0a4:3836:b19:3d7) (Remote host closed the connection)
2021-01-07 18:33:38 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e0a4:3836:b19:3d7)
2021-01-07 18:33:57 +0100 <kaboom> OK, so I have an xmonad config, and it's not seeing that I have xmobar installed. I have them both installed via nix with ghcWithPackages. When I run xmobar from a console it works wine, but when I attempt to do so via a startup hook in xmonad, well, it doesn't work.
2021-01-07 18:34:05 +0100 <kuribas> ghc is a nice piece of engineering...
2021-01-07 18:34:24 +0100 <kaboom> I haven't modified that part of my config since I created it, and the other programs (not installed via nix) do work
2021-01-07 18:35:25 +0100 <kaboom> does anyone know how to make xmonad (or any application using monads really) properly parse your PATH variable? I recently switched to fish shell, but tried switching back to see if that was the issue, turns out it persists without it...
2021-01-07 18:36:27 +0100 <Clint> kaboom: what do you mean, "properly"?
2021-01-07 18:36:37 +0100 <kaboom> heck, see my programs
2021-01-07 18:36:52 +0100dfeuer(~dfeuer@pool-173-79-253-62.washdc.fios.verizon.net)
2021-01-07 18:37:11 +0100 <geekosaur> at a guess, the real problem is X11 doesn't read .profile on that platform
2021-01-07 18:37:32 +0100 <kaboom> .profile? Huh, ok, 1s...
2021-01-07 18:37:53 +0100Boomerang(~Boomerang@2a05:f6c7:2179:0:8da5:2e46:f1e1:ab48) (Ping timeout: 272 seconds)
2021-01-07 18:38:08 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net) (Remote host closed the connection)
2021-01-07 18:39:04 +0100justsomeguy(~justsomeg@072-186-136-238.biz.spectrum.com)
2021-01-07 18:39:04 +0100justsomeguy(~justsomeg@072-186-136-238.biz.spectrum.com) (Changing host)
2021-01-07 18:39:04 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2021-01-07 18:39:45 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 18:39:59 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 18:41:04 +0100dandels(~dandels@unaffiliated/dandels)
2021-01-07 18:41:31 +0100 <kaboom> Perhaps it could be related to how nix inserts itself (via a script)
2021-01-07 18:41:48 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 18:41:59 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-07 18:42:19 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 272 seconds)
2021-01-07 18:42:25 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 18:42:30 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246)
2021-01-07 18:42:52 +0100 <kaboom> but about my .profile, I had the nix path modifier inside there a while ago, and removed it while testing something. I just re-added it, and opening another xmonad session via startx on another tty didn't help.
2021-01-07 18:44:33 +0100Forlorn(~Forlorn@unaffiliated/forlorn)
2021-01-07 18:45:05 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 18:45:18 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-07 18:45:56 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-07 18:46:18 +0100jamm_(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2021-01-07 18:46:31 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-07 18:47:26 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246) (Ping timeout: 264 seconds)
2021-01-07 18:48:03 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2021-01-07 18:48:36 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246)
2021-01-07 18:49:12 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Remote host closed the connection)
2021-01-07 18:49:33 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-07 18:51:45 +0100Vq_Vq
2021-01-07 18:51:48 +0100 <kaboom> ok, so upon reading error messages it turns out it's using /bin/sh for these calls, which I suppose isn't configured with my path, time to do that.
2021-01-07 18:52:47 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246) (Remote host closed the connection)
2021-01-07 18:52:53 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246)
2021-01-07 18:53:00 +0100knupfer(~Thunderbi@200116b82cd91d00118d0874356b5bdf.dip.versatel-1u1.de) (Quit: knupfer)
2021-01-07 18:53:01 +0100philopsos(~caecilius@45.133.192.92) (Ping timeout: 264 seconds)
2021-01-07 18:53:12 +0100knupfer(~Thunderbi@200116b82cd91d00a040f802c5c7b27d.dip.versatel-1u1.de)
2021-01-07 18:53:51 +0100knupfer(~Thunderbi@200116b82cd91d00a040f802c5c7b27d.dip.versatel-1u1.de) (Client Quit)
2021-01-07 18:53:58 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
2021-01-07 18:54:08 +0100knupfer(~Thunderbi@200116b82cd91d00683ccaa8cd8c6c91.dip.versatel-1u1.de)
2021-01-07 18:54:53 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-07 18:55:22 +0100notzmv(~user@unaffiliated/zmv) (Ping timeout: 256 seconds)
2021-01-07 18:55:33 +0100unlink2(~unlink2@p200300ebcf259600e4593ff5d42812d3.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-01-07 18:57:08 +0100s00pcan(~chris@075-133-056-178.res.spectrum.com)
2021-01-07 18:57:17 +0100unlink2(~unlink2@p200300ebcf259600e4593ff5d42812d3.dip0.t-ipconnect.de)
2021-01-07 18:58:01 +0100Guest_46(4f6ae69a@79.106.230.154)
2021-01-07 18:58:31 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-07 18:59:32 +0100philopsos(~caecilius@45.133.192.140)
2021-01-07 19:00:04 +0100Guest_46(4f6ae69a@79.106.230.154) (Remote host closed the connection)
2021-01-07 19:00:12 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-xrvpventptxcogxg)
2021-01-07 19:01:47 +0100pavonia(~user@unaffiliated/siracusa) (Quit: Bye!)
2021-01-07 19:02:23 +0100nuvolo(nuvolo@host-95-232-55-134.retail.telecomitalia.it)
2021-01-07 19:02:54 +0100nuvolo(nuvolo@host-95-232-55-134.retail.telecomitalia.it) ()
2021-01-07 19:03:18 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 260 seconds)
2021-01-07 19:03:41 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-07 19:03:49 +0100dandels(~dandels@unaffiliated/dandels) (Ping timeout: 264 seconds)
2021-01-07 19:04:38 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-07 19:07:15 +0100ADG1089__(~aditya@171.79.107.193) (Quit: Konversation terminated!)
2021-01-07 19:07:36 +0100chele(~chele@ip5b40237d.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2021-01-07 19:08:45 +0100atraii(~atraii@c-98-32-64-84.hsd1.ut.comcast.net) (Quit: ZNC 1.7.5 - https://znc.in)
2021-01-07 19:08:48 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net) (Quit: -a- Connection Timed Out)
2021-01-07 19:09:02 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net)
2021-01-07 19:09:03 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e0a4:3836:b19:3d7) (Remote host closed the connection)
2021-01-07 19:09:33 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 272 seconds)
2021-01-07 19:10:10 +0100mizlan(~michaella@c-67-169-7-31.hsd1.ca.comcast.net) (Quit: leaving)
2021-01-07 19:10:48 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-07 19:10:48 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-07 19:11:14 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-07 19:12:12 +0100Tario(~Tario@201.192.165.173)
2021-01-07 19:15:32 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-07 19:15:38 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 264 seconds)
2021-01-07 19:17:26 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 264 seconds)
2021-01-07 19:18:17 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net) (Read error: Connection reset by peer)
2021-01-07 19:18:37 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-07 19:19:19 +0100 <kaboom> well, I did a lot of things, and ended up removing /bin/sh then replacing it with a symlink to /bin/dash (it was bash before, of course)
2021-01-07 19:19:33 +0100jespada(~jespada@90.254.245.49)
2021-01-07 19:19:45 +0100mouseghost(~draco@wikipedia/desperek) (Ping timeout: 256 seconds)
2021-01-07 19:19:45 +0100 <kaboom> and now the programs appear inside my program list, but now they're not launching and no error is arising. UGH!
2021-01-07 19:19:49 +0100mirrorbird(~psutcliff@2a00:801:42b:8314:3772:eb7f:91f1:698c) (Quit: Leaving)
2021-01-07 19:19:53 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-07 19:20:30 +0100nineonine(~nineonine@50.216.62.2)
2021-01-07 19:20:44 +0100ezrakilt_(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-07 19:22:14 +0100xff0x(~fox@2001:1a81:5319:4600:235b:ce31:3a53:2cac) (Ping timeout: 264 seconds)
2021-01-07 19:22:15 +0100ezrakilt_(~ezrakilty@75-172-99-84.tukw.qwest.net) (Read error: No route to host)
2021-01-07 19:22:46 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-07 19:22:58 +0100xff0x(~fox@2001:1a81:5319:4600:de4d:e10d:2b58:a372)
2021-01-07 19:23:01 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 264 seconds)
2021-01-07 19:23:08 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-07 19:24:49 +0100 <merijn> kaboom: Eh...that sounds like a rather *terrible* idea
2021-01-07 19:24:59 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-07 19:25:13 +0100Tario(~Tario@200.119.186.55)
2021-01-07 19:26:26 +0100shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:1c6c:f94b:408f:edd0) (Ping timeout: 264 seconds)
2021-01-07 19:26:27 +0100Tario(~Tario@200.119.186.55) (Read error: Connection reset by peer)
2021-01-07 19:26:39 +0100Tario(~Tario@201.192.165.173)
2021-01-07 19:26:51 +0100jamm(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2021-01-07 19:26:55 +0100 <kaboom> I've heard good things about dash, idk
2021-01-07 19:26:57 +0100kaboom(~manjaro-u@2601:285:c000:a6c0::4f77) (Remote host closed the connection)
2021-01-07 19:27:59 +0100 <merijn> "good shell for interactive use" and "good shell for scripts" are orthogonal concerns
2021-01-07 19:29:23 +0100centril(~centril@213-66-146-92-no250.tbcn.telia.com) (Ping timeout: 256 seconds)
2021-01-07 19:30:55 +0100kobaam(~manjaro-u@2601:285:c000:a6c0::4f77)
2021-01-07 19:31:04 +0100kobaamkaboom
2021-01-07 19:31:24 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) ()
2021-01-07 19:31:31 +0100 <int-e> changing /bin/sh in a running system on a whim is... adventerous
2021-01-07 19:31:55 +0100 <merijn> "may you live in interesting times" ;)
2021-01-07 19:31:56 +0100 <int-e> Personally I thought was bad enough for new installations back when Debian changed its default
2021-01-07 19:32:11 +0100 <glguy> int-e: configuring your computer can be a fun hobby
2021-01-07 19:32:27 +0100 <int-e> glguy: Sure. I have used Gentoo :-P
2021-01-07 19:32:33 +0100 <glguy> ditto ^_^
2021-01-07 19:32:37 +0100centril(~centril@213-66-146-92-no250.tbcn.telia.com)
2021-01-07 19:32:47 +0100 <kaboom> yeah, I reversed it because a package I tried to install failing, and xmonad still isn't seeing my stuff
2021-01-07 19:32:55 +0100 <kaboom> failed*
2021-01-07 19:33:01 +0100 <kaboom> pardon my horrendous grammar
2021-01-07 19:33:17 +0100 <int-e> kaboom: before you `startx` again, do you log out and relogin?
2021-01-07 19:33:18 +0100shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:8c45:faa1:a31d:b462)
2021-01-07 19:33:29 +0100 <kaboom> no, should I?
2021-01-07 19:33:31 +0100 <int-e> or at least source .profile?
2021-01-07 19:33:55 +0100heatsink(~heatsink@2600:1700:bef1:5e10:e0a4:3836:b19:3d7)
2021-01-07 19:33:59 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-07 19:34:03 +0100 <int-e> startx will take the environment from the shell, the shell will get its environment on login because that's when .profile is read
2021-01-07 19:34:04 +0100 <kaboom> I source .profile in my login shell
2021-01-07 19:34:29 +0100aldum_(~vishera@catv-176-63-107-31.catv.broadband.hu)
2021-01-07 19:34:44 +0100aldum(~vishera@aldum.pw) (Quit: leaving)
2021-01-07 19:34:52 +0100 <kaboom> well, technically it's .bashrc, but for these purposes, they're the same (and actually they are identical atm)
2021-01-07 19:35:04 +0100philopsos(~caecilius@45.133.192.140) (Ping timeout: 246 seconds)
2021-01-07 19:35:18 +0100kw(88388c02@136.56.140.2)
2021-01-07 19:35:29 +0100 <kaboom> I also just rebooted, because firefox didn't like what I tried with picom
2021-01-07 19:35:54 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2021-01-07 19:36:38 +0100 <int-e> kaboom: anyway, yes, I think you should, because that's the best way to get the shell's environment into a reproducible state (with whatever changes you've made to .profile, .bashrc, and the like)
2021-01-07 19:36:41 +0100rajivr(uid269651@gateway/web/irccloud.com/x-txjindmtwxpzdgyt) (Quit: Connection closed for inactivity)
2021-01-07 19:36:58 +0100 <int-e> a reboot will do the trick as well, of course
2021-01-07 19:37:17 +0100 <kw> Are there any problems with defining Maybe's Alternative.sum as `fmap repeat`?
2021-01-07 19:37:27 +0100 <kw> ^ Alternative.some
2021-01-07 19:37:52 +0100christo(~chris@81.96.113.213)
2021-01-07 19:38:23 +0100aldum_aldum|arbiter
2021-01-07 19:38:25 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2021-01-07 19:38:26 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-01-07 19:38:40 +0100christo(~chris@81.96.113.213)
2021-01-07 19:38:50 +0100geekosaur(42d52137@66.213.33.55) (Ping timeout: 245 seconds)
2021-01-07 19:40:21 +0100aldum(~vishera@aldum.pw)
2021-01-07 19:40:37 +0100aldum|arbiter(~vishera@catv-176-63-107-31.catv.broadband.hu) (Quit: leaving)
2021-01-07 19:41:30 +0100 <kaboom> Ah, that fixed it! A reboot, yelling at /bin/sh to change from bash to dash and vice versa and who knows what else, weird...
2021-01-07 19:41:38 +0100 <ph88^> is there a difference between the assert function and doing myself if condition then error else normal ?
2021-01-07 19:42:18 +0100 <kaboom> I think haskell is one of the most beautiful languages, a pain to get into, but I'm starting to really think it's cool.
2021-01-07 19:42:46 +0100 <int-e> kw: Given that the current implementation bottoms out... *probably* not. But is it the right choice? Or should it be a singleton list?
2021-01-07 19:43:03 +0100 <int-e> . o O ( fmap (replicate 42) )
2021-01-07 19:43:09 +0100 <kaboom> Anyway, have a nice day you all, *hopefully* next time I'm here it'll be for philisophocal and technical reasons, not tech support. :)
2021-01-07 19:43:13 +0100philopsos(~caecilius@45.133.192.204)
2021-01-07 19:43:44 +0100nomeata(~jojo@dslb-084-056-082-238.084.056.pools.vodafone-ip.de)
2021-01-07 19:43:44 +0100 <int-e> > many Nothing :: Maybe [()] -- hmm
2021-01-07 19:43:47 +0100 <lambdabot> Just []
2021-01-07 19:44:11 +0100 <merijn> ph88^: assert include the file and line of code
2021-01-07 19:44:24 +0100 <ph88^> oh that's good to know
2021-01-07 19:44:32 +0100 <ph88^> i saw they are also controllable with GHC flags
2021-01-07 19:44:39 +0100 <xsperry> kaboom, see you!
2021-01-07 19:44:41 +0100 <merijn> The even more correct answer is: both are bad :p
2021-01-07 19:44:52 +0100 <ph88^> is there a way i can custom format a message with assert ??
2021-01-07 19:45:17 +0100 <merijn> ph88^: Let's rewind: What kinda error are you producing?
2021-01-07 19:45:39 +0100 <merijn> Because if you want formatting, the answer is almost certainly "you shouldn't be using error or assert"
2021-01-07 19:45:40 +0100 <ph88^> assert (and $ map (x ==) xs)
2021-01-07 19:45:49 +0100 <ph88^> just prints the default error that an assert gives me
2021-01-07 19:45:51 +0100reactormonk(~reactormo@mehl.schokokeks.org) (Quit: WeeChat 2.7.1)
2021-01-07 19:46:14 +0100ubert(~Thunderbi@p200300ecdf1ee0efe6b318fffe838f33.dip0.t-ipconnect.de)
2021-01-07 19:46:33 +0100 <merijn> error is for something that should never be possible, because there's almost no way to reliably detect/handle error (or assert) and no way to format them
2021-01-07 19:46:34 +0100reactormonk(~reactormo@mehl.schokokeks.org)
2021-01-07 19:46:56 +0100 <kw> `liftA2 ( : ) (Right x) (Right xs)` is Right (x : xs), so by the default definition the list should be infinite. The difference is that `fmap repeat` starts producing elements immediately, while the default definition can't.
2021-01-07 19:47:02 +0100 <merijn> You want either Either or "proper" exceptions
2021-01-07 19:47:21 +0100 <xsperry> ph88^, no clue. and . map f is all btw.
2021-01-07 19:47:25 +0100 <merijn> kw: Let's rewind to: Why are you asking? :)
2021-01-07 19:47:35 +0100 <xsperry> @src all
2021-01-07 19:47:36 +0100 <lambdabot> all p = and . map p
2021-01-07 19:47:46 +0100mirrorbird(~psutcliff@2a00:801:42b:8314:3772:eb7f:91f1:698c)
2021-01-07 19:48:05 +0100 <ph88^> oki
2021-01-07 19:48:33 +0100safinaskar(6dfc5ba3@109-252-91-163.nat.spd-mgts.ru) (Remote host closed the connection)
2021-01-07 19:51:03 +0100 <kw> merjin: First of all, I'm curious why a method of a common data type and class in base is essentially undefined. Secondly, I'm wondering whether it would be possible to have non-bottom definitions of `some` and `many` so that they can be used without knowing the exact type they'll be instantiated for.
2021-01-07 19:51:20 +0100 <kuribas> ski: is there a limit to the amount of OS threads for unbound threads?
2021-01-07 19:51:54 +0100 <kuribas> ski: or does it grow unboundedly to manage the FFI parallelism?
2021-01-07 19:52:26 +0100 <xsperry> ph88^, perhaps assertMessage does what you want
2021-01-07 19:52:27 +0100 <merijn> kw: It's not undefined, it's just that some/many aren't really useful for Maybe
2021-01-07 19:53:08 +0100mortdebian
2021-01-07 19:53:14 +0100debianmort
2021-01-07 19:53:42 +0100 <kw> merjin: Sorry, I didn't mean `undefined`, I meant that an explicit definition is not given and therefore it's bottom for any Just value.
2021-01-07 19:54:03 +0100 <ph88^> xsperry, from which package ?
2021-01-07 19:54:30 +0100 <xsperry> ah, it isn't in base.
2021-01-07 19:54:33 +0100 <xsperry> https://hackage.haskell.org/package/assert-0.0.1.2/docs/Control-Exception-Assert.html
2021-01-07 19:55:08 +0100geekosaur(42d52137@66.213.33.55)
2021-01-07 19:55:21 +0100 <xsperry> hasn't been updated in years, so I'm not sure if it is still usable
2021-01-07 19:55:22 +0100 <merijn> kw: I can't think of a single case where code is written for any Alternative where this is actually a problem, though?
2021-01-07 19:55:44 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2021-01-07 19:56:16 +0100 <merijn> "It's not usable with Maybe", ok, sure. But why is that a problem if the meaning of many just isn't sensible for Maybe and it's thus never used to begin with?
2021-01-07 19:56:52 +0100Lord_of_Life_(~Lord@unaffiliated/lord-of-life/x-0885362)
2021-01-07 19:57:08 +0100 <kw> But why isn't 'Nothing or an infinite list of x' and 'Just [] or an infinite list of x' sensible?
2021-01-07 19:57:37 +0100 <kw> I mean, you could write a parsing library where 'some' and 'many' are both defined as 'let x = x in x' and then ask the same question.
2021-01-07 19:58:35 +0100 <merijn> kw: The semantics of many/some are given at the top of the Alternative class
2021-01-07 19:58:59 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Remote host closed the connection)
2021-01-07 19:59:01 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 264 seconds)
2021-01-07 19:59:01 +0100Lord_of_Life_Lord_of_Life
2021-01-07 19:59:06 +0100 <merijn> some should be equivalent to "some v = (:) <$> v <*> many v", and many to "many v = some v <|> pure []"
2021-01-07 19:59:21 +0100 <kw> Fair enough. What does it mean by 'least solutions'?
2021-01-07 19:59:30 +0100 <merijn> kw: "let x = x in x" for a parser library is not equivalent to that
2021-01-07 19:59:35 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 272 seconds)
2021-01-07 20:00:21 +0100 <kw> It's equivalent to it except it doesn't return the same result until it finishes evaluating.
2021-01-07 20:00:39 +0100 <kw> Which it never does.
2021-01-07 20:00:58 +0100 <kw> That's a performance characteristic.
2021-01-07 20:01:03 +0100christo(~chris@81.96.113.213)
2021-01-07 20:01:05 +0100 <kw> :)
2021-01-07 20:01:07 +0100 <merijn> Disagree :p
2021-01-07 20:01:40 +0100 <dolio> That's wrong.
2021-01-07 20:01:47 +0100 <merijn> Laws are generally state as if for a total language, and people expect them to be "at least as defined"
2021-01-07 20:02:20 +0100 <dolio> For a lot of parsers, if you unfold enough copies of the specifications, it will actually work.
2021-01-07 20:02:31 +0100 <kw> Fair enough. I was being dumb about the nonterminating parser comment.
2021-01-07 20:02:39 +0100 <dolio> So undefined is verifiably not a fixed point.
2021-01-07 20:02:42 +0100poljar1(~poljar@93-139-24-194.adsl.net.t-com.hr)
2021-01-07 20:03:11 +0100 <kw> OK. So the methods, if defined, should be 'at least as defined as the default implementations'.
2021-01-07 20:03:13 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-01-07 20:03:28 +0100berberman_(~berberman@unaffiliated/berberman)
2021-01-07 20:03:44 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-01-07 20:03:58 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds)
2021-01-07 20:04:08 +0100 <kw> `fmap repeat (Just x)` is 'at least as defined as' `liftA2 (
2021-01-07 20:04:13 +0100poljar(~poljar@78-3-3-62.adsl.net.t-com.hr) (Ping timeout: 265 seconds)
2021-01-07 20:05:01 +0100 <kw> sorry, the default definition with liftA2.
2021-01-07 20:05:38 +0100christo(~chris@81.96.113.213) (Ping timeout: 256 seconds)
2021-01-07 20:05:47 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-07 20:07:13 +0100conal(~conal@209.58.135.97) (Quit: Computer has gone to sleep.)
2021-01-07 20:07:47 +0100notzmv(~user@unaffiliated/zmv)
2021-01-07 20:08:12 +0100 <kw> It seems like were using the equivalent of 'reverse . foldl (\z x -> f x z)' when we could use 'foldr f'.
2021-01-07 20:10:09 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-01-07 20:10:57 +0100 <kw> And saying that 'those methods are not used for Maybe' seems to circularly rely on the current definitions being useless.
2021-01-07 20:11:27 +0100 <merijn> I don't think that "fmap repeat" is particularly useful either :p
2021-01-07 20:12:31 +0100 <kw> There are a lot of functions that seem useless at first glance, but it's a lot easier to find uses for terminating functions.
2021-01-07 20:12:36 +0100rembo10(~rembo10@wally.codeshy.com) (Ping timeout: 256 seconds)
2021-01-07 20:13:13 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 246 seconds)
2021-01-07 20:13:22 +0100christo(~chris@81.96.113.213)
2021-01-07 20:13:36 +0100 <kw> (That's not to denigrate useful nonterminating functions.)
2021-01-07 20:16:14 +0100mirrorbird(~psutcliff@2a00:801:42b:8314:3772:eb7f:91f1:698c) (Quit: Leaving)
2021-01-07 20:16:36 +0100jpds_(~jpds@gateway/tor-sasl/jpds)
2021-01-07 20:16:41 +0100xff0x(~fox@2001:1a81:5319:4600:de4d:e10d:2b58:a372) (Ping timeout: 272 seconds)
2021-01-07 20:16:43 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2021-01-07 20:18:10 +0100xff0x(~fox@141.98.255.147)
2021-01-07 20:19:09 +0100conal(~conal@198.8.81.89)
2021-01-07 20:21:37 +0100 <monochrom> "many" and "some" are not meaningful for Maybe and []. But don't overgeneralize this observation to other instances.
2021-01-07 20:25:33 +0100 <kw> I won't; 'some' and 'many' are clearly useful in parsing. But why must they be meaningless for Maybe? Is 'fmap repeat' not a least solution for Maybe?
2021-01-07 20:25:52 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2021-01-07 20:27:45 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 256 seconds)
2021-01-07 20:29:18 +0100eacameron(uid256985@gateway/web/irccloud.com/x-ruzyobnhrnktduyo)
2021-01-07 20:29:43 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2021-01-07 20:31:00 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit)
2021-01-07 20:31:14 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 264 seconds)
2021-01-07 20:32:10 +0100DavidEichmann(~david@98.27.93.209.dyn.plus.net) (Remote host closed the connection)
2021-01-07 20:32:33 +0100bor0(~boro@unaffiliated/boro/x-000000001)
2021-01-07 20:33:24 +0100xff0x(~fox@141.98.255.147) (Ping timeout: 256 seconds)
2021-01-07 20:35:21 +0100xff0x(~fox@2001:1a81:5319:4600:de4d:e10d:2b58:a372)
2021-01-07 20:38:56 +0100ur(5434a07f@tm.84.52.160.127.dc.cable.static.telemach.net) (Remote host closed the connection)
2021-01-07 20:39:55 +0100nomeata(~jojo@dslb-084-056-082-238.084.056.pools.vodafone-ip.de) (Quit: Client exiting)
2021-01-07 20:41:22 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-01-07 20:42:23 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2021-01-07 20:43:34 +0100ania123(5bb86b87@91.184.107.135)
2021-01-07 20:43:36 +0100 <ania123> hi, is there a channel where ML topics are welcome?
2021-01-07 20:46:36 +0100coot(~coot@37.30.55.132.nat.umts.dynamic.t-mobile.pl)
2021-01-07 20:46:38 +0100 <hpc> https://en.wikipedia.org/wiki/Machine_learning or https://en.wikipedia.org/wiki/ML_(programming_language)? :P
2021-01-07 20:48:39 +0100 <ania123> machine learning
2021-01-07 20:49:13 +0100 <hpc> ah, no clue
2021-01-07 20:49:22 +0100 <hpc> here if it's in haskell, -offtopic if it's not?
2021-01-07 20:50:01 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2021-01-07 20:50:22 +0100 <ania123> haskell is a language for AI
2021-01-07 20:50:31 +0100 <ania123> so, closely related to ML
2021-01-07 20:51:56 +0100 <hpc> huh?
2021-01-07 20:51:59 +0100 <hpc> they're the same thing
2021-01-07 20:52:14 +0100 <hpc> and haskell is a general-purpose language
2021-01-07 20:53:18 +0100 <monochrom> "haskell is a language for AI" is delusional.
2021-01-07 20:54:33 +0100 <ania123> functional programming in General was created to handle existing problems in AI
2021-01-07 20:55:18 +0100 <monochrom> That is also delusional.
2021-01-07 20:55:20 +0100 <hpc> if you mean lisp
2021-01-07 20:55:38 +0100 <hpc> and if you mean that ai people chose lisp because it could manipulate symbols better than fortran
2021-01-07 20:55:48 +0100knupfer(~Thunderbi@200116b82cd91d00683ccaa8cd8c6c91.dip.versatel-1u1.de) (Remote host closed the connection)
2021-01-07 20:55:57 +0100knupfer(~Thunderbi@200116b82cd91d00740f98776c0c342e.dip.versatel-1u1.de)
2021-01-07 20:56:02 +0100Franciman(~francesco@host-82-48-174-127.retail.telecomitalia.it) (Quit: Leaving)
2021-01-07 20:56:03 +0100 <hpc> and if by existing problems in ai, you mean solving linear systems
2021-01-07 20:56:25 +0100 <monochrom> Read John Backus's lecture to learn that Backus was merely dissatisfied with imperative programming.
2021-01-07 20:57:19 +0100 <hpc> and if you ignore that lisp was never inteded to be run, and that functional programming is rooted in the math that lisp was created as a notational tool for
2021-01-07 20:58:14 +0100kaboom(~manjaro-u@2601:285:c000:a6c0::4f77) (Remote host closed the connection)
2021-01-07 20:58:48 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-07 20:59:19 +0100 <ania123> anyway, we agree that last century one of the main motivtion of FP was AI related applications...
2021-01-07 20:59:26 +0100 <hpc> no?
2021-01-07 20:59:42 +0100v_m_v(~vm_v@2a02:aa12:3200:6480:14d3:e041:99da:4fe5) (Remote host closed the connection)
2021-01-07 20:59:45 +0100 <monochrom> Delusional as hell.
2021-01-07 21:00:01 +0100v_m_v(~vm_v@2a02:aa12:3200:6480:14d3:e041:99da:4fe5)
2021-01-07 21:00:34 +0100 <monochrom> If you s/FP/Prolog/, you may have a slightly better chance, but I wouldn't count on it either.
2021-01-07 21:02:09 +0100conal(~conal@198.8.81.89) (Quit: Computer has gone to sleep.)
2021-01-07 21:02:40 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Quit: p-core)
2021-01-07 21:02:41 +0100conal(~conal@198.8.81.89)
2021-01-07 21:02:49 +0100conal(~conal@198.8.81.89) (Client Quit)
2021-01-07 21:03:03 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56)
2021-01-07 21:03:26 +0100 <monochrom> If you s/FP/Lisp/, I wouldn't argue, on the mere ground that the Lisp people back then and the AI people back then had such overlap that maybe there was something, but I would point out that Lisp doesn't do FP justice, today I don't consider Lisp FP at all.
2021-01-07 21:03:33 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 272 seconds)
2021-01-07 21:06:16 +0100fendor_fendor
2021-01-07 21:06:31 +0100vs^(~hph@ip98-184-89-2.mc.at.cox.net)
2021-01-07 21:11:08 +0100coot(~coot@37.30.55.132.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-01-07 21:11:58 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-07 21:12:05 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-07 21:12:35 +0100geekosaur(42d52137@66.213.33.55) (Ping timeout: 245 seconds)
2021-01-07 21:14:15 +0100kw(88388c02@136.56.140.2) (Ping timeout: 245 seconds)
2021-01-07 21:18:03 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
2021-01-07 21:19:15 +0100conal(~conal@107.181.166.202)
2021-01-07 21:20:06 +0100ransom(~c4264035@8.48.134.54)
2021-01-07 21:20:26 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Remote host closed the connection)
2021-01-07 21:21:28 +0100aenesidemus_(~aenesidem@c-73-53-247-25.hsd1.fl.comcast.net) (Read error: Connection reset by peer)
2021-01-07 21:23:06 +0100geekosaur(42d52137@66.213.33.55)
2021-01-07 21:23:06 +0100kupi(uid212005@gateway/web/irccloud.com/x-zsinuyuwufxnleoc)
2021-01-07 21:23:58 +0100madjesti1(~madjestic@86-88-72-244.fixed.kpn.net) (Ping timeout: 265 seconds)
2021-01-07 21:24:05 +0100bor0(~boro@unaffiliated/boro/x-000000001) (Quit: This computer has gone to sleep)
2021-01-07 21:24:10 +0100 <sshine> Haskell = ML = Machine Learning. QED.
2021-01-07 21:25:08 +0100 <sshine> monochrom, Lisp is truly multi-paradigm. it's as functional as you want it. :-D
2021-01-07 21:25:32 +0100dfeuer(~dfeuer@pool-173-79-253-62.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
2021-01-07 21:26:56 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-01-07 21:28:06 +0100ransom(~c4264035@8.48.134.54) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-07 21:29:01 +0100madjesti1(~madjestic@86-88-72-244.fixed.kpn.net)
2021-01-07 21:30:03 +0100 <monochrom> Following Shriram Krishnamurthi, I no longer believe in paradigms. But leaving that aside, Lisp is at most two paradigms.
2021-01-07 21:30:39 +0100 <monochrom> This is like the fuzz about "multi-media PC" 20 years ago, and then you realized it meant only two media: CDROM and sound card.
2021-01-07 21:32:24 +0100 <Rembane> And MMX instructions
2021-01-07 21:32:25 +0100Rembanenods
2021-01-07 21:32:57 +0100peterstorm[m](peterstorm@gateway/shell/matrix.org/x-hslfrrbtahiybhio)
2021-01-07 21:34:54 +0100 <dolio> I thought it was, like, text, audio and video/images.
2021-01-07 21:35:29 +0100 <dolio> That's 3 media.
2021-01-07 21:36:00 +0100 <monochrom> That strengthens my point. Lisp doesn't even have 3 paradigms.
2021-01-07 21:36:07 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 260 seconds)
2021-01-07 21:36:10 +0100 <dolio> Hahaha.
2021-01-07 21:36:10 +0100ania123(5bb86b87@91.184.107.135) (Remote host closed the connection)
2021-01-07 21:36:19 +0100 <koz_> 'Lisp' doesn't even mean anything.
2021-01-07 21:36:26 +0100 <koz_> Unless you take the position that 'Lisp = Common Lisp'.
2021-01-07 21:36:31 +0100 <koz_> In which case I can't take you seriously.
2021-01-07 21:36:45 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-07 21:37:55 +0100EncodePanda(b9eeefcd@185.238.239.205)
2021-01-07 21:38:12 +0100carbolymer_carbolymer
2021-01-07 21:38:52 +0100jollygood2(~bc812391@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout))
2021-01-07 21:38:54 +0100pedrorubster[m](pedrorubst@gateway/shell/matrix.org/x-vlkedizifqmvzfxx)
2021-01-07 21:39:01 +0100 <kuribas> well, a large part of AI used to be expert systems, which where usually in LISP
2021-01-07 21:39:39 +0100 <kuribas> but nowadays AI is mostly neural networks
2021-01-07 21:39:49 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56)
2021-01-07 21:39:59 +0100 <kuribas> which are not in lisp or haskell.
2021-01-07 21:40:16 +0100 <kuribas> I'd say in C, but accessed from Python.
2021-01-07 21:41:36 +0100kuribas(~user@ptr-25vy0i9xeq5rwmxnhs4.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-01-07 21:43:47 +0100 <ph88^> how can i get all the elements that nub removes ?
2021-01-07 21:44:07 +0100koala_man(~vidar@unaffiliated/koala-man/x-2491903) (Remote host closed the connection)
2021-01-07 21:44:22 +0100 <monochrom> You probably have to write your own function.
2021-01-07 21:44:29 +0100koala_man(~vidar@157.146.251.23.bc.googleusercontent.com)
2021-01-07 21:44:29 +0100koala_man(~vidar@157.146.251.23.bc.googleusercontent.com) (Changing host)
2021-01-07 21:44:29 +0100koala_man(~vidar@unaffiliated/koala-man/x-2491903)
2021-01-07 21:45:47 +0100 <ephemient> if your list contains Ord elements, then `group . sort` is easy
2021-01-07 21:46:02 +0100 <Rembane> ph88^: f xs = xs \\ nub xs -- I haven't thought this through properly, but it could work...
2021-01-07 21:46:30 +0100 <Rembane> ph88^: NEvermind, it doesn't work :D
2021-01-07 21:46:34 +0100 <ph88^> oh \\ is intersect or something ?
2021-01-07 21:46:42 +0100 <koz_> ph88^: Difference I think.
2021-01-07 21:46:43 +0100 <ephemient> difference
2021-01-07 21:46:52 +0100 <Rembane> ph88^: It's difference, it has some other set operation friends in Data.List
2021-01-07 21:47:08 +0100 <Rembane> ph88^: https://hackage.haskell.org/package/base-4.12.0.0/docs/Data-List.html#g:20
2021-01-07 21:48:03 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2021-01-07 21:48:14 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2021-01-07 21:48:58 +0100knupfer(~Thunderbi@200116b82cd91d00740f98776c0c342e.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2021-01-07 21:49:35 +0100 <ephemient> Rembane: what's wrong with `xs \\ nub xs`? seems like it should work as long as `xs` is finite
2021-01-07 21:51:53 +0100 <hpc> should be fine even if it's infinite
2021-01-07 21:52:09 +0100 <hpc> nub assumes the lists are similarly ordered iirc
2021-01-07 21:52:14 +0100usr25(~usr25@unaffiliated/usr25)
2021-01-07 21:52:18 +0100 <Rembane> ephemient: Consider the list [1,1,1]. The function will not evaluate to [1,1] which are the elements which nub removes.
2021-01-07 21:52:40 +0100 <Rembane> ephemient: Or wait... it will. I'm way too tired to think right now. :D
2021-01-07 21:52:46 +0100 <ephemient> > let f xs = xs \\ nub xs in f [1, 1, 1]
2021-01-07 21:52:49 +0100 <lambdabot> [1,1]
2021-01-07 21:52:54 +0100koala_man(~vidar@unaffiliated/koala-man/x-2491903) (Quit: I'm gonna win SETI@home.)
2021-01-07 21:53:05 +0100koala_man(~vidar@157.146.251.23.bc.googleusercontent.com)
2021-01-07 21:53:05 +0100koala_man(~vidar@157.146.251.23.bc.googleusercontent.com) (Changing host)
2021-01-07 21:53:05 +0100koala_man(~vidar@unaffiliated/koala-man/x-2491903)
2021-01-07 21:53:30 +0100 <ephemient> > let f xs = xs \\ nub xs in f [x | x <- [1..], _ <- [(), ()]]
2021-01-07 21:53:37 +0100 <lambdabot> mueval-core: Time limit exceeded
2021-01-07 21:53:57 +0100 <xerox_> > M.keys . M.filter (>1) . M.fromListWith (+) . flip zip (repeat 1) $ "asavavbcabcacbacabcbvdg"
2021-01-07 21:53:58 +0100 <Melanie> ph88^: nub is, unfortunately, quadratic wrt length, so if you'll always have an Ord instance you should use nubOrd
2021-01-07 21:53:59 +0100 <lambdabot> "abcv"
2021-01-07 21:54:30 +0100 <ephemient> > let f = unnub [] where unnub _ [] = []; unnub nubbed (x:xs) | x `elem` nubbed = x:unnub nubbed xs | otherwise = unnub (x:nubbed) xs in unnub [x | x <- [1..], _ <- [(), ()]]
2021-01-07 21:54:33 +0100 <lambdabot> error:
2021-01-07 21:54:34 +0100 <lambdabot> Variable not in scope: unnub :: [a0] -> t
2021-01-07 21:55:25 +0100 <ephemient> > let f = unnub [] where { unnub _ [] = []; unnub nubbed (x:xs) | x `elem` nubbed = x:unnub nubbed xs | otherwise = unnub (x:nubbed) xs } in unnub [x | x <- [1..], _ <- [(), ()]]
2021-01-07 21:55:28 +0100 <lambdabot> error:
2021-01-07 21:55:28 +0100 <lambdabot> Variable not in scope: unnub :: [a0] -> t
2021-01-07 21:55:45 +0100 <ephemient> d'oh
2021-01-07 21:55:51 +0100 <ephemient> > let f = unnub [] where { unnub _ [] = []; unnub nubbed (x:xs) | x `elem` nubbed = x:unnub nubbed xs | otherwise = unnub (x:nubbed) xs } in f [x | x <- [1..], _ <- [(), ()]]
2021-01-07 21:55:54 +0100 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,...
2021-01-07 21:55:59 +0100 <ephemient> yeah, that does work on an infinite list
2021-01-07 21:56:24 +0100 <ephemient> but is quadratic and anything with Ord can do better
2021-01-07 21:56:46 +0100 <ph88^> thanks !
2021-01-07 21:56:57 +0100 <jle`> ph88^: you can also just build a frequency map
2021-01-07 21:57:00 +0100 <ph88^> why is not-quadratic nub not in Data.List actually ?
2021-01-07 21:57:05 +0100 <jle`> and filter for the ones greater than 1
2021-01-07 21:57:27 +0100 <jle`> @let freqMap = M.fromListWith (+) . map (,1)
2021-01-07 21:57:28 +0100 <lambdabot> Defined.
2021-01-07 21:57:32 +0100fryguybob(~fryguybob@cpe-74-65-31-113.rochester.res.rr.com) (Quit: leaving)
2021-01-07 21:57:43 +0100 <jle`> > freqMap [1,5,6,2,3,4,2,3,3,4,2,5,2,3,1,1,3,2,3,8,5]
2021-01-07 21:57:45 +0100 <lambdabot> fromList [(1,3),(2,5),(3,6),(4,2),(5,3),(6,1),(8,1)]
2021-01-07 21:58:10 +0100 <jle`> so you can see it removed two 1's, four 2's, five 3's, one 4, and two 5's
2021-01-07 21:58:17 +0100 <ph88^> thanks :)
2021-01-07 21:58:49 +0100 <jle`> > M.mapMaybe (\i -> (i-1) <$ guard (i>1)) . freqMap $ [1,5,6,2,3,4,2,3,3,4,2,5,2,3,1,1,3,2,3,8,5]
2021-01-07 21:58:51 +0100 <lambdabot> fromList [(1,2),(2,4),(3,5),(4,1),(5,2)]
2021-01-07 21:59:05 +0100 <jle`> ^ just the number of removed items
2021-01-07 21:59:06 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2021-01-07 21:59:31 +0100 <jle`> ph88^: i think it's not in Data.List because it could be kind of ugly to write one without a nice backing data structure like Data.Set
2021-01-07 21:59:38 +0100 <jle`> which is what nubOrd from containers uses
2021-01-07 21:59:51 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007)
2021-01-07 22:00:48 +0100 <ph88^> oh i see
2021-01-07 22:00:53 +0100 <monochrom> It is seldom productive to ask "why is foo not in library bar". The closer library bar is to being a standard library, the more by-committee-not-by-technical it is.
2021-01-07 22:00:56 +0100conal(~conal@107.181.166.202) (Quit: Computer has gone to sleep.)
2021-01-07 22:01:21 +0100 <ephemient> > let f xs = map fst . filter (uncurry Set.member) . zip xs $ scanl' (flip Set.insert) Set.empty xs in f [x | x <- [1..], _ <- [(), ()]]
2021-01-07 22:01:24 +0100 <lambdabot> error:
2021-01-07 22:01:24 +0100 <lambdabot> Not in scope: ‘Set.member’
2021-01-07 22:01:24 +0100 <lambdabot> Perhaps you meant one of these:
2021-01-07 22:01:34 +0100 <ephemient> hmm how do I get Data.Set with lambdabot
2021-01-07 22:01:40 +0100 <Melanie> @load Data.Set
2021-01-07 22:01:40 +0100 <lambdabot> Unknown command, try @list
2021-01-07 22:01:43 +0100 <monochrom> Oh, and the further it is, that means the closer it is to a one-person-pet-peeve, so no luck either.
2021-01-07 22:01:47 +0100 <Melanie> @let import Data.Set
2021-01-07 22:01:48 +0100 <lambdabot> .L.hs:172:32: error:
2021-01-07 22:01:48 +0100 <lambdabot> Ambiguous occurrence ‘map’
2021-01-07 22:01:48 +0100 <lambdabot> It could refer to
2021-01-07 22:01:55 +0100 <geekosaur> :t S.member
2021-01-07 22:01:56 +0100 <lambdabot> Ord a => a -> S.Set a -> Bool
2021-01-07 22:01:58 +0100 <ephemient> > let f xs = map fst . filter (uncurry S.member) . zip xs $ scanl' (flip S.insert) S.empty xs in f [x | x <- [1..], _ <- [(), ()]]
2021-01-07 22:02:01 +0100 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,...
2021-01-07 22:02:06 +0100conal(~conal@107.181.166.202)
2021-01-07 22:02:20 +0100conal(~conal@107.181.166.202) (Client Quit)
2021-01-07 22:02:31 +0100 <ephemient> there we go, something that uses Ord to get n log n and still works on infinite lists
2021-01-07 22:02:42 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net)
2021-01-07 22:03:30 +0100 <jle`> ephemient: that's how nubOrd works i think
2021-01-07 22:03:52 +0100v_m_v(~vm_v@2a02:aa12:3200:6480:14d3:e041:99da:4fe5) (Remote host closed the connection)
2021-01-07 22:04:07 +0100 <ephemient> well, it's kind of the opposite of nubOrd - that would use not . member
2021-01-07 22:04:16 +0100conal(~conal@107.181.166.202)
2021-01-07 22:04:23 +0100conal(~conal@107.181.166.202) (Client Quit)
2021-01-07 22:04:54 +0100conal(~conal@107.181.166.202)
2021-01-07 22:05:07 +0100conal(~conal@107.181.166.202) (Client Quit)
2021-01-07 22:05:09 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246) (Remote host closed the connection)
2021-01-07 22:05:23 +0100 <jle`> @import Data.Containers.ListUtils
2021-01-07 22:05:23 +0100 <lambdabot> Unknown command, try @list
2021-01-07 22:05:28 +0100 <jle`> @let import Data.Containers.ListUtils
2021-01-07 22:05:30 +0100 <lambdabot> Defined.
2021-01-07 22:05:39 +0100 <ephemient> > Data.Containers.ListUtils.nubOrd [x | x <- [1..], _ <- [(), (), ()]]
2021-01-07 22:05:41 +0100 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,...
2021-01-07 22:05:45 +0100 <ephemient> > let f xs = map fst . filter (uncurry S.member) . zip xs $ scanl' (flip S.insert) S.empty xs in f [x | x <- [1..], _ <- [(), (), ()]]
2021-01-07 22:05:48 +0100 <lambdabot> [1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,...
2021-01-07 22:05:57 +0100 <jle`> ooh, you mean the version that ph88^ was looking for
2021-01-07 22:06:02 +0100 <ephemient> right
2021-01-07 22:06:04 +0100 <jle`> nice
2021-01-07 22:12:27 +0100Feuermagier(~Feuermagi@213.178.26.41) (Remote host closed the connection)
2021-01-07 22:13:21 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246)
2021-01-07 22:15:09 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-01-07 22:19:07 +0100stalactite[m](stalactite@gateway/shell/matrix.org/x-hmsdktjbvicqrdgd) ("User left")
2021-01-07 22:20:04 +0100fosterite(~fosterite@2600:6c46:7800:fecf:391b:8118:5f04:a726) (Remote host closed the connection)
2021-01-07 22:20:41 +0100fosterite(~fosterite@2600:6c46:7800:fecf:391b:8118:5f04:a726)
2021-01-07 22:22:39 +0100vs^(~hph@ip98-184-89-2.mc.at.cox.net) ()
2021-01-07 22:23:01 +0100fosterit_(~fosterite@2600:6c46:7800:fecf:8d97:96be:d9ba:bbf8)
2021-01-07 22:23:11 +0100son0p(~son0p@181.136.122.143)
2021-01-07 22:25:08 +0100fosterite(~fosterite@2600:6c46:7800:fecf:391b:8118:5f04:a726) (Ping timeout: 260 seconds)
2021-01-07 22:26:24 +0100conal(~conal@66.115.157.52)
2021-01-07 22:26:35 +0100knupfer(~Thunderbi@200116b82cd91d0000b84afffea44c4a.dip.versatel-1u1.de)
2021-01-07 22:27:02 +0100conal(~conal@66.115.157.52) (Client Quit)
2021-01-07 22:28:14 +0100fosterit_(~fosterite@2600:6c46:7800:fecf:8d97:96be:d9ba:bbf8) (Ping timeout: 264 seconds)
2021-01-07 22:28:42 +0100usr25(~usr25@unaffiliated/usr25) (Quit: Leaving)
2021-01-07 22:28:59 +0100knupfer(~Thunderbi@200116b82cd91d0000b84afffea44c4a.dip.versatel-1u1.de) (Remote host closed the connection)
2021-01-07 22:29:10 +0100usr25(~usr25@unaffiliated/usr25)
2021-01-07 22:29:13 +0100knupfer(~Thunderbi@200116b82cd91d004d86847a3f67d3a4.dip.versatel-1u1.de)
2021-01-07 22:29:54 +0100usr25usr25_tm
2021-01-07 22:32:06 +0100ransom(~c4264035@8.48.134.54)
2021-01-07 22:36:56 +0100pera(~pera@unaffiliated/pera) (Ping timeout: 256 seconds)
2021-01-07 22:37:45 +0100madjesti1(~madjestic@86-88-72-244.fixed.kpn.net) (Quit: Lost terminal)
2021-01-07 22:38:40 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2021-01-07 22:42:32 +0100geekosaur(42d52137@66.213.33.55) (Remote host closed the connection)
2021-01-07 22:43:01 +0100ransom_(~c4264035@c-73-243-2-10.hsd1.co.comcast.net)
2021-01-07 22:43:12 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-07 22:45:38 +0100ransom(~c4264035@8.48.134.54) (Ping timeout: 272 seconds)
2021-01-07 22:47:43 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-01-07 22:48:09 +0100 <pie_> is it bad to want automatic `coerce`?
2021-01-07 22:48:52 +0100 <pie_> well, Ive got newtypes, but I guess it would be pointless if coers can cross both directions of the newtype bijection
2021-01-07 22:51:18 +0100Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2021-01-07 22:53:16 +0100 <dibblego> @type _Wrapped
2021-01-07 22:53:18 +0100 <lambdabot> (Rewrapped s t, Rewrapped t s, Profunctor p, Functor f) => p (Unwrapped s) (f (Unwrapped t)) -> p s (f t)
2021-01-07 22:53:22 +0100 <dibblego> use that ^^
2021-01-07 22:53:44 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-07 23:01:10 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2021-01-07 23:01:59 +0100ransom_(~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-07 23:02:39 +0100ransom(~c4264035@c-73-243-2-10.hsd1.co.comcast.net)
2021-01-07 23:03:13 +0100Guest28673(~textual@zrcout.mskcc.org) (Ping timeout: 264 seconds)
2021-01-07 23:05:14 +0100 <monochrom> It is bad to want automatic anything, IMO. Well, for most things, there are obvious exceptions.
2021-01-07 23:05:34 +0100 <pie_> how do I go from a Maybe to a "return a value if Just, run some code if Nothing"
2021-01-07 23:05:41 +0100 <monochrom> I guess bad punctuation there. s/things, there/things; there/
2021-01-07 23:05:52 +0100 <monochrom> @type maybe
2021-01-07 23:05:55 +0100 <lambdabot> b -> (a -> b) -> Maybe a -> b
2021-01-07 23:06:00 +0100 <monochrom> That can help.
2021-01-07 23:06:10 +0100 <monochrom> But more often, just write pattern matching.
2021-01-07 23:06:33 +0100 <ski> @type fromMaybe
2021-01-07 23:06:34 +0100 <monochrom> "maybe" is handy in very simple cases.
2021-01-07 23:06:35 +0100 <lambdabot> a -> Maybe a -> a
2021-01-07 23:06:44 +0100 <pie_> i just know im not thinking about this right
2021-01-07 23:06:46 +0100dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9)
2021-01-07 23:07:05 +0100tsrt^(~hph@ip98-184-89-2.mc.at.cox.net)
2021-01-07 23:07:08 +0100 <monochrom> But if your a->b function is like 10 lines long, may as well forget it, write pattern matching.
2021-01-07 23:07:54 +0100Tops2(~Tobias@dyndsl-095-033-017-251.ewe-ip-backbone.de)
2021-01-07 23:07:57 +0100 <pie_> ok maybe part of what confused me was that I actually wanted to call exit, but i can just replace that with somethig that returns the same type as the other branh
2021-01-07 23:08:05 +0100 <monochrom> because "maybe foo (\x -> 10-line of code here)" is unreadable, "case xxx of Nothing -> foo \n Just x -> 10 lines of code here" is at least formattable.
2021-01-07 23:09:00 +0100 <ski> @type System.Exit.exitSuccess
2021-01-07 23:09:03 +0100 <lambdabot> IO a
2021-01-07 23:10:34 +0100daenth(~daenth@136.36.157.210) (Quit: ZNC 1.7.5 - https://znc.in)
2021-01-07 23:12:58 +0100Alleria(~textual@2603-7000-3040-0000-4912-c872-cb3c-e0ab.res6.spectrum.com)
2021-01-07 23:13:22 +0100AlleriaGuest95725
2021-01-07 23:14:36 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-07 23:14:57 +0100pavonia(~user@unaffiliated/siracusa)
2021-01-07 23:15:20 +0100 <pie_> dibblego: can i read about that somewhere
2021-01-07 23:15:35 +0100 <koz_> OK, I get the feeling I can write this better with a (monadic) fold, but I am not too sure how to convert it: https://gist.github.com/kozross/fd5a1ec16403de70190dc61b5655e635
2021-01-07 23:16:07 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-07 23:16:46 +0100dandart(~Thunderbi@home.dandart.co.uk) (Quit: dandart)
2021-01-07 23:21:18 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-01-07 23:21:35 +0100mirrorbird(~psutcliff@2a00:801:42b:8314:3772:eb7f:91f1:698c)
2021-01-07 23:22:25 +0100mirrorbird(~psutcliff@2a00:801:42b:8314:3772:eb7f:91f1:698c) (Remote host closed the connection)
2021-01-07 23:22:30 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2021-01-07 23:23:02 +0100christo(~chris@81.96.113.213)
2021-01-07 23:24:29 +0100 <monochrom> koz_: I've posted there.
2021-01-07 23:24:48 +0100 <monochrom> Um, why does it not recognize my post as code.
2021-01-07 23:24:49 +0100edrx(~Eduardo@2804:56c:d2ef:cf00:67de:bc02:9559:c5c1)
2021-01-07 23:25:05 +0100 <koz_> ```haskell My code here ```
2021-01-07 23:25:28 +0100 <monochrom> OK fixed
2021-01-07 23:25:55 +0100 <pie_> can I make this less ugly? https://bpa.st/46YQ
2021-01-07 23:25:56 +0100 <koz_> Fixed your fix to be pretty and colourful. :D
2021-01-07 23:26:22 +0100 <monochrom> But I'm monochrom...
2021-01-07 23:26:30 +0100 <koz_> polychrom now.
2021-01-07 23:26:38 +0100 <Melanie> pie_: use maybe
2021-01-07 23:26:40 +0100 <Melanie> :t maybe
2021-01-07 23:26:42 +0100 <lambdabot> b -> (a -> b) -> Maybe a -> b
2021-01-07 23:26:58 +0100ubert(~Thunderbi@p200300ecdf1ee0efe6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2021-01-07 23:27:20 +0100 <Melanie> pie_: maybe (exitWith X) pure
2021-01-07 23:27:29 +0100 <koz_> monochrom: That's an interesting solution - I thought this'd need foldM rather than foldr.
2021-01-07 23:27:49 +0100christo(~chris@81.96.113.213) (Ping timeout: 264 seconds)
2021-01-07 23:28:00 +0100 <koz_> That's what was throwing me I think.
2021-01-07 23:29:01 +0100 <ezzieyguywuf> this confuses me - how do I run the tests? https://github.com/faylang/fay/wiki/Contributing-to-Fay#tests
2021-01-07 23:29:43 +0100 <monochrom> foldM is also a foldr
2021-01-07 23:30:05 +0100 <monochrom> But if you went foldM you would be losing the Functor flexibility.
2021-01-07 23:30:12 +0100 <koz_> Yeah, you'd need Monad.
2021-01-07 23:30:33 +0100 <koz_> foldM = foldlM
2021-01-07 23:30:39 +0100 <koz_> Apparently it's a foldl.
2021-01-07 23:30:48 +0100EncodePanda(b9eeefcd@185.238.239.205) ()
2021-01-07 23:30:54 +0100 <koz_> But in reality it's secretly a foldr anyway...
2021-01-07 23:30:59 +0100 <koz_> https://hackage.haskell.org/package/base-4.14.1.0/docs/src/Data.Foldable.html#foldlM
2021-01-07 23:31:12 +0100 <pie_> Melanie: ok
2021-01-07 23:31:47 +0100 <monochrom> No, the beauty is that foldlM is a foldr, and foldrM is an odd ball.
2021-01-07 23:32:54 +0100 <ephemient> either way, foldM sequences left-to-right
2021-01-07 23:33:59 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-07 23:34:22 +0100Ariakenom(~Ariakenom@2001:9b1:efb:fc00:acbc:1011:e13d:7bc8) (Quit: Leaving)
2021-01-07 23:34:59 +0100 <Melanie> pie_: https://bpa.st/RSZA
2021-01-07 23:35:06 +0100fosterite(~fosterite@2600:6c46:7800:fecf:8d97:96be:d9ba:bbf8)
2021-01-07 23:35:46 +0100 <Melanie> pie_: if that doesn't work, drop the pure and use fromMaybe instead
2021-01-07 23:35:52 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
2021-01-07 23:36:25 +0100 <pie_> Im more bothered by the underscores than the case statements though
2021-01-07 23:36:31 +0100dandart(~Thunderbi@home.dandart.co.uk) (Client Quit)
2021-01-07 23:36:34 +0100pie_looks at paste
2021-01-07 23:37:50 +0100christo(~chris@81.96.113.213)
2021-01-07 23:38:40 +0100 <pie_> well im not sure thats more readable due to the pointfreeness, but eh.
2021-01-07 23:38:46 +0100 <pie_> thanks
2021-01-07 23:39:02 +0100 <monochrom> This is why you can just write pattern matching.
2021-01-07 23:39:17 +0100 <Melanie> pie_: i can't help you decide what you think would be meaninfgul variable names
2021-01-07 23:39:29 +0100 <Melanie> s/fg/gf
2021-01-07 23:39:40 +0100Guest95725(~textual@2603-7000-3040-0000-4912-c872-cb3c-e0ab.res6.spectrum.com) (Quit: Textual IRC Client: www.textualapp.com)
2021-01-07 23:39:46 +0100 <pie_> tfw no gf
2021-01-07 23:39:53 +0100 <Melanie> ;-;
2021-01-07 23:40:02 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-01-07 23:41:07 +0100 <pie_> the mildly annoying thing is that i have to pull the double underscore variables out of the case conditions
2021-01-07 23:42:31 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 246 seconds)
2021-01-07 23:43:55 +0100 <Melanie> the nice thing about pointfree in this case is that you don't have to name so many variables
2021-01-07 23:44:27 +0100fosterite(~fosterite@2600:6c46:7800:fecf:8d97:96be:d9ba:bbf8) (Ping timeout: 260 seconds)
2021-01-07 23:44:40 +0100 <Melanie> maybe is just streamlined case analysis
2021-01-07 23:45:03 +0100 <ephemient> https://bpa.st/SEAA uses just as few names
2021-01-07 23:45:10 +0100 <ephemient> indentation kinda goes off to the right though
2021-01-07 23:45:22 +0100 <pie_> yeah after spending the last minute thinking i _just_ about re-derived "maybe" xD
2021-01-07 23:46:32 +0100 <pie_> ephemient: i kind of write my notes like this....mind blown
2021-01-07 23:46:34 +0100dandels(~dandels@unaffiliated/dandels)
2021-01-07 23:46:57 +0100 <pie_> ive been using monads the whole time! :p
2021-01-07 23:47:00 +0100chang(~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-07 23:49:01 +0100 <edrx> hi people, I have some background on type systems related to the lambda-cube and I am now trying to understand Haskell... what are your favorite presentations of the translation of the Hindley-Milner type system to systems in which the type variables are explicit? I think that I know how to do the translation "by common sense", and I have tested my ideas on a few definitions in the prelude... but I am not totally su
2021-01-07 23:49:01 +0100 <edrx> re if it works on classes - I started to translate, or to "fully type", Functor and fmap explicitly, but my typing diagrams got quite big, and I guess that I would make better use of my time by reading what is the standard way to do that...
2021-01-07 23:49:29 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 272 seconds)
2021-01-07 23:50:43 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-07 23:51:21 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-07 23:53:09 +0100DavidEichmann(~david@98.27.93.209.dyn.plus.net)
2021-01-07 23:56:10 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-07 23:56:20 +0100usr25_tm(~usr25@unaffiliated/usr25) (Quit: Leaving)
2021-01-07 23:56:35 +0100Alleria__(~textual@2603-7000-3040-0000-dc9b-805c-a211-54dd.res6.spectrum.com)
2021-01-07 23:58:43 +0100dandart(~Thunderbi@home.dandart.co.uk) (Remote host closed the connection)
2021-01-07 23:58:59 +0100xff0x(~fox@2001:1a81:5319:4600:de4d:e10d:2b58:a372) (Ping timeout: 272 seconds)
2021-01-07 23:59:16 +0100xff0x(~fox@2001:1a81:5319:4600:de4d:e10d:2b58:a372)