2021-01-07 00:00:24 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-01-07 00:01:12 +0100 | <pie_> | aha |
2021-01-07 00:03:42 +0100 | kritzefitz | (~kritzefit@212.86.56.80) (Remote host closed the connection) |
2021-01-07 00:04:06 +0100 | darjeeling_ | (~darjeelin@122.245.218.97) (Ping timeout: 265 seconds) |
2021-01-07 00:04:36 +0100 | kyali | (~kyali@APN-123-253-144-gprs.simobil.net) (Ping timeout: 240 seconds) |
2021-01-07 00:06:25 +0100 | philopsos | (~caecilius@gateway/tor-sasl/caecilius) (Remote host closed the connection) |
2021-01-07 00:06:57 +0100 | nhs_ | (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
2021-01-07 00:09:00 +0100 | philopsos | (~caecilius@gateway/tor-sasl/caecilius) |
2021-01-07 00:13:14 +0100 | manjaro-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 +0100 | matryoshka | (~matryoshk@184.75.223.227) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-01-07 00:14:34 +0100 | dansho | (~dansho@ec2-13-231-43-236.ap-northeast-1.compute.amazonaws.com) |
2021-01-07 00:14:45 +0100 | matryoshka | (~matryoshk@184.75.223.227) |
2021-01-07 00:16:06 +0100 | matryoshka | (~matryoshk@184.75.223.227) (Client Quit) |
2021-01-07 00:18:05 +0100 | darjeeling_ | (~darjeelin@122.245.218.97) |
2021-01-07 00:18:52 +0100 | aarvar | (~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 +0100 | aarvar | (~foewfoiew@2601:602:a080:fa0:4532:73f5:3132:822a) (Client Quit) |
2021-01-07 00:20:05 +0100 | plutoniix | (~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 +0100 | asthasr | (~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 +0100 | matryoshka | (~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 +0100 | qqvat | (~private@176.167.9.201) (Quit: Lost terminal) |
2021-01-07 00:28:50 +0100 | Benzi-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 +0100 | plutoniix | (~q@node-use.pool-125-24.dynamic.totinternet.net) |
2021-01-07 00:34:16 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-01-07 00:34:47 +0100 | Ariakenom | (~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 +0100 | manjaro-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 +0100 | pera | (~pera@unaffiliated/pera) (Quit: leaving) |
2021-01-07 00:39:08 +0100 | knupfer1 | (~Thunderbi@200116b824b6e000a132a85041d580a8.dip.versatel-1u1.de) |
2021-01-07 00:39:18 +0100 | knupfer | (~Thunderbi@i5E86B49C.versanet.de) (Read error: Connection reset by peer) |
2021-01-07 00:39:18 +0100 | knupfer1 | knupfer |
2021-01-07 00:43:43 +0100 | knupfer | (~Thunderbi@200116b824b6e000a132a85041d580a8.dip.versatel-1u1.de) (Ping timeout: 260 seconds) |
2021-01-07 00:45:25 +0100 | conal | (~conal@66.115.157.28) (Quit: Computer has gone to sleep.) |
2021-01-07 00:45:54 +0100 | Guest20273 | (~textual@mskresolve-a.mskcc.org) (Ping timeout: 246 seconds) |
2021-01-07 00:46:08 +0100 | conal | (~conal@66.115.157.28) |
2021-01-07 00:46:08 +0100 | conal | (~conal@66.115.157.28) (Client Quit) |
2021-01-07 00:47:17 +0100 | conal | (~conal@66.115.157.28) |
2021-01-07 00:54:03 +0100 | Tario | (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
2021-01-07 00:55:49 +0100 | emptyflask | (~jon@136.49.71.178) (Ping timeout: 256 seconds) |
2021-01-07 00:56:20 +0100 | mputz | (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
2021-01-07 00:56:28 +0100 | emptyflask | (~jon@136.49.71.178) |
2021-01-07 00:58:51 +0100 | Alleria | (~textual@2603-7000-3040-0000-f8bc-1046-d481-0a5d.res6.spectrum.com) |
2021-01-07 00:59:15 +0100 | Alleria | Guest41259 |
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 +0100 | cr3 | (~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 +0100 | Guest41259 | (~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 +0100 | takuan | (~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 +0100 | merijn | (~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 +0100 | mouseghost | (~draco@wikipedia/desperek) (Quit: mew wew) |
2021-01-07 01:13:22 +0100 | aarvar | (~foewfoiew@2601:602:a080:fa0:dc6:3a84:1bde:cb55) |
2021-01-07 01:13:38 +0100 | aarvar | (~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 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) |
2021-01-07 01:14:06 +0100 | Deide | (~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 +0100 | merijn | (~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 +0100 | Jd007 | (~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007) |
2021-01-07 01:16:25 +0100 | acarrico | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 264 seconds) |
2021-01-07 01:19:13 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 272 seconds) |
2021-01-07 01:19:25 +0100 | manjaro-user_ | (~manjaro-u@c-73-34-23-13.hsd1.co.comcast.net) (Ping timeout: 264 seconds) |
2021-01-07 01:19:58 +0100 | dandels | (~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 +0100 | mputz | (~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 +0100 | texasmynsted | (~texasmyns@99.96.221.112) |
2021-01-07 01:22:43 +0100 | pfurla_ | (~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 246 seconds) |
2021-01-07 01:24:17 +0100 | Entertainment | (~entertain@104.246.132.210) (Ping timeout: 272 seconds) |
2021-01-07 01:25:47 +0100 | pfurla | (~pfurla@ool-182ed2e2.dyn.optonline.net) |
2021-01-07 01:26:24 +0100 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Read error: Connection reset by peer) |
2021-01-07 01:26:36 +0100 | madjestic | (~Android@86-88-72-244.fixed.kpn.net) (Ping timeout: 240 seconds) |
2021-01-07 01:26:39 +0100 | cdan` | (~user@122-58-46-96-vdsl.sparkbb.co.nz) |
2021-01-07 01:27:40 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@2403:6200:8876:12e2:ad75:1255:fdff:5733) |
2021-01-07 01:28:16 +0100 | cr3 | (~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 +0100 | cdan` | (~user@122-58-46-96-vdsl.sparkbb.co.nz) () |
2021-01-07 01:30:51 +0100 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
2021-01-07 01:33:09 +0100 | cdan | (~user@122-58-46-96-vdsl.sparkbb.co.nz) |
2021-01-07 01:33:14 +0100 | <cdan> | Hello |
2021-01-07 01:36:50 +0100 | ransom | (~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 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-01-07 01:42:24 +0100 | christo | (~chris@81.96.113.213) |
2021-01-07 01:44:50 +0100 | fosterite | (~fosterite@2600:6c46:7880:410a:3cda:cdb5:75e9:b6e9) |
2021-01-07 01:46:49 +0100 | christo | (~chris@81.96.113.213) (Ping timeout: 256 seconds) |
2021-01-07 01:47:42 +0100 | Jd007 | (~Jd007@d154-5-83-24.bchsia.telus.net) |
2021-01-07 01:47:58 +0100 | ransom | (~c4264035@8.47.12.52) |
2021-01-07 01:49:26 +0100 | justsomeguy | (~justsomeg@216.186.218.241) |
2021-01-07 01:49:26 +0100 | justsomeguy | (~justsomeg@216.186.218.241) (Changing host) |
2021-01-07 01:49:26 +0100 | justsomeguy | (~justsomeg@unaffiliated/--/x-3805311) |
2021-01-07 01:49:33 +0100 | conal | (~conal@66.115.157.28) (Quit: Computer has gone to sleep.) |
2021-01-07 01:51:24 +0100 | perrier-jouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.0) |
2021-01-07 01:51:31 +0100 | conal | (~conal@143.244.61.236) |
2021-01-07 01:52:17 +0100 | Gurkenglas | (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 260 seconds) |
2021-01-07 01:57:33 +0100 | jedws | (~jedws@121.209.189.201) |
2021-01-07 01:58:41 +0100 | rajivr | (uid269651@gateway/web/irccloud.com/x-txjindmtwxpzdgyt) |
2021-01-07 02:01:05 +0100 | DataComputist | (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Ping timeout: 240 seconds) |
2021-01-07 02:03:22 +0100 | acarrico | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
2021-01-07 02:04:03 +0100 | livvy | (~livvy@gateway/tor-sasl/livvy) (Ping timeout: 240 seconds) |
2021-01-07 02:07:07 +0100 | DataComputist | (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) |
2021-01-07 02:08:36 +0100 | Jd007 | (~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007) |
2021-01-07 02:10:48 +0100 | Jd007 | (~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 +0100 | jollygood2 | (~bc812391@217.29.117.252) (Quit: http://www.okay.uz/) |
2021-01-07 02:20:51 +0100 | Tario | (~Tario@201.192.165.173) |
2021-01-07 02:24:34 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Ping timeout: 272 seconds) |
2021-01-07 02:26:46 +0100 | chenshen | (~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 +0100 | Tario | (~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 +0100 | slack1256 | (~slack1256@dvc-186-186-101-190.movil.vtr.net) |
2021-01-07 02:30:37 +0100 | columbarius1 | (~columbari@87.123.198.204) (Ping timeout: 246 seconds) |
2021-01-07 02:30:44 +0100 | Tario | (~Tario@201.192.165.173) |
2021-01-07 02:33:03 +0100 | columbarius1 | (~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 +0100 | plutoniix | (~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 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds) |
2021-01-07 02:38:13 +0100 | conal | (~conal@143.244.61.236) (Quit: Computer has gone to sleep.) |
2021-01-07 02:38:13 +0100 | heatsink | (~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 +0100 | slack1256 | (~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 +0100 | conal | (~conal@89.187.183.187) |
2021-01-07 02:41:03 +0100 | <sm[m]> | ezzieyguywuf: highly suspect |
2021-01-07 02:41:58 +0100 | tmciver | (~tmciver@cpe-172-101-40-226.maine.res.rr.com) (Read error: Connection reset by peer) |
2021-01-07 02:42:42 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-01-07 02:43:26 +0100 | merijn | (~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 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-01-07 02:48:48 +0100 | jmchael | (~jmchael@81.174.205.210) (Ping timeout: 268 seconds) |
2021-01-07 02:49:23 +0100 | conal | (~conal@89.187.183.187) (Quit: Computer has gone to sleep.) |
2021-01-07 02:49:25 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds) |
2021-01-07 02:49:43 +0100 | Tario | (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
2021-01-07 02:49:53 +0100 | darjeeling_ | (~darjeelin@122.245.218.97) (Ping timeout: 265 seconds) |
2021-01-07 02:50:25 +0100 | heatsink | (~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 +0100 | Tario | (~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 +0100 | elfets | (~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 +0100 | jedws | (~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 +0100 | Jd007 | (~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 +0100 | jedws | (~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 +0100 | christo | (~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 +0100 | Varis | (~Tadas@unaffiliated/varis) (Ping timeout: 272 seconds) |
2021-01-07 03:04:44 +0100 | darjeeling_ | (~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 +0100 | tinwood | (~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 +0100 | tinwood | (~tinwood@general.default.akavanagh.uk0.bigv.io) |
2021-01-07 03:12:18 +0100 | <Axman6> | thanks dad |
2021-01-07 03:12:29 +0100 | dandels | (~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 +0100 | mpereira | (~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 +0100 | geowiesnot | (~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 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-01-07 03:19:11 +0100 | dandels | (~dandels@unaffiliated/dandels) |
2021-01-07 03:20:02 +0100 | mpereira | (~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 +0100 | conal | (~conal@66.115.157.121) |
2021-01-07 03:22:07 +0100 | conal | (~conal@66.115.157.121) (Client Quit) |
2021-01-07 03:22:48 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-01-07 03:23:07 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
2021-01-07 03:23:56 +0100 | Jd007 | (~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 +0100 | emptyflask | (~jon@136.49.71.178) (Ping timeout: 264 seconds) |
2021-01-07 03:27:04 +0100 | m0rphism | (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 260 seconds) |
2021-01-07 03:27:41 +0100 | emptyflask | (~jon@66.64.40.21) |
2021-01-07 03:27:43 +0100 | manjaro-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 +0100 | Jd007 | (~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007) |
2021-01-07 03:30:25 +0100 | geowiesnot | (~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 +0100 | conal | (~conal@66.115.157.70) |
2021-01-07 03:30:48 +0100 | ezrakilty | (~ezrakilty@75-172-99-84.tukw.qwest.net) |
2021-01-07 03:30:48 +0100 | conal | (~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 +0100 | conal | (~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 +0100 | justan0theruser | (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 264 seconds) |
2021-01-07 03:35:05 +0100 | ezrakilty | (~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 +0100 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
2021-01-07 03:41:05 +0100 | xff0x | (~fox@2001:1a81:52e0:100:d64b:d56d:3d88:4e8b) (Ping timeout: 272 seconds) |
2021-01-07 03:41:13 +0100 | aveltras | (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 +0100 | xff0x | (~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 +0100 | Tario | (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
2021-01-07 03:46:46 +0100 | Tario | (~Tario@201.192.165.173) |
2021-01-07 03:48:03 +0100 | dandels | (~dandels@unaffiliated/dandels) (Ping timeout: 272 seconds) |
2021-01-07 03:49:11 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-01-07 03:50:00 +0100 | itnet7 | (~itnet7@195.140.213.38) |
2021-01-07 03:51:11 +0100 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
2021-01-07 03:51:38 +0100 | Varis | (~Tadas@unaffiliated/varis) |
2021-01-07 03:53:13 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
2021-01-07 03:55:46 +0100 | manjaro-user_ | (~manjaro-u@c-73-34-23-13.hsd1.co.comcast.net) (Ping timeout: 272 seconds) |
2021-01-07 03:56:50 +0100 | drbean | (~drbean@TC210-63-209-55.static.apol.com.tw) |
2021-01-07 03:58:16 +0100 | ke4pcx | (~ke4pcx@024-158-093-129.res.spectrum.com) (Read error: Connection reset by peer) |
2021-01-07 03:58:34 +0100 | perrier-jouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2021-01-07 03:58:53 +0100 | ke4pcx | (~ke4pcx@024-158-093-129.res.spectrum.com) |
2021-01-07 04:01:43 +0100 | philopsos | (~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds) |
2021-01-07 04:01:58 +0100 | emptyflask | (~jon@66.64.40.21) (Ping timeout: 246 seconds) |
2021-01-07 04:02:11 +0100 | jedws | (~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-01-07 04:03:01 +0100 | amerigo | (uid331857@gateway/web/irccloud.com/x-yfslrwncojbqmybp) (Quit: Connection closed for inactivity) |
2021-01-07 04:03:54 +0100 | emptyflask | (~jon@136.49.71.178) |
2021-01-07 04:05:40 +0100 | xirhtogal | (~lagothrix@unaffiliated/lagothrix) |
2021-01-07 04:05:40 +0100 | lagothrix | (~lagothrix@unaffiliated/lagothrix) (Killed (verne.freenode.net (Nickname regained by services))) |
2021-01-07 04:05:40 +0100 | xirhtogal | lagothrix |
2021-01-07 04:07:25 +0100 | urodna | (~urodna@unaffiliated/urodna) (Quit: urodna) |
2021-01-07 04:08:00 +0100 | heatsink_ | (~heatsink@2600:1700:bef1:5e10:fc43:21f6:957b:5d9f) |
2021-01-07 04:09:03 +0100 | cantstanya | (~chatting@gateway/tor-sasl/cantstanya) (Ping timeout: 240 seconds) |
2021-01-07 04:10:07 +0100 | chaskell | (604a977a@96.74.151.122) |
2021-01-07 04:10:15 +0100 | aarvar | (~foewfoiew@2601:602:a080:fa0:9c96:3f48:55e0:3c7) |
2021-01-07 04:10:34 +0100 | conal | (~conal@89.187.183.136) (Quit: Computer has gone to sleep.) |
2021-01-07 04:10:50 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33) (Ping timeout: 264 seconds) |
2021-01-07 04:11:46 +0100 | cantstanya | (~chatting@gateway/tor-sasl/cantstanya) |
2021-01-07 04:12:06 +0100 | aarvar | (~foewfoiew@2601:602:a080:fa0:9c96:3f48:55e0:3c7) () |
2021-01-07 04:14:34 +0100 | p-core | (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Quit: p-core) |
2021-01-07 04:14:55 +0100 | p-core | (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) |
2021-01-07 04:16:36 +0100 | conal | (~conal@212.102.44.134) |
2021-01-07 04:20:14 +0100 | Tario | (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
2021-01-07 04:20:36 +0100 | plutoniix | (~q@184.82.203.72) |
2021-01-07 04:22:27 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving) |
2021-01-07 04:22:31 +0100 | chaskell | (604a977a@96.74.151.122) (Remote host closed the connection) |
2021-01-07 04:22:48 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-01-07 04:23:07 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
2021-01-07 04:24:21 +0100 | gedda | (~gedda@185.195.233.164) (Ping timeout: 256 seconds) |
2021-01-07 04:25:30 +0100 | ezrakilty | (~ezrakilty@75-172-99-84.tukw.qwest.net) |
2021-01-07 04:26:10 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-01-07 04:26:52 +0100 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving) |
2021-01-07 04:29:24 +0100 | Tario | (~Tario@201.192.165.173) |
2021-01-07 04:31:01 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
2021-01-07 04:31:36 +0100 | Stanley00 | (~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 +0100 | theDon | (~td@94.134.91.66) (Ping timeout: 256 seconds) |
2021-01-07 04:53:10 +0100 | geowiesnot | (~user@87-89-181-157.abo.bbox.fr) |
2021-01-07 04:54:04 +0100 | theDon | (~td@muedsl-82-207-238-201.citykom.de) |
2021-01-07 04:58:13 +0100 | fosterite | (~fosterite@2600:6c46:7880:410a:3cda:cdb5:75e9:b6e9) (Remote host closed the connection) |
2021-01-07 04:59:56 +0100 | fosterite | (~fosterite@2600:6c46:7880:410a:3cda:cdb5:75e9:b6e9) |
2021-01-07 05:00:02 +0100 | haasn | (~nand@mpv/developer/haasn) (Quit: ZNC 1.7.5+deb4 - https://znc.in) |
2021-01-07 05:01:18 +0100 | haasn | (~nand@mpv/developer/haasn) |
2021-01-07 05:02:41 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2021-01-07 05:03:10 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-01-07 05:04:41 +0100 | fosterite | (~fosterite@2600:6c46:7880:410a:3cda:cdb5:75e9:b6e9) (Ping timeout: 272 seconds) |
2021-01-07 05:04:48 +0100 | geowiesnot | (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 272 seconds) |
2021-01-07 05:05:50 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-01-07 05:08:49 +0100 | SupaYoshii | (~supayoshi@213-10-140-13.fixed.kpn.net) |
2021-01-07 05:09:09 +0100 | SupaYoshi | (~supayoshi@213-10-140-13.fixed.kpn.net) (Ping timeout: 260 seconds) |
2021-01-07 05:13:05 +0100 | Anthaas | (~Anthaas@unaffiliated/anthaas) (Ping timeout: 256 seconds) |
2021-01-07 05:13:43 +0100 | dftxbs3e | (~dftxbs3e@unaffiliated/dftxbs3e) (Remote host closed the connection) |
2021-01-07 05:13:58 +0100 | dftxbs3e | (~dftxbs3e@unaffiliated/dftxbs3e) |
2021-01-07 05:15:43 +0100 | Anthaas | (~Anthaas@unaffiliated/anthaas) |
2021-01-07 05:16:01 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) |
2021-01-07 05:17:34 +0100 | sword865 | (uid208942@gateway/web/irccloud.com/x-sjphxpixcxrxjevu) |
2021-01-07 05:18:15 +0100 | drbean | (~drbean@TC210-63-209-55.static.apol.com.tw) (Ping timeout: 256 seconds) |
2021-01-07 05:18:23 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
2021-01-07 05:20:00 +0100 | SupaYoshi | (~supayoshi@213-10-140-13.fixed.kpn.net) |
2021-01-07 05:20:43 +0100 | SupaYoshii | (~supayoshi@213-10-140-13.fixed.kpn.net) (Ping timeout: 246 seconds) |
2021-01-07 05:21:00 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-01-07 05:21:42 +0100 | Jd007 | (~Jd007@d154-5-83-24.bchsia.telus.net) |
2021-01-07 05:22:48 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-01-07 05:23:14 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
2021-01-07 05:27:41 +0100 | ezrakilty | (~ezrakilty@75-172-99-84.tukw.qwest.net) (Remote host closed the connection) |
2021-01-07 05:30:52 +0100 | texasmynsted | (~texasmyns@99.96.221.112) (Ping timeout: 246 seconds) |
2021-01-07 05:33:11 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 272 seconds) |
2021-01-07 05:33:18 +0100 | texasmynsted | (~texasmyns@99.96.221.112) |
2021-01-07 05:33:50 +0100 | fosterite | (~fosterite@2600:6c46:7880:410a:3cda:cdb5:75e9:b6e9) |
2021-01-07 05:39:02 +0100 | fosterite | (~fosterite@2600:6c46:7880:410a:3cda:cdb5:75e9:b6e9) (Ping timeout: 264 seconds) |
2021-01-07 05:40:04 +0100 | Katarushisu5 | (~Katarushi@cpc149726-finc20-2-0-cust203.4-2.cable.virginm.net) |
2021-01-07 05:40:04 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-01-07 05:40:31 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2021-01-07 05:40:45 +0100 | Katarushisu | (~Katarushi@cpc149726-finc20-2-0-cust203.4-2.cable.virginm.net) (Ping timeout: 240 seconds) |
2021-01-07 05:40:45 +0100 | Katarushisu5 | Katarushisu |
2021-01-07 05:40:53 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-01-07 05:43:50 +0100 | sorki | (~sorki@gateway/tor-sasl/sorki) |
2021-01-07 05:43:54 +0100 | hacxman | (~hexo@gateway/tor-sasl/hexo) |
2021-01-07 05:44:03 +0100 | hexo | (~hexo@gateway/tor-sasl/hexo) (Ping timeout: 240 seconds) |
2021-01-07 05:44:04 +0100 | srk | (~sorki@gateway/tor-sasl/sorki) (Ping timeout: 240 seconds) |
2021-01-07 05:44:18 +0100 | hacxman | hexo |
2021-01-07 05:44:57 +0100 | sorki | srk |
2021-01-07 05:49:22 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 05:49:57 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2021-01-07 05:55:05 +0100 | berberman | (~berberman@unaffiliated/berberman) (Quit: ZNC 1.7.5 - https://znc.in) |
2021-01-07 05:55:26 +0100 | berberman | (~berberman@unaffiliated/berberman) |
2021-01-07 05:57:17 +0100 | shatriff | (~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection) |
2021-01-07 05:57:30 +0100 | shatriff | (~vitaliish@176-52-216-242.irishtelecom.com) |
2021-01-07 05:59:23 +0100 | shatriff | (~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection) |
2021-01-07 05:59:37 +0100 | shatriff | (~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 +0100 | shatriff | (~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection) |
2021-01-07 06:00:27 +0100 | shatriff | (~vitaliish@176-52-216-242.irishtelecom.com) |
2021-01-07 06:00:56 +0100 | shatriff | (~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection) |
2021-01-07 06:00:57 +0100 | aveltras | (uid364989@gateway/web/irccloud.com/x-fhjjoqshwwdbqvei) (Quit: Connection closed for inactivity) |
2021-01-07 06:01:10 +0100 | shatriff | (~vitaliish@176-52-216-242.irishtelecom.com) |
2021-01-07 06:01:42 +0100 | shatriff | (~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection) |
2021-01-07 06:01:45 +0100 | jespada | (~jespada@90.254.245.49) (Ping timeout: 240 seconds) |
2021-01-07 06:02:22 +0100 | jfe | (~user@pool-71-184-149-134.bstnma.fios.verizon.net) (Ping timeout: 246 seconds) |
2021-01-07 06:02:27 +0100 | star_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 +0100 | jespada | (~jespada@90.254.245.49) |
2021-01-07 06:08:15 +0100 | ezrakilty | (~ezrakilty@75-172-99-84.tukw.qwest.net) |
2021-01-07 06:08:35 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-01-07 06:09:34 +0100 | jedws | (~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 +0100 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood) |
2021-01-07 06:12:52 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds) |
2021-01-07 06:12:53 +0100 | ezrakilty | (~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 265 seconds) |
2021-01-07 06:13:34 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
2021-01-07 06:13:43 +0100 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
2021-01-07 06:13:58 +0100 | jfe | (~user@pool-71-184-149-134.bstnma.fios.verizon.net) |
2021-01-07 06:15:01 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:a898:ee90:1b20:e047) (Remote host closed the connection) |
2021-01-07 06:16:57 +0100 | Wuzzy | (~Wuzzy@p5790ed14.dip0.t-ipconnect.de) (Quit: Wuzzy) |
2021-01-07 06:18:28 +0100 | jfe | (~user@pool-71-184-149-134.bstnma.fios.verizon.net) (Ping timeout: 256 seconds) |
2021-01-07 06:22:48 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-01-07 06:23:00 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 06:23:07 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
2021-01-07 06:23:15 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2021-01-07 06:26:28 +0100 | Tops21 | (~Tobias@dyndsl-095-033-017-251.ewe-ip-backbone.de) |
2021-01-07 06:27:03 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@2403:6200:8876:12e2:ad75:1255:fdff:5733) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-01-07 06:28:30 +0100 | rayyyy | (~nanoz@gateway/tor-sasl/nanoz) |
2021-01-07 06:29:00 +0100 | Tops2 | (~Tobias@dyndsl-095-033-026-219.ewe-ip-backbone.de) (Ping timeout: 256 seconds) |
2021-01-07 06:29:16 +0100 | DataComp_ | (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) |
2021-01-07 06:30:16 +0100 | DataComputist | (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Ping timeout: 240 seconds) |
2021-01-07 06:31:04 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:a898:ee90:1b20:e047) |
2021-01-07 06:33:31 +0100 | ransom | (~c4264035@8.47.12.52) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-01-07 06:33:44 +0100 | Tario | (~Tario@201.192.165.173) (Ping timeout: 260 seconds) |
2021-01-07 06:33:48 +0100 | mizlan | (~michaella@c-67-169-7-31.hsd1.ca.comcast.net) |
2021-01-07 06:34:28 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-01-07 06:36:02 +0100 | Vulfe | (~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 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
2021-01-07 06:41:37 +0100 | conal | (~conal@212.102.44.134) (Quit: Computer has gone to sleep.) |
2021-01-07 06:42:12 +0100 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) (Quit: leaving) |
2021-01-07 06:42:52 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@2403:6200:8876:12e2:ad75:1255:fdff:5733) |
2021-01-07 06:43:52 +0100 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) |
2021-01-07 06:43:56 +0100 | fosterite | (~fosterite@2600:6c46:7880:410a:3cda:cdb5:75e9:b6e9) |
2021-01-07 06:45:40 +0100 | conal | (~conal@66.115.176.141) |
2021-01-07 06:48:15 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-01-07 06:48:34 +0100 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 246 seconds) |
2021-01-07 06:49:28 +0100 | fosterite | (~fosterite@2600:6c46:7880:410a:3cda:cdb5:75e9:b6e9) (Ping timeout: 260 seconds) |
2021-01-07 06:51:42 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-01-07 06:54:01 +0100 | geowiesnot | (~user@87-89-181-157.abo.bbox.fr) |
2021-01-07 06:54:12 +0100 | s00pcan | (~chris@075-133-056-178.res.spectrum.com) (Remote host closed the connection) |
2021-01-07 06:54:38 +0100 | s00pcan | (~chris@075-133-056-178.res.spectrum.com) |
2021-01-07 06:55:32 +0100 | itnet7 | (~itnet7@195.140.213.38) (Remote host closed the connection) |
2021-01-07 06:57:29 +0100 | conal | (~conal@66.115.176.141) (Quit: Computer has gone to sleep.) |
2021-01-07 06:57:49 +0100 | wroathe | (~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 +0100 | proteusguy | (~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 +0100 | proteusguy | (~proteusgu@cm-58-10-154-202.revip7.asianet.co.th) |
2021-01-07 07:05:00 +0100 | dave_uy | (~david@108.61.193.26) (Quit: The Lounge - https://thelounge.chat) |
2021-01-07 07:05:00 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) |
2021-01-07 07:05:15 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:a898:ee90:1b20:e047) |
2021-01-07 07:07:35 +0100 | new_haskeller | (ae72a197@cpe00fc8d386d93-cm00fc8d386d90.cpe.net.cable.rogers.com) |
2021-01-07 07:08:18 +0100 | dave_uy | (~david@108.61.193.26) |
2021-01-07 07:08:20 +0100 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
2021-01-07 07:11:42 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@2403:6200:8876:12e2:ad75:1255:fdff:5733) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-01-07 07:15:14 +0100 | bitmapper | (uid464869@gateway/web/irccloud.com/x-qmmrndshdhsgokli) (Quit: Connection closed for inactivity) |
2021-01-07 07:15:38 +0100 | jrm | (~jrm@freebsd/developer/jrm) (Read error: Connection reset by peer) |
2021-01-07 07:15:44 +0100 | jrm2 | (~jrm@freebsd/developer/jrm) |
2021-01-07 07:16:21 +0100 | jrm2 | jrm |
2021-01-07 07:17:23 +0100 | echoreply | (~echoreply@unaffiliated/echoreply) (Quit: WeeChat 1.9.1) |
2021-01-07 07:17:51 +0100 | echoreply | (~echoreply@unaffiliated/echoreply) |
2021-01-07 07:17:54 +0100 | carlomagno | (~cararell@148.87.23.11) (Remote host closed the connection) |
2021-01-07 07:18:39 +0100 | hive-mind | (~hivemind@rrcs-67-53-148-69.west.biz.rr.com) (Ping timeout: 260 seconds) |
2021-01-07 07:19:40 +0100 | urb | (5434a07f@tm.84.52.160.127.dc.cable.static.telemach.net) (Remote host closed the connection) |
2021-01-07 07:19:52 +0100 | hive-mind | (~hivemind@rrcs-67-53-148-69.west.biz.rr.com) |
2021-01-07 07:21:57 +0100 | zaquest | (~notzaques@5.128.210.178) (Quit: Leaving) |
2021-01-07 07:22:16 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-01-07 07:22:49 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Read error: Connection reset by peer) |
2021-01-07 07:23:07 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
2021-01-07 07:23:55 +0100 | geowiesnot | (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 246 seconds) |
2021-01-07 07:26:30 +0100 | ADG1089__ | (~aditya@171.79.107.193) |
2021-01-07 07:27:53 +0100 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye) |
2021-01-07 07:28:11 +0100 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
2021-01-07 07:28:37 +0100 | Ariakenom | (~Ariakenom@2001:9b1:efb:fc00:96e:b740:520f:7fea) |
2021-01-07 07:29:45 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) |
2021-01-07 07:31:25 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@183.88.107.112) |
2021-01-07 07:32:01 +0100 | geowiesnot | (~user@87-89-181-157.abo.bbox.fr) |
2021-01-07 07:32:22 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2021-01-07 07:33:15 +0100 | Tops21 | (~Tobias@dyndsl-095-033-017-251.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
2021-01-07 07:34:39 +0100 | danvet | (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) |
2021-01-07 07:34:58 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 260 seconds) |
2021-01-07 07:34:58 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:a898:ee90:1b20:e047) (Ping timeout: 260 seconds) |
2021-01-07 07:38:40 +0100 | Jd007 | (~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007) |
2021-01-07 07:40:24 +0100 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
2021-01-07 07:40:46 +0100 | rlaager1 | (~rlaager@84.39.117.57) |
2021-01-07 07:46:34 +0100 | zaquest | (~notzaques@5.128.210.178) |
2021-01-07 07:48:48 +0100 | berberman_ | (~berberman@unaffiliated/berberman) |
2021-01-07 07:50:07 +0100 | berberman_ | (~berberman@unaffiliated/berberman) (Max SendQ exceeded) |
2021-01-07 07:50:07 +0100 | berberman | (~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds) |
2021-01-07 07:50:38 +0100 | berberman | (~berberman@unaffiliated/berberman) |
2021-01-07 07:50:50 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-01-07 07:53:39 +0100 | phasespace | (~sar@89-162-33-21.fiber.signal.no) (Ping timeout: 260 seconds) |
2021-01-07 07:55:05 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2021-01-07 07:55:12 +0100 | spopejoy | (~stuart@ool-44c5f8c9.dyn.optonline.net) (Quit: spopejoy) |
2021-01-07 07:56:01 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
2021-01-07 08:02:01 +0100 | ericsagnes | (~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 +0100 | Vulfe | (~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 +0100 | emptyflask | (~jon@136.49.71.178) (Ping timeout: 240 seconds) |
2021-01-07 08:08:19 +0100 | plakband | (~plakband@softbank126227038054.bbtec.net) |
2021-01-07 08:10:49 +0100 | Rudd0 | (~Rudd0@185.189.115.103) (Ping timeout: 246 seconds) |
2021-01-07 08:14:07 +0100 | ericsagnes | (~ericsagne@2405:6580:0:5100:abd5:d2f9:a1fb:762) |
2021-01-07 08:14:21 +0100 | guest15 | (~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 +0100 | guest15 | (~user@49.5.6.87) |
2021-01-07 08:15:25 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) |
2021-01-07 08:16:09 +0100 | phasespace | (~sar@80-89-47-117.inet.signal.no) |
2021-01-07 08:19:25 +0100 | ADG1089__ | (~aditya@171.79.107.193) (Remote host closed the connection) |
2021-01-07 08:21:38 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:a898:ee90:1b20:e047) (Ping timeout: 264 seconds) |
2021-01-07 08:21:38 +0100 | pfurla | (~pfurla@ool-182ed2e2.dyn.optonline.net) (Read error: Connection reset by peer) |
2021-01-07 08:22:12 +0100 | bitmagie | (~Thunderbi@200116b806730e0049347085952886ab.dip.versatel-1u1.de) |
2021-01-07 08:26:17 +0100 | pfurla | (~pfurla@ool-182ed2e2.dyn.optonline.net) |
2021-01-07 08:26:28 +0100 | ezrakilty | (~ezrakilty@75-172-99-84.tukw.qwest.net) |
2021-01-07 08:26:36 +0100 | petersen | (~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 +0100 | new_haskeller | (ae72a197@cpe00fc8d386d93-cm00fc8d386d90.cpe.net.cable.rogers.com) (Ping timeout: 245 seconds) |
2021-01-07 08:30:26 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-01-07 08:31:52 +0100 | revprez_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 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2021-01-07 08:33:12 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-01-07 08:34:26 +0100 | ezrakilty | (~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 272 seconds) |
2021-01-07 08:35:01 +0100 | revprez_anzio | (~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net) (Ping timeout: 264 seconds) |
2021-01-07 08:35:16 +0100 | Sgeo | (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer) |
2021-01-07 08:35:37 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@183.88.107.112) (Ping timeout: 264 seconds) |
2021-01-07 08:37:03 +0100 | petersen | (~petersen@redhat/juhp) |
2021-01-07 08:37:03 +0100 | pfurla | (~pfurla@ool-182ed2e2.dyn.optonline.net) (Read error: Connection reset by peer) |
2021-01-07 08:41:45 +0100 | michalz | (~user@185.246.204.78) |
2021-01-07 08:44:15 +0100 | bitmagie | (~Thunderbi@200116b806730e0049347085952886ab.dip.versatel-1u1.de) (Quit: bitmagie) |
2021-01-07 08:44:37 +0100 | mizlan | (~michaella@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 264 seconds) |
2021-01-07 08:44:58 +0100 | ADG1089__ | (~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 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246) |
2021-01-07 08:53:09 +0100 | Jajik | (xchlup2@gateway/shell/fi.muni.cz/x-zzgqerztklgehnpm) (Ping timeout: 260 seconds) |
2021-01-07 08:55:50 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246) (Ping timeout: 264 seconds) |
2021-01-07 08:56:06 +0100 | Jajik | (xchlup2@gateway/shell/fi.muni.cz/x-bsesdxyajdvfiayr) |
2021-01-07 08:58:19 +0100 | bitmagie | (~Thunderbi@200116b806730e0049347085952886ab.dip.versatel-1u1.de) |
2021-01-07 09:01:33 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@ppp-223-24-94-18.revip6.asianet.co.th) |
2021-01-07 09:02:27 +0100 | dandels | (~dandels@unaffiliated/dandels) |
2021-01-07 09:04:22 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
2021-01-07 09:04:44 +0100 | jedws | (~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-01-07 09:04:44 +0100 | kyali | (~kyali@APN-123-254-73-gprs.simobil.net) |
2021-01-07 09:05:15 +0100 | andreas303 | (~andreas@gateway/tor-sasl/andreas303) (Quit: andreas303) |
2021-01-07 09:05:36 +0100 | geowiesnot | (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds) |
2021-01-07 09:06:11 +0100 | andreas303 | (~andreas@gateway/tor-sasl/andreas303) |
2021-01-07 09:06:52 +0100 | dansho | (~dansho@ec2-13-231-43-236.ap-northeast-1.compute.amazonaws.com) (Remote host closed the connection) |
2021-01-07 09:07:18 +0100 | dansho | (~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 +0100 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
2021-01-07 09:08:17 +0100 | bitmagie | (~Thunderbi@200116b806730e0049347085952886ab.dip.versatel-1u1.de) (Quit: bitmagie) |
2021-01-07 09:10:14 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@ppp-223-24-94-18.revip6.asianet.co.th) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-01-07 09:11:38 +0100 | idhugo | (~idhugo@80-62-117-97-mobile.dk.customer.tdc.net) |
2021-01-07 09:11:39 +0100 | idhugo | (~idhugo@80-62-117-97-mobile.dk.customer.tdc.net) (Remote host closed the connection) |
2021-01-07 09:12:03 +0100 | idhugo | (~idhugo@80-62-117-97-mobile.dk.customer.tdc.net) |
2021-01-07 09:12:15 +0100 | idhugo | (~idhugo@80-62-117-97-mobile.dk.customer.tdc.net) (Remote host closed the connection) |
2021-01-07 09:12:33 +0100 | kyali | (~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 +0100 | Deide | (~Deide@217.155.19.23) |
2021-01-07 09:17:18 +0100 | mizlan | (~michaella@c-67-169-7-31.hsd1.ca.comcast.net) |
2021-01-07 09:17:18 +0100 | pfurla | (~pfurla@ool-3f8fc2ff.dyn.optonline.net) |
2021-01-07 09:18:01 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 272 seconds) |
2021-01-07 09:19:35 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@ppp-223-24-94-18.revip6.asianet.co.th) |
2021-01-07 09:20:28 +0100 | dandels | (~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 +0100 | cfricke | (~cfricke@unaffiliated/cfricke) |
2021-01-07 09:22:47 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-01-07 09:22:55 +0100 | bitmagie | (~Thunderbi@200116b806730e0049347085952886ab.dip.versatel-1u1.de) |
2021-01-07 09:23:07 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
2021-01-07 09:25:43 +0100 | jedws | (~jedws@121.209.189.201) |
2021-01-07 09:27:00 +0100 | petersen_ | (~petersen@redhat/juhp) |
2021-01-07 09:27:07 +0100 | petersen | (~petersen@redhat/juhp) (Read error: Connection reset by peer) |
2021-01-07 09:28:08 +0100 | petersen_ | petersen |
2021-01-07 09:32:16 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-01-07 09:32:43 +0100 | geowiesnot | (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
2021-01-07 09:37:49 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-01-07 09:38:20 +0100 | dhouthoo | (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) |
2021-01-07 09:38:24 +0100 | mizlan | (~michaella@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 272 seconds) |
2021-01-07 09:38:32 +0100 | ezrakilty | (~ezrakilty@75-172-99-84.tukw.qwest.net) |
2021-01-07 09:38:54 +0100 | ur | (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 +0100 | ezrakilty | (~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 256 seconds) |
2021-01-07 09:43:21 +0100 | zar | (~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 +0100 | L29Ah | (~L29Ah@unaffiliated/l29ah) (Ping timeout: 256 seconds) |
2021-01-07 09:48:31 +0100 | pyx | (~pyx@unaffiliated/pyx) |
2021-01-07 09:48:46 +0100 | pyx | (~pyx@unaffiliated/pyx) (Client Quit) |
2021-01-07 09:51:19 +0100 | zar | (~zar@89-24-42-225.nat.epc.tmcz.cz) (Remote host closed the connection) |
2021-01-07 09:51:26 +0100 | zariuq | (~zar@89-24-42-225.nat.epc.tmcz.cz) |
2021-01-07 09:51:59 +0100 | petersen | (~petersen@redhat/juhp) (Read error: Connection reset by peer) |
2021-01-07 09:52:40 +0100 | petersen | (~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 +0100 | jamm | (~jamm@unaffiliated/jamm) |
2021-01-07 09:54:06 +0100 | heatsink_ | (~heatsink@2600:1700:bef1:5e10:fc43:21f6:957b:5d9f) (Remote host closed the connection) |
2021-01-07 09:54:49 +0100 | zariuq | (~zar@89-24-42-225.nat.epc.tmcz.cz) (Remote host closed the connection) |
2021-01-07 09:56:41 +0100 | zar | (~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 +0100 | Gurkenglas | (~Gurkengla@unaffiliated/gurkenglas) |
2021-01-07 09:58:08 +0100 | petersen | (~petersen@redhat/juhp) (Read error: Connection reset by peer) |
2021-01-07 09:58:14 +0100 | jamm | (~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds) |
2021-01-07 09:58:34 +0100 | petersen_ | (~petersen@redhat/juhp) |
2021-01-07 09:59:10 +0100 | petersen_ | 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 +0100 | chele | (~chele@ip5b40237d.dynamic.kabel-deutschland.de) |
2021-01-07 10:02:15 +0100 | shatriff | (~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 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) |
2021-01-07 10:03:56 +0100 | Varis | (~Tadas@unaffiliated/varis) (Ping timeout: 240 seconds) |
2021-01-07 10:04:14 +0100 | Varis | (~Tadas@unaffiliated/varis) |
2021-01-07 10:05:11 +0100 | jassob | (~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 +0100 | dansho | (~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 +0100 | Boomerang | (~Boomerang@2a05:f6c7:2179:0:8da5:2e46:f1e1:ab48) |
2021-01-07 10:10:40 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-01-07 10:11:56 +0100 | mizlan | (~michaella@c-67-169-7-31.hsd1.ca.comcast.net) |
2021-01-07 10:12:09 +0100 | jassob | (~jassob@korrob.vth.sgsnet.se) |
2021-01-07 10:13:13 +0100 | cdan | (~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 +0100 | pera | (~pera@unaffiliated/pera) |
2021-01-07 10:14:40 +0100 | tsrt^ | (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 +0100 | mizlan | (~michaella@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
2021-01-07 10:17:27 +0100 | star_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 +0100 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
2021-01-07 10:18:15 +0100 | madjesti1 | (~madjestic@86-88-72-244.fixed.kpn.net) |
2021-01-07 10:18:45 +0100 | hnOsmium0001 | (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 +0100 | eacameron | (uid256985@gateway/web/irccloud.com/x-ycbifkwtkicpetrm) (Quit: Connection closed for inactivity) |
2021-01-07 10:22:47 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-01-07 10:23:07 +0100 | madjestic | (~Android@86-88-72-244.fixed.kpn.net) |
2021-01-07 10:23:07 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
2021-01-07 10:25:52 +0100 | kuribas | (~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 +0100 | star_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 +0100 | mpereira | (~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 +0100 | star_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 +0100 | knupfer | (~Thunderbi@200116b82cd91d004c0e80fffea14553.dip.versatel-1u1.de) |
2021-01-07 10:33:47 +0100 | knupfer | (~Thunderbi@200116b82cd91d004c0e80fffea14553.dip.versatel-1u1.de) (Client Quit) |
2021-01-07 10:34:02 +0100 | knupfer | (~Thunderbi@i5E86B4EC.versanet.de) |
2021-01-07 10:35:25 +0100 | knupfer | (~Thunderbi@i5E86B4EC.versanet.de) (Client Quit) |
2021-01-07 10:35:27 +0100 | knupfer1 | (~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 +0100 | polyrain | (~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 +0100 | w2gz | w1gz |
2021-01-07 10:36:38 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 10:37:16 +0100 | bitmagie | (~Thunderbi@200116b806730e0049347085952886ab.dip.versatel-1u1.de) (Quit: bitmagie) |
2021-01-07 10:37:18 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2021-01-07 10:37:50 +0100 | knupfer1 | knupfer |
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 +0100 | polyrain | (~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 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 10:43:42 +0100 | nineonine | (~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 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
2021-01-07 10:45:33 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 10:46:12 +0100 | ph88^ | (~ph88@2a02:8109:9e00:7e5c:f964:d8d4:1ec3:146c) |
2021-01-07 10:46:14 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2021-01-07 10:46:27 +0100 | pera | (~pera@unaffiliated/pera) (Ping timeout: 265 seconds) |
2021-01-07 10:47:03 +0100 | hekkaidekapus_ | (~tchouri@gateway/tor-sasl/hekkaidekapus) |
2021-01-07 10:48:03 +0100 | hekkaidekapus | (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds) |
2021-01-07 10:48:06 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 10:48:07 +0100 | pera | (pera@gateway/vpn/mullvad/pera) |
2021-01-07 10:48:20 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2021-01-07 10:49:02 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-01-07 10:50:05 +0100 | plakband | (~plakband@softbank126227038054.bbtec.net) (Quit: WeeChat 2.9) |
2021-01-07 10:50:09 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 10:50:49 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2021-01-07 10:52:35 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 10:52:49 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2021-01-07 10:54:36 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 10:54:49 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:ddbb:ad3c:80ea:163a) |
2021-01-07 10:54:58 +0100 | darjeeling_ | (~darjeelin@122.245.218.97) (Ping timeout: 246 seconds) |
2021-01-07 10:55:14 +0100 | nineonine | (~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 +0100 | dandart | (~Thunderbi@home.dandart.co.uk) |
2021-01-07 10:57:03 +0100 | nineonine | (~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 +0100 | nineonine | (~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 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
2021-01-07 10:58:11 +0100 | aveltras | (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 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 10:59:26 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:ddbb:ad3c:80ea:163a) (Ping timeout: 264 seconds) |
2021-01-07 10:59:44 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2021-01-07 11:00:55 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 11:01:10 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2021-01-07 11:01:55 +0100 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) |
2021-01-07 11:02:26 +0100 | cfricke | (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0) |
2021-01-07 11:02:31 +0100 | nineonine | (~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 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2021-01-07 11:05:13 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) |
2021-01-07 11:05:18 +0100 | Rudd0 | (~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 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 11:06:00 +0100 | nineonine | (~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 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@ppp-223-24-94-18.revip6.asianet.co.th) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-01-07 11:07:52 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 11:08:31 +0100 | nineonine | (~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 +0100 | fendor_ | 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 +0100 | jedws | (~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-01-07 11:10:07 +0100 | mpereira | (~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 +0100 | datajerk | (~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 +0100 | datajerk | (~datajerk@sense.net) |
2021-01-07 11:15:55 +0100 | jedws | (~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 +0100 | jedws | (~jedws@121.209.189.201) (Client Quit) |
2021-01-07 11:16:07 +0100 | pfurla_ | (~pfurla@ool-182ed2e2.dyn.optonline.net) |
2021-01-07 11:16:11 +0100 | zariuq | (~zar@fw1.ciirc.cvut.cz) |
2021-01-07 11:16:42 +0100 | <kuribas> | ah indeed! |
2021-01-07 11:17:12 +0100 | pfurla | (~pfurla@ool-3f8fc2ff.dyn.optonline.net) (Ping timeout: 272 seconds) |
2021-01-07 11:18:05 +0100 | jneira | (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 +0100 | mizlan | (~michaella@c-67-169-7-31.hsd1.ca.comcast.net) |
2021-01-07 11:18:46 +0100 | zar | (~zar@89-24-42-225.nat.epc.tmcz.cz) (Ping timeout: 246 seconds) |
2021-01-07 11:21:21 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 11:21:38 +0100 | nineonine | (~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 +0100 | cfricke | (~cfricke@unaffiliated/cfricke) |
2021-01-07 11:22:36 +0100 | L29Ah | (~L29Ah@unaffiliated/l29ah) |
2021-01-07 11:22:37 +0100 | mizlan | (~michaella@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
2021-01-07 11:22:51 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Read error: Connection reset by peer) |
2021-01-07 11:23:07 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
2021-01-07 11:23:25 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 11:23:38 +0100 | da39a3ee5e6b4b0d | (~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 +0100 | nineonine | (~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 +0100 | pera | (pera@gateway/vpn/mullvad/pera) (Ping timeout: 246 seconds) |
2021-01-07 11:27:23 +0100 | pera | (~pera@unaffiliated/pera) |
2021-01-07 11:28:19 +0100 | __monty__ | (~toonn@unaffiliated/toonn) |
2021-01-07 11:29:09 +0100 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) |
2021-01-07 11:31:09 +0100 | tito_04 | (~taurux@net-188-152-137-51.cust.dsl.teletu.it) |
2021-01-07 11:32:46 +0100 | taurux | (~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 +0100 | madjestic | (~Android@86-88-72-244.fixed.kpn.net) (Quit: -a- Connection Timed Out) |
2021-01-07 11:38:12 +0100 | madjestic | (~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 +0100 | kritzefitz | (~kritzefit@212.86.56.80) |
2021-01-07 11:45:49 +0100 | pera | (~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 +0100 | ADG1089__ | (~aditya@171.79.107.193) (Read error: Connection reset by peer) |
2021-01-07 11:47:26 +0100 | ADG1089__ | (~aditya@171.79.107.193) |
2021-01-07 11:55:05 +0100 | jedws | (~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 +0100 | Franciman | (~francesco@host-82-48-174-127.retail.telecomitalia.it) |
2021-01-07 11:58:19 +0100 | pera | (~pera@unaffiliated/pera) |
2021-01-07 12:02:51 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2021-01-07 12:03:19 +0100 | pera | (~pera@unaffiliated/pera) (Ping timeout: 260 seconds) |
2021-01-07 12:03:25 +0100 | jpds | (~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 +0100 | mpereira | (~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 +0100 | errst | (~errst@unaffiliated/tirej) |
2021-01-07 12:08:49 +0100 | Stanley00 | (~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 +0100 | jedws | (~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 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 260 seconds) |
2021-01-07 12:12:45 +0100 | thc202 | (~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 +0100 | new_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 +0100 | new_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 +0100 | mizlan | (~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 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Read error: Connection reset by peer) |
2021-01-07 12:23:07 +0100 | zebrag | (~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 +0100 | afx237_ | (~afx237@107.170.10.178) |
2021-01-07 12:26:05 +0100 | mizlan | (~michaella@c-67-169-7-31.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
2021-01-07 12:27:17 +0100 | jedws | (~jedws@121.209.189.201) |
2021-01-07 12:31:07 +0100 | pera | (~pera@unaffiliated/pera) |
2021-01-07 12:31:35 +0100 | new_haskeller | (ae72a197@cpe00fc8d386d93-cm00fc8d386d90.cpe.net.cable.rogers.com) |
2021-01-07 12:31:43 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
2021-01-07 12:35:14 +0100 | Guest19 | (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 +0100 | knupfer | (~Thunderbi@200116b82cd91d009c1734bea44afe6a.dip.versatel-1u1.de) (Remote host closed the connection) |
2021-01-07 12:37:54 +0100 | knupfer | (~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 +0100 | jedws | (~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 +0100 | sqrt2 | (~ben@unaffiliated/sqrt2) |
2021-01-07 12:44:23 +0100 | tomboy64 | (~tomboy64@gateway/tor-sasl/tomboy64) (Ping timeout: 240 seconds) |
2021-01-07 12:44:43 +0100 | sqrt2_ | (~ben@unaffiliated/sqrt2) (Ping timeout: 260 seconds) |
2021-01-07 12:44:43 +0100 | cantstanya | (~chatting@gateway/tor-sasl/cantstanya) (Ping timeout: 240 seconds) |
2021-01-07 12:45:02 +0100 | ericsagnes | (~ericsagne@2405:6580:0:5100:abd5:d2f9:a1fb:762) (Ping timeout: 264 seconds) |
2021-01-07 12:45:13 +0100 | Gurkenglas | (~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 +0100 | jmchael | (~jmchael@81.174.205.210) |
2021-01-07 12:51:06 +0100 | tomboy64 | (~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 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246) |
2021-01-07 12:52:47 +0100 | <ur> | too* |
2021-01-07 12:52:55 +0100 | cantstanya | (~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 +0100 | Alleria | (~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 +0100 | Alleria | Guest28673 |
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 +0100 | jedws | (~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 +0100 | heatsink | (~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 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246) (Ping timeout: 260 seconds) |
2021-01-07 12:57:15 +0100 | ericsagnes | (~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 +0100 | heatsink | (~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 +0100 | mpereira | (~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 +0100 | dandart | (~Thunderbi@home.dandart.co.uk) (Ping timeout: 256 seconds) |
2021-01-07 13:08:29 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@2403:6200:8876:12e2:1db3:d5d3:fa35:5ac1) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-01-07 13:09:34 +0100 | Torro | (Torro@gateway/vpn/protonvpn/torro) |
2021-01-07 13:09:36 +0100 | kritzefitz | (~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 +0100 | plutoniix | (~q@184.82.203.72) (Read error: Connection reset by peer) |
2021-01-07 13:11:01 +0100 | geowiesnot | (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 264 seconds) |
2021-01-07 13:13:22 +0100 | plutoniix | (~q@184.82.203.72) |
2021-01-07 13:13:33 +0100 | dandart | (~Thunderbi@home.dandart.co.uk) |
2021-01-07 13:14:26 +0100 | Lycurgus | (~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 +0100 | Guest19 | (ae72a197@gateway/web/cgi-irc/kiwiirc.com/ip.174.114.161.151) (Quit: Connection closed) |
2021-01-07 13:18:48 +0100 | kritzefitz | (~kritzefit@212.86.56.80) |
2021-01-07 13:18:50 +0100 | andreas303 | (~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection) |
2021-01-07 13:21:32 +0100 | Entertainment | (~entertain@104.246.132.210) |
2021-01-07 13:22:46 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-01-07 13:23:07 +0100 | zebrag | (~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 +0100 | FastestCoderOnEa | (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 +0100 | noop_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 +0100 | andreas303 | (~andreas@gateway/tor-sasl/andreas303) |
2021-01-07 13:35:05 +0100 | jedws | (~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 +0100 | star_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 +0100 | geekosaur | (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 +0100 | fosterite | (~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 +0100 | ezrakilty | (~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 +0100 | boxscape | (4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) |
2021-01-07 13:46:14 +0100 | noop_noob | (31e4c3d3@49.228.195.211) (Remote host closed the connection) |
2021-01-07 13:46:18 +0100 | m0rphism | (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) |
2021-01-07 13:46:42 +0100 | plutoniix | (~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 +0100 | FastestCoderOnEa | (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 +0100 | ezrakilty | (~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 +0100 | Alleria_ | (~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 +0100 | Alleria_ | (~AllahuAkb@2603-7000-3040-0000-2c86-5e43-4646-d432.res6.spectrum.com) |
2021-01-07 13:50:30 +0100 | bitmagie | (~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 +0100 | worc3131 | (~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 +0100 | da39a3ee5e6b4b0d | (~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 +0100 | Tario | (~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 +0100 | fosterite | (~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 +0100 | p8m | (p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 240 seconds) |
2021-01-07 13:56:47 +0100 | Forlorn | (~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 +0100 | safinaskar | (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 +0100 | worc3131 | (~quassel@2a02:c7f:dcc4:6500:cf0e:3346:8766:ab20) (Ping timeout: 272 seconds) |
2021-01-07 14:02:26 +0100 | worc3131 | (~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 +0100 | ADG1089__ | (~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 +0100 | jb55 | (~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection) |
2021-01-07 14:05:45 +0100 | centril | (~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 +0100 | noop_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 +0100 | ur | (5434a07f@tm.84.52.160.127.dc.cable.static.telemach.net) (Remote host closed the connection) |
2021-01-07 14:06:53 +0100 | bitmagie | (~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 +0100 | ADG1089__ | (~aditya@171.79.107.193) |
2021-01-07 14:08:10 +0100 | kritzefitz | (~kritzefit@212.86.56.80) (Ping timeout: 246 seconds) |
2021-01-07 14:08:21 +0100 | fosterite | (~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 +0100 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) |
2021-01-07 14:10:56 +0100 | cfricke | (~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 +0100 | fosterite | (~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 +0100 | knupfer | (~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 +0100 | knupfer | (~Thunderbi@200116b82cd91d0055d50078d8be1c36.dip.versatel-1u1.de) |
2021-01-07 14:15:23 +0100 | jpds | (~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 +0100 | knupfer | (~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 +0100 | mizlan | (~michaella@c-67-169-7-31.hsd1.ca.comcast.net) |
2021-01-07 14:22:46 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-01-07 14:23:08 +0100 | zebrag | (~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 +0100 | philopsos | (~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 +0100 | ADG1089__ | (~aditya@171.79.107.193) (Quit: Konversation terminated!) |
2021-01-07 14:26:48 +0100 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds) |
2021-01-07 14:26:49 +0100 | mizlan | (~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 +0100 | Melanie | (~Melanie@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 240 seconds) |
2021-01-07 14:27:25 +0100 | madjesti1 | (~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 +0100 | urodna | (~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 +0100 | knupfer | (~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 +0100 | dminuoso | smells 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 +0100 | ur | (5434a07f@tm.84.52.160.127.dc.cable.static.telemach.net) |
2021-01-07 14:36:26 +0100 | da39a3ee5e6b4b0d | (~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 +0100 | p8m | (p8m@gateway/vpn/protonvpn/p8m) |
2021-01-07 14:41:41 +0100 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) |
2021-01-07 14:44:05 +0100 | stilgart | (~Christoph@chezlefab.net) (Quit: leaving) |
2021-01-07 14:44:13 +0100 | stilgart | (~Christoph@chezlefab.net) |
2021-01-07 14:45:10 +0100 | danza | (~francesco@151.53.94.29) (Quit: Leaving) |
2021-01-07 14:45:42 +0100 | Melanie | (~Melanie@192-0-134-138.cpe.teksavvy.com) |
2021-01-07 14:45:46 +0100 | p8m_ | (p8m@gateway/vpn/protonvpn/p8m) |
2021-01-07 14:46:07 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246) |
2021-01-07 14:46:19 +0100 | p8m | (p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 246 seconds) |
2021-01-07 14:46:31 +0100 | aveltras | (uid364989@gateway/web/irccloud.com/x-cgtozfrhtbhoalmq) (Quit: Connection closed for inactivity) |
2021-01-07 14:47:21 +0100 | chang | (~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 +0100 | knupfer | (~Thunderbi@200116b82cd91d00c5cb2cb8cc07eb23.dip.versatel-1u1.de) (Ping timeout: 260 seconds) |
2021-01-07 14:47:58 +0100 | da39a3ee5e6b4b0d | (~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 +0100 | michalz | (~user@185.246.204.78) (Read error: Connection reset by peer) |
2021-01-07 14:52:36 +0100 | michalz | (~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 +0100 | coot | (~coot@37.30.55.131.nat.umts.dynamic.t-mobile.pl) |
2021-01-07 14:53:21 +0100 | LKoen | (~LKoen@185.61.176.203) |
2021-01-07 14:53:43 +0100 | xelxebar | (~xelxebar@gateway/tor-sasl/xelxebar) (Ping timeout: 240 seconds) |
2021-01-07 14:54:03 +0100 | philopsos | (~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds) |
2021-01-07 14:54:27 +0100 | ClaudiusMaximus | (~claude@196.67.6.51.dyn.plus.net) |
2021-01-07 14:54:27 +0100 | ClaudiusMaximus | (~claude@196.67.6.51.dyn.plus.net) (Changing host) |
2021-01-07 14:54:27 +0100 | ClaudiusMaximus | (~claude@unaffiliated/claudiusmaximus) |
2021-01-07 14:54:32 +0100 | kritzefitz | (~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 +0100 | michalz | (~user@185.246.204.80) (Read error: No route to host) |
2021-01-07 14:57:49 +0100 | heatsink | (~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 +0100 | michalz | (~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 +0100 | philopsos | (~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 +0100 | Gurkenglas | (~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 +0100 | heatsink | (~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 +0100 | new_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 +0100 | hyperisco | (~hyperisco@d192-186-117-226.static.comm.cgocable.net) |
2021-01-07 15:08:32 +0100 | cfricke | (~cfricke@unaffiliated/cfricke) |
2021-01-07 15:09:34 +0100 | s00pcan | (~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 +0100 | ADG1089__ | (~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 +0100 | LKoen | (~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 +0100 | dandart | (~Thunderbi@home.dandart.co.uk) (Ping timeout: 265 seconds) |
2021-01-07 15:12:56 +0100 | bitmapper | (uid464869@gateway/web/irccloud.com/x-twbakplhwmmiboua) |
2021-01-07 15:13:01 +0100 | dandart | (~Thunderbi@home.dandart.co.uk) |
2021-01-07 15:13:09 +0100 | centril | (~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 +0100 | christo | (~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 +0100 | mouseghost | (~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 +0100 | Torro | (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 +0100 | geekosaur | (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 +0100 | zebrag | (~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 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
2021-01-07 15:26:47 +0100 | xelxebar | (~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 +0100 | McAnickle | (~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 +0100 | Lycurgus | (~niemand@cpe-45-46-139-165.buffalo.res.rr.com) (Quit: Exeunt) |
2021-01-07 15:34:01 +0100 | carlomagno | (~cararell@148.87.23.11) |
2021-01-07 15:35:05 +0100 | jb55 | (~jb55@gateway/tor-sasl/jb55) |
2021-01-07 15:35:15 +0100 | coot | (~coot@37.30.55.131.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
2021-01-07 15:36:24 +0100 | sword865 | (uid208942@gateway/web/irccloud.com/x-sjphxpixcxrxjevu) (Quit: Connection closed for inactivity) |
2021-01-07 15:38:55 +0100 | elfets | (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
2021-01-07 15:39:07 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246) (Remote host closed the connection) |
2021-01-07 15:39:13 +0100 | Vulfe | (~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 +0100 | star_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 +0100 | elfets | (~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 +0100 | perrier-jouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.0) |
2021-01-07 15:45:22 +0100 | elfets | (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
2021-01-07 15:48:16 +0100 | michalz | (~user@185.246.204.75) (Read error: Connection reset by peer) |
2021-01-07 15:54:41 +0100 | Sgeo | (~Sgeo@ool-18b98aa4.dyn.optonline.net) |
2021-01-07 15:56:03 +0100 | perrier-jouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2021-01-07 15:56:25 +0100 | jollygood2 | (~bc812391@217.29.117.252) |
2021-01-07 15:58:18 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) |
2021-01-07 15:58:24 +0100 | perrier-jouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Client Quit) |
2021-01-07 15:58:59 +0100 | Neo---- | (~neo@BSN-143-24-94.dynamic.siol.net) (Ping timeout: 260 seconds) |
2021-01-07 15:59:15 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:e0a4:3836:b19:3d7) |
2021-01-07 16:02:11 +0100 | Neo---- | (~neo@BSN-143-25-5.dynamic.siol.net) |
2021-01-07 16:03:38 +0100 | heatsink | (~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 +0100 | phasespace | (~sar@80-89-47-117.inet.signal.no) (Ping timeout: 256 seconds) |
2021-01-07 16:10:39 +0100 | dandart | (~Thunderbi@home.dandart.co.uk) (Remote host closed the connection) |
2021-01-07 16:10:55 +0100 | dandart | (~Thunderbi@home.dandart.co.uk) |
2021-01-07 16:11:00 +0100 | ulidtko | (~ulidtko@193.111.48.79) |
2021-01-07 16:11:15 +0100 | perrier-jouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2021-01-07 16:11:45 +0100 | ADG1089__ | (~aditya@171.79.107.193) (Remote host closed the connection) |
2021-01-07 16:11:55 +0100 | da39a3ee5e6b4b0d | (~da39a3ee5@2403:6200:8876:12e2:1db3:d5d3:fa35:5ac1) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-01-07 16:15:49 +0100 | tomku | (~tomku@unaffiliated/tomku) (Ping timeout: 264 seconds) |
2021-01-07 16:15:54 +0100 | Jd007 | (~Jd007@d154-5-83-24.bchsia.telus.net) |
2021-01-07 16:17:30 +0100 | tomku | (~tomku@unaffiliated/tomku) |
2021-01-07 16:18:51 +0100 | noop_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 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-01-07 16:23:08 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
2021-01-07 16:23:09 +0100 | fendor_ | (~fendor@77.119.129.169.wireless.dyn.drei.com) |
2021-01-07 16:23:12 +0100 | mizlan | (~michaella@c-67-169-7-31.hsd1.ca.comcast.net) |
2021-01-07 16:24:25 +0100 | darjeeling_ | (~darjeelin@122.245.218.97) |
2021-01-07 16:26:16 +0100 | fendor | (~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 +0100 | Saukk | (~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 +0100 | mizlan | (~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 +0100 | Cale | (~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 +0100 | christo | (~chris@81.96.113.213) |
2021-01-07 16:29:58 +0100 | guest15 | (~user@49.5.6.87) (Remote host closed the connection) |
2021-01-07 16:30:08 +0100 | guest15 | (~user@49.5.6.87) |
2021-01-07 16:30:17 +0100 | mizlan | (~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 +0100 | phasespace | (~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 +0100 | madjest76 | (~Android@188-207-107-101.mobile.kpn.net) |
2021-01-07 16:41:21 +0100 | worc3131 | (~quassel@2a02:c7f:dcc4:6500:cf0e:3346:8766:ab20) (Ping timeout: 272 seconds) |
2021-01-07 16:42:02 +0100 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 264 seconds) |
2021-01-07 16:44:01 +0100 | madjestic | (~Android@86-88-72-244.fixed.kpn.net) (Ping timeout: 264 seconds) |
2021-01-07 16:45:09 +0100 | jamm | (~jamm@unaffiliated/jamm) |
2021-01-07 16:45:31 +0100 | Tario | (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
2021-01-07 16:46:25 +0100 | dandart | (~Thunderbi@home.dandart.co.uk) (Ping timeout: 264 seconds) |
2021-01-07 16:46:55 +0100 | kayvan | (~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 +0100 | justsomeguy | (~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 +0100 | Tario | (~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 +0100 | Saukk | (~Saukk@83-148-239-3.dynamic.lounea.fi) (Remote host closed the connection) |
2021-01-07 16:59:43 +0100 | hnOsmium0001 | (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 +0100 | Melanie | either |
2021-01-07 17:03:41 +0100 | <Rembane> | Uniaika: Sweet. |
2021-01-07 17:04:49 +0100 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection) |
2021-01-07 17:06:20 +0100 | jamm_ | (~jamm@unaffiliated/jamm) |
2021-01-07 17:07:52 +0100 | tchar | (sid301738@gateway/web/irccloud.com/x-xddtoyyurmxjtavh) () |
2021-01-07 17:10:08 +0100 | jamm | (~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds) |
2021-01-07 17:10:09 +0100 | philopsos | (~caecilius@45.133.192.92) (Ping timeout: 260 seconds) |
2021-01-07 17:11:48 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-01-07 17:12:05 +0100 | knupfer | (~Thunderbi@200116b82cd91d00843f14fffe52ba74.dip.versatel-1u1.de) |
2021-01-07 17:12:05 +0100 | knupfer | (~Thunderbi@200116b82cd91d00843f14fffe52ba74.dip.versatel-1u1.de) (Client Quit) |
2021-01-07 17:12:18 +0100 | knupfer | (~Thunderbi@200116b82cd91d00118d0874356b5bdf.dip.versatel-1u1.de) |
2021-01-07 17:13:43 +0100 | philopsos | (~caecilius@45.133.192.92) |
2021-01-07 17:16:11 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 272 seconds) |
2021-01-07 17:16:12 +0100 | madjest76 | (~Android@188-207-107-101.mobile.kpn.net) (Read error: Connection reset by peer) |
2021-01-07 17:16:21 +0100 | madjestic | (~Android@86-88-72-244.fixed.kpn.net) |
2021-01-07 17:16:39 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) |
2021-01-07 17:18:48 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 17:19:02 +0100 | nineonine | (~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 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 264 seconds) |
2021-01-07 17:22:33 +0100 | madjesti1 | (~madjestic@86-88-72-244.fixed.kpn.net) |
2021-01-07 17:22:55 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 17:23:30 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2021-01-07 17:24:59 +0100 | shutendoji[m] | (shutendoji@gateway/shell/matrix.org/x-rahorqhngflcgpid) |
2021-01-07 17:26:30 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2021-01-07 17:28:14 +0100 | Saukk | (~Saukk@83-148-239-3.dynamic.lounea.fi) |
2021-01-07 17:28:18 +0100 | aarvar | (~foewfoiew@2601:602:a080:fa0:9c96:3f48:55e0:3c7) |
2021-01-07 17:28:19 +0100 | aarvar | (~foewfoiew@2601:602:a080:fa0:9c96:3f48:55e0:3c7) (Client Quit) |
2021-01-07 17:29:25 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 17:30:53 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2021-01-07 17:31:28 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 17:32:02 +0100 | nineonine | (~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 +0100 | Saukk | (~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 +0100 | christo | (~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 +0100 | christo | (~chris@81.96.113.213) |
2021-01-07 17:43:25 +0100 | madjestic | (~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 +0100 | mirrorbird | (~psutcliff@2a00:801:42b:8314:3772:eb7f:91f1:698c) |
2021-01-07 17:44:33 +0100 | Neo---- | (~neo@BSN-143-25-5.dynamic.siol.net) (Remote host closed the connection) |
2021-01-07 17:44:38 +0100 | madjestic | (~Android@188-207-107-97.mobile.kpn.net) |
2021-01-07 17:45:14 +0100 | McAnickle | (~McAnickle@104.129.28.98) ("WeeChat 2.3") |
2021-01-07 17:46:28 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Remote host closed the connection) |
2021-01-07 17:46:47 +0100 | zebrag | (~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 +0100 | michalz | (~user@185.246.204.79) |
2021-01-07 17:47:08 +0100 | ThoaiOnline | (~ThoaiOnli@nv.tho.ai) |
2021-01-07 17:47:38 +0100 | ADG1089__ | (~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 +0100 | Saukk | (~Saukk@83-148-239-3.dynamic.lounea.fi) |
2021-01-07 17:49:57 +0100 | mpereira | (~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 +0100 | madjestic | (~Android@188-207-107-97.mobile.kpn.net) (Read error: Connection reset by peer) |
2021-01-07 17:53:33 +0100 | madjestic | (~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 +0100 | geekosaur | (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 +0100 | ezrakilty | (~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 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 18:00:18 +0100 | nineonine | (~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 +0100 | heatsink | (~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 +0100 | nineonine | (~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 +0100 | nineonine | (~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 +0100 | heatsink | (~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 +0100 | heatsink | (~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 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 18:04:47 +0100 | nineonine | (~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 +0100 | Saukk | (~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 +0100 | nineonine | (~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 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2021-01-07 18:07:36 +0100 | cfricke | (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0) |
2021-01-07 18:08:03 +0100 | hexo | (~hexo@gateway/tor-sasl/hexo) (Ping timeout: 240 seconds) |
2021-01-07 18:08:25 +0100 | hexo | (~hexo@gateway/tor-sasl/hexo) |
2021-01-07 18:08:26 +0100 | sorki | (~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 +0100 | srk | (~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 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 18:10:42 +0100 | conal | (~conal@64.71.133.70) |
2021-01-07 18:10:45 +0100 | nineonine | (~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 +0100 | sorki | srk |
2021-01-07 18:11:37 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-01-07 18:11:42 +0100 | ulidtko|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 +0100 | conal | (~conal@64.71.133.70) (Client Quit) |
2021-01-07 18:12:25 +0100 | <merijn> | dolio: Sure |
2021-01-07 18:12:32 +0100 | michalz | (~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 +0100 | nineonine | (~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 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2021-01-07 18:14:05 +0100 | ulidtko | (~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 +0100 | conal | (~conal@209.58.135.97) |
2021-01-07 18:15:09 +0100 | zebrag | (~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 +0100 | v_m_v | (~vm_v@2a02:aa12:3200:6480:14d3:e041:99da:4fe5) |
2021-01-07 18:15:45 +0100 | sakirious | (~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 +0100 | nineonine | (~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 +0100 | nineonine | (~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 +0100 | sakirious | (~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 +0100 | spopejoy | (~stuart@ool-44c5f8c9.dyn.optonline.net) |
2021-01-07 18:18:33 +0100 | nineonine | (~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 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2021-01-07 18:19:18 +0100 | <kuribas> | ah right |
2021-01-07 18:19:28 +0100 | boxscape | (4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Ping timeout: 246 seconds) |
2021-01-07 18:19:42 +0100 | Vulfe | (~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 +0100 | theNeuron | (~theNeuron@177.8.129.7) |
2021-01-07 18:20:04 +0100 | Jesin | (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving) |
2021-01-07 18:20:21 +0100 | nineonine | (~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 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2021-01-07 18:22:09 +0100 | Ariakenom | (~Ariakenom@2001:9b1:efb:fc00:96e:b740:520f:7fea) (Quit: Leaving) |
2021-01-07 18:22:18 +0100 | Ariakenom | (~Ariakenom@2001:9b1:efb:fc00:acbc:1011:e13d:7bc8) |
2021-01-07 18:22:22 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 18:22:35 +0100 | safinaskar | (6dfc5ba3@109-252-91-163.nat.spd-mgts.ru) () |
2021-01-07 18:23:02 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2021-01-07 18:23:21 +0100 | theNeuron | (~theNeuron@177.8.129.7) () |
2021-01-07 18:23:47 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 18:24:02 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2021-01-07 18:25:03 +0100 | plutoniix | (~q@node-ujf.pool-125-24.dynamic.totinternet.net) |
2021-01-07 18:25:21 +0100 | safinaskar | (6dfc5ba3@109-252-91-163.nat.spd-mgts.ru) |
2021-01-07 18:25:47 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 18:26:28 +0100 | nineonine | (~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 +0100 | Jesin | (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) |
2021-01-07 18:26:45 +0100 | fosterite | (~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 +0100 | livvy | (~livvy@gateway/tor-sasl/livvy) |
2021-01-07 18:27:53 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 18:28:07 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2021-01-07 18:29:56 +0100 | nineonine | (~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 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2021-01-07 18:32:09 +0100 | kaboom | (~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 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:e0a4:3836:b19:3d7) (Remote host closed the connection) |
2021-01-07 18:33:38 +0100 | heatsink | (~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 +0100 | dfeuer | (~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 +0100 | Boomerang | (~Boomerang@2a05:f6c7:2179:0:8da5:2e46:f1e1:ab48) (Ping timeout: 272 seconds) |
2021-01-07 18:38:08 +0100 | ezrakilty | (~ezrakilty@75-172-99-84.tukw.qwest.net) (Remote host closed the connection) |
2021-01-07 18:39:04 +0100 | justsomeguy | (~justsomeg@072-186-136-238.biz.spectrum.com) |
2021-01-07 18:39:04 +0100 | justsomeguy | (~justsomeg@072-186-136-238.biz.spectrum.com) (Changing host) |
2021-01-07 18:39:04 +0100 | justsomeguy | (~justsomeg@unaffiliated/--/x-3805311) |
2021-01-07 18:39:45 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 18:39:59 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2021-01-07 18:41:04 +0100 | dandels | (~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 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 18:41:59 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-01-07 18:42:19 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 272 seconds) |
2021-01-07 18:42:25 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2021-01-07 18:42:30 +0100 | Vulfe | (~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 +0100 | Forlorn | (~Forlorn@unaffiliated/forlorn) |
2021-01-07 18:45:05 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 18:45:18 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2021-01-07 18:45:56 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-01-07 18:46:18 +0100 | jamm_ | (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
2021-01-07 18:46:31 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
2021-01-07 18:47:26 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246) (Ping timeout: 264 seconds) |
2021-01-07 18:48:03 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
2021-01-07 18:48:36 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246) |
2021-01-07 18:49:12 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Remote host closed the connection) |
2021-01-07 18:49:33 +0100 | jamm | (~jamm@unaffiliated/jamm) |
2021-01-07 18:51:45 +0100 | Vq_ | 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 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246) (Remote host closed the connection) |
2021-01-07 18:52:53 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:c5ef:3e8a:389d:3246) |
2021-01-07 18:53:00 +0100 | knupfer | (~Thunderbi@200116b82cd91d00118d0874356b5bdf.dip.versatel-1u1.de) (Quit: knupfer) |
2021-01-07 18:53:01 +0100 | philopsos | (~caecilius@45.133.192.92) (Ping timeout: 264 seconds) |
2021-01-07 18:53:12 +0100 | knupfer | (~Thunderbi@200116b82cd91d00a040f802c5c7b27d.dip.versatel-1u1.de) |
2021-01-07 18:53:51 +0100 | knupfer | (~Thunderbi@200116b82cd91d00a040f802c5c7b27d.dip.versatel-1u1.de) (Client Quit) |
2021-01-07 18:53:58 +0100 | jamm | (~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds) |
2021-01-07 18:54:08 +0100 | knupfer | (~Thunderbi@200116b82cd91d00683ccaa8cd8c6c91.dip.versatel-1u1.de) |
2021-01-07 18:54:53 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) |
2021-01-07 18:55:22 +0100 | notzmv | (~user@unaffiliated/zmv) (Ping timeout: 256 seconds) |
2021-01-07 18:55:33 +0100 | unlink2 | (~unlink2@p200300ebcf259600e4593ff5d42812d3.dip0.t-ipconnect.de) (Remote host closed the connection) |
2021-01-07 18:57:08 +0100 | s00pcan | (~chris@075-133-056-178.res.spectrum.com) |
2021-01-07 18:57:17 +0100 | unlink2 | (~unlink2@p200300ebcf259600e4593ff5d42812d3.dip0.t-ipconnect.de) |
2021-01-07 18:58:01 +0100 | Guest_46 | (4f6ae69a@79.106.230.154) |
2021-01-07 18:58:31 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-01-07 18:59:32 +0100 | philopsos | (~caecilius@45.133.192.140) |
2021-01-07 19:00:04 +0100 | Guest_46 | (4f6ae69a@79.106.230.154) (Remote host closed the connection) |
2021-01-07 19:00:12 +0100 | Sheilong | (uid293653@gateway/web/irccloud.com/x-xrvpventptxcogxg) |
2021-01-07 19:01:47 +0100 | pavonia | (~user@unaffiliated/siracusa) (Quit: Bye!) |
2021-01-07 19:02:23 +0100 | nuvolo | (nuvolo@host-95-232-55-134.retail.telecomitalia.it) |
2021-01-07 19:02:54 +0100 | nuvolo | (nuvolo@host-95-232-55-134.retail.telecomitalia.it) () |
2021-01-07 19:03:18 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 260 seconds) |
2021-01-07 19:03:41 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
2021-01-07 19:03:49 +0100 | dandels | (~dandels@unaffiliated/dandels) (Ping timeout: 264 seconds) |
2021-01-07 19:04:38 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) |
2021-01-07 19:07:15 +0100 | ADG1089__ | (~aditya@171.79.107.193) (Quit: Konversation terminated!) |
2021-01-07 19:07:36 +0100 | chele | (~chele@ip5b40237d.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
2021-01-07 19:08:45 +0100 | atraii | (~atraii@c-98-32-64-84.hsd1.ut.comcast.net) (Quit: ZNC 1.7.5 - https://znc.in) |
2021-01-07 19:08:48 +0100 | madjestic | (~Android@86-88-72-244.fixed.kpn.net) (Quit: -a- Connection Timed Out) |
2021-01-07 19:09:02 +0100 | madjestic | (~Android@86-88-72-244.fixed.kpn.net) |
2021-01-07 19:09:03 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:e0a4:3836:b19:3d7) (Remote host closed the connection) |
2021-01-07 19:09:33 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 272 seconds) |
2021-01-07 19:10:10 +0100 | mizlan | (~michaella@c-67-169-7-31.hsd1.ca.comcast.net) (Quit: leaving) |
2021-01-07 19:10:48 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) |
2021-01-07 19:10:48 +0100 | Tario | (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
2021-01-07 19:11:14 +0100 | jamm | (~jamm@unaffiliated/jamm) |
2021-01-07 19:12:12 +0100 | Tario | (~Tario@201.192.165.173) |
2021-01-07 19:15:32 +0100 | ezrakilty | (~ezrakilty@75-172-99-84.tukw.qwest.net) |
2021-01-07 19:15:38 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 264 seconds) |
2021-01-07 19:17:26 +0100 | jespada | (~jespada@90.254.245.49) (Ping timeout: 264 seconds) |
2021-01-07 19:18:17 +0100 | ezrakilty | (~ezrakilty@75-172-99-84.tukw.qwest.net) (Read error: Connection reset by peer) |
2021-01-07 19:18:37 +0100 | ezrakilty | (~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 +0100 | jespada | (~jespada@90.254.245.49) |
2021-01-07 19:19:45 +0100 | mouseghost | (~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 +0100 | mirrorbird | (~psutcliff@2a00:801:42b:8314:3772:eb7f:91f1:698c) (Quit: Leaving) |
2021-01-07 19:19:53 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2021-01-07 19:20:30 +0100 | nineonine | (~nineonine@50.216.62.2) |
2021-01-07 19:20:44 +0100 | ezrakilt_ | (~ezrakilty@75-172-99-84.tukw.qwest.net) |
2021-01-07 19:22:14 +0100 | xff0x | (~fox@2001:1a81:5319:4600:235b:ce31:3a53:2cac) (Ping timeout: 264 seconds) |
2021-01-07 19:22:15 +0100 | ezrakilt_ | (~ezrakilty@75-172-99-84.tukw.qwest.net) (Read error: No route to host) |
2021-01-07 19:22:46 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-01-07 19:22:58 +0100 | xff0x | (~fox@2001:1a81:5319:4600:de4d:e10d:2b58:a372) |
2021-01-07 19:23:01 +0100 | ezrakilty | (~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 264 seconds) |
2021-01-07 19:23:08 +0100 | zebrag | (~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 +0100 | Tario | (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
2021-01-07 19:25:13 +0100 | Tario | (~Tario@200.119.186.55) |
2021-01-07 19:26:26 +0100 | shutdown_-h_now | (~arjan@2001:1c06:2d0b:2312:1c6c:f94b:408f:edd0) (Ping timeout: 264 seconds) |
2021-01-07 19:26:27 +0100 | Tario | (~Tario@200.119.186.55) (Read error: Connection reset by peer) |
2021-01-07 19:26:39 +0100 | Tario | (~Tario@201.192.165.173) |
2021-01-07 19:26:51 +0100 | jamm | (~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 +0100 | kaboom | (~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 +0100 | centril | (~centril@213-66-146-92-no250.tbcn.telia.com) (Ping timeout: 256 seconds) |
2021-01-07 19:30:55 +0100 | kobaam | (~manjaro-u@2601:285:c000:a6c0::4f77) |
2021-01-07 19:31:04 +0100 | kobaam | kaboom |
2021-01-07 19:31:24 +0100 | justsomeguy | (~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 +0100 | centril | (~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 +0100 | shutdown_-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 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:e0a4:3836:b19:3d7) |
2021-01-07 19:33:59 +0100 | mpereira | (~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 +0100 | aldum_ | (~vishera@catv-176-63-107-31.catv.broadband.hu) |
2021-01-07 19:34:44 +0100 | aldum | (~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 +0100 | philopsos | (~caecilius@45.133.192.140) (Ping timeout: 246 seconds) |
2021-01-07 19:35:18 +0100 | kw | (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 +0100 | christo | (~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 +0100 | rajivr | (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 +0100 | christo | (~chris@81.96.113.213) |
2021-01-07 19:38:23 +0100 | aldum_ | aldum|arbiter |
2021-01-07 19:38:25 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-01-07 19:38:26 +0100 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
2021-01-07 19:38:40 +0100 | christo | (~chris@81.96.113.213) |
2021-01-07 19:38:50 +0100 | geekosaur | (42d52137@66.213.33.55) (Ping timeout: 245 seconds) |
2021-01-07 19:40:21 +0100 | aldum | (~vishera@aldum.pw) |
2021-01-07 19:40:37 +0100 | aldum|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 +0100 | philopsos | (~caecilius@45.133.192.204) |
2021-01-07 19:43:44 +0100 | nomeata | (~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 +0100 | reactormonk | (~reactormo@mehl.schokokeks.org) (Quit: WeeChat 2.7.1) |
2021-01-07 19:46:14 +0100 | ubert | (~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 +0100 | reactormonk | (~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 +0100 | mirrorbird | (~psutcliff@2a00:801:42b:8314:3772:eb7f:91f1:698c) |
2021-01-07 19:48:05 +0100 | <ph88^> | oki |
2021-01-07 19:48:33 +0100 | safinaskar | (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 +0100 | mort | debian |
2021-01-07 19:53:14 +0100 | debian | mort |
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 +0100 | geekosaur | (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 +0100 | christo | (~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 +0100 | Lord_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 +0100 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Remote host closed the connection) |
2021-01-07 19:59:01 +0100 | Lord_of_Life | (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 264 seconds) |
2021-01-07 19:59:01 +0100 | Lord_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 +0100 | mpereira | (~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 +0100 | christo | (~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 +0100 | poljar1 | (~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 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2021-01-07 20:03:28 +0100 | berberman_ | (~berberman@unaffiliated/berberman) |
2021-01-07 20:03:44 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-01-07 20:03:58 +0100 | berberman | (~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 +0100 | poljar | (~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 +0100 | christo | (~chris@81.96.113.213) (Ping timeout: 256 seconds) |
2021-01-07 20:05:47 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) |
2021-01-07 20:07:13 +0100 | conal | (~conal@209.58.135.97) (Quit: Computer has gone to sleep.) |
2021-01-07 20:07:47 +0100 | notzmv | (~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 +0100 | abhixec | (~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 +0100 | rembo10 | (~rembo10@wally.codeshy.com) (Ping timeout: 256 seconds) |
2021-01-07 20:13:13 +0100 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 246 seconds) |
2021-01-07 20:13:22 +0100 | christo | (~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 +0100 | mirrorbird | (~psutcliff@2a00:801:42b:8314:3772:eb7f:91f1:698c) (Quit: Leaving) |
2021-01-07 20:16:36 +0100 | jpds_ | (~jpds@gateway/tor-sasl/jpds) |
2021-01-07 20:16:41 +0100 | xff0x | (~fox@2001:1a81:5319:4600:de4d:e10d:2b58:a372) (Ping timeout: 272 seconds) |
2021-01-07 20:16:43 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
2021-01-07 20:18:10 +0100 | xff0x | (~fox@141.98.255.147) |
2021-01-07 20:19:09 +0100 | conal | (~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 +0100 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving) |
2021-01-07 20:27:45 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 256 seconds) |
2021-01-07 20:29:18 +0100 | eacameron | (uid256985@gateway/web/irccloud.com/x-ruzyobnhrnktduyo) |
2021-01-07 20:29:43 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
2021-01-07 20:31:00 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit) |
2021-01-07 20:31:14 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 264 seconds) |
2021-01-07 20:32:10 +0100 | DavidEichmann | (~david@98.27.93.209.dyn.plus.net) (Remote host closed the connection) |
2021-01-07 20:32:33 +0100 | bor0 | (~boro@unaffiliated/boro/x-000000001) |
2021-01-07 20:33:24 +0100 | xff0x | (~fox@141.98.255.147) (Ping timeout: 256 seconds) |
2021-01-07 20:35:21 +0100 | xff0x | (~fox@2001:1a81:5319:4600:de4d:e10d:2b58:a372) |
2021-01-07 20:38:56 +0100 | ur | (5434a07f@tm.84.52.160.127.dc.cable.static.telemach.net) (Remote host closed the connection) |
2021-01-07 20:39:55 +0100 | nomeata | (~jojo@dslb-084-056-082-238.084.056.pools.vodafone-ip.de) (Quit: Client exiting) |
2021-01-07 20:41:22 +0100 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) |
2021-01-07 20:42:23 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) |
2021-01-07 20:43:34 +0100 | ania123 | (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 +0100 | coot | (~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 +0100 | chang | (~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 +0100 | knupfer | (~Thunderbi@200116b82cd91d00683ccaa8cd8c6c91.dip.versatel-1u1.de) (Remote host closed the connection) |
2021-01-07 20:55:57 +0100 | knupfer | (~Thunderbi@200116b82cd91d00740f98776c0c342e.dip.versatel-1u1.de) |
2021-01-07 20:56:02 +0100 | Franciman | (~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 +0100 | kaboom | (~manjaro-u@2601:285:c000:a6c0::4f77) (Remote host closed the connection) |
2021-01-07 20:58:48 +0100 | mpereira | (~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 +0100 | v_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 +0100 | v_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 +0100 | conal | (~conal@198.8.81.89) (Quit: Computer has gone to sleep.) |
2021-01-07 21:02:40 +0100 | p-core | (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Quit: p-core) |
2021-01-07 21:02:41 +0100 | conal | (~conal@198.8.81.89) |
2021-01-07 21:02:49 +0100 | conal | (~conal@198.8.81.89) (Client Quit) |
2021-01-07 21:03:03 +0100 | p-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 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 272 seconds) |
2021-01-07 21:06:16 +0100 | fendor_ | fendor |
2021-01-07 21:06:31 +0100 | vs^ | (~hph@ip98-184-89-2.mc.at.cox.net) |
2021-01-07 21:11:08 +0100 | coot | (~coot@37.30.55.132.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
2021-01-07 21:11:58 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) |
2021-01-07 21:12:05 +0100 | dandart | (~Thunderbi@home.dandart.co.uk) |
2021-01-07 21:12:35 +0100 | geekosaur | (42d52137@66.213.33.55) (Ping timeout: 245 seconds) |
2021-01-07 21:14:15 +0100 | kw | (88388c02@136.56.140.2) (Ping timeout: 245 seconds) |
2021-01-07 21:18:03 +0100 | rayyyy | (~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds) |
2021-01-07 21:19:15 +0100 | conal | (~conal@107.181.166.202) |
2021-01-07 21:20:06 +0100 | ransom | (~c4264035@8.48.134.54) |
2021-01-07 21:20:26 +0100 | p-core | (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Remote host closed the connection) |
2021-01-07 21:21:28 +0100 | aenesidemus_ | (~aenesidem@c-73-53-247-25.hsd1.fl.comcast.net) (Read error: Connection reset by peer) |
2021-01-07 21:23:06 +0100 | geekosaur | (42d52137@66.213.33.55) |
2021-01-07 21:23:06 +0100 | kupi | (uid212005@gateway/web/irccloud.com/x-zsinuyuwufxnleoc) |
2021-01-07 21:23:58 +0100 | madjesti1 | (~madjestic@86-88-72-244.fixed.kpn.net) (Ping timeout: 265 seconds) |
2021-01-07 21:24:05 +0100 | bor0 | (~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 +0100 | dfeuer | (~dfeuer@pool-173-79-253-62.washdc.fios.verizon.net) (Ping timeout: 256 seconds) |
2021-01-07 21:26:56 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
2021-01-07 21:28:06 +0100 | ransom | (~c4264035@8.48.134.54) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-01-07 21:29:01 +0100 | madjesti1 | (~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 +0100 | Rembane | nods |
2021-01-07 21:32:57 +0100 | peterstorm[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 +0100 | mpereira | (~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 +0100 | ania123 | (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 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) |
2021-01-07 21:37:55 +0100 | EncodePanda | (b9eeefcd@185.238.239.205) |
2021-01-07 21:38:12 +0100 | carbolymer_ | carbolymer |
2021-01-07 21:38:52 +0100 | jollygood2 | (~bc812391@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout)) |
2021-01-07 21:38:54 +0100 | pedrorubster[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 +0100 | p-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 +0100 | kuribas | (~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 +0100 | koala_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 +0100 | koala_man | (~vidar@157.146.251.23.bc.googleusercontent.com) |
2021-01-07 21:44:29 +0100 | koala_man | (~vidar@157.146.251.23.bc.googleusercontent.com) (Changing host) |
2021-01-07 21:44:29 +0100 | koala_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 +0100 | hekkaidekapus_ | (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds) |
2021-01-07 21:48:14 +0100 | hekkaidekapus_ | (~tchouri@gateway/tor-sasl/hekkaidekapus) |
2021-01-07 21:48:58 +0100 | knupfer | (~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 +0100 | usr25 | (~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 +0100 | koala_man | (~vidar@unaffiliated/koala-man/x-2491903) (Quit: I'm gonna win SETI@home.) |
2021-01-07 21:53:05 +0100 | koala_man | (~vidar@157.146.251.23.bc.googleusercontent.com) |
2021-01-07 21:53:05 +0100 | koala_man | (~vidar@157.146.251.23.bc.googleusercontent.com) (Changing host) |
2021-01-07 21:53:05 +0100 | koala_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 +0100 | fryguybob | (~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 +0100 | justanotheruser | (~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 +0100 | Jd007 | (~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 +0100 | conal | (~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 +0100 | conal | (~conal@107.181.166.202) |
2021-01-07 22:02:20 +0100 | conal | (~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 +0100 | Jd007 | (~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 +0100 | v_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 +0100 | conal | (~conal@107.181.166.202) |
2021-01-07 22:04:23 +0100 | conal | (~conal@107.181.166.202) (Client Quit) |
2021-01-07 22:04:54 +0100 | conal | (~conal@107.181.166.202) |
2021-01-07 22:05:07 +0100 | conal | (~conal@107.181.166.202) (Client Quit) |
2021-01-07 22:05:09 +0100 | Vulfe | (~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 +0100 | Feuermagier | (~Feuermagi@213.178.26.41) (Remote host closed the connection) |
2021-01-07 22:13:21 +0100 | Vulfe | (~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 +0100 | stalactite[m] | (stalactite@gateway/shell/matrix.org/x-hmsdktjbvicqrdgd) ("User left") |
2021-01-07 22:20:04 +0100 | fosterite | (~fosterite@2600:6c46:7800:fecf:391b:8118:5f04:a726) (Remote host closed the connection) |
2021-01-07 22:20:41 +0100 | fosterite | (~fosterite@2600:6c46:7800:fecf:391b:8118:5f04:a726) |
2021-01-07 22:22:39 +0100 | vs^ | (~hph@ip98-184-89-2.mc.at.cox.net) () |
2021-01-07 22:23:01 +0100 | fosterit_ | (~fosterite@2600:6c46:7800:fecf:8d97:96be:d9ba:bbf8) |
2021-01-07 22:23:11 +0100 | son0p | (~son0p@181.136.122.143) |
2021-01-07 22:25:08 +0100 | fosterite | (~fosterite@2600:6c46:7800:fecf:391b:8118:5f04:a726) (Ping timeout: 260 seconds) |
2021-01-07 22:26:24 +0100 | conal | (~conal@66.115.157.52) |
2021-01-07 22:26:35 +0100 | knupfer | (~Thunderbi@200116b82cd91d0000b84afffea44c4a.dip.versatel-1u1.de) |
2021-01-07 22:27:02 +0100 | conal | (~conal@66.115.157.52) (Client Quit) |
2021-01-07 22:28:14 +0100 | fosterit_ | (~fosterite@2600:6c46:7800:fecf:8d97:96be:d9ba:bbf8) (Ping timeout: 264 seconds) |
2021-01-07 22:28:42 +0100 | usr25 | (~usr25@unaffiliated/usr25) (Quit: Leaving) |
2021-01-07 22:28:59 +0100 | knupfer | (~Thunderbi@200116b82cd91d0000b84afffea44c4a.dip.versatel-1u1.de) (Remote host closed the connection) |
2021-01-07 22:29:10 +0100 | usr25 | (~usr25@unaffiliated/usr25) |
2021-01-07 22:29:13 +0100 | knupfer | (~Thunderbi@200116b82cd91d004d86847a3f67d3a4.dip.versatel-1u1.de) |
2021-01-07 22:29:54 +0100 | usr25 | usr25_tm |
2021-01-07 22:32:06 +0100 | ransom | (~c4264035@8.48.134.54) |
2021-01-07 22:36:56 +0100 | pera | (~pera@unaffiliated/pera) (Ping timeout: 256 seconds) |
2021-01-07 22:37:45 +0100 | madjesti1 | (~madjestic@86-88-72-244.fixed.kpn.net) (Quit: Lost terminal) |
2021-01-07 22:38:40 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
2021-01-07 22:42:32 +0100 | geekosaur | (42d52137@66.213.33.55) (Remote host closed the connection) |
2021-01-07 22:43:01 +0100 | ransom_ | (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) |
2021-01-07 22:43:12 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-01-07 22:45:38 +0100 | ransom | (~c4264035@8.48.134.54) (Ping timeout: 272 seconds) |
2021-01-07 22:47:43 +0100 | merijn | (~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 +0100 | Deide | (~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 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-01-07 23:01:10 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
2021-01-07 23:01:59 +0100 | ransom_ | (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-01-07 23:02:39 +0100 | ransom | (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) |
2021-01-07 23:03:13 +0100 | Guest28673 | (~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 +0100 | dhouthoo | (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9) |
2021-01-07 23:07:05 +0100 | tsrt^ | (~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 +0100 | Tops2 | (~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 +0100 | daenth | (~daenth@136.36.157.210) (Quit: ZNC 1.7.5 - https://znc.in) |
2021-01-07 23:12:58 +0100 | Alleria | (~textual@2603-7000-3040-0000-4912-c872-cb3c-e0ab.res6.spectrum.com) |
2021-01-07 23:13:22 +0100 | Alleria | Guest95725 |
2021-01-07 23:14:36 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-01-07 23:14:57 +0100 | pavonia | (~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 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-01-07 23:16:46 +0100 | dandart | (~Thunderbi@home.dandart.co.uk) (Quit: dandart) |
2021-01-07 23:21:18 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-01-07 23:21:35 +0100 | mirrorbird | (~psutcliff@2a00:801:42b:8314:3772:eb7f:91f1:698c) |
2021-01-07 23:22:25 +0100 | mirrorbird | (~psutcliff@2a00:801:42b:8314:3772:eb7f:91f1:698c) (Remote host closed the connection) |
2021-01-07 23:22:30 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2021-01-07 23:23:02 +0100 | christo | (~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 +0100 | edrx | (~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 +0100 | ubert | (~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 +0100 | christo | (~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 +0100 | EncodePanda | (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 +0100 | dandart | (~Thunderbi@home.dandart.co.uk) |
2021-01-07 23:34:22 +0100 | Ariakenom | (~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 +0100 | fosterite | (~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 +0100 | chang | (~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 +0100 | dandart | (~Thunderbi@home.dandart.co.uk) (Client Quit) |
2021-01-07 23:36:34 +0100 | pie_ | looks at paste |
2021-01-07 23:37:50 +0100 | christo | (~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 +0100 | Guest95725 | (~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 +0100 | geowiesnot | (~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 +0100 | hyperisco | (~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 +0100 | fosterite | (~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 +0100 | dandels | (~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 +0100 | chang | (~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 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 272 seconds) |
2021-01-07 23:50:43 +0100 | mpereira | (~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) |
2021-01-07 23:51:21 +0100 | dandart | (~Thunderbi@home.dandart.co.uk) |
2021-01-07 23:53:09 +0100 | DavidEichmann | (~david@98.27.93.209.dyn.plus.net) |
2021-01-07 23:56:10 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-01-07 23:56:20 +0100 | usr25_tm | (~usr25@unaffiliated/usr25) (Quit: Leaving) |
2021-01-07 23:56:35 +0100 | Alleria__ | (~textual@2603-7000-3040-0000-dc9b-805c-a211-54dd.res6.spectrum.com) |
2021-01-07 23:58:43 +0100 | dandart | (~Thunderbi@home.dandart.co.uk) (Remote host closed the connection) |
2021-01-07 23:58:59 +0100 | xff0x | (~fox@2001:1a81:5319:4600:de4d:e10d:2b58:a372) (Ping timeout: 272 seconds) |
2021-01-07 23:59:16 +0100 | xff0x | (~fox@2001:1a81:5319:4600:de4d:e10d:2b58:a372) |