2020-12-20 00:03:54 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:9d9f:2423:b563:76e5) |
2020-12-20 00:05:24 +0100 | Varis | (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
2020-12-20 00:05:59 +0100 | fendor | (~fendor@178.115.130.51.wireless.dyn.drei.com) (Remote host closed the connection) |
2020-12-20 00:09:01 +0100 | urek | (~urek@2804:7f1:e10a:f71b:1d25:d790:4162:b2ba) |
2020-12-20 00:13:00 +0100 | <ggVGc> | great... wondered why my application was using 11gb of memory... LazyBS.writeFile |
2020-12-20 00:13:03 +0100 | <ggVGc> | :( |
2020-12-20 00:13:15 +0100 | kam1 | (~kam1@24.231.108.143) |
2020-12-20 00:13:21 +0100 | <ggVGc> | why does lazy IO even exist |
2020-12-20 00:13:35 +0100 | <c_wraith> | that isn't lazy IO |
2020-12-20 00:13:54 +0100 | <c_wraith> | when it completes execution, arguments will have been fully evaluated |
2020-12-20 00:14:08 +0100 | <c_wraith> | (and the return value, for that matter) |
2020-12-20 00:14:35 +0100 | <hpc> | more precisely, execution of writeFile isn't dependent on another expression being evaluated |
2020-12-20 00:15:10 +0100 | <c_wraith> | it's possible lazy bytestrings with lots of thunks in them are your problem |
2020-12-20 00:15:23 +0100 | <c_wraith> | Bute it's not writeFile causing it. |
2020-12-20 00:15:45 +0100 | <c_wraith> | It's writeFile forcing their evaluation. Which causes some profiling modes to report it as the primary cost center |
2020-12-20 00:16:02 +0100 | <gentauro> | 00:13 < ggVGc> great... wondered why my application was using 11gb of memory... LazyBS.writeFile |
2020-12-20 00:16:21 +0100 | <gentauro> | ggVGc: you are still far away from the 23 GB mem leak of `taffybar` on my laptop :P |
2020-12-20 00:16:33 +0100 | <gentauro> | (I guess having 64 GB helps with running Haskell stuff) |
2020-12-20 00:16:52 +0100 | <gentauro> | I even let the mem leak stay there for a few weeks just because I could xD |
2020-12-20 00:20:22 +0100 | <gentauro> | c_wraith: so the best way to handle ByteString should be doing a `LBS.ByteString` -> `BS.ByteString` and then call `writeFile`? |
2020-12-20 00:20:34 +0100 | <c_wraith> | that's not going to fix anything |
2020-12-20 00:20:52 +0100 | <c_wraith> | It's just going to change where the massive thunk buildup is evaluated |
2020-12-20 00:21:00 +0100 | <c_wraith> | The fix is to not build up thunks |
2020-12-20 00:21:00 +0100 | elliott__ | (~elliott@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 256 seconds) |
2020-12-20 00:21:06 +0100 | <dolio> | It's a good thing lazy IO exists, or all the people who use it as a scapegoat for their real problems might have to figure out what's actuall wrong. |
2020-12-20 00:22:50 +0100 | elliott__ | (~elliott@pool-108-51-101-42.washdc.fios.verizon.net) |
2020-12-20 00:23:08 +0100 | coot | (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
2020-12-20 00:24:41 +0100 | Welkin | (~Welkin@216.243.35.47) |
2020-12-20 00:24:51 +0100 | <ggVGc> | c_wraith: hm, yeah, I thought it was weird... And it's possible changing it also had some other effect. But I did get my memory usage down to a stable level |
2020-12-20 00:24:58 +0100 | <ggVGc> | hence I have now stopped investigating |
2020-12-20 00:25:45 +0100 | <ggVGc> | I guess I did move some other things around that might have affected laziness when changing things to try to pinpoint what was happening |
2020-12-20 00:25:49 +0100 | <Welkin> | user count dropped since I was last on here 6-9 months ago |
2020-12-20 00:26:08 +0100 | hackage | (mniip@haskell/bot/hackage) (Read error: Connection reset by peer) |
2020-12-20 00:26:31 +0100 | aoei | (~aoei@li2174-104.members.linode.com) (Quit: ZNC 1.7.5 - https://znc.in) |
2020-12-20 00:26:32 +0100 | nitrix | (~nitrix@haskell/developer/nitrix) (Remote host closed the connection) |
2020-12-20 00:26:40 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:9d9f:2423:b563:76e5) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-20 00:26:45 +0100 | hackage | (mniip@haskell/bot/hackage) |
2020-12-20 00:26:45 +0100 | nitrix | (~nitrix@haskell/developer/nitrix) |
2020-12-20 00:26:46 +0100 | aoei | (~aoei@li2174-104.members.linode.com) |
2020-12-20 00:28:25 +0100 | theorbtwo | (~theorb@cpc81822-swin19-2-0-cust3.3-1.cable.virginm.net) |
2020-12-20 00:28:40 +0100 | Varis | (~Tadas@unaffiliated/varis) |
2020-12-20 00:28:56 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2020-12-20 00:35:44 +0100 | ddellacosta | (dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 260 seconds) |
2020-12-20 00:37:37 +0100 | shutdown_-h_now | (~arjan@2001:1c06:2d0b:2312:b430:7c21:4c6a:15a8) (Ping timeout: 272 seconds) |
2020-12-20 00:41:16 +0100 | philopso1 | (~caecilius@gateway/tor-sasl/caecilius) |
2020-12-20 00:43:00 +0100 | shutdown_-h_now | (~arjan@2001:1c06:2d0b:2312:438:f47:3e76:14d7) |
2020-12-20 00:43:15 +0100 | kam1 | (~kam1@24.231.108.143) (Read error: Connection reset by peer) |
2020-12-20 00:44:43 +0100 | philopsos | (~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds) |
2020-12-20 00:47:38 +0100 | brodie | (~brodie@207.53.253.137) (Ping timeout: 256 seconds) |
2020-12-20 00:52:44 +0100 | geowiesnot | (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds) |
2020-12-20 00:55:40 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-20 00:57:20 +0100 | nowhere_man | (~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155) |
2020-12-20 00:58:08 +0100 | m0rphism | (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Quit: WeeChat 2.7.1) |
2020-12-20 00:59:54 +0100 | boxscape | (4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) |
2020-12-20 01:00:10 +0100 | <boxscape> | :t \f -> fmap join . traverse f |
2020-12-20 01:00:15 +0100 | <lambdabot> | (Monad m, Traversable m, Applicative f) => (a1 -> f (m a2)) -> m a1 -> f (m a2) |
2020-12-20 01:00:21 +0100 | <boxscape> | is there a better function for this? |
2020-12-20 01:00:42 +0100 | shatriff | (~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection) |
2020-12-20 01:00:56 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2020-12-20 01:01:17 +0100 | shatriff | (~vitaliish@176-52-216-242.irishtelecom.com) |
2020-12-20 01:01:17 +0100 | <hpc> | :t (fmap join .) |
2020-12-20 01:01:19 +0100 | <lambdabot> | (Monad m, Functor f) => (a1 -> f (m (m a2))) -> a1 -> f (m a2) |
2020-12-20 01:02:13 +0100 | sakirious | (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) |
2020-12-20 01:02:30 +0100 | <hpc> | if you're looking for something predefined, probably not? |
2020-12-20 01:02:37 +0100 | <boxscape> | hm, okay |
2020-12-20 01:04:17 +0100 | cosimone | (~cosimone@2001:b07:ae5:db26:1fb3:ef3f:ece2:c6f8) (Ping timeout: 260 seconds) |
2020-12-20 01:06:27 +0100 | <nowhere_man> | Hi everyone |
2020-12-20 01:07:03 +0100 | <nowhere_man> | I'm writing a bot for a Codingame challenge, and I want to write a function whose type should be recursive IIUC |
2020-12-20 01:07:22 +0100 | <nowhere_man> | I'm having a hard time understanding how to use Fix for that |
2020-12-20 01:08:16 +0100 | <nowhere_man> | I want a function with type akin to: type Strategy = State -> (Order, Strategy) |
2020-12-20 01:09:08 +0100 | <hpc> | so, at the value level, imagine you have something like |
2020-12-20 01:09:13 +0100 | <hpc> | ones = 1 : ones |
2020-12-20 01:09:27 +0100 | <hpc> | to turn that into something using fix, you turn it into a function |
2020-12-20 01:09:31 +0100 | <hpc> | ones x = 1 : x |
2020-12-20 01:09:37 +0100 | <hpc> | or just (1 :) |
2020-12-20 01:09:38 +0100 | <hpc> | and then fix that |
2020-12-20 01:09:42 +0100 | <hpc> | > fix (1 :) |
2020-12-20 01:09:45 +0100 | <lambdabot> | [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1... |
2020-12-20 01:09:50 +0100 | <boxscape> | does it have to be Fix as opposed to something like newtype Strategy = Strategy (State -> (Order, Strategy))? |
2020-12-20 01:09:55 +0100 | <hpc> | do the same thing at the type level with your type, and then Fix it |
2020-12-20 01:10:39 +0100 | <hpc> | you might not necessarily need Fix for this though, yeah |
2020-12-20 01:11:04 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:9d9f:2423:b563:76e5) |
2020-12-20 01:11:45 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
2020-12-20 01:12:07 +0100 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving) |
2020-12-20 01:12:32 +0100 | hiroaki | (~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de) (Ping timeout: 265 seconds) |
2020-12-20 01:13:06 +0100 | <nowhere_man> | I tried this : |
2020-12-20 01:13:07 +0100 | <nowhere_man> | data Fix f = Fix (f (Fix f)) |
2020-12-20 01:13:12 +0100 | <nowhere_man> | type Strategy a = Int -> (Bool, a) |
2020-12-20 01:13:16 +0100 | <nowhere_man> | type ActualStrategy = Fix Strategy |
2020-12-20 01:13:20 +0100 | <nowhere_man> | but I get: |
2020-12-20 01:13:29 +0100 | <nowhere_man> | The type synonym ‘Strategy’ should have 1 argument, but has been given none |
2020-12-20 01:16:05 +0100 | <hpc> | type synonyms need to be fully applied |
2020-12-20 01:16:09 +0100 | <hpc> | use a newtype instead |
2020-12-20 01:17:43 +0100 | <nowhere_man> | newtype Strategy a = Int -> (Bool, a) gets me error: parse error on input ‘->’ |
2020-12-20 01:18:00 +0100 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 256 seconds) |
2020-12-20 01:18:13 +0100 | <nowhere_man> | and newtype ActualStrategy = Fix Strategy gets me Expecting one more argument to ‘Strategy’ |
2020-12-20 01:18:31 +0100 | <hpc> | needs a constructor - newtype Strategy a = Strategy (Int -> (Bool, a)) |
2020-12-20 01:18:42 +0100 | <hpc> | ActualStrategy i think can stay as a type alias here |
2020-12-20 01:19:04 +0100 | <hpc> | personally, i would avoid using type aliases to learn this stuff |
2020-12-20 01:19:11 +0100 | <hpc> | it just makes it harder to see what the real types are |
2020-12-20 01:23:14 +0100 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
2020-12-20 01:23:26 +0100 | kam1 | (~kam1@24.231.108.143) |
2020-12-20 01:24:09 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2020-12-20 01:24:10 +0100 | xlei | (znc@unaffiliated/xlei) (Ping timeout: 246 seconds) |
2020-12-20 01:25:43 +0100 | <solonarv> | you don't need a type alias, and you don't need to explicitly use Fix either |
2020-12-20 01:26:04 +0100 | <solonarv> | newtype Strategy = Strategy (State -> (Order, Strategy)) -- this works just fine |
2020-12-20 01:26:09 +0100 | <nowhere_man> | but then, what should be the type of my function? |
2020-12-20 01:27:51 +0100 | jedws | (~jedws@121.209.189.201) |
2020-12-20 01:27:51 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:9d9f:2423:b563:76e5) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-20 01:27:58 +0100 | <nowhere_man> | because if I use ActualStrategy with the following definition: strategy num = (odd num, strategy) |
2020-12-20 01:28:21 +0100 | <nowhere_man> | Couldn't match expected type ‘Fix FixStrategy'’ |
2020-12-20 01:28:22 +0100 | <nowhere_man> | with actual type ‘p0 -> p1 -> (MyOrder, FixStrategy)’ |
2020-12-20 01:28:28 +0100 | <nowhere_man> | ha, shit |
2020-12-20 01:29:22 +0100 | <nowhere_man> | Couldn't match expected type ‘Fix ActualStrategy' with actual type 'p0 -> (Bool, ActualStrategy)' |
2020-12-20 01:30:20 +0100 | solarliner | (~solarline@243.81.10.109.rev.sfr.net) |
2020-12-20 01:31:24 +0100 | elfets | (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving) |
2020-12-20 01:32:13 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-20 01:33:20 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:9d9f:2423:b563:76e5) |
2020-12-20 01:35:17 +0100 | <solonarv> | I would recommend avoiding Fix, it doesn't do anything useful here |
2020-12-20 01:36:20 +0100 | <nowhere_man> | is there a way to type that function? |
2020-12-20 01:37:23 +0100 | solarliner | (~solarline@243.81.10.109.rev.sfr.net) (Remote host closed the connection) |
2020-12-20 01:37:30 +0100 | fuzzypixelz | (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) |
2020-12-20 01:38:00 +0100 | niHiggim | (~niHiggim@98.122.188.27) |
2020-12-20 01:39:16 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:e26e:cf9:1dd6:9615) (Ping timeout: 258 seconds) |
2020-12-20 01:39:45 +0100 | <nowhere_man> | I have zero emotional attachment to Fix ;-) |
2020-12-20 01:39:57 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) (Remote host closed the connection) |
2020-12-20 01:40:52 +0100 | niHiggim | (~niHiggim@98.122.188.27) (Remote host closed the connection) |
2020-12-20 01:41:07 +0100 | <solonarv> | I already suggested the right type above |
2020-12-20 01:41:19 +0100 | <solonarv> | newtype Strategy = Strategy (State -> (Order, Strategy)) |
2020-12-20 01:41:28 +0100 | ddellacosta | (dd@gateway/vpn/mullvad/ddellacosta) |
2020-12-20 01:42:04 +0100 | <boxscape> | to be clear the type of the function in that case is simply `Strategy` |
2020-12-20 01:42:13 +0100 | <solonarv> | yes |
2020-12-20 01:44:05 +0100 | z0 | (~z0@188.251.64.220) (Quit: leaving) |
2020-12-20 01:47:29 +0100 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 260 seconds) |
2020-12-20 01:48:26 +0100 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
2020-12-20 01:52:03 +0100 | _linker_ | (~linker@2a02:a31a:a041:9a80:6084:8b0:6bec:7d) (Remote host closed the connection) |
2020-12-20 01:52:49 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:b5ee:dfae:b902:5746) |
2020-12-20 01:54:16 +0100 | <nowhere_man> | okayyyyyy |
2020-12-20 01:54:23 +0100 | <nowhere_man> | thx solonarv |
2020-12-20 02:00:47 +0100 | m0rphism | (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) |
2020-12-20 02:01:03 +0100 | andreas303 | (~andreas@gateway/tor-sasl/andreas303) (Ping timeout: 240 seconds) |
2020-12-20 02:04:42 +0100 | kam1 | (~kam1@24.231.108.143) (Ping timeout: 260 seconds) |
2020-12-20 02:04:51 +0100 | andreas303 | (~andreas@gateway/tor-sasl/andreas303) |
2020-12-20 02:06:16 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2020-12-20 02:09:23 +0100 | jb55 | (~jb55@gateway/tor-sasl/jb55) (Ping timeout: 240 seconds) |
2020-12-20 02:09:28 +0100 | FreeBirdLjj | (~freebirdl@101.87.168.174) |
2020-12-20 02:10:41 +0100 | <boxscape> | @src fix |
2020-12-20 02:10:42 +0100 | <lambdabot> | fix f = let x = f x in x |
2020-12-20 02:11:05 +0100 | <boxscape> | why is it usually defined in this way rather than fix f = f (fix f)? something about sharing maybe? |
2020-12-20 02:11:50 +0100 | <solonarv> | boxscape: precisely |
2020-12-20 02:12:06 +0100 | <boxscape> | how exactly does sharing play into this? |
2020-12-20 02:12:42 +0100 | <solonarv> | the first form allocates a single thunk, 'x', that refers to itself |
2020-12-20 02:13:30 +0100 | <solonarv> | the second form first has to be translated into ANF: fix f = let y = fix f in f y |
2020-12-20 02:15:15 +0100 | <boxscape> | Ah, Isee |
2020-12-20 02:15:42 +0100 | <boxscape> | thanks |
2020-12-20 02:16:18 +0100 | <boxscape> | This ANF (administrative normal form?) is something that's required for STG? |
2020-12-20 02:16:34 +0100 | jb55 | (~jb55@gateway/tor-sasl/jb55) |
2020-12-20 02:16:52 +0100 | <solonarv> | STG is always in ANF, so basically yes |
2020-12-20 02:16:57 +0100 | <boxscape> | okay |
2020-12-20 02:17:14 +0100 | Welkin | (~Welkin@216.243.35.47) (Ping timeout: 260 seconds) |
2020-12-20 02:17:17 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:9d9f:2423:b563:76e5) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-20 02:19:41 +0100 | Lycurgus | (~niemand@cpe-45-46-137-210.buffalo.res.rr.com) |
2020-12-20 02:26:10 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Remote host closed the connection) |
2020-12-20 02:27:36 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:9d9f:2423:b563:76e5) |
2020-12-20 02:28:20 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Ping timeout: 256 seconds) |
2020-12-20 02:32:56 +0100 | columbarius | (~columbari@i5E86B362.versanet.de) (Ping timeout: 240 seconds) |
2020-12-20 02:33:14 +0100 | xcmw | (~textual@2603-6011-2200-f103-cdbc-9ec6-8319-9dc9.res6.spectrum.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-20 02:34:29 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-20 02:35:18 +0100 | columbarius | (~columbari@87.123.198.237) |
2020-12-20 02:38:16 +0100 | ddellacosta | (dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 240 seconds) |
2020-12-20 02:39:54 +0100 | kam1 | (~kam1@24.231.108.143) |
2020-12-20 02:40:01 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2020-12-20 02:40:20 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) |
2020-12-20 02:40:40 +0100 | boxscape | (4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Quit: Connection closed) |
2020-12-20 02:43:56 +0100 | boxscape | (4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) |
2020-12-20 02:44:14 +0100 | jedws | (~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-20 02:44:57 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) (Ping timeout: 260 seconds) |
2020-12-20 02:46:28 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:9d9f:2423:b563:76e5) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-20 02:50:51 +0100 | sMuNiX | (~sMuNiX@vlnsm8-montreal02-142-122-8-233.internet.virginmobile.ca) |
2020-12-20 02:51:23 +0100 | Lord_of_Life_ | (~Lord@unaffiliated/lord-of-life/x-0885362) |
2020-12-20 02:52:25 +0100 | Lord_of_Life | (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 240 seconds) |
2020-12-20 02:52:33 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) |
2020-12-20 02:52:44 +0100 | Lord_of_Life_ | Lord_of_Life |
2020-12-20 02:57:28 +0100 | bitmagie | (~Thunderbi@200116b8060b130001a0e879def0d467.dip.versatel-1u1.de) |
2020-12-20 02:58:47 +0100 | kam1 | (~kam1@24.231.108.143) (Remote host closed the connection) |
2020-12-20 02:59:06 +0100 | kam1 | (~kam1@24.231.108.143) |
2020-12-20 02:59:12 +0100 | Wuzzy | (~Wuzzy@p5b0dfe65.dip0.t-ipconnect.de) (Remote host closed the connection) |
2020-12-20 03:02:52 +0100 | xff0x_ | (~fox@2001:1a81:533f:8600:c719:1424:71ec:9a95) |
2020-12-20 03:04:15 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:a111:468a:beb5:7acf) |
2020-12-20 03:05:27 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) |
2020-12-20 03:06:13 +0100 | xff0x | (~fox@port-92-195-45-54.dynamic.as20676.net) (Ping timeout: 264 seconds) |
2020-12-20 03:06:32 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2020-12-20 03:13:04 +0100 | hidedagger | (~nate@unaffiliated/hidedagger) |
2020-12-20 03:14:38 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-20 03:18:36 +0100 | jmchael | (~jmchael@81.174.180.109) (Ping timeout: 240 seconds) |
2020-12-20 03:28:07 +0100 | xsperry | (~as@unaffiliated/xsperry) (Remote host closed the connection) |
2020-12-20 03:29:09 +0100 | Gurkenglas_ | (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 268 seconds) |
2020-12-20 03:31:09 +0100 | nowhere_man | (~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155) (Ping timeout: 272 seconds) |
2020-12-20 03:31:49 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Remote host closed the connection) |
2020-12-20 03:31:58 +0100 | kam1 | (~kam1@24.231.108.143) (Ping timeout: 256 seconds) |
2020-12-20 03:32:57 +0100 | nowhere_man | (~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155) |
2020-12-20 03:33:21 +0100 | retr0_ | (~retr0@2405:201:c01a:700a:90eb:8710:3ff2:3716) |
2020-12-20 03:33:25 +0100 | <retr0_> | hi |
2020-12-20 03:34:00 +0100 | retr0_ | (~retr0@2405:201:c01a:700a:90eb:8710:3ff2:3716) ("Leaving") |
2020-12-20 03:35:26 +0100 | FreeBirdLjj | (~freebirdl@101.87.168.174) (Remote host closed the connection) |
2020-12-20 03:37:25 +0100 | kam1 | (~kam1@24.231.108.143) |
2020-12-20 03:39:11 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
2020-12-20 03:39:48 +0100 | Lycurgus | (~niemand@cpe-45-46-137-210.buffalo.res.rr.com) (Quit: Exeunt) |
2020-12-20 03:45:17 +0100 | ADG1089_ | (~adg1089@171.76.183.207) |
2020-12-20 03:48:43 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
2020-12-20 03:48:45 +0100 | ADG1089_ | (~adg1089@171.76.183.207) (Read error: Connection reset by peer) |
2020-12-20 03:53:02 +0100 | Mikagami | (~MOSCOS@122.54.107.175) |
2020-12-20 03:53:15 +0100 | Welkin | (~Welkin@216.243.35.47) |
2020-12-20 03:53:30 +0100 | columbarius | (~columbari@87.123.198.237) (Ping timeout: 256 seconds) |
2020-12-20 03:55:05 +0100 | MOSCOS | (~MOSCOS@122.54.107.175) (Ping timeout: 240 seconds) |
2020-12-20 03:55:18 +0100 | wagle | (~wagle@quassel.wagle.io) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) |
2020-12-20 03:55:50 +0100 | wagle | (~wagle@quassel.wagle.io) |
2020-12-20 03:58:19 +0100 | m0rphism | (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 265 seconds) |
2020-12-20 04:02:13 +0100 | columbarius | (~columbari@87.123.198.237) |
2020-12-20 04:05:14 +0100 | ADG1089_ | (~adg1089@171.76.183.207) |
2020-12-20 04:05:15 +0100 | sw1nn | (~sw1nn@host86-164-184-101.range86-164.btcentralplus.com) (Ping timeout: 256 seconds) |
2020-12-20 04:07:30 +0100 | hcchien | (~hcchien@s91904426.blix.com) |
2020-12-20 04:07:33 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:a111:468a:beb5:7acf) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-20 04:10:25 +0100 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds) |
2020-12-20 04:11:52 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) |
2020-12-20 04:12:04 +0100 | sagax | (~sagax_nb@213.138.71.146) (Read error: Connection reset by peer) |
2020-12-20 04:13:16 +0100 | fuzzypixelz | (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: fuzzypixelz) |
2020-12-20 04:15:21 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:a111:468a:beb5:7acf) |
2020-12-20 04:16:52 +0100 | theDon | (~td@94.134.91.83) (Ping timeout: 272 seconds) |
2020-12-20 04:17:56 +0100 | sw1nn | (~sw1nn@2a00:23c6:2385:3a00:55:615d:2b49:d448) |
2020-12-20 04:18:33 +0100 | theDon | (~td@94.134.91.11) |
2020-12-20 04:19:09 +0100 | xcmw | (~textual@2603-6011-2200-f103-cdbc-9ec6-8319-9dc9.res6.spectrum.com) |
2020-12-20 04:21:00 +0100 | xirhtogal | (~lagothrix@unaffiliated/lagothrix) |
2020-12-20 04:21:00 +0100 | lagothrix | (~lagothrix@unaffiliated/lagothrix) (Killed (verne.freenode.net (Nickname regained by services))) |
2020-12-20 04:21:00 +0100 | xirhtogal | lagothrix |
2020-12-20 04:22:23 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-20 04:27:06 +0100 | toorevitimirp | (~tooreviti@117.182.182.252) |
2020-12-20 04:27:44 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
2020-12-20 04:27:44 +0100 | Ariakenom | (~Ariakenom@2001:9b1:efb:fc00:34da:ffcd:6792:c11b) (Quit: Leaving) |
2020-12-20 04:29:32 +0100 | matryoshka | (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Read error: Connection reset by peer) |
2020-12-20 04:29:55 +0100 | matryoshka | (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) |
2020-12-20 04:32:16 +0100 | stackdimes | (~stackdime@136.144.43.79) |
2020-12-20 04:33:13 +0100 | quantumvatican | (~private@sou45-h01-176-173-75-58.dsl.sta.abo.bbox.fr) |
2020-12-20 04:34:16 +0100 | vicfred | (~vicfred@unaffiliated/vicfred) (Quit: Leaving) |
2020-12-20 04:38:48 +0100 | <quantumvatican> | hello, I just finished today's advent of code using the ReadP parser lib after spending hours initially trying to do the same thing using Parsec. The ReadP parser I generate produces the expected results while its parsec counterpart doesn't. |
2020-12-20 04:39:17 +0100 | <quantumvatican> | Here is the relevant code snippet: https://framabin.org/p/?1ec64b9a6d97553f#rSZa4gjvzdRyZyWdpy8gFiyttdTsFk/BQol/TPmx8CE= |
2020-12-20 04:39:53 +0100 | star_cloud | (~star_clou@ec2-34-217-37-165.us-west-2.compute.amazonaws.com) |
2020-12-20 04:39:58 +0100 | <quantumvatican> | Could you help me understand what is wrong in my parsec alternative? |
2020-12-20 04:40:13 +0100 | <glguy> | quantumvatican, In parsec, attoparsec, megaparsec in (a<|>b), if a succeeds then b is discarded |
2020-12-20 04:40:45 +0100 | star_cloud | (~star_clou@ec2-34-217-37-165.us-west-2.compute.amazonaws.com) (Remote host closed the connection) |
2020-12-20 04:41:22 +0100 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
2020-12-20 04:42:20 +0100 | <quantumvatican> | Oh ok. I thought backtracking using "try" would do the trick... |
2020-12-20 04:42:40 +0100 | stackdimes | (~stackdime@136.144.43.79) (Quit: WeeChat 2.9) |
2020-12-20 04:42:57 +0100 | <solonarv> | nope. Suppose you have a parser that looks like this: (a <|> b) *> c |
2020-12-20 04:43:20 +0100 | <solonarv> | the input matches b *> c, and a prefix of the input matches a |
2020-12-20 04:43:33 +0100 | <solonarv> | (but the rest of the input then doesn't match c) |
2020-12-20 04:43:50 +0100 | <solonarv> | so a is tried, succeeds, and then c is tried, fails; the parse fails |
2020-12-20 04:43:57 +0100 | wei2912 | (~wei2912@unaffiliated/wei2912) |
2020-12-20 04:44:09 +0100 | <solonarv> | because a succeeded, b is never tried, so "b followed by c" is also never tried |
2020-12-20 04:44:32 +0100 | electricityZZZZ | (~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-12-20 04:46:44 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:a111:468a:beb5:7acf) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-20 04:47:05 +0100 | <glguy> | quantumvatican, in parsec with (a <|> b) as soon as a consumes some input b is discarded. If a succeeds (consuming input or not) b is discarded. if a fails without consuming any input then b is used |
2020-12-20 04:47:33 +0100 | <glguy> | try a hides any input consumed in a in the case that a fails |
2020-12-20 04:48:30 +0100 | Kronic | (~Kronic___@84.203.96.46) (Quit: Leaving) |
2020-12-20 04:48:43 +0100 | <c_wraith> | breaking distributive rules makes me sad :( |
2020-12-20 04:49:01 +0100 | bitmagie | (~Thunderbi@200116b8060b130001a0e879def0d467.dip.versatel-1u1.de) (Quit: bitmagie) |
2020-12-20 04:49:17 +0100 | <solonarv> | ReadP on the other hand tries *both* sides when you use <|> |
2020-12-20 04:49:19 +0100 | <quantumvatican> | Ok I see. This is funny because I was initially using ReadP to parse the first aoc inputs and found its symetric choice operator inconvenient because it would generate a list of all possible alternatives. Now I get to see that is has its uses. |
2020-12-20 04:50:05 +0100 | <quantumvatican> | Thank you very much for the explanation. |
2020-12-20 04:51:32 +0100 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood) |
2020-12-20 04:51:39 +0100 | jedws | (~jedws@121.209.189.201) |
2020-12-20 04:51:42 +0100 | <solonarv> | iqubic: ping |
2020-12-20 04:51:54 +0100 | <iqubic> | Hello there. |
2020-12-20 04:52:11 +0100 | <solonarv> | see messages above :) |
2020-12-20 04:52:29 +0100 | <iqubic> | So megaparsec won't work for Day 19 part 2? |
2020-12-20 04:52:50 +0100 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
2020-12-20 04:52:57 +0100 | <boxscape> | maybe if you write an algorithm to adjust the rules so they don't need unbiased choice... |
2020-12-20 04:53:11 +0100 | <glguy> | You can use parsec, attoparsec, megaparsec in Day19, yes, but you have to account for how <|> works |
2020-12-20 04:53:32 +0100 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) |
2020-12-20 04:53:36 +0100 | <iqubic> | How does <|> work for megaparsec? |
2020-12-20 04:54:14 +0100 | <iqubic> | Because I tried that for my input and got an answer that was about 50 lower than the correct answer given by ReadP. |
2020-12-20 04:54:14 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving) |
2020-12-20 04:54:16 +0100 | <boxscape> | <glguy> in parsec with (a <|> b) as soon as a consumes some input b is discarded. If a succeeds (consuming input or not) b is discarded. if a fails without consuming any input then b is used |
2020-12-20 04:55:12 +0100 | <iqubic> | Right. Is there a way to make that unbiased with try or something? |
2020-12-20 04:55:20 +0100 | <solonarv> | try doesn't help |
2020-12-20 04:55:25 +0100 | <iqubic> | Why not? |
2020-12-20 04:55:26 +0100 | jedws | (~jedws@121.209.189.201) (Client Quit) |
2020-12-20 04:55:28 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-20 04:55:37 +0100 | <solonarv> | try makes a parser not consume input if it fails |
2020-12-20 04:55:52 +0100 | <solonarv> | but if the parser succeeds, try doesn't do anything |
2020-12-20 04:56:07 +0100 | <iqubic> | And how is that bad? |
2020-12-20 04:56:08 +0100 | <glguy> | I mean... it wastes some memory in that case :) |
2020-12-20 04:56:13 +0100 | <solonarv> | so in both (a <|> b) and (try a <|> b), if a succeeds, b is never tried |
2020-12-20 04:56:36 +0100 | <solonarv> | which means if you have (a <|> b) *> c, and a succeeds, only a *> c is tried; b *> c isn't tried |
2020-12-20 04:57:21 +0100 | justsomeguy | (~justsomeg@unaffiliated/--/x-3805311) () |
2020-12-20 04:57:34 +0100 | <glguy> | So to solve #19 with megaparsec, you just make sure never to generate: (a <|> b) *> c |
2020-12-20 04:57:48 +0100 | <glguy> | you generate: (a *> c) <|> (b *> c) |
2020-12-20 04:57:56 +0100 | <glguy> | (+ try) |
2020-12-20 04:58:00 +0100 | <iqubic> | Right. And that means solving Day 19 with megaparsec is hard. |
2020-12-20 04:58:23 +0100 | <glguy> | Codensity makes it easy to rewrite your parser like that |
2020-12-20 04:58:43 +0100 | <iqubic> | I don't know what codensity is. |
2020-12-20 04:59:09 +0100 | <solonarv> | newtype Codensity m a = Codensity { runCodensity :: forall r. (a -> m r) -> m r } |
2020-12-20 04:59:21 +0100 | <solonarv> | it's a better-behaved cousin of ContT |
2020-12-20 04:59:44 +0100 | <iqubic> | Right. |
2020-12-20 04:59:46 +0100 | <solonarv> | @hackage kan-extensions/docs/Control-Monad-Codensity.html |
2020-12-20 04:59:46 +0100 | <lambdabot> | https://hackage.haskell.org/package/kan-extensions/docs/Control-Monad-Codensity.html |
2020-12-20 05:02:03 +0100 | <iqubic> | glguy: Why did you use ReadP over parsec? |
2020-12-20 05:03:13 +0100 | <solonarv> | the same reason I did, presumably: it doesn't have the above issue |
2020-12-20 05:03:32 +0100 | <glguy> | Yeah, it tries all parses in parallel which seemed good for a grammar that I had no control over |
2020-12-20 05:03:50 +0100 | <glguy> | using parsec/megaparsec/attoparsec requires you to put in a lot of thought in how you structure your parser |
2020-12-20 05:03:55 +0100 | <solonarv> | in ReadP, (a <|> b) *> c *equals* (a *> c) <|> (b *> c) -- up to performance and internal-representation quibbles, perhaps |
2020-12-20 05:04:21 +0100 | <solonarv> | so you don't need to worry about making sure you generate the second one |
2020-12-20 05:06:14 +0100 | Sheilong | (uid293653@gateway/web/irccloud.com/x-lvkvgosacwanvten) () |
2020-12-20 05:08:11 +0100 | <iqubic> | glguy: What kind of structure does your solution produce? |
2020-12-20 05:08:32 +0100 | <glguy> | What do you mean? |
2020-12-20 05:10:30 +0100 | <iqubic> | I mean, if you were to convert your solution from ReadP to Parsec by changing the type signatures, and changing "R.String s" to the parsec version, would it work properly? |
2020-12-20 05:11:10 +0100 | <glguy> | I'd have to do the thing we were just talking about to make it work with megaparsec |
2020-12-20 05:11:59 +0100 | <iqubic> | How hard would that be? |
2020-12-20 05:13:38 +0100 | urek | (~urek@2804:7f1:e10a:f71b:1d25:d790:4162:b2ba) (Read error: Connection reset by peer) |
2020-12-20 05:13:51 +0100 | <glguy> | easy if you know what change to make I suppose |
2020-12-20 05:15:11 +0100 | urek | (~urek@179.177.35.104.dynamic.adsl.gvt.net.br) |
2020-12-20 05:15:19 +0100 | <iqubic> | I don't know what change to make. |
2020-12-20 05:15:28 +0100 | sparsity | (5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) (Quit: Connection closed) |
2020-12-20 05:17:59 +0100 | <zzz> | is there any way to have lookups in constant time with a purely functional data structure? |
2020-12-20 05:18:53 +0100 | <iqubic> | I think HashMaps have constant time lookup. |
2020-12-20 05:18:58 +0100 | <dsal> | solonarv, glguy: thanks for the explanation. I just got out of the shower and it the shower didn't answer this question. |
2020-12-20 05:19:59 +0100 | <koz_> | dsal: The All-Mighty Shower Oracle. |
2020-12-20 05:20:09 +0100 | <koz_> | Soak for 10 years, solve P vs NP. |
2020-12-20 05:20:23 +0100 | <solonarv> | iqubic: no, it's just log-time with a big base |
2020-12-20 05:20:31 +0100 | <iqubic> | Right. |
2020-12-20 05:20:55 +0100 | <solonarv> | which is close enough to constant-time in practrice |
2020-12-20 05:21:31 +0100 | <koz_> | It's like, base-size-of-word-on-machine I believe> |
2020-12-20 05:21:32 +0100 | <jle`> | 💤 constant-time lookups, we have vector |
2020-12-20 05:21:35 +0100 | <koz_> | So like, 64. |
2020-12-20 05:21:36 +0100 | <jle`> | * zzz |
2020-12-20 05:21:53 +0100 | <koz_> | Since HashMap is based on a HAMT IIRC. |
2020-12-20 05:22:52 +0100 | <zzz> | vector is log n according to hackage |
2020-12-20 05:23:13 +0100 | <jle`> | zzz: https://hackage.haskell.org/package/vector-0.12.1.2/docs/Data-Vector.html#v:-33- |
2020-12-20 05:23:15 +0100 | <jle`> | O(1) it says |
2020-12-20 05:23:24 +0100 | <solonarv> | in some sense log-n lookups are the best you can get because of how hardware works |
2020-12-20 05:23:37 +0100 | <dsal> | In some OSes, you can just allocate a single array and just let the OS deal with it. |
2020-12-20 05:23:49 +0100 | <zzz> | wait |
2020-12-20 05:24:04 +0100 | <solonarv> | (or even worse, O(n^1/3)) |
2020-12-20 05:24:29 +0100 | <jle`> | log(n) isn't too bad either in many cases since it caps out at log(word size) |
2020-12-20 05:24:42 +0100 | <boxscape> | Vector can only have O(1) lookup because array is built into ghc, right? |
2020-12-20 05:24:58 +0100 | <solonarv> | yes |
2020-12-20 05:25:12 +0100 | <jle`> | doesn't have to necessarily be built-in |
2020-12-20 05:25:18 +0100 | <jle`> | it could be implemented with FFI |
2020-12-20 05:25:20 +0100 | <solonarv> | true, C FFI would also do it |
2020-12-20 05:25:22 +0100 | <boxscape> | okay, fair |
2020-12-20 05:25:38 +0100 | <solonarv> | constant factors might be a bit big though |
2020-12-20 05:26:42 +0100 | quantumvatican | (~private@sou45-h01-176-173-75-58.dsl.sta.abo.bbox.fr) (Quit: Lost terminal) |
2020-12-20 05:28:05 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:a111:468a:beb5:7acf) |
2020-12-20 05:29:16 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2020-12-20 05:34:46 +0100 | justan0theruser | (~justanoth@unaffiliated/justanotheruser) |
2020-12-20 05:36:33 +0100 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds) |
2020-12-20 05:36:46 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:cca6:5d8:2bb0:556c) (Remote host closed the connection) |
2020-12-20 05:37:45 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 05:41:23 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:b5ee:dfae:b902:5746) (Ping timeout: 260 seconds) |
2020-12-20 05:42:17 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds) |
2020-12-20 05:45:44 +0100 | vicfred | (~vicfred@unaffiliated/vicfred) |
2020-12-20 05:48:31 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 05:53:02 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds) |
2020-12-20 05:53:36 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:84a9:93da:24c6:b2c7) |
2020-12-20 05:54:15 +0100 | HarveyPwca | (~HarveyPwc@c-98-220-98-201.hsd1.il.comcast.net) (Quit: Leaving) |
2020-12-20 05:58:48 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-20 05:59:39 +0100 | boxscape | (4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Quit: Connection closed) |
2020-12-20 05:59:59 +0100 | hackage | language-c 0.9.0.1 - Analysis and generation of C code https://hackage.haskell.org/package/language-c-0.9.0.1 (jophish) |
2020-12-20 06:00:12 +0100 | argento | (~argent0@168.227.97.29) |
2020-12-20 06:00:36 +0100 | <jophish> | every time that notification happens I get all excited thinking that someone is messaging me, but it's just the bot :( |
2020-12-20 06:01:17 +0100 | warperwarpwarp | (43a5e3c8@c-67-165-227-200.hsd1.co.comcast.net) |
2020-12-20 06:01:58 +0100 | Tario | (~Tario@201.192.165.173) (Ping timeout: 256 seconds) |
2020-12-20 06:03:29 +0100 | <warperwarpwarp> | can anyone recommend a solid http request-parsing response-writing library? I'll have byte streams to read from and write to. |
2020-12-20 06:03:52 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2020-12-20 06:03:53 +0100 | <warperwarpwarp> | my needs are extraordinarily few |
2020-12-20 06:04:32 +0100 | <jophish> | I tend to reach to servant for that kind of thing |
2020-12-20 06:06:06 +0100 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 256 seconds) |
2020-12-20 06:08:30 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 06:09:00 +0100 | <warperwarpwarp> | Ok, I'll look into that. What else I was considering was just parsing myself since I only need CONNECT and no bodies, and also somehow taking the Socket back from Warp when I recognize the right method. |
2020-12-20 06:09:29 +0100 | solonarv | (~solonarv@adijon-656-1-25-229.w90-13.abo.wanadoo.fr) (Ping timeout: 268 seconds) |
2020-12-20 06:09:30 +0100 | <warperwarpwarp> | Though Warp it's not obvious to me how I'd correlate requests to client, and client to socket, except doing it myself around Warp, at which point why use warp. |
2020-12-20 06:13:12 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds) |
2020-12-20 06:19:34 +0100 | ADG1089_ | (~adg1089@171.76.183.207) (Ping timeout: 246 seconds) |
2020-12-20 06:21:39 +0100 | ADG1089_ | (~adg1089@171.76.183.207) |
2020-12-20 06:23:36 +0100 | Lycurgus | (~niemand@cpe-45-46-137-210.buffalo.res.rr.com) |
2020-12-20 06:27:19 +0100 | ADG1089 | (~aditya@122.163.166.13) |
2020-12-20 06:28:56 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 06:33:37 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds) |
2020-12-20 06:36:41 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-20 06:36:56 +0100 | <ADG1089> | how do we solve this "warning: haddock-html" problem on ghc-pkg check? I tried cabal update after removing .cabal directory |
2020-12-20 06:39:09 +0100 | elliott__ | (~elliott@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 260 seconds) |
2020-12-20 06:53:48 +0100 | rembo10 | (~rembo10@wally.codeshy.com) (Quit: ZNC 1.8.1 - https://znc.in) |
2020-12-20 06:54:49 +0100 | ADG1089 | (~aditya@122.163.166.13) (Quit: Konversation terminated!) |
2020-12-20 06:55:18 +0100 | Lycurgus | generally ignores warnings |
2020-12-20 06:56:04 +0100 | ADG1089_ | (~adg1089@171.76.183.207) (Ping timeout: 260 seconds) |
2020-12-20 06:56:41 +0100 | warperwarpwarp | (43a5e3c8@c-67-165-227-200.hsd1.co.comcast.net) (Remote host closed the connection) |
2020-12-20 06:56:47 +0100 | ADG1089_ | (~aditya@122.163.166.13) |
2020-12-20 06:57:57 +0100 | rembo10 | (~rembo10@wally.codeshy.com) |
2020-12-20 06:58:05 +0100 | Lycurgus | (~niemand@cpe-45-46-137-210.buffalo.res.rr.com) (Quit: Exeunt) |
2020-12-20 07:04:49 +0100 | boxscape | (4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) |
2020-12-20 07:07:31 +0100 | hololeap | (~hololeap@unaffiliated/hololeap) (Ping timeout: 246 seconds) |
2020-12-20 07:10:34 +0100 | <ADG1089_> | pointfree does not install with ghc-8.10.2 |
2020-12-20 07:10:36 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2020-12-20 07:10:41 +0100 | <ADG1089_> | should i switch to lts release? |
2020-12-20 07:10:44 +0100 | <ADG1089_> | (cabal) |
2020-12-20 07:10:55 +0100 | urodna | (~urodna@unaffiliated/urodna) (Quit: urodna) |
2020-12-20 07:12:59 +0100 | boxscape | (4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Quit: Connection closed) |
2020-12-20 07:18:11 +0100 | ADG1089 | (~aditya@122.163.166.13) |
2020-12-20 07:18:31 +0100 | <koz_> | ADG1089_: What does cabal have to do with this? |
2020-12-20 07:18:33 +0100 | ADG1089_ | (~aditya@122.163.166.13) (Ping timeout: 268 seconds) |
2020-12-20 07:18:42 +0100 | <koz_> | If pointfree doesn't build with 8.10.2, try building with 8.8.4. |
2020-12-20 07:22:01 +0100 | <ADG1089> | koz_: something like `cabal install pointfree --resolver ghc-8.8.4`? |
2020-12-20 07:22:11 +0100 | <koz_> | --resolver is a stack thing. |
2020-12-20 07:22:14 +0100 | <koz_> | Are you using stack? |
2020-12-20 07:22:22 +0100 | roconnor | (~roconnor@host-45-78-199-13.dyn.295.ca) |
2020-12-20 07:22:25 +0100 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 264 seconds) |
2020-12-20 07:22:37 +0100 | <ADG1089> | no i thought if cabal has some similar option |
2020-12-20 07:22:50 +0100 | <ADG1089> | i think i will have to switch ghc from ghcup |
2020-12-20 07:23:02 +0100 | <koz_> | ADG1089: If you have GHC installed from ghcup, you can do |
2020-12-20 07:23:12 +0100 | <koz_> | cabal install -w ghc-8.8.4 pointfree |
2020-12-20 07:23:28 +0100 | <koz_> | Assuming you have ghc-8.8.4 installed and your path is set up properly for ghcup. |
2020-12-20 07:24:38 +0100 | <ADG1089> | wait i installed ghc from pacman for xmonad, will that interfere |
2020-12-20 07:25:05 +0100 | <koz_> | If you use -w like I did, it shouldn't. |
2020-12-20 07:25:15 +0100 | <koz_> | I am unsure how Arch names its GHC, because I don't use it. |
2020-12-20 07:25:17 +0100 | <ADG1089> | koz_: thanks |
2020-12-20 07:25:19 +0100 | <koz_> | (Arch's GHC that is) |
2020-12-20 07:25:29 +0100 | hololeap | (~hololeap@unaffiliated/hololeap) |
2020-12-20 07:33:10 +0100 | <ADG1089> | is there a traverse operation for this: `\x -> f y1 x >> f y2 x >> f y3 x >> ... >> f yn x` maybe traverse_ or mapM_ |
2020-12-20 07:36:49 +0100 | drbean | (~drbean@TC210-63-209-92.static.apol.com.tw) |
2020-12-20 07:38:19 +0100 | mirrorbird | (~psutcliff@2a00:801:447:b1bf:a43d:1573:86a9:1f86) |
2020-12-20 07:38:36 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:a111:468a:beb5:7acf) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-20 07:38:42 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-20 07:41:34 +0100 | <iqubic> | traverse_ (flip f) xs is what you want. |
2020-12-20 07:42:38 +0100 | <iqubic> | Well, actually you want "traverse_ (flip f x) xs" |
2020-12-20 07:42:54 +0100 | <ADG1089> | @t traverse_ (flip f) |
2020-12-20 07:42:55 +0100 | <lambdabot> | Maybe you meant: tell thank you thanks thesaurus thx tic-tac-toe ticker time todo todo-add todo-delete type v @ ? . |
2020-12-20 07:43:21 +0100 | <Rembane> | ADG1089: Try :t instead. |
2020-12-20 07:43:29 +0100 | <Rembane> | :t traverse_ (flip f) |
2020-12-20 07:43:29 +0100 | <ADG1089> | :t traverse_ (flip f x) |
2020-12-20 07:43:30 +0100 | <lambdabot> | error: |
2020-12-20 07:43:30 +0100 | <lambdabot> | • Could not deduce (FromExpr b0) arising from a use of ‘f’ |
2020-12-20 07:43:30 +0100 | <lambdabot> | from the context: (Foldable t, Show a, Show b) |
2020-12-20 07:43:31 +0100 | <lambdabot> | (Foldable t, Applicative f, Show a, FromExpr (f b)) => t a -> f () |
2020-12-20 07:43:34 +0100 | <Rembane> | :D |
2020-12-20 07:43:36 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2020-12-20 07:43:43 +0100 | <ADG1089> | :t let f :: a -> b -> m c in traverse_ (flip f x) |
2020-12-20 07:43:44 +0100 | <lambdabot> | error: |
2020-12-20 07:43:44 +0100 | <lambdabot> | The type signature for ‘f’ lacks an accompanying binding |
2020-12-20 07:44:01 +0100 | <ADG1089> | :t traverse_ (flip hPutStrLn x) |
2020-12-20 07:44:03 +0100 | <lambdabot> | error: |
2020-12-20 07:44:03 +0100 | <lambdabot> | • Variable not in scope: hPutStrLn :: a -> Expr -> f b0 |
2020-12-20 07:44:03 +0100 | <lambdabot> | • Perhaps you meant one of these: |
2020-12-20 07:44:08 +0100 | <ADG1089> | zzz |
2020-12-20 07:44:27 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:84a9:93da:24c6:b2c7) (Ping timeout: 268 seconds) |
2020-12-20 07:45:12 +0100 | <Rembane> | :t \f -> traverse_ (flip f) -- ADG1089 |
2020-12-20 07:45:14 +0100 | <lambdabot> | Foldable t => (a -> b1 -> b2) -> t b1 -> a -> () |
2020-12-20 07:47:48 +0100 | <ADG1089> | :t \x -> \ys -> \f -> traverse_ f ys x |
2020-12-20 07:47:50 +0100 | <lambdabot> | Foldable t1 => t2 -> t1 a -> (a -> t2 -> b) -> () |
2020-12-20 07:48:11 +0100 | <ADG1089> | Rembane: thanks! |
2020-12-20 07:48:16 +0100 | hexfive | (~hexfive@50-47-142-195.evrt.wa.frontiernet.net) |
2020-12-20 07:48:30 +0100 | <Rembane> | ADG1089: np! |
2020-12-20 07:56:20 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:e741:8684:6690:73be) |
2020-12-20 07:58:12 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
2020-12-20 07:58:23 +0100 | cfricke | (~cfricke@unaffiliated/cfricke) |
2020-12-20 07:59:04 +0100 | geowiesnot | (~user@87-89-181-157.abo.bbox.fr) |
2020-12-20 08:00:32 +0100 | coot | (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) |
2020-12-20 08:00:46 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2020-12-20 08:00:55 +0100 | sgibber2018 | (~arch-gibb@208.85.237.137) (Ping timeout: 256 seconds) |
2020-12-20 08:04:20 +0100 | lordyod | (~lordyod@c-67-169-144-132.hsd1.ca.comcast.net) (Quit: The Lounge - https://thelounge.chat) |
2020-12-20 08:05:56 +0100 | <whataday> | parse "let x = 1; let y=2; print (x+y)" , how to store x and y? IORef? |
2020-12-20 08:06:09 +0100 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
2020-12-20 08:08:56 +0100 | <Rembane> | whataday: give us more context. What do you want to do? |
2020-12-20 08:09:21 +0100 | <whataday> | a very simple dsl |
2020-12-20 08:10:49 +0100 | <sshine> | could you be more specific? |
2020-12-20 08:11:21 +0100 | <Rembane> | I'm gonna do some guessing... having a map between variable names and values sounds like what you need, you can send that around as an argument to your functions or put everything in a State monad. |
2020-12-20 08:11:54 +0100 | <sshine> | whataday, are you building a parser and evaluator of a DSL like the one above? |
2020-12-20 08:12:01 +0100 | vicfred | (~vicfred@unaffiliated/vicfred) (Quit: Leaving) |
2020-12-20 08:12:44 +0100 | <whataday> | parse "let a=b" to Value a b, parse "a b " to Function a b, data DSL = Value a b| Function a b |
2020-12-20 08:12:54 +0100 | <whataday> | sshine yes |
2020-12-20 08:14:05 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-20 08:14:27 +0100 | <sshine> | I'd go with a State monad, too. or if you like something simpler, something like: eval :: YourAST -> Map VarName Value -> IO () |
2020-12-20 08:14:58 +0100 | Amirali_ | (~Amirali@51.194.80.91) (Ping timeout: 265 seconds) |
2020-12-20 08:16:40 +0100 | sgibber2018 | (~arch-gibb@208.85.237.137) |
2020-12-20 08:17:44 +0100 | <sshine> | that way 'eval' can call itself and every time it sees a "let x = 1;" it can update its variable table, and every time it sees an "x", it kan look it up. |
2020-12-20 08:18:45 +0100 | <zzz> | i remember watching a talk on youtube about probably monads with an elegant example of parenthesis matching. does anyone has an idea of which one it could be? this was years ago |
2020-12-20 08:19:51 +0100 | <Rembane> | zzz: Do you have any more information about the talk? :) |
2020-12-20 08:21:36 +0100 | fengh | (~haskeller@ip72-205-40-121.dc.dc.cox.net) (Ping timeout: 240 seconds) |
2020-12-20 08:23:02 +0100 | <zzz> | unfortunately no. aside from the fact that it was a male presenter and that the solution to checking for balanced parens used a class and some type level trick... i think i remember seeing <> |
2020-12-20 08:23:37 +0100 | <zzz> | this was years ago when i was still trying to understand what a monad was |
2020-12-20 08:23:55 +0100 | <sshine> | zzz, was it a tutorial? a tech talk? |
2020-12-20 08:24:05 +0100 | <zzz> | tech talk i think |
2020-12-20 08:24:12 +0100 | mirrorbird | (~psutcliff@2a00:801:447:b1bf:a43d:1573:86a9:1f86) (Quit: Leaving) |
2020-12-20 08:24:36 +0100 | <zzz> | white slides, actually i think it had some live coding |
2020-12-20 08:24:38 +0100 | <zzz> | not sure... |
2020-12-20 08:25:05 +0100 | <sshine> | > "Stardate " <> show (12 * 365) <> ".6: I'm still trying to find out what a Monad is." |
2020-12-20 08:25:08 +0100 | <lambdabot> | "Stardate 4380.6: I'm still trying to find out what a Monad is." |
2020-12-20 08:26:04 +0100 | tomku | (~tomku@unaffiliated/tomku) (Ping timeout: 256 seconds) |
2020-12-20 08:26:08 +0100 | <zzz> | :p |
2020-12-20 08:26:20 +0100 | <sshine> | zzz, good luck finding it. :) |
2020-12-20 08:26:34 +0100 | <zzz> | thanks |
2020-12-20 08:26:36 +0100 | <sshine> | if I see a guy with parentheses on some white slides, I'll let you know. ;-D |
2020-12-20 08:26:53 +0100 | lordyod | (~lordyod@c-67-169-144-132.hsd1.ca.comcast.net) |
2020-12-20 08:26:56 +0100 | <zzz> | sshine: a monad is just a monoid in the category of endofunctors |
2020-12-20 08:27:02 +0100 | <zzz> | what's the problem? |
2020-12-20 08:27:25 +0100 | tomku | (~tomku@unaffiliated/tomku) |
2020-12-20 08:27:49 +0100 | <Rembane> | ^^ |
2020-12-20 08:27:54 +0100 | <sshine> | (this isn't it, but I thought it was funny to mention it here: Perry Metzger - Emacs: The Editor for the Next Forty Years - https://www.youtube.com/watch?v=KYcY7CcS7nc -- it qualifies for all your criteria, and considering the subject of elisp, I'd say *very* parentheses-related!) |
2020-12-20 08:30:13 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-12-20 08:35:01 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds) |
2020-12-20 08:37:59 +0100 | leolanger | (67742f78@103.116.47.120) |
2020-12-20 08:39:00 +0100 | leolanger | (67742f78@103.116.47.120) (Remote host closed the connection) |
2020-12-20 08:39:55 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 08:40:35 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2020-12-20 08:40:43 +0100 | gt_ | (~gt@96-19-96-19-8-130.cpe.sparklight.net) |
2020-12-20 08:40:44 +0100 | <int-e> | @quote endofunctors.*bad |
2020-12-20 08:40:45 +0100 | <lambdabot> | dmwit says: analogies are endofunctors in the category of bad explanations |
2020-12-20 08:42:20 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-20 08:42:38 +0100 | <koz_> | Something something burritos, something something monads, something something turtles, something something all the way down. |
2020-12-20 08:45:08 +0100 | <Rembane> | And they all leak! |
2020-12-20 08:45:18 +0100 | <Rembane> | Especially burritos if stuffed with good stuff |
2020-12-20 08:45:32 +0100 | jamm | (~jamm@unaffiliated/jamm) |
2020-12-20 08:46:22 +0100 | <koz_> | The law of leaky burritos. |
2020-12-20 08:46:37 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds) |
2020-12-20 08:48:00 +0100 | ADG1089__ | (~aditya@122.163.166.13) |
2020-12-20 08:48:04 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2020-12-20 08:49:12 +0100 | ADG1089 | (~aditya@122.163.166.13) (Ping timeout: 268 seconds) |
2020-12-20 08:53:26 +0100 | danvet | (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) |
2020-12-20 08:58:35 +0100 | gt_ | (~gt@96-19-96-19-8-130.cpe.sparklight.net) ("Leaving") |
2020-12-20 08:59:15 +0100 | polyrain | (~polyrain@2001:8003:e501:6901:1500:cd8a:5a55:1c9c) |
2020-12-20 09:00:13 +0100 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 264 seconds) |
2020-12-20 09:01:55 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 09:02:15 +0100 | incertia | (~incertia@d4-50-26-103.nap.wideopenwest.com) (Quit: ZNC 1.7.5 - https://znc.in) |
2020-12-20 09:03:16 +0100 | danso | (~dan@69-165-210-185.cable.teksavvy.com) (Quit: WeeChat 2.9) |
2020-12-20 09:03:35 +0100 | incertia | (~incertia@d4-50-26-103.nap.wideopenwest.com) |
2020-12-20 09:04:39 +0100 | <sshine> | wasn't there also one about endofunctors between analogies? |
2020-12-20 09:05:00 +0100 | jamm | (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
2020-12-20 09:05:52 +0100 | <sshine> | https://mathoverflow.net/questions/13832/analogies-between-analogies |
2020-12-20 09:05:56 +0100 | <siraben> | When reading Criterion reports, which numbers matter? |
2020-12-20 09:06:05 +0100 | <sshine> | siraben, the low ones! |
2020-12-20 09:06:06 +0100 | <siraben> | The time or the mean field? |
2020-12-20 09:06:16 +0100 | <siraben> | mean and std dev right? |
2020-12-20 09:06:43 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds) |
2020-12-20 09:06:46 +0100 | <zzz> | sshine: found it (kind of) |
2020-12-20 09:07:36 +0100 | <zzz> | it's a section on various Edward Kmett talks |
2020-12-20 09:07:52 +0100 | <sshine> | zzz, cool. |
2020-12-20 09:07:56 +0100 | <zzz> | on monoidal parsing |
2020-12-20 09:08:12 +0100 | <sshine> | hm. |
2020-12-20 09:10:08 +0100 | kostic_ | (~kostic@51.194.80.91) |
2020-12-20 09:10:28 +0100 | <sshine> | siraben, I shouldn't be answering, because I only benchmarked toy code for getting to know primitives, and not production code. but I just went with 'mean estimate', assuming the stddev was low. I haven't tried to benchmark something with a high stddev unless I was accidentally abusing the CPU for other purposes simultaneously. |
2020-12-20 09:11:48 +0100 | <sshine> | siraben, so basically just what's decipherable in the graphs: compare means between two solutions, unless the stddev appears to be too high. |
2020-12-20 09:12:35 +0100 | jamm | (~jamm@unaffiliated/jamm) |
2020-12-20 09:12:49 +0100 | grdvnl | (~gdrvnl@cpe-76-94-36-134.socal.res.rr.com) (Ping timeout: 246 seconds) |
2020-12-20 09:13:40 +0100 | <siraben> | sshine: I see, thanks! |
2020-12-20 09:13:44 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-12-20 09:14:59 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-20 09:15:13 +0100 | <sshine> | I gave feedback on Exercism and it ocurred to me I didn't really know how performant the different solutions were. I learned that often high-level solutions in Haskell are actually faster. Haskell is still the only language I know where abstractions often have a negative cost footprint. :-D |
2020-12-20 09:15:37 +0100 | grdvnl | (~gdrvnl@cpe-76-94-36-134.socal.res.rr.com) |
2020-12-20 09:16:59 +0100 | <siraben> | sshine: i've been benchmarking all my advent of code solutions this year: https://github.com/siraben/haoc-2020 |
2020-12-20 09:17:07 +0100 | <sshine> | ha, cool. |
2020-12-20 09:18:07 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
2020-12-20 09:18:18 +0100 | howdoi | (uid224@gateway/web/irccloud.com/x-flzdypyjqdvdjthv) (Quit: Connection closed for inactivity) |
2020-12-20 09:18:22 +0100 | <sshine> | I don't know if I'd be able to use a Criterion report for anything useful if I didn't either have two functions to compare against each other, or some idea of a performance bottleneck... |
2020-12-20 09:18:25 +0100 | <siraben> | i have some notes on performance in the readme, it was quite eye opening to learn what is fast and what is not |
2020-12-20 09:18:36 +0100 | <sshine> | yes! |
2020-12-20 09:18:41 +0100 | <siraben> | maybe later I'll look into memory usage as well |
2020-12-20 09:18:51 +0100 | <sshine> | yeah, memory use is probably where I learned the most. |
2020-12-20 09:19:26 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) (Remote host closed the connection) |
2020-12-20 09:19:34 +0100 | <siraben> | But as a rough guide; foldl' is great, Int over Integer, bang patterns and tail recursion, lists are very slow for indexing/as a poor map, specialized structures (IntMap, IntSet) are fast |
2020-12-20 09:19:35 +0100 | <sshine> | I had a short phase of trying to add !s everywhere. ;-D |
2020-12-20 09:19:45 +0100 | <siraben> | and also, bit-level hacking words :) |
2020-12-20 09:19:52 +0100 | <siraben> | to avoid conditionals |
2020-12-20 09:19:56 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2020-12-20 09:20:06 +0100 | <sshine> | Data.Bits is pretty nice, yes. |
2020-12-20 09:20:23 +0100 | <siraben> | oh and String is very slow, haha |
2020-12-20 09:22:13 +0100 | <sshine> | when I tried to tweak my Exercism solutions I found that I could often avoid explicit bangs in favor of strict library combinators and simply not use lists. ;-) |
2020-12-20 09:22:19 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 09:22:36 +0100 | <sshine> | it seems they get GC'ed very late. |
2020-12-20 09:23:27 +0100 | theorbtwo | (~theorb@cpc81822-swin19-2-0-cust3.3-1.cable.virginm.net) (Remote host closed the connection) |
2020-12-20 09:23:36 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Remote host closed the connection) |
2020-12-20 09:23:42 +0100 | theorbtwo | (~theorb@cpc81822-swin19-2-0-cust3.3-1.cable.virginm.net) |
2020-12-20 09:24:12 +0100 | christo | (~chris@81.96.113.213) |
2020-12-20 09:28:46 +0100 | superstar64 | (6ccefa7c@108-206-250-124.lightspeed.miamfl.sbcglobal.net) |
2020-12-20 09:29:04 +0100 | <superstar64> | how do i decided the type application order for my class methods? |
2020-12-20 09:30:19 +0100 | <sshine> | superstar64, what does that mean? |
2020-12-20 09:30:47 +0100 | dibblego | (~dibblego@haskell/developer/dibblego) (Ping timeout: 260 seconds) |
2020-12-20 09:31:26 +0100 | <superstar64> | for my typeclass's method, i want to pick the order that type variables are specified with `@` |
2020-12-20 09:31:39 +0100 | asheshambasta | (~user@ptr-e1lysaxt4bg7tmaahx1.18120a2.ip6.access.telenet.be) |
2020-12-20 09:31:56 +0100 | urek | (~urek@179.177.35.104.dynamic.adsl.gvt.net.br) (Ping timeout: 240 seconds) |
2020-12-20 09:32:25 +0100 | <superstar64> | putting an explicit forall doesn't seem to work with methods |
2020-12-20 09:33:22 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 09:33:49 +0100 | <sshine> | superstar64, I thought the order was bound to be the order that the type variables appear in the signature. |
2020-12-20 09:34:02 +0100 | <superstar64> | yea, but i don't want that order |
2020-12-20 09:34:21 +0100 | <superstar64> | and i can't put an explicit forall |
2020-12-20 09:35:40 +0100 | <suzu_> | could you paste some code? |
2020-12-20 09:35:51 +0100 | <suzu_> | not in the channel directly but on pastebin or github/etc and link it |
2020-12-20 09:36:08 +0100 | wonko7 | (~wonko7@69.75.150.77.rev.sfr.net) |
2020-12-20 09:37:52 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2020-12-20 09:38:13 +0100 | <superstar64> | `class CheckType m p κ l s where { checkType :: p -> κ -> m (Type l s κ) }` how do i specify l and s first? |
2020-12-20 09:38:29 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 272 seconds) |
2020-12-20 09:40:48 +0100 | <idnar> | superstar64: I don't think you can, but you can do `checkType' :: …; checkType' = checkType` |
2020-12-20 09:40:56 +0100 | <superstar64> | eww |
2020-12-20 09:42:05 +0100 | <zzz> | sshine: well I just spent the last hour lost in mathoveflow reading analogies between analogies and famous mathematicians' quotes |
2020-12-20 09:43:05 +0100 | <superstar64> | well, i guess my code base is going to need more `'` functions i gues |
2020-12-20 09:44:11 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 09:45:55 +0100 | shf | (~sheaf@2a01:cb19:80cc:7e00:c5b9:16be:dec9:44c5) |
2020-12-20 09:46:37 +0100 | <ADG1089__> | :t Window -> String |
2020-12-20 09:46:38 +0100 | <lambdabot> | error: parse error on input ‘->’ |
2020-12-20 09:46:50 +0100 | <ADG1089__> | @h Window -> String |
2020-12-20 09:46:50 +0100 | <lambdabot> | Maybe you meant: hackage haskellers help hitchcock hoogle hoogle+ v @ ? . |
2020-12-20 09:47:19 +0100 | <koz_> | @hoogle Window -> String |
2020-12-20 09:47:20 +0100 | <lambdabot> | Debian.Pretty ppShow :: Pretty (PP a) => a -> String |
2020-12-20 09:47:20 +0100 | <lambdabot> | Prelude show :: Show a => a -> String |
2020-12-20 09:47:20 +0100 | <lambdabot> | Text.Show show :: Show a => a -> String |
2020-12-20 09:47:54 +0100 | dibblego | (~dibblego@122-199-1-30.ip4.superloop.com) |
2020-12-20 09:47:54 +0100 | dibblego | (~dibblego@122-199-1-30.ip4.superloop.com) (Changing host) |
2020-12-20 09:47:54 +0100 | dibblego | (~dibblego@haskell/developer/dibblego) |
2020-12-20 09:48:00 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-20 09:48:18 +0100 | argento | (~argent0@168.227.97.29) (Quit: leaving) |
2020-12-20 09:48:36 +0100 | <ADG1089__> | :t \windows -> gets $ fmap getName . winnows |
2020-12-20 09:48:38 +0100 | <lambdabot> | error: |
2020-12-20 09:48:38 +0100 | <lambdabot> | Variable not in scope: getName :: a0 -> b |
2020-12-20 09:49:01 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 268 seconds) |
2020-12-20 09:50:47 +0100 | polyrain | (~polyrain@2001:8003:e501:6901:1500:cd8a:5a55:1c9c) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-20 09:51:17 +0100 | polyrain | (~polyrain@2001:8003:e501:6901:1500:cd8a:5a55:1c9c) |
2020-12-20 09:51:34 +0100 | polyrain | (~polyrain@2001:8003:e501:6901:1500:cd8a:5a55:1c9c) (Client Quit) |
2020-12-20 09:52:14 +0100 | geowiesnot | (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 260 seconds) |
2020-12-20 09:56:18 +0100 | Tene | (~tene@poipu/supporter/slacker/tene) (Ping timeout: 260 seconds) |
2020-12-20 09:56:25 +0100 | ByronJohnson | (~bairyn@unaffiliated/bob0) (Ping timeout: 268 seconds) |
2020-12-20 09:58:31 +0100 | Squarism | PowerOf2 |
2020-12-20 10:00:06 +0100 | zerstroyer[m] | (zerstroyer@gateway/shell/matrix.org/x-sagppnyewsjacbwk) (Quit: Idle for 30+ days) |
2020-12-20 10:00:07 +0100 | alephu5[m] | (alephu5mat@gateway/shell/matrix.org/x-pqqyohtvhpdzzjvu) (Quit: Idle for 30+ days) |
2020-12-20 10:00:08 +0100 | drbean | (~drbean@TC210-63-209-92.static.apol.com.tw) (Ping timeout: 272 seconds) |
2020-12-20 10:02:42 +0100 | Tene | (~tene@mail.digitalkingdom.org) |
2020-12-20 10:02:42 +0100 | Tene | (~tene@mail.digitalkingdom.org) (Changing host) |
2020-12-20 10:02:42 +0100 | Tene | (~tene@poipu/supporter/slacker/tene) |
2020-12-20 10:02:50 +0100 | ByronJohnson | (~bairyn@unaffiliated/bob0) |
2020-12-20 10:05:05 +0100 | <sshine> | zzz :o |
2020-12-20 10:08:13 +0100 | xwvvvvwx- | (xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx) |
2020-12-20 10:10:29 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2020-12-20 10:10:58 +0100 | wz1000 | (~wz1000@static.11.113.47.78.clients.your-server.de) (Ping timeout: 265 seconds) |
2020-12-20 10:11:07 +0100 | xwvvvvwx- | xwvvvvwx |
2020-12-20 10:15:47 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 10:19:23 +0100 | zv | (~zv@unaffiliated/zv) |
2020-12-20 10:19:43 +0100 | philopso1 | (~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds) |
2020-12-20 10:19:55 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) |
2020-12-20 10:20:26 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 264 seconds) |
2020-12-20 10:22:34 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2020-12-20 10:24:24 +0100 | <aplainzetakind> | Is there a sort of "for all n, here's an unsigned n bit type" library? |
2020-12-20 10:24:37 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) (Ping timeout: 260 seconds) |
2020-12-20 10:26:54 +0100 | ADG1089__ | (~aditya@122.163.166.13) (Remote host closed the connection) |
2020-12-20 10:31:26 +0100 | <superstar64> | how do i enable type application in ormolu? |
2020-12-20 10:32:12 +0100 | <superstar64> | `-o TypeApplications` doesn't seem to work |
2020-12-20 10:32:54 +0100 | <superstar64> | wait nvm, i got it, it's `-o -XTypeApplications` |
2020-12-20 10:35:19 +0100 | ADG1089 | (~aditya@122.163.166.13) |
2020-12-20 10:36:05 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 10:37:44 +0100 | shf | (~sheaf@2a01:cb19:80cc:7e00:c5b9:16be:dec9:44c5) (Read error: Connection reset by peer) |
2020-12-20 10:39:05 +0100 | ulidtko|k | (~ulidtko@193.111.48.79) |
2020-12-20 10:40:57 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds) |
2020-12-20 10:41:00 +0100 | hackage | simple-cmd 0.2.3 - Simple String-based process commands https://hackage.haskell.org/package/simple-cmd-0.2.3 (JensPetersen) |
2020-12-20 10:41:54 +0100 | ulidtko | (~ulidtko@194.54.80.38) (Ping timeout: 265 seconds) |
2020-12-20 10:42:58 +0100 | pyrrhus | (~pyrrhus@edu76FE.kent.ac.uk) |
2020-12-20 10:45:47 +0100 | toorevitimirp | (~tooreviti@117.182.182.252) (Remote host closed the connection) |
2020-12-20 10:46:35 +0100 | wz1000 | (~wz1000@static.11.113.47.78.clients.your-server.de) |
2020-12-20 10:48:33 +0100 | cheater | (~user@unaffiliated/cheater) |
2020-12-20 10:49:16 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-20 10:49:37 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
2020-12-20 10:50:15 +0100 | hnOsmium0001 | (uid453710@gateway/web/irccloud.com/x-gbnbzzrwsbzvqykf) (Quit: Connection closed for inactivity) |
2020-12-20 10:51:23 +0100 | pyrrhus | (~pyrrhus@edu76FE.kent.ac.uk) (Quit: Leaving) |
2020-12-20 10:53:08 +0100 | Varis | (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
2020-12-20 10:53:47 +0100 | zv | (~zv@unaffiliated/zv) (Ping timeout: 260 seconds) |
2020-12-20 10:54:01 +0100 | Mikagami | (~MOSCOS@122.54.107.175) (Remote host closed the connection) |
2020-12-20 10:54:02 +0100 | cheater | (~user@unaffiliated/cheater) (Quit: (BitchX) Elvis has left the building) |
2020-12-20 10:54:19 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
2020-12-20 10:54:28 +0100 | Mikagami | (~MOSCOS@122.54.107.175) |
2020-12-20 10:56:25 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 10:56:27 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
2020-12-20 10:56:29 +0100 | Varis | (~Tadas@unaffiliated/varis) |
2020-12-20 10:56:40 +0100 | cheater | (~user@unaffiliated/cheater) |
2020-12-20 10:59:09 +0100 | superstar64 | (6ccefa7c@108-206-250-124.lightspeed.miamfl.sbcglobal.net) (Remote host closed the connection) |
2020-12-20 11:01:03 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds) |
2020-12-20 11:11:28 +0100 | shf | (~sheaf@2a01:cb19:80cc:7e00:c5b9:16be:dec9:44c5) |
2020-12-20 11:12:16 +0100 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 268 seconds) |
2020-12-20 11:16:44 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 11:16:55 +0100 | kritzefitz | (~kritzefit@212.86.56.80) |
2020-12-20 11:18:19 +0100 | neiluj | (~jco@91-167-203-101.subs.proxad.net) |
2020-12-20 11:18:44 +0100 | neiluj | (~jco@91-167-203-101.subs.proxad.net) (Changing host) |
2020-12-20 11:18:44 +0100 | neiluj | (~jco@unaffiliated/neiluj) |
2020-12-20 11:20:34 +0100 | hiroaki | (~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de) |
2020-12-20 11:21:12 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds) |
2020-12-20 11:21:17 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) |
2020-12-20 11:25:52 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) (Ping timeout: 260 seconds) |
2020-12-20 11:27:54 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-20 11:28:07 +0100 | knupfer | (~Thunderbi@200116b82cf0a300fc9619fffe7d5c02.dip.versatel-1u1.de) |
2020-12-20 11:28:08 +0100 | knupfer | (~Thunderbi@200116b82cf0a300fc9619fffe7d5c02.dip.versatel-1u1.de) (Client Quit) |
2020-12-20 11:28:21 +0100 | knupfer | (~Thunderbi@mue-88-130-61-068.dsl.tropolys.de) |
2020-12-20 11:31:34 +0100 | Sgeo | (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer) |
2020-12-20 11:32:45 +0100 | knupfer | (~Thunderbi@mue-88-130-61-068.dsl.tropolys.de) (Ping timeout: 240 seconds) |
2020-12-20 11:35:39 +0100 | asheshambasta | (~user@ptr-e1lysaxt4bg7tmaahx1.18120a2.ip6.access.telenet.be) (Ping timeout: 272 seconds) |
2020-12-20 11:35:50 +0100 | xcmw | (~textual@2603-6011-2200-f103-cdbc-9ec6-8319-9dc9.res6.spectrum.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-20 11:41:19 +0100 | <joel135> | aplainzetakind: https://hackage.haskell.org/package/accelerate-bignum-0.3.0.0/docs/Data-Array-Accelerate-Data-BigW… |
2020-12-20 11:42:04 +0100 | Gurkenglas_ | (~Gurkengla@unaffiliated/gurkenglas) |
2020-12-20 11:59:08 +0100 | jophish | (~jophish@li1766-207.members.linode.com) (Ping timeout: 256 seconds) |
2020-12-20 12:00:15 +0100 | Achylles | (~Achylles@191.254.130.93) |
2020-12-20 12:01:35 +0100 | hidedagger | (~nate@unaffiliated/hidedagger) (Quit: WeeChat 2.9) |
2020-12-20 12:02:02 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2020-12-20 12:03:18 +0100 | Janni | (~jan@134.3.46.18) |
2020-12-20 12:04:31 +0100 | <Janni> | Hello there! This is a great day. After multiple years of abstinence I'm getting back to using Haskell. As the ecosystem has changed quite a bit, however, I'm having trouble getting off the ground. |
2020-12-20 12:04:51 +0100 | jamm | (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
2020-12-20 12:05:29 +0100 | <Janni> | So, I'll be asking a few stack-related question here, if that's not off-topic. |
2020-12-20 12:06:03 +0100 | nowhere_man | (~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155) (Ping timeout: 272 seconds) |
2020-12-20 12:07:45 +0100 | <Janni> | One of my problem's is the co-existence of my system GHC and the stack GHC installation. If I run for instance ghcide, its telling me that "ghcide compiled against GHC 8.10.2 but currently using 8.4.4". |
2020-12-20 12:08:08 +0100 | <Janni> | I was able to resolve that problem by setting up a script ~/bin/ghc with the content "stack ghc -- $@". |
2020-12-20 12:08:34 +0100 | <tomsmeding> | joel135: that's kind of specific to Accelerate, though, and not for general usage :p |
2020-12-20 12:08:58 +0100 | <tomsmeding> | note that it depends on the accelerate package, which is quite large |
2020-12-20 12:09:27 +0100 | ADG1089 | (~aditya@122.163.166.13) (Remote host closed the connection) |
2020-12-20 12:09:42 +0100 | <tomsmeding> | Janni: for the ghcide issue it may help to make an explicit hie.yaml file |
2020-12-20 12:09:49 +0100 | ADG1089 | (~aditya@122.163.166.13) |
2020-12-20 12:12:42 +0100 | avdb | (~avdb@213.177.155.250) |
2020-12-20 12:12:42 +0100 | Janni | (~jan@134.3.46.18) (Read error: Connection reset by peer) |
2020-12-20 12:13:51 +0100 | Janni | (~jan@134.3.46.18) |
2020-12-20 12:14:21 +0100 | <Janni> | (If anyone replied I missed it. My computer crashed.) |
2020-12-20 12:15:03 +0100 | <tomsmeding> | Janni: https://ircbrowse.tomsmeding.com/browse/haskell?id=208660×tamp=1608462582#t1608462582 |
2020-12-20 12:15:17 +0100 | <Janni> | Isn't there a way to have stack install a version of ghc as part of its "global-project" and have it create a binary/symlink in ~/.local/bin? |
2020-12-20 12:15:18 +0100 | dansho | (~dansho@ec2-18-183-184-168.ap-northeast-1.compute.amazonaws.com) |
2020-12-20 12:15:34 +0100 | <Janni> | tomsmeding: Thanks. |
2020-12-20 12:15:57 +0100 | <tomsmeding> | I believe that's not the way stack is intended to work; it's intended to download a local ghc per project, and the sharing of ghc's over projects that use the same version is just a "caching" thing |
2020-12-20 12:16:14 +0100 | xlei | (znc@unaffiliated/xlei) |
2020-12-20 12:17:13 +0100 | <Janni> | Right. I got the impression that I could "switch" from cabal to stack, maybe that's my problem. |
2020-12-20 12:17:50 +0100 | __monty__ | (~toonn@unaffiliated/toonn) |
2020-12-20 12:18:11 +0100 | <tomsmeding> | well you can, but stack wants you to make a project for whatever you do |
2020-12-20 12:18:17 +0100 | <tomsmeding> | (cabal really also wants you though) |
2020-12-20 12:18:28 +0100 | <tomsmeding> | and once you're in a project, stack manages your stuff for you |
2020-12-20 12:20:06 +0100 | cfricke | (~cfricke@unaffiliated/cfricke) (Ping timeout: 268 seconds) |
2020-12-20 12:20:21 +0100 | <tomsmeding> | by the way, in case you happen to be under that impression: stack is not necessarily a "modern replacement" of cabal, it's just an alternative that some people prefer, some people don't |
2020-12-20 12:20:28 +0100 | <Janni> | OK. Then my current problem is this. When I run "vim src/Main.hs" everything works fine as the haskell-language-server and ghcide etc from the "project's stack" are used. |
2020-12-20 12:20:56 +0100 | <Janni> | However if I do "cd src; vim Main.hs" everything breaks down. |
2020-12-20 12:21:25 +0100 | <tomsmeding> | I'd say that is your vim language client plugin not properly recognising the project's root folder |
2020-12-20 12:21:36 +0100 | <tomsmeding> | what plugin do you use, languageclient-neovim? ALE? |
2020-12-20 12:21:55 +0100 | <Janni> | vim-lsp |
2020-12-20 12:22:12 +0100 | <Janni> | I'm open to switching to anything else. |
2020-12-20 12:22:28 +0100 | <Janni> | Anything that works. ;) |
2020-12-20 12:22:40 +0100 | <tomsmeding> | I've used the two that I mentioned, both have their own distinct issues :p |
2020-12-20 12:22:51 +0100 | boxscape | (4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) |
2020-12-20 12:23:31 +0100 | <tomsmeding> | with ALE the only issue I have is this one https://github.com/haskell/ghcide/issues/949 , which is at least a known and reported issue |
2020-12-20 12:24:12 +0100 | <Janni> | Alright, I'll try out ALE then. Thanks! |
2020-12-20 12:24:38 +0100 | <tomsmeding> | I'm currently looking whether this is relevant: https://github.com/prabirshrestha/vim-lsp/issues/941 |
2020-12-20 12:25:36 +0100 | <tomsmeding> | hm, no |
2020-12-20 12:26:04 +0100 | <Janni> | Cool, so far ALE seems to work out of the box. |
2020-12-20 12:26:41 +0100 | jophish | (~jophish@2400:8901::f03c:91ff:fe39:7a9) |
2020-12-20 12:26:48 +0100 | <tomsmeding> | nice! |
2020-12-20 12:27:06 +0100 | Achylles | (~Achylles@191.254.130.93) (Remote host closed the connection) |
2020-12-20 12:27:12 +0100 | <tomsmeding> | for the record, for vim-lsp you may want to look at this issue: https://github.com/prabirshrestha/vim-lsp/issues/274 |
2020-12-20 12:27:14 +0100 | <Janni> | Except that :ALEHover (and similar commands) don't seem to do anything... |
2020-12-20 12:28:31 +0100 | <tomsmeding> | ALEHover seems to work for me |
2020-12-20 12:29:08 +0100 | unK_ | (~unknown@2a02:a312:c83d:7800:bb7f:5c00:4f48:cc5c) |
2020-12-20 12:29:14 +0100 | <tomsmeding> | oh! ALE doesn't have ghcide or hls by default I believe, but that's easily fixable |
2020-12-20 12:30:08 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-20 12:30:15 +0100 | unK_ | unK |
2020-12-20 12:30:20 +0100 | unK | unK_ |
2020-12-20 12:30:31 +0100 | unK_ | (~unknown@2a02:a312:c83d:7800:bb7f:5c00:4f48:cc5c) () |
2020-12-20 12:30:44 +0100 | Franciman | (~francesco@host-82-49-79-73.retail.telecomitalia.it) |
2020-12-20 12:30:44 +0100 | hcchien | (~hcchien@s91904426.blix.com) (Remote host closed the connection) |
2020-12-20 12:30:47 +0100 | <tomsmeding> | Janni: https://paste.tomsmeding.com/DIdhcRGB |
2020-12-20 12:32:15 +0100 | <tomsmeding> | include that in your .vimrc, or wherever you want it that's loaded |
2020-12-20 12:32:59 +0100 | jamm | (~jamm@unaffiliated/jamm) |
2020-12-20 12:33:03 +0100 | arybczak | (~unknown@2a02:a312:c83d:7800:bb7f:5c00:4f48:cc5c) |
2020-12-20 12:33:55 +0100 | fendor | (~fendor@178.115.130.51.wireless.dyn.drei.com) |
2020-12-20 12:34:08 +0100 | <Janni> | Thanks! I tried that out but I'm getting "ghcide compiled against GHC 8.10.2 but currently using 8.4.4". |
2020-12-20 12:34:32 +0100 | <Janni> | Ah wait. I need an hie.yaml |
2020-12-20 12:34:55 +0100 | <tomsmeding> | sorry for the mess, but yes, I find you usually need a hie.yaml :p |
2020-12-20 12:35:27 +0100 | arybczak | (~unknown@2a02:a312:c83d:7800:bb7f:5c00:4f48:cc5c) (Client Quit) |
2020-12-20 12:35:52 +0100 | arybczak | (~unknown@2a02:a312:c83d:7800:bb7f:5c00:4f48:cc5c) |
2020-12-20 12:36:25 +0100 | <tomsmeding> | vim isn't a great editor to use with LSP servers (though I try) and the architecture of the current LSP server implementations for haskell binds them tightly to the compiler being used to compile your project, which makes setting up somewhat more difficult than for other languages |
2020-12-20 12:37:21 +0100 | <Janni> | Yeah, next thing on my TODO list: implement a good editor. |
2020-12-20 12:37:43 +0100 | seiryn | (~seiryn@2a01cb0409c990003ccf6635f6976a70.ipv6.abo.wanadoo.fr) |
2020-12-20 12:37:56 +0100 | <Janni> | afk |
2020-12-20 12:38:44 +0100 | <__monty__> | Is there even a way to avoid that? Except for linking HIE against the most common GHC versions? |
2020-12-20 12:38:50 +0100 | <tomsmeding> | when I retire I will |
2020-12-20 12:39:08 +0100 | <tomsmeding> | __monty__: not using the compilation artifacts from the user? |
2020-12-20 12:39:13 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:e741:8684:6690:73be) (Ping timeout: 268 seconds) |
2020-12-20 12:39:22 +0100 | <tomsmeding> | then you can use any compiler version you like as long as it accepts your code |
2020-12-20 12:39:39 +0100 | <__monty__> | But the user expects his tooling to check it for *their* compiler. |
2020-12-20 12:39:40 +0100 | <tomsmeding> | some other languages don't even integrate with the actual compiler, they have a separate implementation of the language just for the IDE |
2020-12-20 12:39:59 +0100 | <tomsmeding> | so they do, but if it's close enough it doesn't matter usually |
2020-12-20 12:40:03 +0100 | <__monty__> | That sounds like a way to introduce really hard to spot errors. |
2020-12-20 12:40:13 +0100 | <tomsmeding> | java (tm) |
2020-12-20 12:40:27 +0100 | <tomsmeding> | it does buy ergonomics for the simple cases though |
2020-12-20 12:40:36 +0100 | <tomsmeding> | and thus an easier start for beginning users |
2020-12-20 12:41:16 +0100 | <tomsmeding> | also I guess a part of the problem is that for haskell, people are more likely to actually use different compiler versions |
2020-12-20 12:41:19 +0100 | <__monty__> | Delayed frustration is not a great experience though. |
2020-12-20 12:41:27 +0100 | <tomsmeding> | I believe few people actually have different versions of rustc on their system |
2020-12-20 12:41:48 +0100 | <__monty__> | Stable and nightly doesn't seem too out there. |
2020-12-20 12:42:04 +0100 | <tomsmeding> | fair point |
2020-12-20 12:43:03 +0100 | <tomsmeding> | I guess the LSP server should come via the same place as the compiler you install |
2020-12-20 12:43:13 +0100 | <tomsmeding> | for rust that's rustup, which can then match up the versions |
2020-12-20 12:43:39 +0100 | <tomsmeding> | for haskell we have ghcup, which works too, but then stack comes along, and often people also have a ghc from the system packages floating around |
2020-12-20 12:44:19 +0100 | <tomsmeding> | ignoring the problems some people have with using cabal, if everyone would use a ghc from ghcup and not from anywhere else, and use cabal instead of stack, would we have problems? |
2020-12-20 12:44:27 +0100 | <tomsmeding> | (or alternatively, stack with system-ghc: True) |
2020-12-20 12:45:05 +0100 | <seiryn> | I use ghc from ghcup and cabal from ghcup and i (maybe) have problem |
2020-12-20 12:45:36 +0100 | <__monty__> | tomsmeding: Clearly the right answer is nix : ) |
2020-12-20 12:45:38 +0100 | <tomsmeding> | though that doesn't serve the people that specifically want ghcide instead of HLS (like me), because ghcup doesn't give you ghcide; but I want that because HLS crashes for me on a particular project, which is a bug and not a permanent problem I hope :p |
2020-12-20 12:45:55 +0100 | <tomsmeding> | __monty__: I'm scared of nix |
2020-12-20 12:46:11 +0100 | <tomsmeding> | seiryn: a problem with HLS version mismatches? |
2020-12-20 12:47:50 +0100 | <seiryn> | tomsmeding: Nah, i installed Cabal and now ghci say parsec is hidden but it's not |
2020-12-20 12:47:51 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2020-12-20 12:48:42 +0100 | <tomsmeding> | is it not? |
2020-12-20 12:48:50 +0100 | <__monty__> | seiryn: Correct constraints on base? |
2020-12-20 12:48:53 +0100 | <tomsmeding> | for me it is, outside of a project |
2020-12-20 12:49:10 +0100 | <__monty__> | Oh, thought Parsec was part of base? |
2020-12-20 12:49:52 +0100 | <tomsmeding> | it's in the 'parsec' library, which is part of the standard set of libraries that come with ghc, but it's not in 'base' |
2020-12-20 12:51:06 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:543a:c2f7:6b95:2173) |
2020-12-20 12:52:08 +0100 | <seiryn> | Well, i'm a beginner so maybe i've done an obvious mistake, but basically, the first times i wanted to use parsec i did nothing expect the import, then i wanted to use a package so i installed cabal, and now ghci say parsec is hidden |
2020-12-20 12:52:25 +0100 | <seiryn> | But ghc-pck say parsec is exposed |
2020-12-20 12:52:30 +0100 | <seiryn> | ghc-pkg* |
2020-12-20 12:52:43 +0100 | <tomsmeding> | yes the cabal store overrides some of the visibilities |
2020-12-20 12:52:58 +0100 | <tomsmeding> | cabal wants you to always work in a project, which means with a something.cabal file |
2020-12-20 12:53:10 +0100 | dansho | (~dansho@ec2-18-183-184-168.ap-northeast-1.compute.amazonaws.com) (Remote host closed the connection) |
2020-12-20 12:53:16 +0100 | <tomsmeding> | in that file you specify the dependencies, among other things; apparently one of the dependencies you want is parsec |
2020-12-20 12:53:22 +0100 | <seiryn> | Oooh |
2020-12-20 12:53:36 +0100 | dansho | (~dansho@ec2-18-183-184-168.ap-northeast-1.compute.amazonaws.com) |
2020-12-20 12:53:39 +0100 | <seiryn> | I didn't know that, thanks |
2020-12-20 12:53:57 +0100 | <tomsmeding> | if you're used to node, it's like requiring a package.json; for rust, it's like requiring a Cargo.toml |
2020-12-20 12:54:12 +0100 | <tomsmeding> | the C/C++ world doesn't have anything like that |
2020-12-20 12:55:05 +0100 | <tomsmeding> | granted it might be annoying if you're starting out (I resisted for a long time), but it's a different problem than the IDE version matchup thing we were talking about :) |
2020-12-20 12:55:51 +0100 | <seiryn> | I'm used to C sooo |
2020-12-20 12:56:10 +0100 | <seiryn> | Oh sorry, i interrupted your conversation |
2020-12-20 12:56:13 +0100 | <tomsmeding> | I came from there too |
2020-12-20 12:56:33 +0100 | <tomsmeding> | don't worry, there are currently 1029 people in this room, interrupting conversations is the norm and not a problem :p |
2020-12-20 13:00:59 +0100 | borne | (~fritjof@200116b8644c2000c0a3d285e8e687f4.dip.versatel-1u1.de) |
2020-12-20 13:05:04 +0100 | boxscape | (4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Ping timeout: 272 seconds) |
2020-12-20 13:10:39 +0100 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) |
2020-12-20 13:21:06 +0100 | pavonia | (~user@unaffiliated/siracusa) (Quit: Bye!) |
2020-12-20 13:21:47 +0100 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection) |
2020-12-20 13:21:54 +0100 | avdb | (~avdb@213.177.155.250) (Quit: avdb) |
2020-12-20 13:22:14 +0100 | boxscape | (4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) |
2020-12-20 13:22:29 +0100 | asheshambasta | (~user@ptr-e1lysaxt4bg7tmaahx1.18120a2.ip6.access.telenet.be) |
2020-12-20 13:22:41 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) |
2020-12-20 13:23:10 +0100 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) |
2020-12-20 13:23:41 +0100 | avdb | (~avdb@213.177.155.250) |
2020-12-20 13:25:50 +0100 | drbean | (~drbean@TC210-63-209-95.static.apol.com.tw) |
2020-12-20 13:27:27 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) (Ping timeout: 260 seconds) |
2020-12-20 13:27:42 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 13:29:42 +0100 | ADG1089 | (~aditya@122.163.166.13) (Remote host closed the connection) |
2020-12-20 13:32:27 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds) |
2020-12-20 13:33:15 +0100 | fendor | (~fendor@178.115.130.51.wireless.dyn.drei.com) (Remote host closed the connection) |
2020-12-20 13:33:46 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2020-12-20 13:36:31 +0100 | mmsari | (~Thunderbi@37.130.100.46) |
2020-12-20 13:38:35 +0100 | boxscape | (4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Quit: Connection closed) |
2020-12-20 13:46:23 +0100 | jmchael | (~jmchael@81.174.180.109) |
2020-12-20 13:48:03 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 13:48:53 +0100 | urek | (~urek@2804:7f1:e10a:f71b:24bd:3e22:9689:a955) |
2020-12-20 13:49:26 +0100 | avdb | (~avdb@213.177.155.250) (Ping timeout: 265 seconds) |
2020-12-20 13:49:54 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2020-12-20 13:50:20 +0100 | hacxman | (~hexo@gateway/tor-sasl/hexo) |
2020-12-20 13:50:34 +0100 | m0rphism | (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) |
2020-12-20 13:50:43 +0100 | hexo | (~hexo@gateway/tor-sasl/hexo) (Ping timeout: 240 seconds) |
2020-12-20 13:50:44 +0100 | hacxman | hexo |
2020-12-20 13:52:32 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds) |
2020-12-20 13:53:58 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2020-12-20 13:59:47 +0100 | aplainzetakind | (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) |
2020-12-20 14:02:59 +0100 | rayyyy | (~nanoz@gateway/tor-sasl/nanoz) |
2020-12-20 14:05:11 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-20 14:07:53 +0100 | urek__ | (~urek@186.212.191.144) |
2020-12-20 14:08:22 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 14:09:02 +0100 | urek | (~urek@2804:7f1:e10a:f71b:24bd:3e22:9689:a955) (Ping timeout: 264 seconds) |
2020-12-20 14:09:37 +0100 | Rudd0 | (~Rudd0@185.189.115.98) (Ping timeout: 246 seconds) |
2020-12-20 14:10:05 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2020-12-20 14:10:52 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) |
2020-12-20 14:11:26 +0100 | borne | (~fritjof@200116b8644c2000c0a3d285e8e687f4.dip.versatel-1u1.de) (Ping timeout: 264 seconds) |
2020-12-20 14:12:00 +0100 | hackage | keylayouts 0.1.0.0 - Tools for macOS .keylayout files https://hackage.haskell.org/package/keylayouts-0.1.0.0 (dailectic) |
2020-12-20 14:13:17 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds) |
2020-12-20 14:14:30 +0100 | hackage | keylayouts 0.1.0.1 - Tools for macOS .keylayout files https://hackage.haskell.org/package/keylayouts-0.1.0.1 (dailectic) |
2020-12-20 14:14:56 +0100 | boxscape | (4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) |
2020-12-20 14:21:08 +0100 | mmsari | (~Thunderbi@37.130.100.46) (Ping timeout: 256 seconds) |
2020-12-20 14:21:59 +0100 | seiryn | (~seiryn@2a01cb0409c990003ccf6635f6976a70.ipv6.abo.wanadoo.fr) (Quit: WeeChat 2.9) |
2020-12-20 14:24:04 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) |
2020-12-20 14:28:27 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) (Ping timeout: 260 seconds) |
2020-12-20 14:32:03 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Ping timeout: 240 seconds) |
2020-12-20 14:32:23 +0100 | mmsari | (~Thunderbi@37.130.100.46) |
2020-12-20 14:35:09 +0100 | Welkin | (~Welkin@216.243.35.47) (Ping timeout: 268 seconds) |
2020-12-20 14:37:33 +0100 | unpppa | (591088f8@89.16.136.248) (Remote host closed the connection) |
2020-12-20 14:37:40 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-20 14:41:05 +0100 | Tario | (~Tario@201.192.165.173) |
2020-12-20 14:43:35 +0100 | fuzzypixelz | (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) |
2020-12-20 14:43:49 +0100 | knupfer | (~Thunderbi@200116b82cf0a30050c0c0fffe7a23dd.dip.versatel-1u1.de) |
2020-12-20 14:43:49 +0100 | knupfer | (~Thunderbi@200116b82cf0a30050c0c0fffe7a23dd.dip.versatel-1u1.de) (Client Quit) |
2020-12-20 14:44:08 +0100 | knupfer | (~Thunderbi@mue-88-130-61-068.dsl.tropolys.de) |
2020-12-20 14:45:28 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 14:48:23 +0100 | mouseghost | (~draco@wikipedia/desperek) |
2020-12-20 14:51:29 +0100 | drbean | (~drbean@TC210-63-209-95.static.apol.com.tw) (Ping timeout: 260 seconds) |
2020-12-20 14:52:15 +0100 | _ht | (~quassel@82-169-194-8.biz.kpn.net) |
2020-12-20 15:00:26 +0100 | xff0x_ | (~fox@2001:1a81:533f:8600:c719:1424:71ec:9a95) (Ping timeout: 268 seconds) |
2020-12-20 15:01:04 +0100 | xff0x_ | (~fox@2001:1a81:533f:8600:4230:b097:b97e:1a3d) |
2020-12-20 15:01:45 +0100 | knupfer | (~Thunderbi@mue-88-130-61-068.dsl.tropolys.de) (Ping timeout: 240 seconds) |
2020-12-20 15:04:55 +0100 | aplainzetakind | (~johndoe@captainludd.powered.by.lunarbnc.net) |
2020-12-20 15:05:37 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) |
2020-12-20 15:06:38 +0100 | elfets | (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
2020-12-20 15:08:38 +0100 | son0p | (~son0p@181.136.122.143) |
2020-12-20 15:10:50 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Remote host closed the connection) |
2020-12-20 15:10:56 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 15:11:36 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2020-12-20 15:12:00 +0100 | hackage | gloss-export 0.1.0.3 - Export Gloss pictures to png, bmp, tga, tiff, gif and juicy-pixels-image https://hackage.haskell.org/package/gloss-export-0.1.0.3 (timoa) |
2020-12-20 15:12:36 +0100 | borne | (~fritjof@200116b8644eaa00c0a3d285e8e687f4.dip.versatel-1u1.de) |
2020-12-20 15:12:47 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:543a:c2f7:6b95:2173) (Ping timeout: 260 seconds) |
2020-12-20 15:21:05 +0100 | neiluj | (~jco@unaffiliated/neiluj) (Quit: leaving) |
2020-12-20 15:21:44 +0100 | <siraben> | Is Text.ParserCombinators.ReadP actually paralle? |
2020-12-20 15:21:45 +0100 | <siraben> | parallel* |
2020-12-20 15:23:21 +0100 | knupfer | (~Thunderbi@200116b82cf0a300a4f8edfeafadaac2.dip.versatel-1u1.de) |
2020-12-20 15:24:15 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:a111:468a:beb5:7acf) |
2020-12-20 15:24:18 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:5ba9:d29a:794f:12e0) |
2020-12-20 15:24:36 +0100 | <hpc> | it means "parallel" in a different way than something like par/pseq, if that's what you're asking |
2020-12-20 15:24:44 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) |
2020-12-20 15:25:24 +0100 | <ski> | > [(x,y) | x <- "ab" | y <- [0,1]] |
2020-12-20 15:25:27 +0100 | <lambdabot> | [('a',0),('b',1)] |
2020-12-20 15:27:01 +0100 | <siraben> | ski: hm what is that double list comprehension? |
2020-12-20 15:27:03 +0100 | borne | (~fritjof@200116b8644eaa00c0a3d285e8e687f4.dip.versatel-1u1.de) (Ping timeout: 260 seconds) |
2020-12-20 15:27:30 +0100 | <siraben> | Ah, ParallelListComp language extension |
2020-12-20 15:29:26 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) (Ping timeout: 264 seconds) |
2020-12-20 15:31:35 +0100 | MidAutumnHotaru | (~MidAutumn@154.91.197.93) (Quit: Quit 啾) |
2020-12-20 15:32:12 +0100 | MidAutumnHotaru | (~MidAutumn@154.91.197.93) |
2020-12-20 15:32:20 +0100 | jfalcon | (905c1fea@144.92.31.234) |
2020-12-20 15:32:34 +0100 | dopplergange | (~dop@195.158.249.47) (Remote host closed the connection) |
2020-12-20 15:33:36 +0100 | kik1 | (~kik1@195.140.213.38) |
2020-12-20 15:34:52 +0100 | <siraben> | How many language extensions can be implemented in Template Haskell, or is it done by modifying the GHC source? |
2020-12-20 15:35:26 +0100 | <joel135> | > [(x,y) | x <- "abcde", x /= 'b' | y <- [0,1,2,3,4], y /= 3] |
2020-12-20 15:35:28 +0100 | <lambdabot> | [('a',0),('c',1),('d',2),('e',4)] |
2020-12-20 15:35:50 +0100 | boxscape | (4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Quit: Connection closed) |
2020-12-20 15:36:05 +0100 | boxscape | (4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) |
2020-12-20 15:37:07 +0100 | mputz | (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
2020-12-20 15:37:10 +0100 | <hpc> | template haskell doesn't implement language extensions |
2020-12-20 15:37:36 +0100 | <hpc> | it provides a way to execute haskell code that generates haskell code at compile time |
2020-12-20 15:38:06 +0100 | <hpc> | but within delineated sections |
2020-12-20 15:38:50 +0100 | <hpc> | in theory you could "extend" the language by wrapping all your code in it, but it wouldn't be {-# LANGUAGE YourExtension #-}, it would be something else |
2020-12-20 15:40:00 +0100 | vfaronov | (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) |
2020-12-20 15:40:24 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2020-12-20 15:41:19 +0100 | mputz | (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 246 seconds) |
2020-12-20 15:42:25 +0100 | avdb | (~avdb@213.177.155.250) |
2020-12-20 15:43:01 +0100 | the-smug-one | (~user@83-92-112-87-cable.dk.customer.tdc.net) |
2020-12-20 15:44:42 +0100 | <the-smug-one> | I'm reading Oleg's stuff on tagless final. Often the idea of a program or term being "closed" respectively "open" is expressed. Does anyone know what that means? Googling hasn't given me much |
2020-12-20 15:46:01 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-20 15:48:05 +0100 | wonko7 | (~wonko7@69.75.150.77.rev.sfr.net) (Ping timeout: 240 seconds) |
2020-12-20 15:50:23 +0100 | polyphem | (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Quit: WeeChat 2.9) |
2020-12-20 15:51:14 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2020-12-20 15:53:25 +0100 | shatriff | (~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection) |
2020-12-20 15:53:41 +0100 | shatriff | (~vitaliish@176-52-216-242.irishtelecom.com) |
2020-12-20 15:55:48 +0100 | juuandyy | (~juuandyy@90.166.144.65) |
2020-12-20 15:57:53 +0100 | wei2912 | (~wei2912@unaffiliated/wei2912) (Remote host closed the connection) |
2020-12-20 15:58:46 +0100 | <__monty__> | the-smug-one: Is it whether it does not, respectively does have free variables? |
2020-12-20 15:59:38 +0100 | <__monty__> | The other interpretation I could see is like open and closed type families. The former can be added to in other files, like type classes, the latter cannot, like types. |
2020-12-20 16:00:28 +0100 | <the-smug-one> | __monty__: It's probably regarding free variables. So a closed term has no free variables |
2020-12-20 16:01:33 +0100 | <nshepperd2> | in the context of tagless final he's probably talking about whether you can add to it later |
2020-12-20 16:02:36 +0100 | kritzefitz | (~kritzefit@212.86.56.80) (Ping timeout: 240 seconds) |
2020-12-20 16:03:18 +0100 | <the-smug-one> | nshepperd2: Probably the free variables interpretation is correct, considering this quote: "After all, the typeexprepresents object terms both well-typed and ill-typed, both open andclosed" |
2020-12-20 16:05:00 +0100 | hackage | pandoc-crossref 0.3.9.0 - Pandoc filter for cross-references https://hackage.haskell.org/package/pandoc-crossref-0.3.9.0 (lierdakil) |
2020-12-20 16:05:32 +0100 | Deide | (~Deide@217.155.19.23) |
2020-12-20 16:05:43 +0100 | <joel135> | yes in that context it seems largely unambiguous |
2020-12-20 16:10:08 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection) |
2020-12-20 16:10:15 +0100 | <Janni> | Is it still possible to generate HTML docs for all the installed packages. It used to work with "documentation: True" in .cabal/config but it doesnt't seem to anymore. |
2020-12-20 16:10:18 +0100 | <Janni> | ? |
2020-12-20 16:11:04 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Remote host closed the connection) |
2020-12-20 16:11:04 +0100 | juuandyy | (~juuandyy@90.166.144.65) (Ping timeout: 246 seconds) |
2020-12-20 16:11:19 +0100 | geekosaur | (ae68c070@cpe-174-104-192-112.neo.res.rr.com) |
2020-12-20 16:11:25 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) |
2020-12-20 16:12:16 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-20 16:14:31 +0100 | juuandyy | (~juuandyy@90.166.144.65) |
2020-12-20 16:14:35 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 16:18:11 +0100 | Ariakenom | (~Ariakenom@2001:9b1:efb:fc00:7113:ddfe:c797:f6e7) |
2020-12-20 16:18:47 +0100 | ddellacosta | (dd@gateway/vpn/mullvad/ddellacosta) |
2020-12-20 16:20:55 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-20 16:21:30 +0100 | hackage | table-layout 0.9.0.2 - Format tabular data as grid or table. https://hackage.haskell.org/package/table-layout-0.9.0.2 (muesli4) |
2020-12-20 16:23:43 +0100 | Feuermagier | (~Feuermagi@213.178.26.41) (Remote host closed the connection) |
2020-12-20 16:25:25 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) |
2020-12-20 16:27:07 +0100 | rayyyy | (~nanoz@gateway/tor-sasl/nanoz) (Quit: Leaving) |
2020-12-20 16:29:47 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) (Ping timeout: 260 seconds) |
2020-12-20 16:30:29 +0100 | hackage | keylayouts 0.1.0.2 - Tools for macOS .keylayout files https://hackage.haskell.org/package/keylayouts-0.1.0.2 (dailectic) |
2020-12-20 16:33:05 +0100 | kish` | (~oracle@unaffiliated/oracle) |
2020-12-20 16:34:01 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Remote host closed the connection) |
2020-12-20 16:35:17 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 16:43:26 +0100 | ddellacosta | (dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 256 seconds) |
2020-12-20 16:43:39 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Remote host closed the connection) |
2020-12-20 16:50:40 +0100 | kish` | (~oracle@unaffiliated/oracle) (Quit: Leaving) |
2020-12-20 16:58:41 +0100 | avdb | (~avdb@213.177.155.250) (Quit: avdb) |
2020-12-20 16:58:50 +0100 | <tzlil> | what optimizations does GHC do? i wrote a function (http://0x0.st/iCNO.txt |
2020-12-20 16:58:59 +0100 | <tzlil> | but this seems like it would be slow |
2020-12-20 16:59:17 +0100 | <tzlil> | or would crash if the array is too long |
2020-12-20 16:59:34 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 16:59:36 +0100 | Kronic | (~Kronic___@84.203.96.46) |
2020-12-20 16:59:44 +0100 | <tzlil> | but i dont think it does |
2020-12-20 17:00:34 +0100 | <geekosaur> | it does lots of optimizations |
2020-12-20 17:00:34 +0100 | Rudd0 | (~Rudd0@185.189.115.103) |
2020-12-20 17:01:30 +0100 | <tzlil> | like what? |
2020-12-20 17:02:43 +0100 | <geekosaur> | unboxxing, streaming, worker/wrapper, let floating, strictness analysis, among many others |
2020-12-20 17:02:57 +0100 | <geekosaur> | in this case I would expect it to compile down to a loop |
2020-12-20 17:03:18 +0100 | <geekosaur> | *unboxing |
2020-12-20 17:06:30 +0100 | <merijn> | tzlil: You don't have an array there |
2020-12-20 17:06:45 +0100 | <whataday> | which function can do 'f Nothing Just 1 = Just 1' ? |
2020-12-20 17:06:55 +0100 | <merijn> | whataday: You want <|> |
2020-12-20 17:06:56 +0100 | <xerox_> | > Nothing <|> Just 1 |
2020-12-20 17:06:59 +0100 | <lambdabot> | Just 1 |
2020-12-20 17:07:01 +0100 | <merijn> | :t (<|>) |
2020-12-20 17:07:02 +0100 | <lambdabot> | Alternative f => f a -> f a -> f a |
2020-12-20 17:07:14 +0100 | <merijn> | whataday: or "asum" |
2020-12-20 17:07:16 +0100 | <merijn> | :t asum |
2020-12-20 17:07:17 +0100 | <lambdabot> | (Foldable t, Alternative f) => t (f a) -> f a |
2020-12-20 17:07:28 +0100 | <merijn> | whataday: Which will give you the "left most non-Nothing" |
2020-12-20 17:07:38 +0100 | alexelcu | (~alexelcu@142.93.180.198) (Quit: ZNC 1.8.2 - https://znc.in) |
2020-12-20 17:08:28 +0100 | alexelcu | (~alexelcu@142.93.180.198) |
2020-12-20 17:08:39 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Remote host closed the connection) |
2020-12-20 17:08:44 +0100 | <whataday> | ok |
2020-12-20 17:09:47 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 17:11:38 +0100 | danso | (~dan@69-165-210-185.cable.teksavvy.com) |
2020-12-20 17:12:39 +0100 | <whataday> | parse (spaces <|> (string "abc")) "" " ww1984" couldn't match type [Char] with () |
2020-12-20 17:12:48 +0100 | <whataday> | what's wrong? |
2020-12-20 17:13:01 +0100 | <ezzieyguywuf> | what is "custom-setup" in a cabal file? |
2020-12-20 17:13:13 +0100 | <whataday> | shouldn't it be Right ()? |
2020-12-20 17:13:36 +0100 | <merijn> | ezzieyguywuf: Something to be avoided :p |
2020-12-20 17:13:43 +0100 | <whataday> | spaces would consume the first space in " ww1984" |
2020-12-20 17:13:55 +0100 | juuandyy | (~juuandyy@90.166.144.65) (Quit: Konversation terminated!) |
2020-12-20 17:14:03 +0100 | <ezzieyguywuf> | merijn: lol, idris uses it |
2020-12-20 17:14:09 +0100 | juuandyy | (~juuandyy@90.166.144.65) |
2020-12-20 17:14:13 +0100 | <ezzieyguywuf> | trying to figure out what it is and how to deal with it in gentoo's package |
2020-12-20 17:14:32 +0100 | <merijn> | ezzieyguywuf: Basically, Cabal has a interface for building/configuring packages, which has 3 variants: "Simple" uses only Cabal code, Configure which is Simple + autoconf, and Custom, which incluces arbitrary custom code |
2020-12-20 17:14:49 +0100 | <merijn> | ezzieyguywuf: It basically means that Setup.hs has custom code doing...something |
2020-12-20 17:15:12 +0100 | <ezzieyguywuf> | ah hah |
2020-12-20 17:15:14 +0100 | <ezzieyguywuf> | yikes |
2020-12-20 17:15:18 +0100 | <ezzieyguywuf> | ok this helps, tank you merijn ! |
2020-12-20 17:15:19 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-12-20 17:15:21 +0100 | <merijn> | ezzieyguywuf: custom-setup just defines the dependencies/etc. of the custom Setup.hs |
2020-12-20 17:17:19 +0100 | urodna | (~urodna@unaffiliated/urodna) |
2020-12-20 17:23:24 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
2020-12-20 17:23:37 +0100 | juuandyy | (~juuandyy@90.166.144.65) (Ping timeout: 264 seconds) |
2020-12-20 17:26:11 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) |
2020-12-20 17:30:59 +0100 | son0p | (~son0p@181.136.122.143) (Quit: Lost terminal) |
2020-12-20 17:31:02 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) (Ping timeout: 260 seconds) |
2020-12-20 17:34:23 +0100 | hekkaidekapus} | (~tchouri@gateway/tor-sasl/hekkaidekapus) |
2020-12-20 17:34:34 +0100 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) |
2020-12-20 17:35:32 +0100 | <nf> | whataday: look at the type of (<|>), then look at the types of space and string "abc" |
2020-12-20 17:36:42 +0100 | <nf> | er, spaces |
2020-12-20 17:36:43 +0100 | hekkaidekapus{ | (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds) |
2020-12-20 17:38:14 +0100 | avdb | (~avdb@213.177.155.250) |
2020-12-20 17:38:49 +0100 | kritzefitz | (~kritzefit@212.86.56.80) |
2020-12-20 17:39:45 +0100 | juuandyy | (~juuandyy@90.166.144.65) |
2020-12-20 17:41:04 +0100 | cosimone | (~cosimone@93-47-228-249.ip115.fastwebnet.it) |
2020-12-20 17:42:21 +0100 | asheshambasta | (~user@ptr-e1lysaxt4bg7tmaahx1.18120a2.ip6.access.telenet.be) (Ping timeout: 272 seconds) |
2020-12-20 17:44:18 +0100 | avdb | (~avdb@213.177.155.250) (Quit: avdb) |
2020-12-20 17:44:51 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:a111:468a:beb5:7acf) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-20 17:46:48 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:5ba9:d29a:794f:12e0) (Ping timeout: 258 seconds) |
2020-12-20 17:50:58 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-20 17:53:51 +0100 | Welkin | (~Welkin@216.243.35.47) |
2020-12-20 17:58:44 +0100 | Welkin | (~Welkin@216.243.35.47) (Ping timeout: 256 seconds) |
2020-12-20 17:59:11 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:fc57:9d4e:59df:9fdd) |
2020-12-20 17:59:27 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:a111:468a:beb5:7acf) |
2020-12-20 18:00:25 +0100 | dansho | (~dansho@ec2-18-183-184-168.ap-northeast-1.compute.amazonaws.com) (Quit: Leaving) |
2020-12-20 18:01:55 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
2020-12-20 18:02:28 +0100 | fuzzypixelz | (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: fuzzypixelz) |
2020-12-20 18:04:17 +0100 | kam1 | (~kam1@24.231.108.143) (Ping timeout: 260 seconds) |
2020-12-20 18:07:20 +0100 | knupfer | (~Thunderbi@200116b82cf0a300a4f8edfeafadaac2.dip.versatel-1u1.de) (Quit: knupfer) |
2020-12-20 18:07:28 +0100 | knupfer | (~Thunderbi@200116b82cf0a300755132b825621d33.dip.versatel-1u1.de) |
2020-12-20 18:08:57 +0100 | kam1 | (~kam1@24.231.108.143) |
2020-12-20 18:14:31 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-20 18:15:21 +0100 | troydm | (~troydm@unaffiliated/troydm) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset) |
2020-12-20 18:15:56 +0100 | juuandyy | (~juuandyy@90.166.144.65) (Ping timeout: 240 seconds) |
2020-12-20 18:16:51 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) |
2020-12-20 18:17:46 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-12-20 18:20:04 +0100 | Tops2 | (~Tobias@dyndsl-095-033-023-074.ewe-ip-backbone.de) |
2020-12-20 18:25:40 +0100 | troydm | (~troydm@unaffiliated/troydm) |
2020-12-20 18:26:49 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) |
2020-12-20 18:27:35 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:a111:468a:beb5:7acf) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-20 18:30:48 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
2020-12-20 18:31:42 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) (Ping timeout: 260 seconds) |
2020-12-20 18:34:51 +0100 | <Kronic> | So... I wrote a program to do some potentially very big, slow calculations and it has been running for ages now -- is there anyway for me to know if it has just outright locked up, or if it is simply slowly chugging along? |
2020-12-20 18:35:22 +0100 | kish` | (~oracle@unaffiliated/oracle) |
2020-12-20 18:35:58 +0100 | <sm[m]> | Kronic: a quick thing, run top or whatever and see if it's using cpu |
2020-12-20 18:36:16 +0100 | <sm[m]> | what kind of machine are you ? |
2020-12-20 18:36:21 +0100 | <sm[m]> | are you on |
2020-12-20 18:37:10 +0100 | al3x27 | (~plovs@85.254.75.80) |
2020-12-20 18:40:39 +0100 | <tomsmeding> | whataday: 'spaces' is a parser for (), 'string' is a parser for String = [Char] |
2020-12-20 18:40:59 +0100 | <tomsmeding> | oh you already got a response, sorry :p |
2020-12-20 18:41:51 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) |
2020-12-20 18:42:04 +0100 | <Kronic> | I'm on a bit of a monster, it's at the top of htop alright |
2020-12-20 18:48:00 +0100 | <pjb> | Kronic: On the other hand, what you would want to know is whether it's lost in an infinite loop, or if it's really progressing on the calculation. For this, you could write some log at critical points in your computations (eg. if you are processing a big lists, write a log each 1000 or 10000 elements processed). |
2020-12-20 18:48:13 +0100 | <sm[m]> | right, you could add some progress output, eg with Debug.Trace, and restart |
2020-12-20 18:48:17 +0100 | <pjb> | It's always good to get news from one's little program, cf. Tron. |
2020-12-20 18:48:21 +0100 | <Kronic> | It's progressing the calculation I'm pretty sure, it's just a really slow one |
2020-12-20 18:48:44 +0100 | <sm[m]> | you probably want some kind of estimate of how long it will take |
2020-12-20 18:49:07 +0100 | <sm[m]> | in case it's longer than the lifetime of the universe :) |
2020-12-20 18:49:11 +0100 | <Kronic> | it's just an Advent of Code thing, I need to write something that isn't so slow I think |
2020-12-20 18:49:47 +0100 | <boxscape> | which day? |
2020-12-20 18:50:05 +0100 | <Kronic> | day 9 part 2 |
2020-12-20 18:50:37 +0100 | knupfer | (~Thunderbi@200116b82cf0a300755132b825621d33.dip.versatel-1u1.de) (Ping timeout: 260 seconds) |
2020-12-20 18:51:06 +0100 | <pjb> | In the worst cases (it takes days or weeks), let your program give you news thru IRC! |
2020-12-20 18:51:14 +0100 | <pjb> | or by email. |
2020-12-20 18:51:55 +0100 | <pjb> | In Tron, they didn't have email. They needed a direct, interactive communication channel between a program and its programmer… |
2020-12-20 18:51:57 +0100 | Sheilong | (uid293653@gateway/web/irccloud.com/x-bsavlyquljvibkoo) |
2020-12-20 18:52:16 +0100 | <pjb> | Exercise for the student: rewrite Tron taking into account email. |
2020-12-20 18:52:18 +0100 | <Kronic> | Lol, well here's the slow part: https://dpaste.org/XBD9#L4 |
2020-12-20 18:52:25 +0100 | <sm[m]> | yeah it's 2020, why can't things be more like Tron |
2020-12-20 18:53:41 +0100 | <sm[m]> | https://hackage.haskell.org/package/base-4.14.1.0/docs/Data-List.html#v:subsequences doesn't say, but I would guess that is O(n^2) ? |
2020-12-20 18:54:38 +0100 | gproto23 | (~gproto23@unaffiliated/gproto23) |
2020-12-20 18:54:44 +0100 | <Kronic> | I mean, I figured the lazy nature would save me somewhat |
2020-12-20 18:54:51 +0100 | fendor | (~fendor@77.119.130.63.wireless.dyn.drei.com) |
2020-12-20 18:55:30 +0100 | knupfer | (~Thunderbi@200116b82cf0a300d8b066fffe45caa9.dip.versatel-1u1.de) |
2020-12-20 18:55:30 +0100 | knupfer | (~Thunderbi@200116b82cf0a300d8b066fffe45caa9.dip.versatel-1u1.de) (Client Quit) |
2020-12-20 18:55:43 +0100 | knupfer | (~Thunderbi@mue-88-130-61-068.dsl.tropolys.de) |
2020-12-20 18:55:49 +0100 | <tomsmeding> | sm[m]: subsequences produces 2^n results, so O(2^n) |
2020-12-20 18:56:08 +0100 | <sm[m]> | thanks toms meding |
2020-12-20 18:56:17 +0100 | jonatanb | (jonatanb@gateway/vpn/protonvpn/jonatanb) |
2020-12-20 18:56:33 +0100 | <tomsmeding> | so, 'filter (`isInfixOf` xs) (subsequences xs)' takes the 2^n subsequences and selects the n^2 contiguous ones? |
2020-12-20 18:56:47 +0100 | <tomsmeding> | so, like, concatMap inits (tails xs) ? |
2020-12-20 18:57:10 +0100 | gproto23 | (~gproto23@unaffiliated/gproto23) (Client Quit) |
2020-12-20 18:57:33 +0100 | <tomsmeding> | more correctly, concatMap (tail . inits) (tails xs) |
2020-12-20 18:57:41 +0100 | <tomsmeding> | um, [] : concatMap (tail . inits) (tails xs) |
2020-12-20 18:58:35 +0100 | <tomsmeding> | Kronic: laziness doesn't save you here, 'subsequences' is still going to generate them all, even if the full list is not instantiated in memory at once |
2020-12-20 18:58:58 +0100 | <Kronic> | Ah I see... is there anyway to make it not do that? |
2020-12-20 18:59:30 +0100 | <tomsmeding> | ... not generate bloody exponentially many items? :p |
2020-12-20 18:59:39 +0100 | <Kronic> | Yea I figured, alright thanks anyway |
2020-12-20 19:00:01 +0100 | <tomsmeding> | e.g. substitute '[] : concatMap (tail . inits) (tails xs)' for your 'filter (`isInfixOf` xs) (subsequences xs)' |
2020-12-20 19:00:11 +0100 | <tomsmeding> | the ordering might be different though, not sure if that matters for you |
2020-12-20 19:01:17 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:404:9305:1542:3c1a) (Remote host closed the connection) |
2020-12-20 19:01:33 +0100 | boxscape | (4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Ping timeout: 268 seconds) |
2020-12-20 19:01:44 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2020-12-20 19:01:52 +0100 | <tomsmeding> | FWIW, my solution to day 9 part 2 is not even O(n^2), it's O(n log n) ;) |
2020-12-20 19:02:02 +0100 | <koz_> | tomsmeding: I guess some sorting was involved? |
2020-12-20 19:02:18 +0100 | <tomsmeding> | nope, unless you count putting stuff in a Map, sortinf |
2020-12-20 19:02:20 +0100 | <tomsmeding> | *sorting |
2020-12-20 19:02:20 +0100 | <Kronic> | I find it to be incredibly hard to understand how fast things are in Haskell, so, I'll just see what other way I can come up with |
2020-12-20 19:02:24 +0100 | <koz_> | That does count. |
2020-12-20 19:02:31 +0100 | <koz_> | Since a Map is a red-black tree. |
2020-12-20 19:02:41 +0100 | <tomsmeding> | Kronic: this is complexity analysis, and orthogonal to haskell or c++ or whatever :) |
2020-12-20 19:02:41 +0100 | <koz_> | Whose bounds actually come from the comparison sort Big-Omega. |
2020-12-20 19:03:09 +0100 | <tomsmeding> | koz_: okay fair, if you make "sorting" generic like that, then yes most log-containing complexities are because of sorting |
2020-12-20 19:03:16 +0100 | kam1 | (~kam1@24.231.108.143) (Ping timeout: 246 seconds) |
2020-12-20 19:03:20 +0100 | chang | (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-20 19:03:28 +0100 | <tomsmeding> | though still "most", not all; I've seen some wild stuff |
2020-12-20 19:03:28 +0100 | emmanuel_erc | (~user@2604:2000:1382:ce03::9af) (Ping timeout: 260 seconds) |
2020-12-20 19:03:36 +0100 | <koz_> | Yeah, when you see n log (n), it's either an explicit sort or a sorted structure in pretty much all cases. |
2020-12-20 19:03:37 +0100 | kritzefitz | (~kritzefit@212.86.56.80) (Remote host closed the connection) |
2020-12-20 19:03:51 +0100 | <koz_> | Unless you're like, doing some kind of FFT stuff maybe? |
2020-12-20 19:03:54 +0100 | philopsos | (~caecilius@gateway/tor-sasl/caecilius) |
2020-12-20 19:03:58 +0100 | <sm[m]> | Kronic: to build intuition, at least stick in a trace "." in loops, it can be very informative |
2020-12-20 19:04:00 +0100 | <koz_> | (and that's only theoretically n log (n) actually) |
2020-12-20 19:04:10 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:7482:9511:22c:1523) |
2020-12-20 19:04:25 +0100 | sm[m] | wishes for audio tracing |
2020-12-20 19:04:41 +0100 | <tomsmeding> | koz_: https://link.springer.com/article/10.1007/s00453-005-1199-1 |
2020-12-20 19:04:53 +0100 | <tomsmeding> | (abstract is sufficient for my point) |
2020-12-20 19:05:02 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2020-12-20 19:05:13 +0100 | howdoi | (uid224@gateway/web/irccloud.com/x-jjzeflqmmqjznsli) |
2020-12-20 19:05:36 +0100 | <koz_> | n^3 * sqrt(log(log(n)) / log(n) ... is not n log (n). :P |
2020-12-20 19:06:08 +0100 | <Kronic> | I mean, I've been a software engineer for about 5 years now, I know what complexity analysis is. My point was that I find it very hard to work out the complexity in Haskell, not that I don't understand the concept at all |
2020-12-20 19:06:38 +0100 | <koz_> | Kronic: What specifically in Haskell throws you in this regard? |
2020-12-20 19:06:39 +0100 | <tomsmeding> | koz_: very good point, does n log n log log n for schönhage-strassen count? |
2020-12-20 19:06:47 +0100 | <tomsmeding> | okay that's fft, I give up |
2020-12-20 19:06:52 +0100 | <koz_> | Lol. |
2020-12-20 19:07:06 +0100 | sgibber2018 | (~arch-gibb@208.85.237.137) (Ping timeout: 268 seconds) |
2020-12-20 19:07:18 +0100 | <koz_> | I believe theoretically we could do FFT in n log(n), just that we haven't figured out how yet. :P |
2020-12-20 19:07:24 +0100 | <Kronic> | I think it's a combination of many things |
2020-12-20 19:07:42 +0100 | <koz_> | But I'm far from an expert on this, since my brain dribbles out of my ears whenever I'm not dealing with discrete anything. |
2020-12-20 19:08:40 +0100 | rBiosas | (~biosas@ip-62-24-80-122.net.upcbroadband.cz) (Ping timeout: 256 seconds) |
2020-12-20 19:08:52 +0100 | <tomsmeding> | Kronic: I think in haskell, to judge the complexity of something, basically it's the same as what the naive imperative translation of the haskell program would be |
2020-12-20 19:09:00 +0100 | <tomsmeding> | until you start partially evaluating things |
2020-12-20 19:09:09 +0100 | <koz_> | I think of it in terms of how much data you have to process usually. |
2020-12-20 19:09:20 +0100 | <tomsmeding> | the space usage might not be the same due to laziness, both ways, but the time _complexity_ won't be very different |
2020-12-20 19:09:21 +0100 | <koz_> | Bird and Gibbons (I think) new book says to count reduction steps. |
2020-12-20 19:09:46 +0100 | <tomsmeding> | at least, if you use normal combinators like map, filter, or plain recursion, that works fine for me |
2020-12-20 19:09:56 +0100 | <tomsmeding> | if you partially evaluate something, then count only the part that you really evaluate |
2020-12-20 19:10:11 +0100 | <koz_> | (it was Bird and Gibbons!) |
2020-12-20 19:10:22 +0100 | <tomsmeding> | in your case, here, you evaluate everything, so you have an exponential loop, then a quadratic loop, etc |
2020-12-20 19:10:46 +0100 | <tomsmeding> | the fact that you don't actually store those 2^n elements all at once due to laziness isn't relevant for the time complexity |
2020-12-20 19:10:47 +0100 | <Kronic> | I think I don't see how I evaluated everything |
2020-12-20 19:11:02 +0100 | <koz_> | The exponential in your case comes from the fact that a list of n items have 2^n subsequences. |
2020-12-20 19:11:12 +0100 | <tomsmeding> | which of those 2^n items do you not evaluate? |
2020-12-20 19:11:13 +0100 | <koz_> | That's pure combinatorics - you don't even need complexity. |
2020-12-20 19:11:46 +0100 | <tomsmeding> | koz_: counting reduction steps makes sense, but that's perhaps not a good way to do it intuitively |
2020-12-20 19:11:58 +0100 | <koz_> | More precisely: how can you guarantee, to total certainty, in all cases, that you don't need to evaluate everything in the worst case. |
2020-12-20 19:12:03 +0100 | <tomsmeding> | with which I mean: it's correct, sure, but it's hard to do offhand :p |
2020-12-20 19:12:05 +0100 | <koz_> | tomsmeding: They state it's a crude measure. |
2020-12-20 19:12:09 +0100 | elfets | (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Read error: Connection reset by peer) |
2020-12-20 19:12:10 +0100 | <koz_> | But agreed. |
2020-12-20 19:12:22 +0100 | <koz_> | I do recommend the book though, it's excellent. |
2020-12-20 19:12:35 +0100 | <koz_> | One of the first treatments of algorithms and data structures which isn't uber-imperative. |
2020-12-20 19:12:41 +0100 | tomsmeding | seldomly reads non-fiction books |
2020-12-20 19:13:53 +0100 | jamm | (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
2020-12-20 19:14:54 +0100 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection) |
2020-12-20 19:15:13 +0100 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
2020-12-20 19:15:14 +0100 | <tomsmeding> | oh! koz_: https://www.youtube.com/watch?v=FKGRc867j10 |
2020-12-20 19:15:22 +0100 | <Kronic> | I used find, so I only wanted one match |
2020-12-20 19:15:38 +0100 | <tomsmeding> | I haven't actually watched that talk yet, but I mean to; I believe they do something vastly different than an fft |
2020-12-20 19:15:47 +0100 | <koz_> | Kronic: And what if the thing you want is at the very end? |
2020-12-20 19:16:05 +0100 | <koz_> | Any sort of linear search is worst-case linear, because it might have to check everything (for instance, if it fails). |
2020-12-20 19:16:16 +0100 | <koz_> | tomsmeding: That's quite intriguing. |
2020-12-20 19:16:35 +0100 | <tomsmeding> | even if it isn't at the very end, on average it's going to be in the middle, and evaluating half of a list is the same complexity as evaluating the whole list, if all elements are similarly expensive |
2020-12-20 19:16:36 +0100 | <koz_> | Because multiplication-via-FFT is potentially n log(n) if the FFT-in-n-log-n thing actually holds. |
2020-12-20 19:16:51 +0100 | <koz_> | tomsmeding: 'On average it's going to be in the middle' is a hell of a claim in general. |
2020-12-20 19:17:06 +0100 | <tomsmeding> | which is why I think they aren't doing an fft, because if so, the title would have been "FFT in n log n" :p |
2020-12-20 19:17:21 +0100 | <tomsmeding> | koz_: okay fair, that's a bold claim :p |
2020-12-20 19:17:22 +0100 | <koz_> | tomsmeding: Indeed - I just think that this is an interesting data point in that regard. |
2020-12-20 19:17:37 +0100 | <tomsmeding> | in this case my claim holds though :p |
2020-12-20 19:17:50 +0100 | <koz_> | I'll definitely look at that - thank you! |
2020-12-20 19:18:17 +0100 | <Kronic> | So, I reversed the list and it died immediately |
2020-12-20 19:18:31 +0100 | <Kronic> | Good to know it's just a stupid solution and like I said I should write something different |
2020-12-20 19:18:34 +0100 | <koz_> | Kronic: OOMed? |
2020-12-20 19:18:56 +0100 | <Kronic> | it just said the word "killed" |
2020-12-20 19:18:58 +0100 | <tomsmeding> | reversing the list is going to load it into memory as a whole before even starting to consume it, so yes that'll be OOM :p |
2020-12-20 19:19:05 +0100 | <koz_> | Yeah... |
2020-12-20 19:19:11 +0100 | phaul | (~phaul@ruby/staff/phaul) (Remote host closed the connection) |
2020-12-20 19:19:25 +0100 | <tomsmeding> | I generally notice it when stuff goes OOM because my system grinds to a halt |
2020-12-20 19:19:29 +0100 | <Kronic> | why does it say killed and not out of memory? |
2020-12-20 19:19:41 +0100 | phaul | (~phaul@ruby/staff/phaul) |
2020-12-20 19:19:52 +0100 | <tomsmeding> | because the linux out-of-memory killer (OOM killer) kills a program that uses more memory than the OOM killer thinks it should |
2020-12-20 19:20:05 +0100 | <koz_> | And your OOM killer appears quite aggressive. |
2020-12-20 19:20:07 +0100 | <tomsmeding> | and what the shell prints (and you see) is how the program exited, which is via a kill |
2020-12-20 19:20:33 +0100 | <tomsmeding> | I agree that the user experience of linux (perhaps bsd or mac in your case?) could be better here, but oh well :p |
2020-12-20 19:20:44 +0100 | <Kronic> | linux |
2020-12-20 19:21:00 +0100 | <Kronic> | I was just asking, in Java usually it'll figure this out early and tell you it's an oom |
2020-12-20 19:21:09 +0100 | <koz_> | Because Java runs in a VM. |
2020-12-20 19:21:20 +0100 | <koz_> | It reserves a bunch of memory, and if you burn through it, it'll blow up. |
2020-12-20 19:21:27 +0100 | <koz_> | Haskell compiles to native code. |
2020-12-20 19:21:30 +0100 | <koz_> | There ain't no VM there. |
2020-12-20 19:21:42 +0100 | <sm[m]> | there's a RTS though... |
2020-12-20 19:21:46 +0100 | <tomsmeding> | in particular, the java VM will decide it's out of memory based on its -Xmx setting; here linux is the one that decides the game is over |
2020-12-20 19:21:54 +0100 | <koz_> | What tomsmeding said. |
2020-12-20 19:21:56 +0100 | <sm[m]> | can't you tell it to limit the total memory in use ? |
2020-12-20 19:22:16 +0100 | <koz_> | sm[m]: You can tell the process, sure. |
2020-12-20 19:22:25 +0100 | <koz_> | (the one that spins up when you run your executable) |
2020-12-20 19:22:29 +0100 | <koz_> | But it doesn't happen by default. |
2020-12-20 19:22:31 +0100 | Janni | (~jan@134.3.46.18) (Ping timeout: 268 seconds) |
2020-12-20 19:22:36 +0100 | <sm[m]> | I meant the GHC RTS.. but if not, then yes, ulimit would do |
2020-12-20 19:22:51 +0100 | <koz_> | I dunno if the RTS can be told to limit memory use actually. |
2020-12-20 19:23:06 +0100 | <koz_> | Would be curious to find out. |
2020-12-20 19:23:10 +0100 | <tomsmeding> | I have no idea, but apparently +RTS -M4G or something |
2020-12-20 19:23:17 +0100 | <Kronic> | I just used Java as an example, I'm sure I've seen other languages that directly tell me what the problem is in some way. Idk, I just find a lot of this stuff a little alien, sorry for all of the questions |
2020-12-20 19:23:46 +0100 | <koz_> | Kronic: Have you worked in unmanaged languages before? So like, C, C++, etc? |
2020-12-20 19:23:54 +0100 | <tomsmeding> | or rust |
2020-12-20 19:23:57 +0100 | <koz_> | tomsmeding: Nice to know. |
2020-12-20 19:24:06 +0100 | <sm[m]> | somehow I do find it much more common to allocate way too much space in haskell than in other languages. Maybe because I mix and match data structures and operations on them at a greater rate ? |
2020-12-20 19:24:08 +0100 | <Kronic> | C++ a little here and there when I needed to |
2020-12-20 19:24:12 +0100 | tomsmeding | just looked at +RTS --help from a random haskell executable |
2020-12-20 19:24:39 +0100 | <koz_> | Kronic: Basically, this is the kind of behaviour you'd see from C++ if you tried to make an exponentially-sized thing. |
2020-12-20 19:24:46 +0100 | <koz_> | And it noms all your memory. |
2020-12-20 19:24:59 +0100 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood) |
2020-12-20 19:25:13 +0100 | bitmagie | (~Thunderbi@200116b806446f0011aa198d8ec58657.dip.versatel-1u1.de) |
2020-12-20 19:25:25 +0100 | <koz_> | sm[m]: You could probably make it tighter if you really wanted to. |
2020-12-20 19:25:33 +0100 | <Kronic> | I'm pretty sure you can still catch an exception for it in C++ or something to that order |
2020-12-20 19:25:38 +0100 | <sm[m]> | +1 for +RTS -M, that's the way to get a better error Kronic |
2020-12-20 19:25:45 +0100 | <tomsmeding> | Kronic: in practice, on linux, no |
2020-12-20 19:25:52 +0100 | <tomsmeding> | because linux over-allocates |
2020-12-20 19:26:03 +0100 | <koz_> | Yep, that's right. |
2020-12-20 19:26:12 +0100 | Yuu-chan | (5f2e7d87@95.46.125.135) |
2020-12-20 19:26:14 +0100 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
2020-12-20 19:26:16 +0100 | <tomsmeding> | on windows you might be able to actually get std::bad_alloc, but I believe on newer windows versions it over-allocates similarly to linux |
2020-12-20 19:26:29 +0100 | <koz_> | When you work in unmanaged languages, you have to accept that situations like this one are _very_ platform-dependent. |
2020-12-20 19:26:59 +0100 | <Kronic> | That's fair enough, I'm still annoyed about it though |
2020-12-20 19:27:02 +0100 | <Yuu-chan> | Is there a lens to `ix` multiple keys in a map? |
2020-12-20 19:27:07 +0100 | <koz_> | Kronic: Not a lot you can do about it. |
2020-12-20 19:27:13 +0100 | <tomsmeding> | ha, overcommittment is the term I was looking for, not over-allocation |
2020-12-20 19:27:17 +0100 | <koz_> | ('you' here meaning 'anyone really') |
2020-12-20 19:27:26 +0100 | <koz_> | tomsmeding: The Linux kernel is Rick Astley. |
2020-12-20 19:27:36 +0100 | <koz_> | ("A full commitment's what I'm thinking of...") |
2020-12-20 19:27:51 +0100 | <koz_> | Although the fact it'll never let you down is debatable. :P |
2020-12-20 19:28:00 +0100 | hackage | algebraic-graphs-io 0.1.1.0 - I/O utilities for algebraic-graphs https://hackage.haskell.org/package/algebraic-graphs-io-0.1.1.0 (ocramz) |
2020-12-20 19:28:23 +0100 | <tomsmeding> | someone saying "I'll never let you down" is going to ring the doubt bells anyway |
2020-12-20 19:28:35 +0100 | <koz_> | tomsmeding: Lol. |
2020-12-20 19:28:47 +0100 | <sm[m]> | it's like "Don't be evil" |
2020-12-20 19:28:57 +0100 | <koz_> | And we know that by overcommitment, the Linux kernel already tells lies. |
2020-12-20 19:29:01 +0100 | <koz_> | (and possibly hurts you) |
2020-12-20 19:29:40 +0100 | <koz_> | (ok, I'll stop dragging this tired joke) |
2020-12-20 19:29:43 +0100 | <tomsmeding> | koz_: you should do better, more than 3 people are going to get these jokes |
2020-12-20 19:29:53 +0100 | christo | (~chris@81.96.113.213) |
2020-12-20 19:30:01 +0100 | <koz_> | tomsmeding: I'm sorry, I'll fulfil my quota of obscurica some other way today. |
2020-12-20 19:30:44 +0100 | bitmagie | (~Thunderbi@200116b806446f0011aa198d8ec58657.dip.versatel-1u1.de) (Quit: bitmagie) |
2020-12-20 19:32:14 +0100 | ddellacosta | (dd@gateway/vpn/mullvad/ddellacosta) |
2020-12-20 19:32:29 +0100 | hackage | ghc-lib-parser 8.10.3.20201220 - The GHC API, decoupled from GHC versions https://hackage.haskell.org/package/ghc-lib-parser-8.10.3.20201220 (shayne_fletcher) |
2020-12-20 19:33:29 +0100 | hackage | algebraic-graphs-io 0.1.2.0 - I/O utilities for algebraic-graphs https://hackage.haskell.org/package/algebraic-graphs-io-0.1.2.0 (ocramz) |
2020-12-20 19:33:29 +0100 | hackage | ghc-lib 8.10.3.20201220 - The GHC API, decoupled from GHC versions https://hackage.haskell.org/package/ghc-lib-8.10.3.20201220 (shayne_fletcher) |
2020-12-20 19:34:38 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-20 19:34:53 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:a104:aab:2310:b4f0) |
2020-12-20 19:35:06 +0100 | <koz_> | Yuu-chan: Lens as in from 'lens'? Or 'optics'? |
2020-12-20 19:36:48 +0100 | <dolio> | Whatever it would be, it wouldn't be a named concept, I think. |
2020-12-20 19:37:01 +0100 | boxscape | (4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) |
2020-12-20 19:37:13 +0100 | <koz_> | Yeah, wouldn't you just have like, a list of indexes and fmap? |
2020-12-20 19:38:55 +0100 | kam1 | (~kam1@24.231.108.143) |
2020-12-20 19:39:40 +0100 | <boxscape> | why can the result type of a function not be unlifted? |
2020-12-20 19:39:49 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
2020-12-20 19:39:55 +0100 | <dolio> | It can. |
2020-12-20 19:40:05 +0100 | <boxscape> | oh I must be misremembering |
2020-12-20 19:40:20 +0100 | livvy | (~livvy@gateway/tor-sasl/livvy) |
2020-12-20 19:40:51 +0100 | <boxscape> | hmm |
2020-12-20 19:41:08 +0100 | <boxscape> | but the kind of (->) is TYPE q -> TYPE r -> * |
2020-12-20 19:41:35 +0100 | <boxscape> | oh wait |
2020-12-20 19:41:46 +0100 | <koz_> | % :kind (->) |
2020-12-20 19:41:47 +0100 | <yahb> | koz_: * -> * -> * |
2020-12-20 19:41:49 +0100 | <boxscape> | I just forgot how kind signatures work, carry on |
2020-12-20 19:41:53 +0100 | <koz_> | Wait what. |
2020-12-20 19:42:00 +0100 | Welkin | (~Welkin@216.243.35.47) |
2020-12-20 19:42:09 +0100 | <boxscape> | % :set -fprint-explicit-runtime-reps |
2020-12-20 19:42:09 +0100 | <yahb> | boxscape: |
2020-12-20 19:42:15 +0100 | <boxscape> | % :k (->) |
2020-12-20 19:42:16 +0100 | <yahb> | boxscape: TYPE q -> TYPE r -> * |
2020-12-20 19:42:39 +0100 | <koz_> | OK yeah, that's better. |
2020-12-20 19:42:58 +0100 | <koz_> | Technically, isn't * shorthand for TYPE SomethingOrOther? |
2020-12-20 19:43:12 +0100 | <boxscape> | TYPE LiftedRep |
2020-12-20 19:43:23 +0100 | <koz_> | Yeah that one. |
2020-12-20 19:43:47 +0100 | <koz_> | So properly it's actually 'TYPE q -> TYPE r -> TYPE LiftedRep'. |
2020-12-20 19:43:56 +0100 | <koz_> | Again, all we ever do is lift in Haskell. |
2020-12-20 19:44:03 +0100 | <koz_> | Now even our function arrows lift! |
2020-12-20 19:45:07 +0100 | wonko7 | (~wonko7@2a01:e35:2ffb:7040:4535:f480:7dff:b3b5) |
2020-12-20 19:46:36 +0100 | Welkin | (~Welkin@216.243.35.47) (Ping timeout: 240 seconds) |
2020-12-20 19:46:54 +0100 | <Yuu-chan> | koz_: Lens from `lens`. I managed to get multiple values with `foldMap ix`, but setting doesn't work properly. |
2020-12-20 19:52:00 +0100 | hackage | ghc-lib-parser-ex 8.10.0.17 - Algorithms on GHC parse trees https://hackage.haskell.org/package/ghc-lib-parser-ex-8.10.0.17 (shayne_fletcher) |
2020-12-20 19:52:21 +0100 | <shapr> | Anyone using haskell-language-server in NixOS and can tell me the magic incantation? |
2020-12-20 19:53:57 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-20 19:54:04 +0100 | jonatanb | (jonatanb@gateway/vpn/protonvpn/jonatanb) (Read error: Connection reset by peer) |
2020-12-20 19:54:38 +0100 | jonatanb | (jonatanb@gateway/vpn/protonvpn/jonatanb) |
2020-12-20 19:55:07 +0100 | the-smug-one | (~user@83-92-112-87-cable.dk.customer.tdc.net) (Ping timeout: 260 seconds) |
2020-12-20 19:55:55 +0100 | <koz_> | Also, tomsmeding - the algorithm you linked seems to rely on FFTs, just in a different form. |
2020-12-20 19:56:08 +0100 | Jeanne-Kamikaze | (~Jeanne-Ka@66.115.189.189) |
2020-12-20 19:56:13 +0100 | <koz_> | (well, DFTs I should say, but ehh) |
2020-12-20 19:56:41 +0100 | <tomsmeding> | ah! interesting they managed to work away that log log n factor then |
2020-12-20 19:56:52 +0100 | phaul | (~phaul@ruby/staff/phaul) (Ping timeout: 260 seconds) |
2020-12-20 19:57:04 +0100 | <tomsmeding> | perhaps I'll watch it over christmas |
2020-12-20 19:57:30 +0100 | <koz_> | Well, the work-away was done in 2006 by some German dude. |
2020-12-20 19:57:30 +0100 | hackage | algebraic-graphs-io 0.1.3.0 - I/O utilities for algebraic-graphs https://hackage.haskell.org/package/algebraic-graphs-io-0.1.3.0 (ocramz) |
2020-12-20 19:57:31 +0100 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 246 seconds) |
2020-12-20 19:57:41 +0100 | <koz_> | Who bashed it down to k ^ (log*(n)) |
2020-12-20 19:57:58 +0100 | mmsari | (~Thunderbi@37.130.100.46) (Remote host closed the connection) |
2020-12-20 19:58:05 +0100 | <koz_> | Then this guy and some collaborators pinned the k to 8, then brought it down to 4, and then killed it completely. |
2020-12-20 19:58:22 +0100 | mmsari | (~Thunderbi@37.130.100.46) |
2020-12-20 19:58:28 +0100 | phaul | (~phaul@ruby/staff/phaul) |
2020-12-20 19:59:02 +0100 | <shapr> | what algorithm? |
2020-12-20 19:59:18 +0100 | <koz_> | shapr: Shonhage-Strassen. |
2020-12-20 19:59:31 +0100 | <koz_> | Oh, you mean, the one where the k is dead? |
2020-12-20 19:59:35 +0100 | <shapr> | sure |
2020-12-20 19:59:36 +0100 | <koz_> | tomsmeding had a link earlier. |
2020-12-20 20:00:00 +0100 | <tomsmeding> | I see, cool! |
2020-12-20 20:00:12 +0100 | <shapr> | wikipedia says Fuerer's algorithm is the successor |
2020-12-20 20:00:14 +0100 | <koz_> | https://www.youtube.com/watch?v=FKGRc867j10 |
2020-12-20 20:00:43 +0100 | <koz_> | Fuerer was the guy who got n log(n) k^(log*(n)) without giving a value for k, other that the fact it was a constant. |
2020-12-20 20:01:07 +0100 | <koz_> | The guy in the vid I linked, and some collaborators, published a bunch of stuff in the late 2010s pinning k to 8, then slowly bringing it down to 4. |
2020-12-20 20:01:14 +0100 | juuandyy | (~juuandyy@90.166.144.65) |
2020-12-20 20:01:27 +0100 | <koz_> | The talk I linked is about their (at the time not peer reviewed) paper showing that you could eliminate that part completely to get O(n log(n)). |
2020-12-20 20:01:35 +0100 | <koz_> | (lower bound wasn't discussed AFAICT) |
2020-12-20 20:02:49 +0100 | <Kronic> | I ended up writing just the standard 2 pointer solution https://dpaste.org/bWAL |
2020-12-20 20:03:05 +0100 | <Kronic> | It could probably be better, but it worked, thanks for the help earlier all |
2020-12-20 20:03:05 +0100 | xelxebar | (~xelxebar@gateway/tor-sasl/xelxebar) (Remote host closed the connection) |
2020-12-20 20:03:11 +0100 | <koz_> | I was kinda amused to see iterated log again - that function played a key role in my Master's thesis! |
2020-12-20 20:03:28 +0100 | berberman | (~berberman@unaffiliated/berberman) |
2020-12-20 20:03:40 +0100 | xelxebar | (~xelxebar@gateway/tor-sasl/xelxebar) |
2020-12-20 20:03:50 +0100 | berberman_ | (~berberman@unaffiliated/berberman) (Ping timeout: 268 seconds) |
2020-12-20 20:03:52 +0100 | <[exa]> | koz_: wow, what precise topic? |
2020-12-20 20:03:58 +0100 | <koz_> | [exa]: Dynamic partial sorting. |
2020-12-20 20:04:10 +0100 | <koz_> | To _completely_ close the loop tomsmeding inadvertently started me on. :P |
2020-12-20 20:05:03 +0100 | <[exa]> | o wow |
2020-12-20 20:05:34 +0100 | phaul | (~phaul@ruby/staff/phaul) (Ping timeout: 246 seconds) |
2020-12-20 20:05:35 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:7482:9511:22c:1523) (Remote host closed the connection) |
2020-12-20 20:05:45 +0100 | stef204 | (~stef204@unaffiliated/stef-204/x-384198) |
2020-12-20 20:06:37 +0100 | <tomsmeding> | I started you on what? |
2020-12-20 20:07:14 +0100 | <koz_> | tomsmeding: The n log(n) thing? |
2020-12-20 20:07:21 +0100 | <tomsmeding> | oh right that, yes |
2020-12-20 20:07:51 +0100 | <tomsmeding> | I was somehow reading your message as saying that I inadvertently influenced your thesis topic, which sounded outrageously unlikely |
2020-12-20 20:09:11 +0100 | <monochrom> | This whole channel influenced my thesis topic alright. |
2020-12-20 20:09:26 +0100 | <[exa]> | #metoo |
2020-12-20 20:09:36 +0100 | elliott__ | (~elliott@pool-108-51-101-42.washdc.fios.verizon.net) |
2020-12-20 20:09:46 +0100 | <koz_> | monochrom: Is your topic 'Pedagogy, humour, functional programming: #haskell as a cultural expression of learning Haskell."? |
2020-12-20 20:09:56 +0100 | <tomsmeding> | koz_++ |
2020-12-20 20:09:56 +0100 | <monochrom> | Everyone here said "very hard to figure out time complexity under lazy evaluation" so I decided my thesis would be how easy it is. |
2020-12-20 20:10:06 +0100 | <__monty__> | Hmm, are library modules always looked for in the hs-source-dirs of an executable? Does that mean I have to include the source directory of the library in every executable stanza? How does that work with unrelated projects that need to depend on a library in a local project? |
2020-12-20 20:10:06 +0100 | <[exa]> | koz_: oh please can I read that essay? |
2020-12-20 20:10:17 +0100 | <koz_> | [exa]: Ask monochrom for that, not me. |
2020-12-20 20:10:26 +0100 | <koz_> | If it were _me_, it'd be more like |
2020-12-20 20:10:34 +0100 | <[exa]> | can it please have nice pictures? :D |
2020-12-20 20:10:42 +0100 | <tomsmeding> | Kronic: some unsolicited feedback on that version: the 'p2 + 1 /= length xs' can be changed to 'p1 + p2 < length xs' I think |
2020-12-20 20:10:52 +0100 | <koz_> | 'Pedagogy, humour, functional programming: Cultural learnings of #haskell to make benefit glorious nation of pedagogues." |
2020-12-20 20:11:07 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
2020-12-20 20:11:08 +0100 | <koz_> | (I am not sorry at all) |
2020-12-20 20:11:36 +0100 | <koz_> | (and the acknowledgements section would end with 'And finally, thank you Sasha Baron Cohen: you know why.'. |
2020-12-20 20:11:45 +0100 | <tomsmeding> | Kronic: also, your code is n^3 if I'm not mistaken; if you felt like it there is a little more to gain :) |
2020-12-20 20:11:56 +0100 | kam1 | (~kam1@24.231.108.143) (Ping timeout: 240 seconds) |
2020-12-20 20:12:00 +0100 | jonatanb | (jonatanb@gateway/vpn/protonvpn/jonatanb) () |
2020-12-20 20:12:20 +0100 | <koz_> | (that joke could have been taken a bit further - only a first draft) |
2020-12-20 20:12:29 +0100 | <tomsmeding> | (why n^3? well, n^2 times you're inspecting a sublist, and you're inspecting that sublist in O(n)) |
2020-12-20 20:12:44 +0100 | phaul | (~phaul@ruby/staff/phaul) |
2020-12-20 20:13:25 +0100 | Yuu-chan | (5f2e7d87@95.46.125.135) (Ping timeout: 245 seconds) |
2020-12-20 20:13:50 +0100 | mmsari | (~Thunderbi@37.130.100.46) (Ping timeout: 256 seconds) |
2020-12-20 20:14:32 +0100 | livvy | (~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection) |
2020-12-20 20:15:04 +0100 | <Kronic> | It finished in a a second or two so I'm not worried about that, but thank you for the earlier comment |
2020-12-20 20:15:57 +0100 | inkbottle | (~inkbottle@aaubervilliers-654-1-95-58.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2020-12-20 20:16:05 +0100 | ADG1089_ | (~adg1089@171.76.183.207) |
2020-12-20 20:17:56 +0100 | renzhi | (~renzhi@modemcable070.17-177-173.mc.videotron.ca) |
2020-12-20 20:18:59 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-95-58.w86-212.abo.wanadoo.fr) |
2020-12-20 20:21:19 +0100 | kam1 | (~kam1@24.231.108.143) |
2020-12-20 20:21:45 +0100 | electricityZZZZ | (~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net) |
2020-12-20 20:22:07 +0100 | <monochrom> | __monty__: hs-source-dirs is for those listed in main-is, other-modules, exposed-modules. It is not for those listed in build-depends. |
2020-12-20 20:23:52 +0100 | <merijn> | __monty__: Your question is flawed |
2020-12-20 20:24:02 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:fc57:9d4e:59df:9fdd) (Ping timeout: 264 seconds) |
2020-12-20 20:24:17 +0100 | <geekosaur> | the question sounded like it assumed an old cabal |
2020-12-20 20:24:23 +0100 | <merijn> | __monty__: Library modules aren't looked up by source location at all |
2020-12-20 20:24:48 +0100 | ADG1089_ | (~adg1089@171.76.183.207) (Ping timeout: 265 seconds) |
2020-12-20 20:24:57 +0100 | <merijn> | geekosaur: tbh, I'm betting on the classic mistake of "having library and exe modules in the same directory" |
2020-12-20 20:25:30 +0100 | phaul | (~phaul@ruby/staff/phaul) (Ping timeout: 256 seconds) |
2020-12-20 20:26:19 +0100 | <geekosaur> | but then why ask about finding those modules via hs-source-dirs? sounds like wanting to make that mistake instead of using cabal properly, possibly with multiple libraries |
2020-12-20 20:27:41 +0100 | phaul | (~phaul@ruby/staff/phaul) |
2020-12-20 20:28:29 +0100 | Merfont | (~Kaiepi@47.54.252.148) (Remote host closed the connection) |
2020-12-20 20:29:16 +0100 | Kaiepi | (~Kaiepi@47.54.252.148) |
2020-12-20 20:30:15 +0100 | <monochrom> | It would take forever to articulate and discuss the flaw. Also, although I would love to have everyone does everyone properly, most people never had a chance to learn the proper way, ever. |
2020-12-20 20:30:16 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:7482:9511:22c:1523) |
2020-12-20 20:30:33 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2020-12-20 20:30:56 +0100 | <__monty__> | I was misled by this example: https://cabal.readthedocs.io/en/3.4/cabal-package.html#example-a-package-containing-a-library-and-… |
2020-12-20 20:31:01 +0100 | <monochrom> | After thinking it through, I decided it's most efficient to just state one simple and accurate rule for what hs-source-dirs is for. |
2020-12-20 20:31:14 +0100 | <__monty__> | It gets the library modules via other-modules, rathen than build-depends. |
2020-12-20 20:32:16 +0100 | <monochrom> | Taking advantage of the fact that even people who haven't learned the proper way, they already have correct intuition for what belongs to build-depends, what belongs to other-modules, etc. (Or at least, that one is very easy to pick up.) |
2020-12-20 20:33:54 +0100 | <monochrom> | Yeah that example needs fixing. |
2020-12-20 20:34:03 +0100 | juuandyy | (~juuandyy@90.166.144.65) (Ping timeout: 268 seconds) |
2020-12-20 20:34:23 +0100 | <monochrom> | Err no nevermind, it is just another design decision. |
2020-12-20 20:34:25 +0100 | <__monty__> | I think that example would cause the same error, right? Because it'd look for A and B, respectively A and C in prog1, respectively prog2? |
2020-12-20 20:34:30 +0100 | <merijn> | __monty__: That example isn't using the library as library and, tbh, it's a weird ass example |
2020-12-20 20:34:45 +0100 | <monochrom> | No, it's one of two legit ways. |
2020-12-20 20:34:51 +0100 | __monty__ | jots down a note to fix the example |
2020-12-20 20:35:03 +0100 | <merijn> | __monty__: There are 3 modules named A in that example |
2020-12-20 20:35:08 +0100 | <geekosaur> | that was what I meant by old cabal, tbh |
2020-12-20 20:35:10 +0100 | <merijn> | __monty__: 3 different ones, that is |
2020-12-20 20:35:20 +0100 | <geekosaur> | I didn't know they still had an example dating from the bad old days |
2020-12-20 20:35:43 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:4c81:d0f9:caa9:4ec) |
2020-12-20 20:36:39 +0100 | <merijn> | __monty__: If your executables intends to use a library in the same package as library, it shouldn't list modules from that library at all in the executable section |
2020-12-20 20:37:02 +0100 | <monochrom> | Hrm, on third though, merijn is right. ./A.hs has nothing to do with prog1/A.hs, one would think. |
2020-12-20 20:37:39 +0100 | <__monty__> | merijn: Yep, I figured that out. A bell rang in my head saying "Why shouldn't this be in build-depends 💭" |
2020-12-20 20:37:40 +0100 | <merijn> | It may have meant something different in the past, but as it is, there is 0 module reuse in that example wrt current Cabal |
2020-12-20 20:38:18 +0100 | <__monty__> | Yep, still think those names either need changing or comments to make all of this clearer. |
2020-12-20 20:39:04 +0100 | Melanie | (~Melanie@192-0-134-138.cpe.teksavvy.com) |
2020-12-20 20:39:04 +0100 | <monochrom> | This example does a legit thing but is doing it confusingly. |
2020-12-20 20:39:21 +0100 | <merijn> | monochrom: Arguably also something dumb |
2020-12-20 20:40:29 +0100 | hackage | lumberjack 1.0.0.0 - Trek through your code forest and make logs https://hackage.haskell.org/package/lumberjack-1.0.0.0 (KevinQuick) |
2020-12-20 20:41:00 +0100 | <__monty__> | Yes, but imo examples shouldn't be brainteasers : ) |
2020-12-20 20:41:02 +0100 | cosimone | (~cosimone@93-47-228-249.ip115.fastwebnet.it) (Ping timeout: 256 seconds) |
2020-12-20 20:41:09 +0100 | <monochrom> | IKR |
2020-12-20 20:41:20 +0100 | <__monty__> | Hmm, reexporting qualified isn't a thing, is it? |
2020-12-20 20:41:32 +0100 | <geekosaur> | no, it's not |
2020-12-20 20:42:46 +0100 | <merijn> | Sadly |
2020-12-20 20:43:26 +0100 | Sgeo | (~Sgeo@ool-18b98aa4.dyn.optonline.net) |
2020-12-20 20:45:00 +0100 | hackage | fei-base 1.0.0 - FFI to MXNet https://hackage.haskell.org/package/fei-base-1.0.0 (JiasenWu) |
2020-12-20 20:45:59 +0100 | cosimone | (~cosimone@2001:b07:ae5:db26:1fb3:ef3f:ece2:c6f8) |
2020-12-20 20:46:51 +0100 | cosimone | (~cosimone@2001:b07:ae5:db26:1fb3:ef3f:ece2:c6f8) (Remote host closed the connection) |
2020-12-20 20:47:46 +0100 | cosimone | (~cosimone@93-47-228-249.ip115.fastwebnet.it) |
2020-12-20 20:47:46 +0100 | cosimone | (~cosimone@93-47-228-249.ip115.fastwebnet.it) (Read error: Connection reset by peer) |
2020-12-20 20:48:19 +0100 | cosimone | (~cosimone@2001:b07:ae5:db26:1fb3:ef3f:ece2:c6f8) |
2020-12-20 20:49:33 +0100 | <__monty__> | There goes my brilliant idea of grouping all these pesky imports in a helper module. |
2020-12-20 20:51:37 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-12-20 20:55:02 +0100 | Mikagami | (~MOSCOS@122.54.107.175) (Remote host closed the connection) |
2020-12-20 20:55:25 +0100 | Mikagami | (~MOSCOS@122.54.107.175) |
2020-12-20 20:55:27 +0100 | hnOsmium0001 | (uid453710@gateway/web/irccloud.com/x-htmytuyleznwkrop) |
2020-12-20 20:55:38 +0100 | kam1 | (~kam1@24.231.108.143) (Ping timeout: 272 seconds) |
2020-12-20 20:55:38 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 272 seconds) |
2020-12-20 20:56:46 +0100 | kam1 | (~kam1@24.231.108.143) |
2020-12-20 20:59:48 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
2020-12-20 21:02:19 +0100 | ADG1089_ | (~adg1089@171.76.183.207) |
2020-12-20 21:03:04 +0100 | ADG1089_ | (~adg1089@171.76.183.207) (Read error: Connection reset by peer) |
2020-12-20 21:03:22 +0100 | juuandyy | (~juuandyy@90.166.144.65) |
2020-12-20 21:04:26 +0100 | Tario | (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
2020-12-20 21:05:41 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) |
2020-12-20 21:06:51 +0100 | Welkin | (~Welkin@216.243.35.47) |
2020-12-20 21:10:20 +0100 | bliminse | (~bliminse@host109-158-129-129.range109-158.btcentralplus.com) |
2020-12-20 21:12:22 +0100 | <shapr> | When my attoparsec parsers are failing, I wish I could magically produce legal values that the parser would accept |
2020-12-20 21:12:23 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
2020-12-20 21:14:18 +0100 | howdoi | (uid224@gateway/web/irccloud.com/x-jjzeflqmmqjznsli) (Quit: Connection closed for inactivity) |
2020-12-20 21:14:25 +0100 | Varis | (~Tadas@unaffiliated/varis) (Ping timeout: 240 seconds) |
2020-12-20 21:14:41 +0100 | mputz | (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
2020-12-20 21:15:25 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Remote host closed the connection) |
2020-12-20 21:15:58 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 21:20:26 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 264 seconds) |
2020-12-20 21:20:50 +0100 | kritzefitz | (~kritzefit@212.86.56.80) |
2020-12-20 21:21:06 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 21:22:07 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Remote host closed the connection) |
2020-12-20 21:23:27 +0100 | fendor | (~fendor@77.119.130.63.wireless.dyn.drei.com) (Remote host closed the connection) |
2020-12-20 21:24:00 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:7482:9511:22c:1523) (Remote host closed the connection) |
2020-12-20 21:24:46 +0100 | kupi | (uid212005@gateway/web/irccloud.com/x-rilypanikbjfexcy) |
2020-12-20 21:25:30 +0100 | hackage | fei-nn 1.0.0 - Train a neural network with MXNet in Haskell. https://hackage.haskell.org/package/fei-nn-1.0.0 (JiasenWu) |
2020-12-20 21:26:16 +0100 | <ezzieyguywuf> | is there a tool that automatically creates dependency lower/upper bounds for your project based on what's currently available? |
2020-12-20 21:26:33 +0100 | <ezzieyguywuf> | I've seen enough 'pretty' .cabal files to think some folks are using this to creating a starting point... |
2020-12-20 21:27:07 +0100 | <merijn> | ezzieyguywuf: "cabal init" inserts them by default and then there's cabal-fmt |
2020-12-20 21:27:26 +0100 | <merijn> | ezzieyguywuf: Also, what do you mean by "currently available"? |
2020-12-20 21:27:37 +0100 | <kupi> | in quickcheck "not (null xs) ==> not (null ys) ==> ..." is the same as "not (null xs) && not (null ys)"? |
2020-12-20 21:27:40 +0100 | <dolio> | What is it expected to do? Just assume that your stuff will work with any possible version that exists? |
2020-12-20 21:28:01 +0100 | mmsari | (~Thunderbi@46.1.240.163) |
2020-12-20 21:28:14 +0100 | <merijn> | ezzieyguywuf: The only *sensible* way to do things is to start all your dependencies with ^>= current latest version |
2020-12-20 21:28:20 +0100 | <ezzieyguywuf> | merijn: hrm, i.e. if I have `somePackage >= 0.1 && < 0.2' that I created last year, and since then `somePackage` has updated to v1.5, it would just bump tho upper-bound |
2020-12-20 21:28:22 +0100 | <merijn> | So if the latest version of foo is 1.2.1 |
2020-12-20 21:28:38 +0100 | <merijn> | You start with "foo ^>= 1.2.1" (i.e. everything PVP compatible with 1.2.1 |
2020-12-20 21:28:39 +0100 | <ezzieyguywuf> | in the background (b/c I don't pay attention to cabal output), I've been using newer versions as they release without knowing it, without issue |
2020-12-20 21:28:47 +0100 | <merijn> | And then you relax as new versions of foo are released |
2020-12-20 21:29:07 +0100 | <merijn> | ezzieyguywuf: Are your packages on Hackage or just local? |
2020-12-20 21:29:12 +0100 | <dolio> | I think the real answer is that updating these bounds is an insignificant amount of work for most people, despite all the complaining that gets done. |
2020-12-20 21:29:14 +0100 | <ezzieyguywuf> | merijn: just local for now. |
2020-12-20 21:29:40 +0100 | <merijn> | ezzieyguywuf: Then I'd just use ^>= with whatever version you are using *now* and then only update/relax them when needed, tbh |
2020-12-20 21:29:52 +0100 | <ezzieyguywuf> | dolio: I agree, insignificant amount of work, but keeping up with it seems error-prone |
2020-12-20 21:30:00 +0100 | <ezzieyguywuf> | merijn: thanks for your thoughts! |
2020-12-20 21:30:05 +0100 | <ezzieyguywuf> | I think I want to check out cabal-fmt too |
2020-12-20 21:30:12 +0100 | <ezzieyguywuf> | is that bundled with cabal or separate? |
2020-12-20 21:30:32 +0100 | <merijn> | For hackage released packages packdeps provides an RSS feed when your dependencies release a newer version |
2020-12-20 21:30:35 +0100 | <ski> | kupi : should be, if you mean ` ==> ...' at the end of the latter |
2020-12-20 21:30:38 +0100 | <merijn> | ezzieyguywuf: It's a separate tool |
2020-12-20 21:30:47 +0100 | <ezzieyguywuf> | gotcha, I'll check it out thank you |
2020-12-20 21:31:00 +0100 | <kupi> | ski: thanks, I meant that |
2020-12-20 21:31:27 +0100 | <ski> | kupi : may be better to generate non-empty lists, rather than filter, though |
2020-12-20 21:31:52 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 21:32:08 +0100 | <kupi> | ski: what guide do you recommend? i got that code from "real world haskell" |
2020-12-20 21:33:00 +0100 | juuandyy | (~juuandyy@90.166.144.65) (Quit: Konversation terminated!) |
2020-12-20 21:35:16 +0100 | fendor | (~fendor@77.119.130.63.wireless.dyn.drei.com) |
2020-12-20 21:35:29 +0100 | hackage | fei-cocoapi 1.0.0 - Cocodataset with cocoapi https://hackage.haskell.org/package/fei-cocoapi-1.0.0 (JiasenWu) |
2020-12-20 21:36:41 +0100 | <ski> | @check \(NonEmpty xs) -> length xs > 0 |
2020-12-20 21:36:44 +0100 | <lambdabot> | +++ OK, passed 100 tests. |
2020-12-20 21:36:47 +0100 | grumble | SeasonsBeatings |
2020-12-20 21:36:57 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 268 seconds) |
2020-12-20 21:37:22 +0100 | <ski> | kupi : instead of `propFoo xs ys = not (null xs) && not (null ys) ==> ..xs..ys..', try `propFoo (NonEmpty xs) (NonEmpty ys) = ..xs..ys..' |
2020-12-20 21:41:36 +0100 | jess | sandy-claws |
2020-12-20 21:42:42 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 21:42:43 +0100 | gxt | (~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds) |
2020-12-20 21:43:17 +0100 | xcmw | (~textual@2603-6011-2200-f103-cdbc-9ec6-8319-9dc9.res6.spectrum.com) |
2020-12-20 21:44:00 +0100 | hackage | fei-datasets 1.0.0 - Some datasets https://hackage.haskell.org/package/fei-datasets-1.0.0 (JiasenWu) |
2020-12-20 21:44:34 +0100 | Tario | (~Tario@201.192.165.173) |
2020-12-20 21:46:46 +0100 | Jesin | (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving) |
2020-12-20 21:46:49 +0100 | texasmyn_ | (~texasmyns@185.232.22.12) |
2020-12-20 21:47:27 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 272 seconds) |
2020-12-20 21:48:03 +0100 | mounty | (~mounty@210.1.196.133) (Ping timeout: 268 seconds) |
2020-12-20 21:49:25 +0100 | texasmynsted | (~texasmyns@184.75.212.155) (Ping timeout: 240 seconds) |
2020-12-20 21:50:27 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:7482:9511:22c:1523) |
2020-12-20 21:51:21 +0100 | Varis | (~Tadas@unaffiliated/varis) |
2020-12-20 21:51:29 +0100 | hackage | fei-modelzoo 1.0.0 - A collection of standard models https://hackage.haskell.org/package/fei-modelzoo-1.0.0 (JiasenWu) |
2020-12-20 21:51:32 +0100 | Franciman | (~francesco@host-82-49-79-73.retail.telecomitalia.it) (Quit: Leaving) |
2020-12-20 21:55:53 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:a104:aab:2310:b4f0) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-20 21:56:00 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-12-20 21:57:35 +0100 | kritzefitz | (~kritzefit@212.86.56.80) (Remote host closed the connection) |
2020-12-20 21:58:32 +0100 | nowhere_man | (~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155) |
2020-12-20 21:59:13 +0100 | nhs | (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Quit: Lost terminal) |
2020-12-20 22:00:07 +0100 | danvet | (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds) |
2020-12-20 22:00:43 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
2020-12-20 22:02:11 +0100 | texasmyn_ | texasmynsted |
2020-12-20 22:02:18 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:7482:9511:22c:1523) (Remote host closed the connection) |
2020-12-20 22:02:42 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 22:07:32 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds) |
2020-12-20 22:09:34 +0100 | kam1 | (~kam1@24.231.108.143) (Ping timeout: 260 seconds) |
2020-12-20 22:09:45 +0100 | Jesin | (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) |
2020-12-20 22:11:26 +0100 | vicfred | (~vicfred@unaffiliated/vicfred) |
2020-12-20 22:11:32 +0100 | _ht | (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
2020-12-20 22:12:34 +0100 | patrickp | (~patrickp@windows98.dev) ("Shuting down...") |
2020-12-20 22:14:00 +0100 | hackage | fei-examples 1.0.0 - fei examples https://hackage.haskell.org/package/fei-examples-1.0.0 (JiasenWu) |
2020-12-20 22:16:50 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-12-20 22:17:16 +0100 | sillyotter | (~sillyotte@2603-6011-ba0f-f7c5-d829-28ce-3e6e-7c4d.res6.spectrum.com) |
2020-12-20 22:18:03 +0100 | sillyotter | (~sillyotte@2603-6011-ba0f-f7c5-d829-28ce-3e6e-7c4d.res6.spectrum.com) (Client Quit) |
2020-12-20 22:22:30 +0100 | hackage | intricacy 0.8.0.1 - A game of competitive puzzle-design https://hackage.haskell.org/package/intricacy-0.8.0.1 (mbays) |
2020-12-20 22:22:56 +0100 | <hpc> | ^ is a pretty cool package |
2020-12-20 22:23:09 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 22:24:28 +0100 | Lord_of_Life | (~Lord@unaffiliated/lord-of-life/x-0885362) (Excess Flood) |
2020-12-20 22:24:49 +0100 | xff0x_ | (~fox@2001:1a81:533f:8600:4230:b097:b97e:1a3d) (Ping timeout: 272 seconds) |
2020-12-20 22:25:15 +0100 | xff0x_ | (~fox@2001:1a81:533f:8600:e255:a04c:45e:d69f) |
2020-12-20 22:25:22 +0100 | Lord_of_Life | (~Lord@unaffiliated/lord-of-life/x-0885362) |
2020-12-20 22:26:22 +0100 | <Uniaika> | kewl |
2020-12-20 22:26:36 +0100 | xcmw | (~textual@2603-6011-2200-f103-cdbc-9ec6-8319-9dc9.res6.spectrum.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-12-20 22:27:00 +0100 | <lyxia> | sounds amazing |
2020-12-20 22:27:57 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) (Ping timeout: 260 seconds) |
2020-12-20 22:31:47 +0100 | geekosaur | (ae68c070@cpe-174-104-192-112.neo.res.rr.com) (Remote host closed the connection) |
2020-12-20 22:34:56 +0100 | dwt | (~dwt@c-98-200-58-177.hsd1.tx.comcast.net) (Ping timeout: 256 seconds) |
2020-12-20 22:36:43 +0100 | elfets | (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
2020-12-20 22:38:52 +0100 | PowerOf2 | Squarism |
2020-12-20 22:39:05 +0100 | aenesidemus | (~aenesidem@c-73-53-247-25.hsd1.fl.comcast.net) |
2020-12-20 22:39:49 +0100 | sfvm | (~sfvm@37.228.215.77) |
2020-12-20 22:42:13 +0100 | dave_uy | (~david@108.61.193.26) (Quit: Ping timeout (120 seconds)) |
2020-12-20 22:42:45 +0100 | dave_uy | (~david@108.61.193.26) |
2020-12-20 22:42:47 +0100 | Tario | (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
2020-12-20 22:42:59 +0100 | Tario | (~Tario@201.192.165.173) |
2020-12-20 22:43:14 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-12-20 22:44:00 +0100 | christo | (~chris@81.96.113.213) |
2020-12-20 22:44:58 +0100 | ddellacosta | (dd@gateway/vpn/mullvad/ddellacosta) (Quit: WeeChat 2.8) |
2020-12-20 22:47:00 +0100 | kik1 | (~kik1@195.140.213.38) (Remote host closed the connection) |
2020-12-20 22:47:49 +0100 | GuerrillaMonkey | (~Jeanne-Ka@104.129.24.243) |
2020-12-20 22:48:49 +0100 | christo | (~chris@81.96.113.213) (Ping timeout: 264 seconds) |
2020-12-20 22:49:40 +0100 | bliminse | (~bliminse@host109-158-129-129.range109-158.btcentralplus.com) (Ping timeout: 256 seconds) |
2020-12-20 22:49:45 +0100 | stef204 | (~stef204@unaffiliated/stef-204/x-384198) (Quit: WeeChat 2.9) |
2020-12-20 22:50:24 +0100 | Jeanne-Kamikaze | (~Jeanne-Ka@66.115.189.189) (Ping timeout: 260 seconds) |
2020-12-20 22:52:28 +0100 | ddellacosta | (dd@gateway/vpn/mullvad/ddellacosta) |
2020-12-20 22:59:43 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2020-12-20 23:00:03 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-12-20 23:02:47 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2020-12-20 23:04:29 +0100 | tabemann_ | (~tabemann@2600:1700:7990:24e0:62a5:b954:91f8:80f6) |
2020-12-20 23:04:52 +0100 | mounty | (~mounty@2001:8000:2f59:0:353e:aa93:586e:e169) |
2020-12-20 23:09:19 +0100 | Varis | (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
2020-12-20 23:14:48 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:7482:9511:22c:1523) |
2020-12-20 23:15:05 +0100 | pavonia | (~user@unaffiliated/siracusa) |
2020-12-20 23:17:37 +0100 | natechan | (~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Quit: WeeChat 2.9) |
2020-12-20 23:29:26 +0100 | Varis | (~Tadas@unaffiliated/varis) |
2020-12-20 23:29:45 +0100 | christo | (~chris@81.96.113.213) |
2020-12-20 23:31:02 +0100 | fengh | (~haskeller@ip72-205-40-121.dc.dc.cox.net) |
2020-12-20 23:31:44 +0100 | boxscape | (4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Quit: Connection closed) |
2020-12-20 23:34:03 +0100 | dashbourn | (~dashbourn@cpc1-sprt3-2-0-cust195.17-2.cable.virginm.net) |
2020-12-20 23:36:17 +0100 | nineonine | (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
2020-12-20 23:39:02 +0100 | stass | (~stas@2a00:13c0:63:7195::beef) |
2020-12-20 23:39:20 +0100 | olligobber | (~olligobbe@unaffiliated/olligobber) |
2020-12-20 23:39:37 +0100 | Guest_99 | (51aa27b6@81.170.39.182) |
2020-12-20 23:40:16 +0100 | knupfer | (~Thunderbi@mue-88-130-61-068.dsl.tropolys.de) (Ping timeout: 240 seconds) |
2020-12-20 23:40:27 +0100 | Vulfe | (~vulfe@2600:1702:31b0:34e0:2570:8bc6:6048:3a26) |
2020-12-20 23:40:32 +0100 | stass | (~stas@2a00:13c0:63:7195::beef) (Client Quit) |
2020-12-20 23:40:36 +0100 | Guest_99 | (51aa27b6@81.170.39.182) (Remote host closed the connection) |
2020-12-20 23:41:24 +0100 | stass | (~stas@2a00:13c0:63:7195::beef) |
2020-12-20 23:42:10 +0100 | fendor | (~fendor@77.119.130.63.wireless.dyn.drei.com) (Remote host closed the connection) |
2020-12-20 23:44:01 +0100 | Tops2 | (~Tobias@dyndsl-095-033-023-074.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
2020-12-20 23:45:43 +0100 | <__monty__> | Did I imagine you can "stack" guard syntax? `| condition1 | sndCondition1 = foo\n<indentation>| sndCondition2 = bar\n| condition2 = baz`? |
2020-12-20 23:46:12 +0100 | <dminuoso> | __monty__: use commas |
2020-12-20 23:47:01 +0100 | <__monty__> | dminuoso: But then I have to repeat condition1. |
2020-12-20 23:47:23 +0100 | mouseghost | (~draco@wikipedia/desperek) (Quit: mew wew) |
2020-12-20 23:47:51 +0100 | <lyxia> | right you can't do that |
2020-12-20 23:49:14 +0100 | <__monty__> | Not even with an extension? Can someone please turn my dreams into an extension? Thank you kindly. |
2020-12-20 23:50:51 +0100 | dashbourn | (~dashbourn@cpc1-sprt3-2-0-cust195.17-2.cable.virginm.net) () |
2020-12-20 23:51:56 +0100 | <dminuoso> | __monty__: The closest trick you can do is use a helper let binding. |
2020-12-20 23:51:58 +0100 | <dminuoso> | f | c1 = let g | s1 = ...; | s2 = ...; in g |
2020-12-20 23:52:04 +0100 | <dminuoso> | Or equivalently with case-of |
2020-12-20 23:52:27 +0100 | <dminuoso> | e.g. f | x1 = case () of _ | s1 = ...; | s2 = ...; |
2020-12-20 23:53:13 +0100 | <dminuoso> | Or, with MultiWayIf I suppose |
2020-12-20 23:53:23 +0100 | <__monty__> | Ok, thanks. |
2020-12-20 23:54:46 +0100 | boxscape | (4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) |
2020-12-20 23:55:07 +0100 | vfaronov | (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Quit: vfaronov) |
2020-12-20 23:58:35 +0100 | GuerrillaMonkey | (~Jeanne-Ka@104.129.24.243) (Quit: Leaving) |