Logs on 2022-12-01 (liberachat/#haskell)
| 00:01:58 | × | LemanR quits (~LemanR@pool-74-109-28-147.phlapa.fios.verizon.net) (Quit: Client closed) |
| 00:02:43 | → | causal joins (~user@50.35.83.177) |
| 00:04:08 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 246 seconds) |
| 00:06:08 | × | dora quits (~dora@2a02:a31d:a23f:6080:4001:81e:31d1:48bc) (Quit: Ping timeout (120 seconds)) |
| 00:08:22 | × | oldsk00l quits (~znc@ec2-3-75-221-101.eu-central-1.compute.amazonaws.com) (Remote host closed the connection) |
| 00:10:52 | zzz | is now known as yin |
| 00:14:13 | → | dora joins (~dora@2a02:a31d:a23f:6080:4001:81e:31d1:48bc) |
| 00:17:19 | → | freeside joins (~mengwong@103.252.202.193) |
| 00:21:20 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 246 seconds) |
| 00:24:26 | × | tv quits (~tv@user/tv) (Ping timeout: 268 seconds) |
| 00:28:53 | × | dora quits (~dora@2a02:a31d:a23f:6080:4001:81e:31d1:48bc) (Ping timeout: 260 seconds) |
| 00:29:02 | <talismanick> | Are there mature libraries for constraint-based GUI layout? |
| 00:35:24 | → | freeside joins (~mengwong@103.252.202.193) |
| 00:36:57 | × | brettgilio quits (a35ba67324@2604:bf00:561:2000::260) (Remote host closed the connection) |
| 00:37:40 | → | tv joins (~tv@user/tv) |
| 00:39:42 | <Guest75> | I'm a beginner anyway, but what does that mean constraint-based (in a sense of UI)? Is that something automated? |
| 00:39:51 | × | acidjnk quits (~acidjnk@p200300d6e7137a610c26e0714ef85554.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 00:41:05 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 268 seconds) |
| 00:44:10 | <hpc> | it's kind of like css, you say what things are next to each other, what things can be in what size ranges, etc |
| 00:44:21 | <hpc> | and everything's position gets calculated based on those constraints, window size, dpi, etc |
| 00:48:43 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving) |
| 00:51:20 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 00:55:25 | × | accord quits (uid568320@id-568320.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 00:56:18 | × | Guest75 quits (~Guest75@178.141.153.191) (Ping timeout: 260 seconds) |
| 00:57:14 | × | tv quits (~tv@user/tv) (Ping timeout: 256 seconds) |
| 00:57:38 | → | tv joins (~tv@user/tv) |
| 01:05:56 | → | ryanbooker joins (uid4340@id-4340.hampstead.irccloud.com) |
| 01:06:43 | → | ezzieyguywuf joins (~Unknown@user/ezzieyguywuf) |
| 01:09:18 | → | freeside joins (~mengwong@103.252.202.193) |
| 01:11:06 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:13:40 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 256 seconds) |
| 01:13:40 | × | Kaipei quits (~Kaiepi@108.175.84.104) (Ping timeout: 256 seconds) |
| 01:14:44 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds) |
| 01:16:14 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 01:16:14 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 01:16:15 | → | wroathe joins (~wroathe@user/wroathe) |
| 01:16:20 | × | wroathe quits (~wroathe@user/wroathe) (Client Quit) |
| 01:16:37 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 01:16:38 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 01:16:38 | → | wroathe joins (~wroathe@user/wroathe) |
| 01:17:13 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:17:25 | × | wroathe quits (~wroathe@user/wroathe) (Client Quit) |
| 01:17:41 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 01:17:41 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 01:17:41 | → | wroathe joins (~wroathe@user/wroathe) |
| 01:17:43 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 01:20:28 | → | razetime joins (~quassel@49.207.211.219) |
| 01:24:38 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 246 seconds) |
| 01:25:28 | × | xff0x quits (~xff0x@2405:6580:b080:900:71e1:3426:76c:30b0) (Ping timeout: 260 seconds) |
| 01:26:42 | × | son0p quits (~ff@2604:3d08:5b7f:5540::fc20) (Ping timeout: 256 seconds) |
| 01:27:33 | → | off^ joins (~off@76.145.185.103) |
| 01:43:26 | → | freeside joins (~mengwong@103.252.202.193) |
| 01:45:22 | → | son0p joins (~ff@2604:3d08:5b7f:5540::fc20) |
| 01:47:47 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 246 seconds) |
| 01:59:47 | → | king_gs joins (~Thunderbi@187.201.63.8) |
| 02:07:07 | → | xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 02:09:26 | → | Lumia joins (~Lumia@user/Lumia) |
| 02:11:59 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:d078:9921:dcf:5e81) |
| 02:14:27 | × | Lumia quits (~Lumia@user/Lumia) (Ping timeout: 260 seconds) |
| 02:16:17 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:d078:9921:dcf:5e81) (Ping timeout: 252 seconds) |
| 02:16:56 | → | Lumia joins (~Lumia@user/Lumia) |
| 02:16:57 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection) |
| 02:16:59 | → | freeside joins (~mengwong@103.252.202.193) |
| 02:17:17 | → | use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
| 02:19:13 | × | beteigeuze quits (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 252 seconds) |
| 02:19:43 | × | fr33domlover quits (~fr33domlo@towards.vision) (Ping timeout: 260 seconds) |
| 02:20:57 | × | dextaa quits (~DV@user/dextaa) (Quit: Ping timeout (120 seconds)) |
| 02:21:21 | → | dextaa joins (~DV@user/dextaa) |
| 02:21:38 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 02:23:07 | → | nate4 joins (~nate@98.45.169.16) |
| 02:25:11 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds) |
| 02:27:46 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 02:27:47 | × | king_gs quits (~Thunderbi@187.201.63.8) (Read error: Connection reset by peer) |
| 02:28:01 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:28:04 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 248 seconds) |
| 02:28:12 | → | king_gs joins (~Thunderbi@2806:103e:29:86f9:15db:b0e0:45d5:32a8) |
| 02:39:09 | × | xacktm quits (~xacktm@user/xacktm) (Quit: fBNC - https://bnc4free.com) |
| 02:39:12 | × | andreas303 quits (andreas303@ip227.orange.bnc4free.com) (Quit: fBNC - https://bnc4free.com) |
| 02:41:26 | × | Lumia quits (~Lumia@user/Lumia) (Quit: ,-) |
| 02:47:19 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 02:47:51 | × | mmhat quits (~mmh@p200300f1c72545c1ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.7.1) |
| 02:55:31 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds) |
| 02:59:09 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 260 seconds) |
| 03:00:33 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 03:01:24 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 03:01:33 | → | mvk joins (~mvk@2607:fea8:5ce3:8500::efb) |
| 03:01:49 | × | mvk quits (~mvk@2607:fea8:5ce3:8500::efb) (Client Quit) |
| 03:01:52 | × | talismanick quits (~user@76.133.152.122) (Remote host closed the connection) |
| 03:04:10 | × | king_gs quits (~Thunderbi@2806:103e:29:86f9:15db:b0e0:45d5:32a8) (Ping timeout: 256 seconds) |
| 03:07:32 | × | mixfix41 quits (~sdenynine@user/mixfix41) (Ping timeout: 246 seconds) |
| 03:07:54 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 03:08:23 | → | xacktm joins (~xacktm@user/xacktm) |
| 03:08:29 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 03:11:14 | → | andreas303 joins (andreas303@ip227.orange.bnc4free.com) |
| 03:12:40 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 256 seconds) |
| 03:19:19 | × | gentauro quits (~gentauro@user/gentauro) (Ping timeout: 265 seconds) |
| 03:19:57 | → | nate4 joins (~nate@98.45.169.16) |
| 03:21:40 | → | talismanick joins (~talismani@76.133.152.122) |
| 03:21:47 | × | foul_owl quits (~kerry@157.97.134.156) (Ping timeout: 264 seconds) |
| 03:25:44 | → | gentauro joins (~gentauro@user/gentauro) |
| 03:26:16 | × | gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 03:27:02 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 03:32:50 | → | fr33domlover joins (~fr33domlo@towards.vision) |
| 03:36:47 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 03:37:27 | → | foul_owl joins (~kerry@174-21-75-230.tukw.qwest.net) |
| 03:37:32 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 03:37:33 | → | johnw joins (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) |
| 03:44:06 | → | Kaipei joins (~Kaiepi@108.175.84.104) |
| 03:45:56 | × | andreas303 quits (andreas303@ip227.orange.bnc4free.com) (Quit: fBNC - https://bnc4free.com) |
| 03:46:19 | → | king_gs joins (~Thunderbi@187.201.63.8) |
| 03:46:23 | × | xacktm quits (~xacktm@user/xacktm) (Ping timeout: 260 seconds) |
| 03:50:24 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 268 seconds) |
| 03:50:55 | → | freeside joins (~mengwong@103.252.202.193) |
| 03:51:48 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 03:53:29 | × | td_ quits (~td@83.135.9.45) (Ping timeout: 268 seconds) |
| 03:54:43 | → | td_ joins (~td@83.135.9.43) |
| 03:58:05 | <freeside> | thanks for all the help yesterday troubleshooting the cabal situation. I still don't know why stack recommended 3.8.1.0 when it should have recommended 3.6.3.0 for LTS 20.2. |
| 03:58:18 | <freeside> | Anyway, I have it working now, with extra-deps pinned to 3.6.3.0. |
| 04:07:36 | <Clinton[m]> | does anyone here use HLS with VSCode and know how to see/dump a Template Haskell splice? It seems like HLS has the feature but I don't know how to use it in VSCode: https://github.com/haskell/haskell-language-server/blob/master/docs/features.md |
| 04:08:50 | <maerwald[m]> | Clinton: it's a code action |
| 04:08:56 | → | rnat joins (uid73555@id-73555.lymington.irccloud.com) |
| 04:08:58 | <maerwald[m]> | refactor.rewrite |
| 04:12:16 | <Clinton[m]> | hrmmm weird I'm not getting the little lightbulb popup when I hover over the splice |
| 04:13:36 | → | xacktm joins (~xacktm@user/xacktm) |
| 04:14:24 | × | king_gs quits (~Thunderbi@187.201.63.8) (Ping timeout: 260 seconds) |
| 04:15:57 | × | Sauvin quits (~sauvin@user/Sauvin) (Quit: Leaving) |
| 04:16:46 | → | andreas303 joins (andreas303@ip227.orange.bnc4free.com) |
| 04:17:24 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:d078:9921:dcf:5e81) |
| 04:19:23 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
| 04:25:43 | <freeside> | say, given that LTS20.2 uses ghc 9.2.5, would it be fair to assume that HLS support for 9.2.5 is in the works, or should I try to build it myself? I see HLS officially supports 9.2.3 and 9.2.4 so by induction it will support 9.2.5 |
| 04:26:20 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 256 seconds) |
| 04:30:01 | <maerwald[m]> | freeside: https://www.haskell.org/ghcup/guide/#hls |
| 04:30:09 | <albet70> | if there is f :: (String -> IO ()) -> (String -> IO ()) -> IO (), how turn it to ContT? |
| 04:30:29 | → | quazimodo joins (~quazimodo@122-199-39-221.ip4.superloop.com) |
| 04:31:36 | <quazimodo> | i'm having trouble understanding how oop's dependency injection relates to functional languages. Some of the things i've read may say 'fp languages dont need it because they're free of sideeffects' |
| 04:31:54 | <quazimodo> | but that's not strictly true is it, wouldn't a function that does io to a database ultimately do that while being tested? |
| 04:31:56 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 246 seconds) |
| 04:32:15 | <quazimodo> | or am I naive and there's an easy answer i've missed |
| 04:34:54 | <freeside> | maerwald[m]: I am trying the ghcup compile hls on a number of different platforms, because even the example invocations give me a BuildFailed with complaints about "after searching the rest of the dependency tree exhaustively..." |
| 04:36:02 | × | segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds) |
| 04:36:32 | <freeside> | even `ghcup compile hls --version 1.8.0.0 --ghc 9.2.4` doesn't work for me ... i'm going to try on intel instead of M1 in case it has something to do with that. |
| 04:36:39 | → | Sauvin joins (~sauvin@user/Sauvin) |
| 04:37:34 | <EvanR> | quazimodo, dependency injection falls into a big set of concepts in OOP that in FP become "just pass in an argument" |
| 04:37:50 | <EvanR> | or just use a function |
| 04:38:01 | <EvanR> | that takes the dependency as input |
| 04:39:27 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 04:40:00 | <monochrom> | Yeah "free of side effects" has nothing to do with it. However, "parameters can be functions too!" is the one. |
| 04:40:25 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 04:40:57 | <EvanR> | sometimes "the return value can be a function" is key |
| 04:41:23 | <EvanR> | a function which holds the dependency, like a database connection, in the closure |
| 04:41:55 | <jackdk> | quazimodo: In addition to EvanR's point, the argument that you "just pass in" could be a collection of functions that perform the effect you're interested in, rather than a `Handle` or `Connection` or whatever. There is also a lot of research into "effect systems", where you "interpret" some "effect" in one of several different ways. But that uses some pretty advanced features and I'd recommend learning the base language first. |
| 04:42:09 | <monochrom> | Many objects are just glorified bundles of glorified functions (rebranded to "methods"), so in FP just remove the Object Obfuscation Pomposity (OOP) and call it a bundle of functions. |
| 04:42:10 | <quazimodo> | EvanR: i guess in an oop env such as a .net c# app a lot of dependencies are 'auto injected'; you might be deep down some rabbit hole of function calls & will receive the thing you wanted without having to actually drill that argument down |
| 04:43:05 | <jackdk> | You often see a similar effect performed using the ReaderT monad transformer, which also relieves you from manually passing an arg around |
| 04:43:25 | <quazimodo> | i kinda had a feeling it would be something like this |
| 04:44:28 | <freeside> | "dependency injection" sounds to me like a euphemism for "tramp data" :D |
| 04:44:34 | <quazimodo> | monochrom: yeah i'm not a fan of the growing set of concepts in oop world that are just sensible abstractions |
| 04:45:16 | <quazimodo> | EvanR: returning functions can be one way to do it, sure |
| 04:46:24 | <EvanR> | we have crazy ways to pass in an argument too |
| 04:46:28 | <EvanR> | like reflection xD |
| 04:46:57 | <jackdk> | And to think that I felt bad talking about effect systems! |
| 04:48:10 | <quazimodo> | I get away with 'denpendency injection' in typescript (i don't use the oop features there) by declaring a 'container' module that i populate at the start of the program, or mock at the start of a test, which contains namespaced dependencies |
| 04:48:52 | <quazimodo> | the rest of my code has a hard dependency to the 'container', it's not passed down and can't be overridden somewhere down a call stack but it suffices, mostly |
| 04:49:19 | → | Guest51 joins (~Guest51@2603-8000-0401-65cc-a9de-aba7-6e60-1564.res6.spectrum.com) |
| 04:50:25 | <EvanR> | it kind of sounds like dependency injection was invented in order to stop saying "globals bad" too many times |
| 04:50:43 | <EvanR> | or to rename the use of globals so it didn't seem bad |
| 04:52:58 | × | Vajb quits (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d) (Read error: Connection reset by peer) |
| 04:53:50 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) |
| 04:58:47 | → | leifmetcalf5 joins (~leifmetca@210.54.33.112) |
| 05:00:25 | <albet70> | how to solve passing two continuations to one ContT? |
| 05:01:23 | <albet70> | inside ContT to decide using which one continuation |
| 05:02:33 | × | foul_owl quits (~kerry@174-21-75-230.tukw.qwest.net) (Ping timeout: 268 seconds) |
| 05:02:34 | × | leifmetcalf5 quits (~leifmetca@210.54.33.112) (Client Quit) |
| 05:14:42 | → | iqubic joins (~user@2601:602:9502:c70:8e55:bd2f:72d2:8b70) |
| 05:16:22 | → | foul_owl joins (~kerry@193.29.61.77) |
| 05:22:33 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 05:25:05 | × | ryanbooker quits (uid4340@id-4340.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 05:29:20 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 05:29:53 | → | Vajb joins (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d) |
| 05:31:05 | <Clinton[m]> | can't work out how to expand Template Haskell splices inline in VSCode with HLS 1.7.0.0 on GHC 9.2.2, but is there anyway to dump the splices as part of a cabal build? --ghc-options=-ddump-splices doesn't seem to produce any splice files in the build directory. |
| 05:34:09 | <EvanR> | albet70, well it's like passing two IO actions to one race :: IO a -> IO a -> IO a |
| 05:34:23 | <EvanR> | race can use the two actions however it wants, internally |
| 05:37:26 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 05:38:41 | <albet70> | EvanR , how to fit ContT? |
| 05:39:31 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 05:39:32 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 05:40:03 | <EvanR> | is the type you want like ContT m a -> ContT m a -> ContT m a? |
| 05:40:08 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 246 seconds) |
| 05:40:08 | <albet70> | if there is only one continuation, so f :: (String -> IO ()) -> IO () can be ContT () IO String |
| 05:40:49 | Lord_of_Life_ | is now known as Lord_of_Life |
| 05:41:26 | <albet70> | but now are two continuations, type K = String -> IO (), f :: K -> K -> IO () |
| 05:41:40 | <quazimodo> | would you expect vscode to understand that the variable hazard in `var hazard = await _hazardRepository.FirstOrDefaultAsync((Guid)input.Id)` should be of type Hazard if _hazardRepository is of type IRepository<Hazard, Guid>? |
| 05:41:47 | <quazimodo> | ah crap wrong channel, my bad |
| 05:42:09 | <albet70> | EvanR , yes, how to turn this f to that? |
| 05:53:51 | <freeside> | https://en.wikibooks.org/wiki/Haskell/Continuation_passing_style#Example:_coroutines |
| 05:54:00 | → | king_gs joins (~Thunderbi@187.201.63.8) |
| 05:55:38 | → | iteratee_ joins (~kyle@162.218.222.107) |
| 05:55:46 | → | qhong_ joins (~qhong@rescomp-21-400677.stanford.edu) |
| 05:55:48 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds) |
| 05:55:49 | → | jinsun__ joins (~jinsun@user/jinsun) |
| 05:55:49 | × | jinsun quits (~jinsun@user/jinsun) (Killed (calcium.libera.chat (Nickname regained by services))) |
| 05:55:49 | jinsun__ | is now known as jinsun |
| 05:56:15 | × | haritz quits (~hrtz@user/haritz) (Ping timeout: 260 seconds) |
| 05:56:17 | → | poljar1 joins (~poljar@93-139-1-236.adsl.net.t-com.hr) |
| 05:56:26 | → | Bocaneri joins (~sauvin@user/Sauvin) |
| 05:56:34 | <albet70> | f :: (String -> IO ()) -> ContT () IO String |
| 05:56:45 | → | Katarushisu3 joins (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) |
| 05:56:50 | Bocaneri | is now known as Guest7570 |
| 05:57:50 | → | shriekingnoise_ joins (~shrieking@186.137.167.202) |
| 05:58:10 | → | justache- joins (~justache@user/justache) |
| 05:58:15 | → | glguy_ joins (~glguy@libera/staff-emeritus/glguy) |
| 05:58:19 | → | bollu6 joins (~bollu@159.65.151.13) |
| 05:58:26 | → | red-snail1 joins (~snail@static.151.210.203.116.clients.your-server.de) |
| 05:58:29 | → | maerwald_ joins (~maerwald@mail.hasufell.de) |
| 05:59:14 | → | pieguy128_ joins (~pieguy128@bras-base-mtrlpq5031w-grc-50-65-93-192-212.dsl.bell.ca) |
| 05:59:17 | → | Philonous_ joins (~Philonous@user/philonous) |
| 05:59:22 | → | quintasan_ joins (~quassel@quintasan.pl) |
| 05:59:31 | → | wagle_ joins (~wagle@quassel.wagle.io) |
| 05:59:51 | → | np joins (~nerdypepp@user/nerdypepper) |
| 06:00:15 | → | cstml_ joins (cstml@tilde.club) |
| 06:00:24 | → | maxfan8_ joins (~max@2a01:4f8:192:5356::2) |
| 06:00:26 | → | ridcully joins (~ridcully@p508acd69.dip0.t-ipconnect.de) |
| 06:00:32 | → | cjay- joins (cjay@nerdbox.nerd2nerd.org) |
| 06:00:36 | → | ian_ joins (~ian@matrix.chaos.earth.li) |
| 06:00:36 | → | tomku|two joins (~tomku@user/tomku) |
| 06:00:54 | → | td__ joins (~td@83.135.9.43) |
| 06:01:00 | → | Maeda_ joins (~Maeda@91-161-10-149.subs.proxad.net) |
| 06:01:19 | × | Sauvin quits (~sauvin@user/Sauvin) (Killed (NickServ (GHOST command used by Guest7570))) |
| 06:01:22 | → | remedan joins (~remedan@octo.cafe) |
| 06:01:25 | Guest7570 | is now known as Sauvin |
| 06:01:54 | → | fiddlerwoaroof_ joins (~fiddlerwo@user/fiddlerwoaroof) |
| 06:05:52 | × | foul_owl quits (~kerry@193.29.61.77) (*.net *.split) |
| 06:05:52 | × | iqubic quits (~user@2601:602:9502:c70:8e55:bd2f:72d2:8b70) (*.net *.split) |
| 06:05:52 | × | td_ quits (~td@83.135.9.43) (*.net *.split) |
| 06:05:53 | × | troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (*.net *.split) |
| 06:05:53 | × | shriekingnoise quits (~shrieking@186.137.167.202) (*.net *.split) |
| 06:05:53 | × | earthy quits (~arthurvl@2a02-a469-f5e2-1-ba27-ebff-fea0-40b0.fixed6.kpn.net) (*.net *.split) |
| 06:05:53 | × | szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (*.net *.split) |
| 06:05:53 | × | tabaqui quits (~root@88.231.62.215) (*.net *.split) |
| 06:05:53 | × | phma quits (phma@2001:5b0:2172:df88:b30a:8f7e:93b0:e277) (*.net *.split) |
| 06:05:53 | × | sus quits (~zeromomen@user/zeromomentum) (*.net *.split) |
| 06:05:53 | × | Maeda quits (~Maeda@91-161-10-149.subs.proxad.net) (*.net *.split) |
| 06:05:53 | × | ridcully_ quits (~ridcully@p508acd69.dip0.t-ipconnect.de) (*.net *.split) |
| 06:05:54 | × | tinwood quits (~tinwood@canonical/tinwood) (*.net *.split) |
| 06:05:54 | × | wagle quits (~wagle@quassel.wagle.io) (*.net *.split) |
| 06:05:54 | × | nerdypepper quits (~nerdypepp@user/nerdypepper) (*.net *.split) |
| 06:05:54 | × | totbwf quits (sid402332@id-402332.uxbridge.irccloud.com) (*.net *.split) |
| 06:05:54 | × | burakcan- quits (burakcank@has.arrived.and.is.ready-to.party) (*.net *.split) |
| 06:05:54 | × | Fangs quits (sid141280@id-141280.hampstead.irccloud.com) (*.net *.split) |
| 06:05:54 | × | Katarushisu quits (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (*.net *.split) |
| 06:05:54 | × | nek0 quits (~nek0@2a01:4f8:222:2b41::12) (*.net *.split) |
| 06:05:54 | × | qhong quits (~qhong@rescomp-21-400677.stanford.edu) (*.net *.split) |
| 06:05:54 | × | maerwald quits (~maerwald@user/maerwald) (*.net *.split) |
| 06:05:54 | × | sunarch quits (sid526836@user/sunarch) (*.net *.split) |
| 06:05:54 | × | scav quits (sid309693@user/scav) (*.net *.split) |
| 06:05:54 | × | sclv quits (sid39734@haskell/developer/sclv) (*.net *.split) |
| 06:05:54 | × | teehemkay quits (sid14792@id-14792.lymington.irccloud.com) (*.net *.split) |
| 06:05:54 | × | cjay quits (cjay@nerdbox.nerd2nerd.org) (*.net *.split) |
| 06:05:54 | × | mxs quits (~mxs@user/mxs) (*.net *.split) |
| 06:05:55 | × | idnar quits (sid12240@debian/mithrandi) (*.net *.split) |
| 06:05:55 | × | rune quits (sid21167@id-21167.ilkley.irccloud.com) (*.net *.split) |
| 06:05:55 | × | bollu quits (~bollu@159.65.151.13) (*.net *.split) |
| 06:05:55 | × | pieguy128 quits (~pieguy128@bras-base-mtrlpq5031w-grc-50-65-93-192-212.dsl.bell.ca) (*.net *.split) |
| 06:05:55 | × | tomku quits (~tomku@user/tomku) (*.net *.split) |
| 06:05:55 | × | justache quits (~justache@user/justache) (*.net *.split) |
| 06:05:55 | × | poljar quits (~poljar@93-139-1-236.adsl.net.t-com.hr) (*.net *.split) |
| 06:05:55 | × | Luj3 quits (~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb) (*.net *.split) |
| 06:05:55 | × | glguy quits (~glguy@libera/staff-emeritus/glguy) (*.net *.split) |
| 06:05:55 | × | maxfan8 quits (~max@personal.max.fan) (*.net *.split) |
| 06:05:55 | × | fiddlerwoaroof quits (~fiddlerwo@user/fiddlerwoaroof) (*.net *.split) |
| 06:05:55 | × | xnbya quits (~xnbya@2a01:4f8:c17:cbdd::1) (*.net *.split) |
| 06:05:56 | × | Philonous quits (~Philonous@user/philonous) (*.net *.split) |
| 06:05:56 | × | red-snail quits (~snail@static.151.210.203.116.clients.your-server.de) (*.net *.split) |
| 06:05:56 | × | iteratee quits (~kyle@162.218.222.107) (*.net *.split) |
| 06:05:56 | × | cstml quits (cstml@user/cstml) (*.net *.split) |
| 06:05:56 | × | remedan_ quits (~remedan@octo.cafe) (*.net *.split) |
| 06:05:56 | × | quintasan quits (~quassel@quintasan.pl) (*.net *.split) |
| 06:05:56 | × | lambdabot quits (~lambdabot@haskell/bot/lambdabot) (*.net *.split) |
| 06:05:56 | × | arahael quits (~arahael@193-119-109-208.tpgi.com.au) (*.net *.split) |
| 06:05:56 | × | arkeet quits (arkeet@moriya.ca) (*.net *.split) |
| 06:05:56 | × | Igloo quits (~ian@matrix.chaos.earth.li) (*.net *.split) |
| 06:05:56 | Katarushisu3 | is now known as Katarushisu |
| 06:05:56 | bollu6 | is now known as bollu |
| 06:06:35 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:07:30 | → | lambdabot joins (~lambdabot@silicon.int-e.eu) |
| 06:07:30 | × | lambdabot quits (~lambdabot@silicon.int-e.eu) (Changing host) |
| 06:07:30 | → | lambdabot joins (~lambdabot@haskell/bot/lambdabot) |
| 06:10:49 | → | troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua) |
| 06:11:26 | → | tabaqui joins (~root@88.231.62.215) |
| 06:11:45 | → | mbuf joins (~Shakthi@49.204.116.34) |
| 06:12:47 | → | arahael joins (~arahael@193-119-109-208.tpgi.com.au) |
| 06:12:48 | × | king_gs quits (~Thunderbi@187.201.63.8) (Read error: Connection reset by peer) |
| 06:13:30 | → | foul_owl joins (~kerry@193.29.61.77) |
| 06:14:03 | → | bgs joins (~bgs@212-85-160-171.dynamic.telemach.net) |
| 06:14:04 | → | king_gs joins (~Thunderbi@2806:103e:29:86f9:15db:b0e0:45d5:32a8) |
| 06:28:26 | × | rnat quits (uid73555@id-73555.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 06:40:55 | × | Guest51 quits (~Guest51@2603-8000-0401-65cc-a9de-aba7-6e60-1564.res6.spectrum.com) (Quit: Client closed) |
| 06:47:16 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 248 seconds) |
| 06:52:49 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 06:53:59 | × | bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
| 07:00:52 | → | mokee joins (~mokee@37.228.215.235) |
| 07:02:59 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
| 07:12:05 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 07:12:47 | → | chomwitt joins (~chomwitt@2a02:587:7a0c:6a00:1ac0:4dff:fedb:a3f1) |
| 07:18:47 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 07:24:13 | → | kenran joins (~user@user/kenran) |
| 07:24:45 | × | quazimodo quits (~quazimodo@122-199-39-221.ip4.superloop.com) (Remote host closed the connection) |
| 07:27:35 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds) |
| 07:30:18 | → | phma joins (~phma@host-67-44-208-217.hnremote.net) |
| 07:31:29 | → | sus joins (zero@user/zeromomentum) |
| 07:31:36 | → | Luj3 joins (~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb) |
| 07:31:36 | → | nek0 joins (~nek0@2a01:4f8:222:2b41::12) |
| 07:32:03 | → | burakcan- joins (burakcank@has.arrived.and.is.ready-to.party) |
| 07:34:15 | × | troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 268 seconds) |
| 07:34:53 | → | iqubic joins (~user@2601:602:9502:c70:8e55:bd2f:72d2:8b70) |
| 07:34:53 | → | earthy joins (~arthurvl@2a02-a469-f5e2-1-ba27-ebff-fea0-40b0.fixed6.kpn.net) |
| 07:34:53 | → | szkl joins (uid110435@id-110435.uxbridge.irccloud.com) |
| 07:34:53 | → | tinwood joins (~tinwood@canonical/tinwood) |
| 07:34:53 | → | totbwf joins (sid402332@id-402332.uxbridge.irccloud.com) |
| 07:34:53 | → | Fangs joins (sid141280@id-141280.hampstead.irccloud.com) |
| 07:34:53 | → | sunarch joins (sid526836@user/sunarch) |
| 07:34:53 | → | scav joins (sid309693@user/scav) |
| 07:34:53 | → | sclv joins (sid39734@haskell/developer/sclv) |
| 07:34:53 | → | teehemkay joins (sid14792@id-14792.lymington.irccloud.com) |
| 07:34:53 | → | mxs joins (~mxs@user/mxs) |
| 07:34:53 | → | idnar joins (sid12240@debian/mithrandi) |
| 07:34:53 | → | rune joins (sid21167@id-21167.ilkley.irccloud.com) |
| 07:34:53 | → | xnbya joins (~xnbya@2a01:4f8:c17:cbdd::1) |
| 07:34:53 | → | arkeet joins (arkeet@moriya.ca) |
| 07:35:42 | × | Xeroine quits (~Xeroine@user/xeroine) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in) |
| 07:36:21 | → | Xeroine joins (~Xeroine@user/xeroine) |
| 07:38:26 | × | szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Ping timeout: 263 seconds) |
| 07:38:26 | × | sunarch quits (sid526836@user/sunarch) (Ping timeout: 263 seconds) |
| 07:40:25 | → | szkl joins (uid110435@id-110435.uxbridge.irccloud.com) |
| 07:40:39 | → | sunarch joins (sid526836@user/sunarch) |
| 07:45:42 | → | titibandit joins (~titibandi@xdsl-78-35-173-119.nc.de) |
| 07:45:58 | × | jargon quits (~jargon@174-22-207-8.phnx.qwest.net) (Ping timeout: 268 seconds) |
| 07:52:00 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 07:52:06 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:4131:3f7a:f009:112b) |
| 07:55:56 | × | kenran quits (~user@user/kenran) (Remote host closed the connection) |
| 08:00:07 | wagle_ | is now known as wagle |
| 08:01:05 | × | king_gs quits (~Thunderbi@2806:103e:29:86f9:15db:b0e0:45d5:32a8) (Ping timeout: 260 seconds) |
| 08:04:00 | × | opticblast quits (~Thunderbi@secure-165.caltech.edu) (Ping timeout: 260 seconds) |
| 08:09:22 | × | shriekingnoise_ quits (~shrieking@186.137.167.202) (Quit: Quit) |
| 08:11:48 | → | MajorBiscuit joins (~MajorBisc@86-88-79-148.fixed.kpn.net) |
| 08:15:19 | × | meinside quits (uid24933@id-24933.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
| 08:17:54 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 08:24:46 | → | fockerize joins (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 08:26:04 | → | coot joins (~coot@213.134.171.3) |
| 08:29:22 | → | gmg joins (~user@user/gehmehgeh) |
| 08:34:40 | → | cfricke joins (~cfricke@user/cfricke) |
| 08:39:09 | → | michalz joins (~michalz@185.246.204.65) |
| 08:40:39 | → | Guest75 joins (~Guest75@178.141.153.191) |
| 08:40:55 | → | mastarija joins (~mastarija@2a05:4f46:e03:6000:642f:7baf:af2a:1ea8) |
| 08:41:26 | <dminuoso> | monochrom: What makes these "OOP"/"object"/"method" things special is most of the time subtyping, but because you get a tiny bit of syntax sugar sprinkled ontop, its easy to confuse the definition style (have something called `class` and define a method inside there), invoking it via`a.foo()` being a core theme. |
| 08:41:32 | × | son0p quits (~ff@2604:3d08:5b7f:5540::fc20) (Ping timeout: 252 seconds) |
| 08:41:56 | <dminuoso> | But what's really special and not easy to mimic, is `a.foo()` being resolved depending on the type of a with subtyping. |
| 08:43:05 | <dminuoso> | Even what these langauges consider as `class` has little to do with encapsulation, but mostly just with subtyping relationships. The fact they give some keywords to control encapsulation is nice, but not not important (given how we can achieve encapsulation just the same, by controlling export lists) |
| 08:44:20 | <dminuoso> | So perhaps Java is best called subtyping-oriented, not object-oriented. |
| 08:46:44 | → | Scraeling joins (~Username@223.231.159.119) |
| 08:47:02 | × | Scraeling quits (~Username@223.231.159.119) (Changing host) |
| 08:47:02 | → | Scraeling joins (~Username@user/scraeling) |
| 08:49:54 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 08:51:15 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 08:53:01 | → | acidjnk joins (~acidjnk@p200300d6e7137a610dc9b14a87dc1f36.dip0.t-ipconnect.de) |
| 08:54:12 | → | __monty__ joins (~toonn@user/toonn) |
| 08:55:28 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 08:57:25 | → | nschoe joins (~q@141.101.51.197) |
| 08:58:08 | × | Guest75 quits (~Guest75@178.141.153.191) (Quit: Client closed) |
| 08:58:41 | → | Guest75 joins (~Guest75@178.141.153.191) |
| 09:03:55 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:d078:9921:dcf:5e81) (Remote host closed the connection) |
| 09:04:52 | → | lottaquestions joins (~nick@104.221.24.83) |
| 09:04:54 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:e558:b5d6:f082:6f2c) |
| 09:05:16 | × | lottaquestions quits (~nick@104.221.24.83) (Read error: Connection reset by peer) |
| 09:05:39 | → | lottaquestions joins (~nick@104.221.24.83) |
| 09:06:57 | × | MajorBiscuit quits (~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 252 seconds) |
| 09:07:22 | × | lottaquestions_ quits (~nick@104.221.24.83) (Ping timeout: 268 seconds) |
| 09:07:34 | × | titibandit quits (~titibandi@xdsl-78-35-173-119.nc.de) (Remote host closed the connection) |
| 09:11:02 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 09:11:12 | → | titibandit joins (~titibandi@xdsl-78-35-173-119.nc.de) |
| 09:11:19 | × | titibandit quits (~titibandi@xdsl-78-35-173-119.nc.de) (Remote host closed the connection) |
| 09:11:26 | → | accord joins (uid568320@id-568320.hampstead.irccloud.com) |
| 09:13:32 | × | chomwitt quits (~chomwitt@2a02:587:7a0c:6a00:1ac0:4dff:fedb:a3f1) (Remote host closed the connection) |
| 09:14:09 | → | chomwitt joins (~chomwitt@2a02:587:7a0c:6a00:1ac0:4dff:fedb:a3f1) |
| 09:20:32 | × | ft quits (~ft@p508dbd59.dip0.t-ipconnect.de) (Quit: leaving) |
| 09:21:15 | × | lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 09:22:52 | → | mmhat joins (~mmh@p200300f1c72545c1ee086bfffe095315.dip0.t-ipconnect.de) |
| 09:26:08 | × | mmhat quits (~mmh@p200300f1c72545c1ee086bfffe095315.dip0.t-ipconnect.de) (Client Quit) |
| 09:26:29 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 260 seconds) |
| 09:29:34 | × | fockerize quits (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 268 seconds) |
| 09:29:34 | × | Kaipei quits (~Kaiepi@108.175.84.104) (Ping timeout: 268 seconds) |
| 09:31:48 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 09:32:23 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:e558:b5d6:f082:6f2c) (Remote host closed the connection) |
| 09:35:08 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 09:35:36 | → | zant joins (~zant@62.214.20.26) |
| 09:40:12 | → | fockerize joins (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 09:40:43 | → | chele joins (~chele@user/chele) |
| 09:44:17 | → | troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua) |
| 09:46:01 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 09:47:57 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 09:50:28 | × | fockerize quits (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 252 seconds) |
| 09:51:05 | × | sayola quits (~sayola@dslb-088-064-186-217.088.064.pools.vodafone-ip.de) (Read error: Connection reset by peer) |
| 09:52:40 | → | sayola joins (~sayola@dslb-088-064-186-217.088.064.pools.vodafone-ip.de) |
| 09:58:55 | × | jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 260 seconds) |
| 10:05:45 | → | ubert1 joins (~Thunderbi@2a02:8109:abc0:6434:1782:c1f:7c60:6e20) |
| 10:10:07 | → | MajorBiscuit joins (~MajorBisc@145.15.244.234) |
| 10:14:54 | × | xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 260 seconds) |
| 10:19:19 | × | mjacob_ quits (~mjacob@adrastea.uberspace.de) (Read error: Connection reset by peer) |
| 10:25:05 | → | mjacob joins (~mjacob@adrastea.uberspace.de) |
| 10:25:10 | → | Kaipei joins (~Kaiepi@108.175.84.104) |
| 10:27:10 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 10:29:18 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 10:32:54 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:e558:b5d6:f082:6f2c) |
| 10:35:53 | × | califax quits (~califax@user/califx) (Ping timeout: 255 seconds) |
| 10:36:47 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds) |
| 10:36:47 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds) |
| 10:37:25 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:e558:b5d6:f082:6f2c) (Ping timeout: 260 seconds) |
| 10:41:11 | × | MajorBiscuit quits (~MajorBisc@145.15.244.234) (Ping timeout: 252 seconds) |
| 10:42:39 | → | califax joins (~califax@user/califx) |
| 10:44:41 | <Scraeling> | Is it possible to get the name of the module where a function from another module gets called with templatehaskell? |
| 10:44:54 | <Scraeling> | or in any way |
| 10:45:08 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 10:47:21 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 10:47:50 | → | img joins (~img@user/img) |
| 10:48:15 | × | img quits (~img@user/img) (Remote host closed the connection) |
| 10:50:22 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 10:51:21 | → | img joins (~img@user/img) |
| 10:51:53 | → | son0p joins (~ff@2604:3d08:5b7f:5540::1a33) |
| 10:53:00 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 10:53:01 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 10:54:26 | → | avicenzi joins (~avicenzi@2a00:ca8:a1f:b004::c32) |
| 10:56:14 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 10:59:42 | → | mixfix41 joins (~sdenynine@user/mixfix41) |
| 11:03:14 | → | xff0x joins (~xff0x@ai071162.d.east.v6connect.net) |
| 11:03:21 | → | dignissmus joins (~sam@user/dignissimus) |
| 11:07:16 | <dignissmus> | I did my advent of code in Haskell and I'm wondering how I'd write it better https://paste.tomsmeding.com/8qvh8M2P |
| 11:08:11 | → | thyriaen joins (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) |
| 11:08:16 | <tomsmeding> | Scraeling: do you mean to get the module where a certain name `f` is defined, or the module(s) where a certain name `f` is _used_? |
| 11:08:41 | <tomsmeding> | the first you can do, the second is fundamentally impossible because you don't know how many other people are using your code as well |
| 11:09:28 | <Scraeling> | Foo.getCallingModule returns Bar when called from module Bar |
| 11:09:51 | <tomsmeding> | oh, you want the current module where the splice is being evaluated? |
| 11:09:57 | <Scraeling> | Yeah |
| 11:10:24 | <tomsmeding> | Scraeling: see the haddocs of https://hackage.haskell.org/package/template-haskell-2.19.0.0/docs/Language-Haskell-TH.html#v:reifyModule |
| 11:10:34 | → | califax joins (~califax@user/califx) |
| 11:10:55 | <tomsmeding> | (i.e. you want thisModule) |
| 11:13:56 | × | mastarija quits (~mastarija@2a05:4f46:e03:6000:642f:7baf:af2a:1ea8) (Quit: WeeChat 3.5) |
| 11:14:23 | → | gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
| 11:17:19 | × | ec_ quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
| 11:18:10 | → | ec_ joins (~ec@gateway/tor-sasl/ec) |
| 11:18:43 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 268 seconds) |
| 11:18:53 | → | MajorBiscuit joins (~MajorBisc@ip-185-104-137-32.ptr.icomera.net) |
| 11:23:42 | dignissmus | is now known as dignissimus |
| 11:25:40 | <albet70> | there is haskell tutorial for c programmers like https://wiki.haskell.org/Haskell_Tutorial_for_C_Programmers, I wonder if there is c/cpp tutorial for haskell programmers |
| 11:26:13 | → | freeside joins (~mengwong@103.252.202.193) |
| 11:28:43 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 11:30:24 | × | emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir) |
| 11:30:57 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 11:33:07 | → | califax joins (~califax@user/califx) |
| 11:33:36 | → | codaraxis joins (~codaraxis@user/codaraxis) |
| 11:37:35 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 11:38:43 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 11:40:46 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 11:42:12 | × | ec_ quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
| 11:42:39 | → | ec_ joins (~ec@gateway/tor-sasl/ec) |
| 11:45:11 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds) |
| 11:48:17 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 11:50:36 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 256 seconds) |
| 11:51:28 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 11:51:53 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 11:53:25 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 11:53:37 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 11:57:34 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 11:58:04 | → | `2jt joins (~jtomas@255.red-193-153-6.dynamicip.rima-tde.net) |
| 12:00:57 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 12:02:32 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 12:03:38 | × | perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1) |
| 12:06:27 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 12:07:51 | → | perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
| 12:08:12 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 12:08:15 | × | `2jt quits (~jtomas@255.red-193-153-6.dynamicip.rima-tde.net) (Quit: Leaving) |
| 12:11:03 | <dminuoso> | My tutorial for c/cpp programming for haskell programmers is https://hackage.haskell.org/package/base-4.17.0.0/docs/Foreign.html |
| 12:11:39 | <dminuoso> | In other words: I consider Haskell is a far better C |
| 12:13:01 | → | califax joins (~califax@user/califx) |
| 12:17:52 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 12:18:57 | → | beteigeuze joins (~Thunderbi@bl14-81-220.dsl.telepac.pt) |
| 12:18:57 | × | noctux quits (~noctux@user/noctux) (Read error: Connection reset by peer) |
| 12:21:53 | → | acidjnk_new joins (~acidjnk@p200300d6e7137a61a4ce40e1809b5c20.dip0.t-ipconnect.de) |
| 12:21:53 | → | CiaoSen joins (~Jura@p200300c95716a5002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 12:22:05 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 255 seconds) |
| 12:22:31 | × | acidjnk quits (~acidjnk@p200300d6e7137a610dc9b14a87dc1f36.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 12:23:25 | → | alternateved joins (~user@staticline-31-183-171-154.toya.net.pl) |
| 12:23:33 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 12:24:50 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 12:25:04 | ← | kadoban parts (~kadoban@user/kadoban) () |
| 12:25:21 | → | kadoban joins (~kadoban@user/kadoban) |
| 12:26:16 | <chreekat> | <albet70> "there is haskell tutorial for..." <- I thought that was called Rust :P |
| 12:26:27 | → | freeside joins (~mengwong@103.252.202.193) |
| 12:26:56 | × | alternateved quits (~user@staticline-31-183-171-154.toya.net.pl) (Remote host closed the connection) |
| 12:27:18 | → | alternateved joins (~user@staticline-31-183-171-154.toya.net.pl) |
| 12:27:27 | → | califax joins (~califax@user/califx) |
| 12:28:15 | → | lisbeths joins (uid135845@id-135845.lymington.irccloud.com) |
| 12:28:36 | × | mauke quits (~mauke@user/mauke) (Read error: Connection reset by peer) |
| 12:29:17 | → | money_ joins (~money@pool-100-11-18-203.phlapa.fios.verizon.net) |
| 12:30:50 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 256 seconds) |
| 12:33:19 | → | titibandit joins (~titibandi@xdsl-78-35-173-119.nc.de) |
| 12:34:09 | → | mauke joins (~mauke@user/mauke) |
| 12:35:03 | → | noctux joins (~noctux@user/noctux) |
| 12:35:06 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:e558:b5d6:f082:6f2c) |
| 12:36:11 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 264 seconds) |
| 12:38:12 | × | money_ quits (~money@pool-100-11-18-203.phlapa.fios.verizon.net) (Ping timeout: 256 seconds) |
| 12:39:32 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:e558:b5d6:f082:6f2c) (Ping timeout: 255 seconds) |
| 12:48:51 | × | titibandit quits (~titibandi@xdsl-78-35-173-119.nc.de) (Remote host closed the connection) |
| 12:48:58 | × | zant quits (~zant@62.214.20.26) (Ping timeout: 256 seconds) |
| 12:51:33 | <mauke> | I love declarative programming https://thedailywtf.com/articles/common-variables |
| 12:54:29 | <dminuoso> | Is there a kind of `for_ \continue thing -> do { when expr continue; ... }`, or do I have to build my own with Cont? |
| 12:54:46 | → | Guest1499 joins (~Guest14@217.64.164.1) |
| 12:55:24 | <mauke> | I'm not aware of anything other than 'when (not expr) ...' |
| 12:55:59 | <dminuoso> | Yeah the more I think, you have to use Cont for this. |
| 12:56:13 | <dminuoso> | Unless there were two explicit continuations |
| 12:56:48 | <dminuoso> | i.e. `forC_ \skip handle thing -> if a then skip else (handle { do ... })` |
| 12:58:46 | <dminuoso> | Or mmm. I think I have an idea. |
| 12:59:05 | × | Ranhir quits (~Ranhir@157.97.53.139) (Read error: Connection reset by peer) |
| 12:59:10 | → | bravespear|2 joins (~Ranhir@157.97.53.139) |
| 12:59:23 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 13:00:41 | × | codaraxis quits (~codaraxis@user/codaraxis) (Ping timeout: 256 seconds) |
| 13:00:46 | <thyriaen> | mauke, made my day |
| 13:03:16 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 13:03:57 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection) |
| 13:09:52 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 13:10:31 | <Square> | There is no filter for Maybe hidden somewhere in base? |
| 13:11:03 | <mauke> | :t catMaybes |
| 13:11:04 | <lambdabot> | [Maybe a] -> [a] |
| 13:12:10 | <Square> | thanks |
| 13:12:15 | <mauke> | :t \p m -> do x <- m; guard (p x) |
| 13:12:16 | <lambdabot> | (Monad m, Alternative m) => (t -> Bool) -> m t -> m () |
| 13:13:33 | <chymera> | is there any way to tell ghc to let me use tabs for indentation? |
| 13:14:12 | <mauke> | isn't that the default? |
| 13:14:20 | <mauke> | or have tabs been outlawed now |
| 13:14:23 | <merijn> | chymera: You already can, it just follows the same standard as all unix tools (i.e. tab expands until nearest ttabstop) |
| 13:14:44 | <merijn> | mauke: No, still on by defaulted, but using the old unix interpretation of "nearest multiple of 8 tabstop" |
| 13:14:55 | <merijn> | So they never do what beginners expect :p |
| 13:15:03 | <merijn> | Which is another way of saying: don't use tabs |
| 13:15:44 | × | off^ quits (~off@76.145.185.103) (Remote host closed the connection) |
| 13:16:46 | <merijn> | Square: See also mapMaybe |
| 13:16:49 | <chymera> | merijn: mauke I get warnings like this when compiling https://bpa.st/WT5A |
| 13:16:50 | <merijn> | :t mapMaybe |
| 13:16:51 | <lambdabot> | (a -> Maybe b) -> [a] -> [b] |
| 13:17:46 | <merijn> | chymera: Pretty sure -Wtabs isn't on by default, so you must have enabled it |
| 13:18:02 | <chymera> | is there any way to disable that? I mean it's fine if some people have a strong preference for spaces but my stdout is no place for that :D |
| 13:18:14 | <chymera> | merijn: so -Wtabs is an option which warns on tabs? |
| 13:18:15 | <Square> | merijn, thanks. I always got (>>=), just wondered if there it was hidden in some class instance |
| 13:18:17 | <merijn> | ah, wait |
| 13:18:22 | <merijn> | -Wtabs *is* default |
| 13:18:37 | <merijn> | chymera: Yes |
| 13:18:50 | <mauke> | -Wno-tabs |
| 13:19:04 | <merijn> | Square: It's in Data.Maybe :) |
| 13:19:20 | <merijn> | So is catMaybes |
| 13:19:34 | × | acidjnk_new quits (~acidjnk@p200300d6e7137a61a4ce40e1809b5c20.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 13:19:35 | <merijn> | But 90% of uses of catMaybes should instead replace a map with mapMaybe :p |
| 13:19:50 | <chymera> | ah, so it wants spaces as an input and `-Wno-tabs` simply converts my code to spaces behind the scenes? |
| 13:20:07 | <merijn> | chymera: No, -Wno-tabs literally just disables the warning for tabs |
| 13:20:14 | <chymera> | ah, ok |
| 13:20:15 | <chymera> | cool |
| 13:20:20 | <chymera> | how can I globally set that? |
| 13:20:47 | <mauke> | "global" within what scope? |
| 13:21:02 | <chymera> | either system or user |
| 13:21:11 | <chymera> | preferably system but user is also fine |
| 13:22:19 | <chymera> | I mean I can alias the command, but there must be some nicer way, right? |
| 13:22:25 | <mauke> | not really |
| 13:22:29 | <chymera> | :( |
| 13:22:46 | <merijn> | That depends on how you build stuff |
| 13:22:49 | <mauke> | the best way I can think of is creating a custom ghc script that invokes the real ghc with -Wno-tabs |
| 13:22:57 | <mauke> | and make sure your wrapper appears first in PATH |
| 13:23:17 | × | MajorBiscuit quits (~MajorBisc@ip-185-104-137-32.ptr.icomera.net) (Ping timeout: 268 seconds) |
| 13:23:26 | <merijn> | Well, you could set it in the global ghc-options of ~/.cabal/config, but who knows what possible negative consequences that incurs :p |
| 13:23:34 | → | freeside joins (~mengwong@103.252.202.193) |
| 13:23:59 | <mauke> | alternatively, put {-# OPTIONS_GHC -Wno-tabs #-} at the top of every source file |
| 13:24:15 | <chymera> | mauke: yeah, that's what I meant by aliasing |
| 13:24:36 | <chymera> | {-# OPTIONS_GHC -Wno-tabs #-} might actually be best for portability |
| 13:24:40 | × | gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 13:24:52 | <merijn> | hmm |
| 13:24:53 | <mauke> | but really, at that point it's easier to :set expandtabs softtabstop=-1 shiftwidth=8 or something |
| 13:24:57 | <chymera> | that way if anybody else contributes they don't get spammed in stdout |
| 13:25:18 | <merijn> | There's no real "Eq a => [a] -> [[a]]" that, basically, consist of repeated applications of span/break, is there? |
| 13:25:31 | → | shriekingnoise joins (~shrieking@186.137.167.202) |
| 13:26:57 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 13:27:48 | <chymera> | mauke: nah, I actually want the tab chars in my code, it's not just that pressing tab is easer |
| 13:28:22 | <mauke> | why? |
| 13:28:34 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds) |
| 13:29:00 | <mauke> | (Haskell is pretty much the only language where I think physical tabs are inferior) |
| 13:29:26 | <merijn> | Some people like to debug obscure tabstop errors :p |
| 13:31:23 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection) |
| 13:32:31 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 13:33:06 | → | money_ joins (~money@pool-100-11-18-203.phlapa.fios.verizon.net) |
| 13:33:26 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 13:33:29 | <mauke> | the reason is that unlike most other languages, Haskell's syntax is not based on indentation levels, but making things line up with other things |
| 13:34:23 | <mauke> | in other languages I can adjust the width of my tabs and the code will still make sense, whether I use tabstop=3 or tabstop=4 or tabstop=8 or whatever |
| 13:34:49 | <TMA> | mauke: there is a combination, some are based on indentation levels (more indented means "in next level") |
| 13:36:50 | <mauke> | in Haskell, the starting column of a layout block is determined by the horizontal position of the token following the layout keyword (do, where, let, ...) |
| 13:37:05 | <TMA> | I have read a style guide for tabs for levels, spaces for lining up and it produced mixed tab/space sequences ; OTOH it was OK(ish) with any tabstop= setting |
| 13:37:05 | <mauke> | which is not necessarily at the beginning of a line |
| 13:37:28 | → | opticblast joins (~Thunderbi@secure-165.caltech.edu) |
| 13:37:39 | × | money_ quits (~money@pool-100-11-18-203.phlapa.fios.verizon.net) (Ping timeout: 260 seconds) |
| 13:37:46 | <mauke> | you can do that, but in the end it's a lot of fiddly (and usually blind) work for little benefit |
| 13:38:36 | <mauke> | also, if you apply that rigorously to Haskell, you end up with 0 tabs always because Haskell has no indentation levels, technically :-) |
| 13:38:50 | <merijn> | Yes, every so often some religious prophet/heretic (depending on your point of view) will argue that his divine insight has produced a sane way of "tabs in haskell", they're mostly ignored the way you'd ignore a doomsday street preacher |
| 13:40:14 | <Unhammer> | When using allocaArray on some Storable, is `poke` used to initialise it, or is that purely based on size/alignment? |
| 13:40:52 | <Unhammer> | I now have https://github.com/unhammer/fastText-haskell/blob/arm/Data/FastText/Internal.hsc#L29..L48 but still getting that weird error with the first string having its first chars being strange |
| 13:40:54 | <Unhammer> | HOWEVER |
| 13:41:03 | <Unhammer> | if I try to get a longer array, it works |
| 13:41:17 | → | freeside joins (~mengwong@103.252.202.193) |
| 13:42:48 | <albet70> | all functions in haskell are inline functions? |
| 13:43:05 | <mauke> | no |
| 13:43:26 | <albet70> | referential transparency? |
| 13:43:46 | <albet70> | why no? |
| 13:44:49 | <Unhammer> | if I allocaArray 1, I get "\251\alabel__no" as the first string, 2 gives me "\215\NULlabel__no" (and the second is fine __label__da), 3 gives me "\251\alabel__no" again, 4 "\251\alabel__no", 5 and it finally works |
| 13:44:56 | <mauke> | because some of them are defined in other modules |
| 13:45:06 | <Unhammer> | >=5 |
| 13:45:09 | <mauke> | well, and some of them are recursive |
| 13:45:16 | <mauke> | you can't fully inline a recursive function |
| 13:45:46 | <mauke> | Unhammer: do you have a minimal but complete example that demonstrates the problem? |
| 13:46:23 | × | feliix42 quits (~felix@gibbs.uberspace.de) (Read error: Connection reset by peer) |
| 13:46:34 | <albet70> | what about just non-recursive functions in one module are inline functions? |
| 13:46:51 | <albet70> | how about |
| 13:46:51 | × | AWizzArd_ quits (~code@gehrels.uberspace.de) (Read error: Connection reset by peer) |
| 13:46:56 | <mauke> | now it depends on what exactly you mean by "inline function" |
| 13:47:05 | <Unhammer> | mauke, |
| 13:47:08 | <Unhammer> | git clone -barm https://github.com/unhammer/fastText-haskell && cd fastText-haskell && nix-shell --run 'cabal test' |
| 13:47:15 | <Unhammer> | on apple silicon |
| 13:47:25 | <Unhammer> | works fine on linux :( |
| 13:47:45 | <albet70> | mauke, inline function in cpp or kotlin java |
| 13:47:53 | <mauke> | Unhammer: that doesn't sound very minimal |
| 13:47:59 | <mauke> | albet70: cpp doesn't have functions |
| 13:48:06 | <mauke> | I don't know kotlin |
| 13:48:21 | <albet70> | and java? |
| 13:49:02 | <mauke> | I know java basics, but I don't remember its semantics regarding inline |
| 13:49:35 | → | feliix42 joins (~felix@gibbs.uberspace.de) |
| 13:49:46 | <Unhammer> | sorry, I know. I'll keep fiddling with it. Was just hoping someone would shout out "you silly person you've mixed up your flux and fibble I remember struggling with this in kindergarten" |
| 13:49:49 | <mauke> | oh, it doesn't even have an inline keyword |
| 13:50:17 | <merijn> | hmm |
| 13:50:22 | <merijn> | Didn't base get sum' recently? |
| 13:50:26 | <merijn> | I can't find it |
| 13:51:28 | <merijn> | ah, it's just sum was made strict |
| 13:51:30 | <merijn> | Thank god |
| 13:52:21 | → | AWizzArd joins (~code@gehrels.uberspace.de) |
| 13:59:07 | × | Putonlalla quits (~Putonlall@it-cyan.it.jyu.fi) (Ping timeout: 260 seconds) |
| 14:01:05 | <merijn> | Entirely unrelatedly...anyone have any good way of automatically shrinking a bug reproducer in a giant codebase? xD |
| 14:01:09 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 14:01:11 | → | codaraxis joins (~codaraxis@user/codaraxis) |
| 14:01:31 | × | ulvarref` quits (~user@185.24.53.152) (Ping timeout: 268 seconds) |
| 14:02:49 | <merijn> | If not: Is anyone bored? ;) |
| 14:02:59 | <mauke> | .oO( pour salt on it ) |
| 14:03:21 | <merijn> | mauke: I'm already plenty salty xD |
| 14:06:51 | <dminuoso> | merijn | So they never do what beginners expect :p |
| 14:06:58 | <dminuoso> | That applies to any behavior of tab you can imagine. |
| 14:07:03 | <merijn> | Sure |
| 14:08:20 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 248 seconds) |
| 14:08:45 | money | is now known as polo |
| 14:15:12 | → | Putonlalla joins (~Putonlall@it-cyan.it.jyu.fi) |
| 14:15:20 | → | zant joins (~zant@62.96.232.178) |
| 14:15:28 | <chymera> | mauke: why are tabs inferior in haskell? |
| 14:15:58 | <mauke> | see my comments from about 50 minutes ago |
| 14:16:20 | <mauke> | actually more like 44 |
| 14:17:13 | × | Alex_test quits (~al_test@178.34.163.118) (Ping timeout: 260 seconds) |
| 14:17:16 | × | AlexZenon quits (~alzenon@178.34.163.118) (Ping timeout: 252 seconds) |
| 14:17:46 | × | razetime quits (~quassel@49.207.211.219) (Remote host closed the connection) |
| 14:18:32 | <chymera> | mauke: oh, hadn't seen that |
| 14:18:48 | <chymera> | mauke: I don't think I understand, though... can you give me an example? |
| 14:19:19 | × | TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 260 seconds) |
| 14:21:07 | <chymera> | tabs also determine where things are horizontally, no? how is “where things are horizontally” differ from indentation? |
| 14:21:39 | <dminuoso> | mauke: Curious, why do you say cpp has no functions? |
| 14:22:22 | <mauke> | dminuoso: macros are just token replacement |
| 14:22:28 | <mauke> | I don't count that as functions |
| 14:22:45 | <dminuoso> | I think they meant C++ |
| 14:23:00 | <mauke> | yeah, that would make more sense |
| 14:23:07 | → | Alex_test joins (~al_test@178.34.163.118) |
| 14:23:52 | × | hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 252 seconds) |
| 14:24:01 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 14:24:17 | → | AlexZenon joins (~alzenon@178.34.163.118) |
| 14:28:25 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds) |
| 14:30:27 | × | kmein quits (~weechat@user/kmein) (Quit: ciao kakao) |
| 14:30:40 | <dminuoso> | albet70: In Haskell every binding or function is inlinable, in principle even recursive ones (with some practical limitations). It is a result of referential transparency that lets us do this substitution, and its also the core why learning Haskell is relatively simple. |
| 14:31:02 | → | kmein joins (~weechat@user/kmein) |
| 14:31:12 | <dminuoso> | You can always just substitute a thing with its definition (respecting binders, potentially alpha conversions), and get an equivalent program. |
| 14:31:33 | <dminuoso> | However. In practice this wont hold true, because it can have an impact in performance, but that's not a semantic issue. |
| 14:32:21 | <dminuoso> | Also, just because it could be inlined, does not mean it will get inlined. In GHC it is the simplifiers job to figure out whether or ot a function is suitable for inlining (but we do have pragmas to control this, namely INLINE, INLINABLE, OPAQUE and phase control with these). |
| 14:34:36 | <dminuoso> | Recursive functions could in principle be inlined (at least to a degree, say by just unrolling it), and recursive binding groups *are* actually inlined to a degree as well. |
| 14:35:29 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 14:35:50 | × | dignissimus quits (~sam@user/dignissimus) (Quit: WeeChat 3.7.1) |
| 14:36:03 | <dminuoso> | albet70: Note, that in GHC inlining can easily occur across modules as well - even with polymorphism in the way. There's additional GHC options and pragmas to steer this too. |
| 14:37:44 | → | TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker) |
| 14:38:07 | <dminuoso> | See https://wiki.haskell.org/Inlining_and_Specialisation for further details on that subject |
| 14:44:39 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt https://tinyurl.com/4m8d4kd5) |
| 14:47:10 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection) |
| 14:47:28 | → | use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
| 14:47:28 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Quit: Leaving) |
| 14:50:16 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.7.1) |
| 14:53:17 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 255 seconds) |
| 14:55:18 | <Franciman> | dminuoso: can we say it's a whole-program optimisation? |
| 14:55:49 | <dminuoso> | To an extent, sure |
| 14:56:11 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 14:59:08 | × | irrgit_ quits (~irrgit@146.70.27.242) (Read error: Connection reset by peer) |
| 15:00:29 | <Unhammer> | mauke, I found my bug :) I was doing struct.label = str.c_str(); fixed by doing strcpy(struct.label, str.c_str()) |
| 15:00:45 | <merijn> | Unhammer: Classic mistake :p |
| 15:02:02 | <Unhammer> | my C was too ++ |
| 15:02:34 | × | ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 268 seconds) |
| 15:07:38 | × | kmein quits (~weechat@user/kmein) (Quit: ciao kakao) |
| 15:08:47 | → | haritz joins (~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) |
| 15:08:47 | × | haritz quits (~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) (Changing host) |
| 15:08:47 | → | haritz joins (~hrtz@user/haritz) |
| 15:09:19 | → | zer0bitz_ joins (~zer0bitz@196.244.192.58) |
| 15:09:47 | → | kmein joins (~weechat@user/kmein) |
| 15:11:28 | × | zer0bitz quits (~zer0bitz@196.244.192.58) (Ping timeout: 260 seconds) |
| 15:12:57 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 15:13:30 | <jjhoo> | Unhammer: is that label an array that has been allocated ie. something like char label[256]? |
| 15:15:10 | × | CiaoSen quits (~Jura@p200300c95716a5002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 15:18:15 | → | azimut_ joins (~azimut@gateway/tor-sasl/azimut) |
| 15:18:55 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 15:18:56 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 15:19:39 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 15:21:47 | → | irrgit_ joins (~irrgit@176.113.74.138) |
| 15:23:18 | → | Guest51 joins (~Guest51@2603-8000-0401-65cc-6995-00ab-32cc-e090.res6.spectrum.com) |
| 15:23:58 | × | Guest51 quits (~Guest51@2603-8000-0401-65cc-6995-00ab-32cc-e090.res6.spectrum.com) (Client Quit) |
| 15:28:01 | × | lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 15:28:45 | → | jero98772 joins (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) |
| 15:29:21 | → | Guest21 joins (~Guest21@2a01:e34:ec28:ec0:ade9:5613:646d:9e8f) |
| 15:31:14 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 15:31:16 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 15:32:50 | × | hueso quits (~root@user/hueso) (Quit: No Ping reply in 180 seconds.) |
| 15:34:00 | → | hueso joins (~root@user/hueso) |
| 15:36:36 | → | money_ joins (~money@pool-100-11-18-203.phlapa.fios.verizon.net) |
| 15:37:11 | × | money_ quits (~money@pool-100-11-18-203.phlapa.fios.verizon.net) (Client Quit) |
| 15:37:45 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:e558:b5d6:f082:6f2c) |
| 15:41:35 | × | FragByte quits (~christian@user/fragbyte) (Ping timeout: 264 seconds) |
| 15:41:56 | → | FragByte joins (~christian@user/fragbyte) |
| 15:42:11 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:e558:b5d6:f082:6f2c) (Ping timeout: 246 seconds) |
| 15:44:55 | × | zer0bitz_ quits (~zer0bitz@196.244.192.58) (Read error: Connection reset by peer) |
| 15:46:08 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 15:46:09 | × | causal quits (~user@50.35.83.177) (Quit: WeeChat 3.7.1) |
| 15:48:14 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection) |
| 15:48:33 | → | use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
| 15:51:00 | × | Guest75 quits (~Guest75@178.141.153.191) (Quit: Client closed) |
| 15:53:37 | × | alternateved quits (~user@staticline-31-183-171-154.toya.net.pl) (Remote host closed the connection) |
| 15:57:05 | <albet70> | wonderful |
| 15:59:34 | → | segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) |
| 16:01:47 | × | FragByte quits (~christian@user/fragbyte) (Ping timeout: 248 seconds) |
| 16:01:56 | → | FragByte_ joins (~christian@user/fragbyte) |
| 16:02:20 | FragByte_ | is now known as FragByte |
| 16:07:50 | × | Guest21 quits (~Guest21@2a01:e34:ec28:ec0:ade9:5613:646d:9e8f) (Quit: Client closed) |
| 16:13:14 | × | azimut_ quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 16:13:58 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 16:14:14 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 16:17:34 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:4131:3f7a:f009:112b) (Quit: WeeChat 2.8) |
| 16:18:41 | × | son0p quits (~ff@2604:3d08:5b7f:5540::1a33) (Ping timeout: 255 seconds) |
| 16:18:48 | × | Guest1499 quits (~Guest14@217.64.164.1) (Quit: Client closed) |
| 16:20:20 | × | avicenzi quits (~avicenzi@2a00:ca8:a1f:b004::c32) (Ping timeout: 256 seconds) |
| 16:24:28 | → | pta2002 joins (~pta2002@161.230.90.170) |
| 16:27:00 | <pta2002> | Hello, typical noob AOC question incoming, I'm trying to use parsec to parse a list of numbers separated by newlines, with an empty line between them (overkill ik, but trying to dust off my parsec skills), basically turn "1\n2\n3\n\n3\n4\n5" into [[1,2,3],[3,4,5]], but I can't figure out how to do this properly |
| 16:28:01 | Kaipei | is now known as Kaiepi |
| 16:28:36 | <pta2002> | I got the integer parsing and parsing of a single group to work properly (integer = read <$> many1 digit, group = sepBy integer (char '\n')) but now can't figure out how to parse multiple groups, I tried using sepBy group (string "\n\n") but that doesn't work, I guess because the separator is the same, because if I use a diferent character for the group separator it does work |
| 16:29:01 | <merijn> | pta2002: Can you pastebin your parser? |
| 16:29:07 | <pta2002> | sure |
| 16:29:27 | <merijn> | tbh, I don't think parsec has a great "power-to-weight" ratio for the early AoC puzzles |
| 16:29:53 | × | mbuf quits (~Shakthi@49.204.116.34) (Quit: Leaving) |
| 16:30:36 | <pta2002> | yeah it definitely does not, i know I can just do like line <$> splitBy "\n\n" or something like that but wanted to dust off my parsec skills |
| 16:31:04 | <pta2002> | merijn: https://gist.github.com/pta2002/dfe130522335cf395857fba1e1cbca8e |
| 16:31:21 | <pta2002> | i tried using try there but that doesn't work, just results in an empty list if there's more than one group |
| 16:31:50 | <pta2002> | forgot the type definition, but CalorieList is just [[Int]] |
| 16:32:13 | <merijn> | sepBy raises red flags |
| 16:32:22 | <merijn> | It accepts empty sequences |
| 16:32:26 | <merijn> | Which you don't want |
| 16:32:36 | <pta2002> | ooooh, yeah, i want to end if it finds an empty sequence |
| 16:32:39 | <merijn> | You almost certainly want sepBy1 |
| 16:32:55 | <merijn> | Since every sequence is "1 or more" numbers |
| 16:33:13 | <pta2002> | so you mean sepBy1 on group instead? |
| 16:33:42 | <merijn> | "sepBy1 integer" |
| 16:33:44 | <merijn> | also |
| 16:33:47 | <jean-paul[m]> | pta2002: Are you paying attention to what has been consumed and what hasn't been? |
| 16:33:51 | <pta2002> | doesn't work :c keeps complaining about unexpected "\n" |
| 16:33:59 | <merijn> | Your \n\n end in parseList has no try |
| 16:34:02 | <pta2002> | jean-paul[m]: yeah i mean i guess the issue is it's consuming the \n |
| 16:34:43 | <pta2002> | as in, consuming the final \n looking for an extra integer, but it doesn't find it, and just errors out, which is not what i want, just want it to backtrack that one \n |
| 16:35:02 | <merijn> | oh, might be lack of newline at the end of input too |
| 16:35:36 | <pta2002> | tried parsing "1\n2\n\n1\n2" and that with a \n at the end and it doesn't work |
| 16:36:29 | <merijn> | pta2002: Can you include the actual parse logic? |
| 16:36:54 | <pta2002> | just running on ghci rn but it's parse parseList "(unknown)" [the string] |
| 16:37:21 | <merijn> | What does it return when you run "parse group" on that string? |
| 16:37:43 | <pta2002> | unexpected "\n", expecting digit |
| 16:39:22 | <merijn> | Wait, what if you try to use parsec's newline? |
| 16:39:27 | <pta2002> | so tried making group = (try integer) (char '\n') but get the same issue |
| 16:39:34 | <pta2002> | merijn: where? |
| 16:39:49 | <merijn> | instead of 'char "\n"' |
| 16:39:55 | <pta2002> | same thing |
| 16:39:56 | <merijn> | That's a bad habit anyway |
| 16:40:00 | <merijn> | No it's not |
| 16:40:14 | <pta2002> | uh |
| 16:40:15 | <merijn> | \n maps to "platform specific newline representation" in Haskell |
| 16:40:33 | <pta2002> | ah no, i meant same thing as in same output |
| 16:40:36 | <merijn> | Whereas 'char "\n"' will *only* parse actual \n |
| 16:40:39 | <pta2002> | not same thing as in char '\n' is the same as newline |
| 16:40:40 | <merijn> | hmm |
| 16:41:43 | → | ft joins (~ft@p508dbd59.dip0.t-ipconnect.de) |
| 16:43:44 | <merijn> | Can't really try it right now, because I gotta get started on dinner. I'd write a wrapper that inspects the actual ParseError and reports the exact character it fails via https://hackage.haskell.org/package/parsec-3.1.15.1/docs/Text-Parsec.html#v:errorPos |
| 16:44:25 | <pta2002> | alright, thanks for the help |
| 16:45:49 | × | ubert1 quits (~Thunderbi@2a02:8109:abc0:6434:1782:c1f:7c60:6e20) (Remote host closed the connection) |
| 16:52:41 | → | econo joins (uid147250@user/econo) |
| 16:53:18 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 16:53:46 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
| 16:53:47 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 16:54:49 | <pta2002> | ah! got it! |
| 16:55:07 | <pta2002> | I needed to use sepEndBy1 instead of sepBy1 on group |
| 16:55:34 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 16:55:51 | → | dextaa6 joins (~DV@user/dextaa) |
| 16:56:38 | × | pta2002 quits (~pta2002@161.230.90.170) (Quit: leaving) |
| 16:57:23 | × | dextaa quits (~DV@user/dextaa) (Ping timeout: 252 seconds) |
| 16:57:23 | dextaa6 | is now known as dextaa |
| 17:01:51 | <merijn> | oh, right |
| 17:04:32 | → | jrm2 joins (~jrm@user/jrm) |
| 17:04:46 | × | jrm quits (~jrm@user/jrm) (Read error: Connection reset by peer) |
| 17:05:46 | jrm2 | is now known as jrm |
| 17:08:11 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 17:16:39 | → | mbuf joins (~Shakthi@49.204.116.34) |
| 17:17:07 | <Unhammer> | jjhoo, i think so, by allocaArray |
| 17:20:58 | → | oldsk00l joins (~znc@ec2-18-185-101-38.eu-central-1.compute.amazonaws.com) |
| 17:21:29 | → | califax joins (~califax@user/califx) |
| 17:21:59 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.) |
| 17:22:34 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 17:37:02 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 17:39:35 | × | accord quits (uid568320@id-568320.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 17:42:02 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 17:42:03 | × | nschoe quits (~q@141.101.51.197) (Quit: Switching off) |
| 17:42:44 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 17:43:42 | <seydar> | I did AoC day 1 and I am embarrassed by my code: https://paste.tomsmeding.com/9Uux9WXy |
| 17:44:17 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds) |
| 17:44:20 | <seydar> | I would appreciate any feedback on how to accumulate the provisions in a more haskellish manner |
| 17:44:58 | → | califax joins (~califax@user/califx) |
| 17:45:02 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 17:45:58 | → | titibandit joins (~titibandi@xdsl-78-35-173-119.nc.de) |
| 17:46:25 | <darkling> | I can't lay claim to being haskellish, but this was mine: https://github.com/darkling/AoC2022/blob/main/day01/Main.hs |
| 17:46:52 | <darkling> | Read everything in first, then mangle it into shape. |
| 17:48:11 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:50:02 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 17:50:41 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection) |
| 17:51:01 | → | use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
| 17:52:49 | <mauke> | I take it this is not the american politician |
| 17:53:36 | <darkling> | No, Advent of Code. |
| 17:53:44 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 17:54:34 | <merijn> | darkling: https://github.com/merijn/AdventOfCode/blob/master/Day1.hs |
| 17:54:35 | <seydar> | darkling: ahhh foldr! i'm an IDIOT |
| 17:54:57 | <geekosaur> | do we have a leaderboard yet? |
| 17:55:04 | ChanServ | sets mode +o geekosaur |
| 17:55:08 | <merijn> | geekosaur: The old one still works, but might be full |
| 17:55:15 | <merijn> | glguy's leaderboard, that is |
| 17:55:31 | <darkling> | Heh. I'm not playing that game. It's released at 5am my time. :) |
| 17:56:03 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:e558:b5d6:f082:6f2c) |
| 17:56:13 | <merijn> | I think the most useful trick in my version is: sortOn Down :p |
| 17:56:22 | geekosaur | sets topic to "https://www.reddit.com/r/haskell | Admin: #haskell-ops | Offtopic: #haskell-offtopic | https://downloads.haskell.org | Paste code/errors: https://paste.tomsmeding.com | Logs: https://ircbrowse.tomsmeding.com/browse/lchaskell | AoC Leaderboard: 43100-84040706" |
| 17:56:31 | geekosaur | sets mode -o geekosaur |
| 17:56:56 | <darkling> | Also, the top of the global leaderboard today finished *both* tasks in 53 seconds... I can't compete with that in *any* language I know. :) |
| 17:58:10 | <mauke> | github is being weird |
| 17:58:38 | <mauke> | I tried logging in to AoC with my github account, and the button to do so is labeled "Authorize topaz", but I have no idea what topaz is |
| 17:59:25 | <tomsmeding> | mauke: topaz is the maker of AoC |
| 17:59:30 | <mauke> | oh, it's Eric Wastl's github account name. but the authorization page only lists him by full name |
| 17:59:46 | <mauke> | UX fail |
| 18:00:01 | × | coot quits (~coot@213.134.171.3) (Quit: coot) |
| 18:01:27 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Quit: use-value) |
| 18:02:20 | → | pestilence joins (~alice@2601:c2:8300:a580:a9bd:4df1:6112:bb69) |
| 18:03:05 | × | pestilence quits (~alice@2601:c2:8300:a580:a9bd:4df1:6112:bb69) (Client Quit) |
| 18:03:23 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds) |
| 18:03:38 | × | Lycurgus quits (~juan@user/Lycurgus) (Ping timeout: 252 seconds) |
| 18:03:40 | → | jinsun__ joins (~jinsun@user/jinsun) |
| 18:03:40 | jinsun | is now known as Guest9413 |
| 18:03:40 | × | Guest9413 quits (~jinsun@user/jinsun) (Killed (cadmium.libera.chat (Nickname regained by services))) |
| 18:03:40 | jinsun__ | is now known as jinsun |
| 18:04:28 | → | acidjnk_new joins (~acidjnk@p200300d6e7137a26a0c5c39a40faf46b.dip0.t-ipconnect.de) |
| 18:07:39 | <seydar> | what do I do about hidden packages? I'm trying to use splitOn in Data.List.Split https://paste.tomsmeding.com/ksGCIefo |
| 18:07:48 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 18:07:56 | <iqubic> | Add split to you cabal file, if you have one. |
| 18:08:34 | <seydar> | what if I'm not cool enough to have a cabal file |
| 18:08:51 | <iqubic> | How did you install your libraries? |
| 18:08:54 | → | moonsheep joins (~user@user/moonsheep) |
| 18:09:48 | <geekosaur> | if you're doing things old style then you need to use `-package split` on the ghc command line |
| 18:10:03 | <geekosaur> | but really, switch to using either cabal or stack, your life will be much easier |
| 18:10:14 | <seydar> | damn, so i need to have a cabal file |
| 18:10:21 | <moonsheep> | let me guess: today has been a split-heavy day? |
| 18:10:21 | <seydar> | unless we're team stack? |
| 18:10:30 | <moonsheep> | question-wise |
| 18:10:47 | <geekosaur> | personally I'm a cabal type but there's a fair number of stack users here |
| 18:10:55 | → | Tuplanolla joins (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) |
| 18:10:57 | <moonsheep> | I couldn't recommend stack enough |
| 18:10:58 | <seydar> | moonsheep: at first I was doing things the amish way, writing haskell the way they did back in the day, but now I'm trying to easy myself into the 21st century |
| 18:11:14 | <moonsheep> | I mentioned that because of advent of code |
| 18:11:20 | <geekosaur> | moonsheep, I haven't looked but AoC just started and I would not be surprised if it called for split |
| 18:11:33 | <moonsheep> | yeah I ended up handrolling split |
| 18:11:35 | <moonsheep> | lost me like 2 minutes |
| 18:11:51 | <moonsheep> | also I should've loaded the input as text, not string that was a pita |
| 18:11:52 | <iqubic> | moonsheep, split is useful for parsing many of the common input formats Eric uses. |
| 18:11:56 | <moonsheep> | yeah |
| 18:12:55 | <mauke> | ok, maybe I'm cheating, but here's my first solution: https://paste.tomsmeding.com/rhxwvtrX |
| 18:14:19 | <iqubic> | I use Megaparsec to parse all of the inputs. |
| 18:14:20 | <iqubic> | https://paste.tomsmeding.com/clH0Wblh |
| 18:14:34 | <moonsheep> | isn't that a bit overkll? |
| 18:14:48 | <moonsheep> | well, except for the days that are about parsing of course (like that network packet one last year) |
| 18:15:08 | <iqubic> | moonsheep, yeah |
| 18:15:23 | <iqubic> | But I like to learn when doing advent of code. |
| 18:15:34 | <moonsheep> | ah |
| 18:15:48 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:e558:b5d6:f082:6f2c) (Remote host closed the connection) |
| 18:15:59 | → | jargon joins (~jargon@174-22-207-8.phnx.qwest.net) |
| 18:16:01 | <darkling> | Me too. I only got to day 3 last year, but that's because I was doing something fairly silly. :) |
| 18:16:34 | <darkling> | (Z80 assembly on a SpecNext) |
| 18:17:10 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 18:18:24 | <iqubic> | moonsheep: Do you remember which day the network packet day was? |
| 18:19:21 | <juri_> | hmm. i made a tiny change in my program, in pure haskell, and now get segmentation faults. WTFsprinkles. |
| 18:19:29 | <seydar> | how do you all manage all the days for AoC with cabal? |
| 18:19:31 | justache- | is now known as justache |
| 18:19:46 | <iqubic> | Easily... |
| 18:20:23 | <darkling> | I'm just going for one directory a day. Filthy, but expedient. :) |
| 18:22:15 | <seydar> | yeah darkling that's what i'm trying to avoid. certainly expedient, but... the boilerplate required just to get a simple program to run -- and to do it daily? i must be missing something |
| 18:22:18 | → | califax joins (~califax@user/califx) |
| 18:22:20 | <seydar> | maybe i'm just missing a work ethic |
| 18:22:37 | <darkling> | Copy from yesterday... |
| 18:23:17 | <moonsheep> | iqubic: no but probably google does |
| 18:23:22 | <moonsheep> | https://www.google.com/search?q=site%3Aadventofcode.com+packets |
| 18:23:26 | <moonsheep> | https://adventofcode.com/2021/day/16 |
| 18:25:06 | <freeside> | erm. I'm trying to build HLS to match LTS 20.2, but I can't get any `ghcup compile hls` incantation to work, with any combination of versions. Is it me? I'm trying ghcup compile hls -v 1.8.0.0 --ghc 9.2.5 |
| 18:25:24 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 18:25:51 | <yushyin> | i have a common stanza for the days modules and a script to generate stubs for Day01-25 |
| 18:26:29 | × | titibandit quits (~titibandi@xdsl-78-35-173-119.nc.de) (Remote host closed the connection) |
| 18:26:38 | <moonsheep> | freeside: I don't think HLS works with GHC 9.2.5 yet |
| 18:26:42 | <moonsheep> | well not sure |
| 18:26:46 | ← | moonsheep parts (~user@user/moonsheep) (ERC 5.4 (IRC client for GNU Emacs 28.2)) |
| 18:26:56 | <freeside> | i can't get it to compile even with the versions it's supposed to work with |
| 18:28:21 | <freeside> | like, 9.2.4 is supposed to be hls-powered, according to both ghcup tui and https://haskell-language-server.readthedocs.io/en/latest/support/ghc-version-support.html |
| 18:28:27 | → | son0p joins (~ff@2604:3d08:5b7f:5540::37af) |
| 18:29:31 | <mauke> | my haskell solution: https://paste.tomsmeding.com/Oq7cTCSC |
| 18:30:14 | → | merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) |
| 18:30:23 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 260 seconds) |
| 18:30:48 | <freeside> | After searching the rest of the dependency tree exhaustively, these were the goals I've had most trouble fulfilling: haskell-language-server, hls-plugin-api, hls-stylish-haskell-plugin, haskell-language-server:stylishhaskell |
| 18:32:09 | <freeside> | seydar: i get all the libraries available by running as a #!stack script, https://github.com/mengwong/adventofcode/blob/bf8eeef5e7f403f01a666341febd43271f63a990/day01/aoc2022-day01.hs#L1-L2 |
| 18:32:14 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 18:32:14 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 18:32:14 | → | wroathe joins (~wroathe@user/wroathe) |
| 18:33:09 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:e558:b5d6:f082:6f2c) |
| 18:33:10 | <mauke> | and from there you can get the second solution by adding (sum . take 3 . sortBy (flip compare)) |
| 18:34:04 | × | hgolden quits (~hgolden@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection) |
| 18:35:28 | → | hgolden joins (~hgolden@cpe-172-251-233-141.socal.res.rr.com) |
| 18:35:32 | × | mbuf quits (~Shakthi@49.204.116.34) (Quit: Leaving) |
| 18:36:23 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:36:41 | <seydar> | I am so close, but I have a type error: https://paste.tomsmeding.com/qVvN6eKU |
| 18:36:49 | <seydar> | I'm missing something obvious |
| 18:36:55 | <seydar> | Nobody answer, I just realized what I need to do |
| 18:37:47 | × | zant quits (~zant@62.96.232.178) (Ping timeout: 268 seconds) |
| 18:37:49 | <mauke> | environment? what the |
| 18:38:29 | <mauke> | :t maximum |
| 18:38:30 | <lambdabot> | (Foldable t, Ord a) => t a -> a |
| 18:39:01 | <mauke> | > maximum [1, 10, 2, -4, 11, 2] |
| 18:39:02 | <lambdabot> | 11 |
| 18:39:10 | × | codaraxis quits (~codaraxis@user/codaraxis) (Ping timeout: 256 seconds) |
| 18:39:15 | <mauke> | @src print |
| 18:39:15 | <lambdabot> | print x = putStrLn (show x) |
| 18:39:39 | <freeside> | if we are allowed to go OG Unix Hacker, may I submit $ perl -000 -nle 'for (split /\n/) { $sum += $_ }; print $sum; $sum = 0' < input.txt | sort -n | tail -3 | paste -sd+ - | bc |
| 18:39:42 | <freeside> | lol |
| 18:40:09 | <mauke> | freeside: perl -MList::Util=max,sum0 -00 -wE 'say max map sum0(split /\n/), readline' < input |
| 18:40:17 | <Vq> | freeside: I don't think we should be allowed. |
| 18:40:19 | <seydar> | okay now I'm stumped: https://paste.tomsmeding.com/JUO3jSFG |
| 18:40:44 | <freeside> | what's that newfangled List::Util? we didn't have that in my day |
| 18:40:45 | <geekosaur> | freeside, I just got the same error trying to build for 9.2.5. I think that means it just isn't supported yet by some dependency. |
| 18:40:51 | <yushyin> | mauke: you are lukas mai, aren't you? |
| 18:41:04 | <geekosaur> | not sure if there's a way to pass --allow-newer via ghcup compile |
| 18:41:08 | <mauke> | freeside: oh yeah, that's brand new from 2002 |
| 18:41:16 | <freeside> | haha |
| 18:41:21 | <mauke> | yushyin: why? |
| 18:41:33 | <freeside> | part of me wonders if Raku would be able to do it in like 12 characters |
| 18:41:38 | <Vq> | freeside: Is "split /\n/" for emulating awk? |
| 18:41:39 | <yushyin> | mauke: i think i remeber you from #perl on freenode |
| 18:42:03 | <yushyin> | your nick looks familiar |
| 18:42:06 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 18:42:16 | <mauke> | yeah :-) |
| 18:42:43 | <freeside> | geekosaur: i can't even get it to build for 9.2.4 or any other version it's supposed to support, so i feel like something is wrong more generally. |
| 18:42:45 | <mauke> | :t return |
| 18:42:45 | <lambdabot> | Monad m => a -> m a |
| 18:42:48 | <mauke> | seydar: ^ |
| 18:43:10 | <freeside> | Vq: the split /\n/ operates against after the -000 takes effect ... that does the paragraph separation |
| 18:43:28 | <yushyin> | mauke: i used to use some of your perl libraries ;) |
| 18:43:38 | <geekosaur> | I've built hls before so unless this is a 1.8.0.0 bug (last time I did it is 1.7.0.0) I doubt it |
| 18:43:43 | <mauke> | cool |
| 18:43:48 | <freeside> | i shall try 1.7.0.0 |
| 18:44:02 | <geekosaur> | figured out how to pass --allow-newer, seems to be building for me now |
| 18:44:16 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 18:44:52 | <seydar> | mauke: ugh. thank you |
| 18:45:07 | <mauke> | freeside: for the second one, perl -MList::Util=sum0 -00 -wE 'say sum0 +(sort { $b <=> $a } map sum0(split /\n/), readline)[0 .. 2]' < input |
| 18:45:13 | <geekosaur> | bvut it's building a lot of stuff since I switched to cabal HEAD and XDG mode so everything needs to be rebuilt |
| 18:45:40 | <mauke> | seydar: and have a look at 'maximum' and 'print' if you want to shorten your code slightly |
| 18:47:36 | <seydar> | mauke: good catch -- updated those too |
| 18:47:51 | <freeside> | sometimes you just wanna pipe output to sort(1) |
| 18:48:37 | <freeside> | geekosaur: yes, mine is building too now, thank you. https://www.haskell.org/ghcup/guide/#hls seems severely in need of a revision |
| 18:49:55 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 18:50:02 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Quit: leaving) |
| 18:52:05 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
| 18:52:44 | × | son0p quits (~ff@2604:3d08:5b7f:5540::37af) (Remote host closed the connection) |
| 18:57:29 | → | king_gs joins (~Thunderbi@187.201.158.17) |
| 18:57:56 | × | king_gs quits (~Thunderbi@187.201.158.17) (Client Quit) |
| 18:59:30 | <freeside> | mauke: shrank a little further, perl -MList::Util=sum0 -00 -nE 'say sum0 split' | tail -1 |
| 18:59:44 | <freeside> | er, sort | tail -1 |
| 18:59:59 | × | opticblast quits (~Thunderbi@secure-165.caltech.edu) (Ping timeout: 268 seconds) |
| 19:03:32 | × | merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
| 19:05:14 | <freeside> | oof. Error: cabal: Failed to build primitive-unlifted-1.0.0.0 (which is required by exe:haskell-language-server from haskell-language-server-1.8.0.0 |
| 19:05:23 | <freeside> | does XDG mode help fix that? |
| 19:05:36 | <geekosaur> | XDG just changes paths |
| 19:05:41 | <freeside> | reading |
| 19:06:06 | <freeside> | ok. I'm trying to view the build log but the build log is squished into like 6 lines of blue scroll |
| 19:06:07 | <geekosaur> | I just failed with that one as well 😞 |
| 19:07:24 | <freeside> | ...glad to hear it's not just me... |
| 19:08:10 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:e558:b5d6:f082:6f2c) (Remote host closed the connection) |
| 19:08:32 | <freeside> | does AoC generate different input data files for different users? |
| 19:09:06 | <freeside> | surely they must |
| 19:10:44 | → | opticblast joins (~Thunderbi@secure-165.caltech.edu) |
| 19:10:56 | <mauke> | last three digits of my second solution: 041 |
| 19:11:37 | <mauke> | first number in input: 7896 |
| 19:12:54 | <freeside> | yeah, everybody gets a different input file, then, so no cheating |
| 19:12:59 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
| 19:13:07 | × | thyriaen quits (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) (Remote host closed the connection) |
| 19:13:07 | <freeside> | my last 3 digits are 172 |
| 19:14:10 | → | money joins (~money@pool-100-11-18-203.phlapa.fios.verizon.net) |
| 19:14:20 | money | is now known as Guest499 |
| 19:14:32 | × | Guest499 quits (~money@pool-100-11-18-203.phlapa.fios.verizon.net) (Client Quit) |
| 19:15:37 | <freeside> | heh, matt might went OG Unix too. https://github.com/mattmight/advent-of-code-2022/blob/main/day-1/calorie-count.awk |
| 19:17:43 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 19:18:17 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 19:18:17 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 19:18:17 | → | wroathe joins (~wroathe@user/wroathe) |
| 19:20:53 | → | Lycurgus joins (~juan@98.4.112.204) |
| 19:20:53 | × | Lycurgus quits (~juan@98.4.112.204) (Changing host) |
| 19:20:53 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 19:23:17 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 19:24:06 | <freeside> | well, i'm giving up on HLS for tonight, but this is really unsatisfactory. https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-0.0.7.yaml has a section for 9.2.5 right there. |
| 19:24:46 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 19:26:05 | → | money joins (~money@pool-100-11-18-203.phlapa.fios.verizon.net) |
| 19:26:29 | money | is now known as Guest6798 |
| 19:28:17 | → | zant joins (~zant@62.214.20.26) |
| 19:28:43 | × | biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer) |
| 19:31:18 | × | Guest6798 quits (~money@pool-100-11-18-203.phlapa.fios.verizon.net) (Ping timeout: 256 seconds) |
| 19:31:53 | → | biberu joins (~biberu@user/biberu) |
| 19:35:28 | → | Problem-Haver joins (~Problem-H@185.234.165.56) |
| 19:35:28 | × | Vajb quits (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d) (Read error: Connection reset by peer) |
| 19:35:50 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 19:36:11 | → | Vajb joins (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d) |
| 19:37:06 | <geekosaur> | primitive-unlifted sounds like the sort of thing that wouldn't be very portable, tbh |
| 19:37:08 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 19:37:11 | <geekosaur> | probably just have to wait |
| 19:38:50 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:7a6d:77a5:de0b:541) |
| 19:40:18 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 19:40:40 | → | freeside_ joins (~mengwong@103.252.202.193) |
| 19:40:44 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 255 seconds) |
| 19:40:54 | freeside_ | is now known as freeside |
| 19:41:43 | <mauke> | if it were portable, you could probably lift it |
| 19:45:20 | → | eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
| 19:46:55 | × | Problem-Haver quits (~Problem-H@185.234.165.56) (Quit: Client closed) |
| 19:46:56 | → | king_gs joins (~Thunderbi@2806:103e:29:2294:96dc:39a8:1254:6158) |
| 19:48:27 | → | gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
| 19:49:53 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 19:52:53 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 19:53:39 | × | Scraeling quits (~Username@user/scraeling) (Quit: Going offline, see ya! (www.adiirc.com)) |
| 19:55:01 | <geekosaur> | fwiw, the log says RuntimeRep(UnliftedRep) is not in GHC.Exts. and in fact there is no such constructor as of 9.2.5, so primitive-unlifted will need some work for 9.2.5 |
| 19:56:08 | <geekosaur> | freeside ^^ |
| 19:56:53 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 19:57:50 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt https://tinyurl.com/4m8d4kd5) |
| 19:58:09 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 19:58:52 | → | Guest75 joins (~Guest75@178.141.153.191) |
| 20:00:48 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 20:00:48 | → | merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) |
| 20:03:19 | <freeside> | oy vey |
| 20:08:43 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 20:09:39 | × | yuribarros quits (~yuribarro@2804:14c:65e4:865c::1000) (Remote host closed the connection) |
| 20:14:12 | <geekosaur> | looks unmaintained, last commit almost a year ago |
| 20:15:31 | × | EvanR quits (~EvanR@user/evanr) (Remote host closed the connection) |
| 20:15:47 | <ChaiTRex> | Is there some way to log the input and output of a GHCi session to a text file? |
| 20:15:50 | → | EvanR joins (~EvanR@user/evanr) |
| 20:16:43 | <geekosaur> | aside from something generic like script? no |
| 20:17:12 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 256 seconds) |
| 20:18:12 | <ChaiTRex> | OK, thanks. |
| 20:21:37 | <ChaiTRex> | script works nicely. Thanks again. |
| 20:27:12 | → | freeside joins (~mengwong@103.252.202.193) |
| 20:32:29 | × | gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
| 20:32:35 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 20:33:13 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 20:34:10 | × | merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds) |
| 20:34:44 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:7a6d:77a5:de0b:541) (Quit: WeeChat 2.8) |
| 20:35:13 | → | pavonia joins (~user@user/siracusa) |
| 20:36:04 | → | codaraxis joins (~codaraxis@user/codaraxis) |
| 20:36:38 | × | haasn quits (~nand@haasn.dev) (Quit: ZNC 1.7.5+deb4 - https://znc.in) |
| 20:37:07 | → | haasn joins (~nand@haasn.dev) |
| 20:39:37 | cjay- | is now known as cjay |
| 20:41:42 | <monochrom> | I tell my terminal emulator to have like 1000 lines of scrollback, so I would just need copy-paste. |
| 20:42:39 | <monochrom> | Only once in a while insufficient for two runs of LaTeX on a really large file. :) |
| 20:45:08 | → | accord joins (uid568320@id-568320.hampstead.irccloud.com) |
| 20:48:19 | × | eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 20:55:43 | × | mokee quits (~mokee@37.228.215.235) (Quit: off) |
| 20:57:59 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 20:58:34 | × | irrgit_ quits (~irrgit@176.113.74.138) (Ping timeout: 256 seconds) |
| 20:59:15 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds) |
| 20:59:38 | → | merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) |
| 21:04:14 | × | merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
| 21:10:39 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Remote host closed the connection) |
| 21:10:57 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 21:14:59 | × | codaraxis quits (~codaraxis@user/codaraxis) (Ping timeout: 260 seconds) |
| 21:17:58 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 21:18:57 | → | sonny joins (~sonny@bras-base-london142vw-grc-28-76-71-155-9.dsl.bell.ca) |
| 21:19:06 | <sonny> | What are interfaces called in haskell? |
| 21:19:21 | <dsal> | What does "interface" mean to you? |
| 21:20:34 | <geekosaur> | I would very strongly suggest you not try to approach Haskell as an object oriented language |
| 21:21:33 | <sonny> | dsal java interface |
| 21:21:39 | <sonny> | geekosaur I'm just curious |
| 21:21:47 | <dminuoso> | sonny: we dont have a directly corresponding mechanism. |
| 21:21:55 | <mauke> | haskell doesn't have java interfaces |
| 21:21:57 | <dsal> | Languages (programming and human) don't always have concepts that map 1:1 between them. |
| 21:22:01 | <dminuoso> | There's two approaches that fit in that general area, which is typeclasses and just data types. |
| 21:22:13 | <mauke> | and existential dread |
| 21:22:17 | <dminuoso> | Typeclasses allow a bit of subtyping in that respect, but they are not commonly used for interface style programming |
| 21:22:29 | <sonny> | eli5 type classes |
| 21:22:43 | <dsal> | I don't know many five year old programmers. |
| 21:22:47 | <dminuoso> | More commonly you would just define a data type say `data Formatter = Formatter { ... }` and include some functions as fields that specify a kind of interface. |
| 21:22:59 | <dminuoso> | And then functions using that interface would just demand a Formatter as an argument `Formatter -> ...` |
| 21:23:16 | <sonny> | I see |
| 21:23:32 | <dsal> | A better approach is "I'm trying to solve a problem and I'm stuck on this part. How should I approach it in Haskell?" |
| 21:23:45 | <sonny> | so I guess the concept is not as important because you can use functions at every level |
| 21:24:03 | <dsal> | The concept isn't important because we're not transliterating java code. |
| 21:24:05 | <sonny> | dsal I'm not solving anything ... just wondering |
| 21:24:31 | <dminuoso> | sonny: typeclasses superficially look like interfaces, in that you can define it and a list of what we call methods (constituents of that interface), and then you can declare an instance of a type for that typeclass (which corresponds to implementing an interface for a given type) |
| 21:24:53 | <dminuoso> | and each instance must then implement each method of that typeclass |
| 21:25:01 | <sonny> | are they like ML modules? |
| 21:25:04 | <dminuoso> | not at all |
| 21:25:06 | <mauke> | if you wanted to learn about type classes by example, I'd probably recommend this order: Show, Eq/Ord, Read/Enum, Bounded, Functor |
| 21:25:44 | <sonny> | dminuoso no because they don't take parameters or do I misunderstand both concepts? |
| 21:25:50 | <Rembane> | sonny: Typeclasses are more like dictionaries/maps with fancy syntax |
| 21:25:52 | <dminuoso> | sonny: oh hold on, I was a bit too hasty, I misread that as ML functor for some reason. |
| 21:25:59 | <Rembane> | sonny: They do ad hoc polymorphism quite well. |
| 21:26:11 | <sonny> | interesting |
| 21:26:23 | <mauke> | Show is conceptually close to a java interface; the others add more and more "exotic" features |
| 21:26:24 | <dminuoso> | sonny: what do you mean by ML module exactly? |
| 21:26:28 | → | gmg joins (~user@user/gehmehgeh) |
| 21:26:53 | → | codaraxis joins (~codaraxis@user/codaraxis) |
| 21:26:56 | <sonny> | I mean it literally, I assumed you'd all be familiar with ML |
| 21:27:05 | <dsal> | Typeclasses are generally used to express *constraints* on things. "I can take any type as long as it knows how to do X." |
| 21:27:23 | × | codaraxis quits (~codaraxis@user/codaraxis) (Remote host closed the connection) |
| 21:27:36 | <sonny> | it'd be hard for me to explain otherwise |
| 21:27:39 | <dminuoso> | sonny: okay then no, they are very much unlike from each other |
| 21:27:43 | <sonny> | ok |
| 21:28:06 | <sonny> | dsal sounds like dependent types |
| 21:28:16 | <dminuoso> | on a superficial level typeclasses and interfaces look very similar. |
| 21:28:28 | <dsal> | Dependent types are another thing. |
| 21:28:31 | <dsal> | :t show |
| 21:28:32 | <lambdabot> | Show a => a -> String |
| 21:28:37 | <mauke> | class Show a where { show :: a -> String } |
| 21:28:40 | <dminuoso> | sonny: but the thing is, we have subtyping wired into that. |
| 21:28:42 | <mauke> | (simplified) |
| 21:29:00 | <dminuoso> | sonny: so we have a typeclass called Eq, whose methods are == and /=, so its the tyepclass of types that can be compared |
| 21:29:02 | <dsal> | `show` can convert any `a` to a `String` as long as the `a` has a `Show` instance. |
| 21:29:07 | <Rembane> | sonny: If you know ML by heart this paper might be helpful: https://people.csail.mit.edu/dnj/teaching/6898/papers/wadler88.pdf |
| 21:29:20 | <dminuoso> | But we also have `class Eq a => Ord a ...` which requires (but also implies) Eq |
| 21:29:30 | <sonny> | not by heart but that does look good, thanks |
| 21:29:44 | <mauke> | ooh, the classics |
| 21:31:04 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 268 seconds) |
| 21:31:12 | <mauke> | what's the type of (=) in ocaml nowadays? still 'a -> 'a -> bool? |
| 21:32:15 | <dminuoso> | If memory serves right, typeclasses were originally introduced as a way to deal with overloading numbers |
| 21:32:48 | <dsal> | It makes sense that `Num` would be old because it feels like a lot of learning can come from that. |
| 21:32:53 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 21:34:41 | <dminuoso> | Its also curious that Num happens to be one of the things where GHC does not conform to Haskell2010. |
| 21:34:55 | <dminuoso> | Because Haskel2010 mandates class (Eq a, Show a) => Num a |
| 21:35:27 | <Rembane> | dminuoso: Is Num a superclass to Floating? |
| 21:35:58 | <dminuoso> | Yes, via Fractional |
| 21:36:43 | <Rembane> | Cool, then I can't see how Eq could be needed for Num. |
| 21:36:59 | <mauke> | the problem with (Eq a, Show a) => Num a is that it interferes with making every monad an instance of Num |
| 21:37:29 | <geekosaur> | Rembane, mostly so Num literals can be treated as patterns |
| 21:37:44 | <Rembane> | geekosaur: That's a very good reason. |
| 21:38:30 | <mauke> | you can still treat them as patterns (just add an Eq constraint while type checking), no? |
| 21:38:50 | <geekosaur> | yep, but it no longer "just works", you need the constraint |
| 21:38:58 | → | money joins (~money@pool-100-11-18-203.phlapa.fios.verizon.net) |
| 21:39:22 | money | is now known as Guest5066 |
| 21:39:38 | <mauke> | I mean, you'd desugar 'foo 42' to 'foo x | x == 42' and any relevant constraints fall out automatically |
| 21:39:53 | × | Guest5066 quits (~money@pool-100-11-18-203.phlapa.fios.verizon.net) (Client Quit) |
| 21:39:57 | <mauke> | if you can add (Num a), you can add (Eq a) |
| 21:40:39 | → | gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
| 21:42:01 | × | king_gs quits (~Thunderbi@2806:103e:29:2294:96dc:39a8:1254:6158) (Ping timeout: 256 seconds) |
| 21:44:09 | → | jumper149 joins (~jumper149@base.felixspringer.xyz) |
| 21:44:45 | → | freeside joins (~mengwong@103.252.202.193) |
| 21:44:46 | × | jumper149 quits (~jumper149@base.felixspringer.xyz) (Client Quit) |
| 21:45:33 | → | jumper149 joins (~jumper149@base.felixspringer.xyz) |
| 21:46:09 | × | jumper149 quits (~jumper149@base.felixspringer.xyz) (Client Quit) |
| 21:46:13 | → | rustisafungus joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) |
| 21:46:58 | <rustisafungus> | so this is more of a computational math question so feel free to tell me to take a hike, but i think this has enough of a computer science/research flavor that i thought #haskell was a good place to ask: |
| 21:47:06 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 21:47:41 | <rustisafungus> | let's say that i am trying to generate samples from a high dimensional distribution, such as a 1 million dimensional distribution |
| 21:48:16 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 21:48:19 | <rustisafungus> | of course, i can generate samples where each dimension is reasonably statistically independent using a prng |
| 21:48:25 | <dminuoso> | mauke: the real problem is that there's some things like infinite sequences you couldnt have a Num instance of |
| 21:48:48 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:e558:b5d6:f082:6f2c) |
| 21:48:54 | <rustisafungus> | my question is this: i would like to generate a "bunch" of other distributions |
| 21:49:30 | <rustisafungus> | that "bunch" need not be a rigorous construct but ought to emphasize varying levels and types of correlations or relationships between my one million dimensions |
| 21:51:39 | <rustisafungus> | so my question is, is there a nice way of generating a "bunch" of distributions? the precise dimension need not be 1 million, it could also be one thousand or somesuch, but it does need to be a fairly substantial number (probably at least 100) |
| 21:51:57 | <rustisafungus> | vaguely speaking this would be like quickcheck for distributions |
| 21:51:59 | × | sonny quits (~sonny@bras-base-london142vw-grc-28-76-71-155-9.dsl.bell.ca) (Quit: Client closed) |
| 21:53:02 | <darkling> | Work out what kind of variations you want to do, and then ring the changes. So, for example, are they linear in each dimension, or do some dimensions have other statistical distributions? |
| 21:53:17 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:e558:b5d6:f082:6f2c) (Ping timeout: 252 seconds) |
| 21:53:29 | <darkling> | (Say, triangular, bitriangular, binomial, beta distribution...) |
| 21:53:30 | <rustisafungus> | linear would be fairly easy, i could pick a random ellipse or something and sample from that |
| 21:53:45 | <rustisafungus> | but i am thinking "lots of varying and complex relationships" |
| 21:54:03 | <darkling> | Then you can say each dimension has the distribution selected randomly (with some weighting). |
| 21:54:08 | <dminuoso> | geekosaur: I think its not a big downside. It becomes very hard to come up with a way where the lack of Eq will hinder you. |
| 21:54:20 | <dminuoso> | Since you can just add Eq anyway |
| 21:54:28 | <rustisafungus> | as i think about this, i am thinking that perhaps some kind of random graph might be the way to go? |
| 21:54:55 | <rustisafungus> | because i might want there to sometimes be independent dimensions, then some might have correlations between pairs, some triplets, and so on, and some a complex tangling of things |
| 21:54:57 | <darkling> | Similarly, do you want variables correlated pairwise? More variables correlated? Pick the number of correlations and the correlated variables randomly... |
| 21:55:23 | <darkling> | Then pick you rmodel for the correlation: is it exact? exact with errors? |
| 21:55:47 | <rustisafungus> | you make a good point to allow for exact relationships but |
| 21:55:49 | <geekosaur> | dminuoso, I didn't claim it was a big downside, and in fact ghc havoing removed it with little in the way of subsequent update demonstrates it |
| 21:55:51 | <geekosaur> | snot |
| 21:55:58 | <rustisafungus> | mostly i mean noisy relationships |
| 21:56:11 | <darkling> | Basically, first decide what kind of features you want to see, then work out how to generate things with those features. |
| 21:56:22 | × | gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 21:56:23 | <geekosaur> | *it's not |
| 21:56:35 | <dminuoso> | geekosaur: Absolutely. Im just contemplating about the consequences. |
| 21:56:52 | <geekosaur> | s/update/upset/ |
| 21:57:04 | <geekosaur> | hm, I kinda didn't get that out right 🙂 |
| 21:57:12 | <dminuoso> | The only way this will ever hurt you, is if you are being given a Num as an existential as part of an interface. |
| 21:57:45 | <dminuoso> | Some kind of `f :: (exists e. Num e *> e -> a) -> a` |
| 21:58:02 | → | sonny joins (~sonny@bras-base-london142vw-grc-28-76-71-155-9.dsl.bell.ca) |
| 21:58:15 | <dminuoso> | And you would then have to use this with the intent of using Show or Eq. |
| 21:58:17 | <geekosaur> | someone (Bird?) complained about having to revise a Haskell book on short notice, I think |
| 21:58:35 | <dminuoso> | Oh heh. There's that side of things :) |
| 21:58:49 | <rustisafungus> | darkling: but,... is there a name for what i select and then how i generate the sample? |
| 21:59:33 | <darkling> | Not that I've ever met. When I've needed to do it, I just do it. :) |
| 21:59:44 | <rustisafungus> | darkling: oh, so you've done this before? |
| 22:00:07 | <darkling> | A few times. |
| 22:00:42 | <rustisafungus> | one thing i am puzzled by is that if i have a high dimensional distribution which i specify it might become difficult to sample from |
| 22:00:48 | → | merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) |
| 22:00:59 | <rustisafungus> | so maybe it's better to create a tree and specify some variables which "cause" others...? |
| 22:01:27 | <rustisafungus> | so say, 100 out of the million variables are truly independent, and then i mix and match those plus random noise to make the other variables |
| 22:01:56 | <darkling> | Yeah, there's plenty of approaches you can take. It depends on what you want the data you generate to look like. |
| 22:02:03 | <rustisafungus> | is there a name for this process? |
| 22:02:35 | <darkling> | Like I said, I've not met a name for it. It's not entirely my core skill-set. |
| 22:02:54 | <rustisafungus> | ok |
| 22:04:12 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 22:05:11 | <darkling> | I don't think there's a good way of just saying "make me an interesting and varied data set". You have to have a good idea of what properties you want it to have. |
| 22:07:37 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 22:08:48 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 22:09:26 | <monochrom> | "Be the first one to rate it and give it a high-brow name!" |
| 22:09:33 | <rustisafungus> | haha |
| 22:13:44 | <jackdk> | "synthetic data"? |
| 22:14:32 | <rustisafungus> | jackdk: talking to me? |
| 22:15:06 | <jackdk> | nah, darkling . I think I've heard that term bandied about, but very far outside my skillset too |
| 22:15:24 | <monochrom> | But after you strip "I need a sample of a 100-dimension internally-dependent distribution" of the "it's oh so higher-dimensional and oh so internally-dependent" façade, it's just "I need 100 random numbers" and simply known as "probabilistic programming" or even more traditionally "randomized algorithms". |
| 22:15:45 | <rustisafungus> | right, so what i need is something like a "random probabilistic program" |
| 22:16:08 | <rustisafungus> | but it need not be "uniform" in any theoretical sense, just jumbled and varied |
| 22:16:18 | <monochrom> | Consult game programmers. They do that all the time. |
| 22:17:05 | <rustisafungus> | oh, ok,... and... ? what do they do? |
| 22:17:09 | → | ezzieyguywuf joins (~Unknown@user/ezzieyguywuf) |
| 22:17:16 | ← | sonny parts (~sonny@bras-base-london142vw-grc-28-76-71-155-9.dsl.bell.ca) () |
| 22:17:38 | <monochrom> | Use PRNG to control NPC actions? |
| 22:17:53 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 22:18:11 | <rustisafungus> | right but what i am asking for is more like that the NPCs need to have "random" interactions |
| 22:18:22 | <rustisafungus> | some are part of groups, others are independent, and soforth |
| 22:18:29 | <monochrom> | And the n+1st random number can depend on the previous n random numbers? |
| 22:18:39 | <rustisafungus> | that's one way to do it |
| 22:18:44 | <geekosaur> | that's gonna be less random numbers than a good range of interactions and how to suit them to player responses |
| 22:19:13 | <geekosaur> | which is more of an AI question than a random numbers question |
| 22:19:36 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 22:19:37 | <rustisafungus> | i beg to differ, i consider it a "really practical statistics and computing" question |
| 22:20:07 | <rustisafungus> | for example someone might have written xgboost and wants to make "random" relationships between variables to test that xgboost can identify them with reasonable accuracy |
| 22:20:13 | <geekosaur> | what you consider it and what a player faced with your result consider it are likely to differ |
| 22:20:49 | → | yuribarros joins (~yuribarro@2804:14c:65e4:865c::1000) |
| 22:21:26 | <monochrom> | Sure, for an NPC the n+1st random number depends on both the previous n random numbers and a large chunk of the rest of the current game state. Which strengthens my point because it proves that game programmers have already done something even more general and theoretically "harder". |
| 22:21:34 | <darkling> | I guess the procedural generation people probably have some ideas, but without knowing what you're actually intending to do with this output, it's very hard to go any further than "work out what properties you want the output to have", followed by "write something that has those properties" |
| 22:21:52 | <monochrom> | So now if you say you only depend on the previous n random numbers and nothing else, it's comparatively trivia. |
| 22:21:54 | <rustisafungus> | darkling: testing an xgboost implementation would be a great example of what i am doing |
| 22:21:57 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 22:22:08 | <rustisafungus> | but that the data must be novel rather than part of an existing dataset |
| 22:22:22 | <monochrom> | It's why I made a stab at "be the first to give it a high-brow name". |
| 22:22:32 | <darkling> | I don't know what xgboost is. |
| 22:22:41 | <darkling> | (And it doesn't really matter that I don't) |
| 22:23:08 | <rustisafungus> | darkling: xgboost is the answer to 80% of prediction problems where a simple linear model is not enough |
| 22:23:26 | <rustisafungus> | it's actually really useful to know about :-) |
| 22:23:44 | <rustisafungus> | for example only recently did uber move away from xgboost for their ML modeling systems |
| 22:23:53 | <rustisafungus> | for important things like predicting arrival times etc |
| 22:24:24 | <ksu> | rustisafungus: whatever you do you are going to barely scratch the problem space, unless it is very symmetric |
| 22:25:17 | <ksu> | and to know what you should do if it is very symmetric you need to analyze its symmetries |
| 22:26:38 | → | fockerize joins (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 22:27:35 | <darkling> | You need to get into specifics at this point rather than just talking about generalised multidimensional distributions. |
| 22:29:22 | <darkling> | Maybe once you've generated a few specific distributions modelling some behaviour you've seen (or, ab initio, have thought up), you can start thinking about the commonalities that you used to generate them. That might lead you to a framework or DSL to specify them to make it easier to generate things in the general case, but start with something conrete. |
| 22:30:53 | × | rustisafungus quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds) |
| 22:31:15 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 22:32:05 | <darkling> | Anyway, it's at least half-past bedtime. G'night. |
| 22:34:08 | × | merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds) |
| 22:39:01 | → | mvk joins (~mvk@2607:fea8:5ce3:8500::efb) |
| 22:39:12 | → | rustisafungus joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) |
| 22:40:36 | <rustisafungus> | ksu: care to elaborate? |
| 22:40:54 | × | abrar quits (~abrar@static-108-2-152-54.phlapa.fios.verizon.net) (Quit: WeeChat 3.5) |
| 22:40:56 | × | mvk quits (~mvk@2607:fea8:5ce3:8500::efb) (Client Quit) |
| 22:41:25 | <rustisafungus> | i was thinking about generating "random" sat instances as a method of specifying a high dimensional distribution |
| 22:41:40 | <rustisafungus> | over binary variables in that case |
| 22:41:47 | → | abrar joins (~abrar@static-108-2-152-54.phlapa.fios.verizon.net) |
| 22:41:56 | <rustisafungus> | i'm not quite sure how to sample from that however |
| 22:48:46 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 268 seconds) |
| 22:50:04 | × | pwug quits (~pwug@user/pwug) (Quit: Leaving) |
| 22:51:48 | <rustisafungus> | so one question is, can i (at least some of the time) map a satisfiability problem onto a fairly efficient map from coin flip outcomes to a specific valid assignment (without rejetion sampling, mcmc etc) |
| 22:55:22 | <monochrom> | What if the satisfiability problem instance is unsatisfiable? |
| 22:55:38 | <rustisafungus> | then you cant sample from it |
| 22:56:02 | <rustisafungus> | invalid distribution because no assignment is satisfactory |
| 22:57:27 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 22:57:35 | → | freeside joins (~mengwong@103.252.202.193) |
| 22:58:58 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 23:02:20 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds) |
| 23:03:09 | × | fockerize quits (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 260 seconds) |
| 23:04:52 | <rustisafungus> | hmm, page 13 here if anyone is curious https://simons.berkeley.edu/sites/default/files/docs/4393/moshevardi.pdf |
| 23:05:20 | <rustisafungus> | this actually ought to overlap a lot with quickcheck |
| 23:06:31 | <rustisafungus> | https://github.com/meelgroup/unigen |
| 23:06:49 | → | king_gs joins (~Thunderbi@187.201.204.122) |
| 23:07:18 | → | neightchan joins (~nate@98.45.169.16) |
| 23:07:49 | × | natechan quits (~nate@98.45.169.16) (Ping timeout: 260 seconds) |
| 23:11:11 | → | gqplox joins (~textual@2a02:c7c:941d:fd00:88ea:12e4:aa87:535d) |
| 23:11:44 | <gqplox> | hi guys |
| 23:11:53 | <rustisafungus> | hi gqplox |
| 23:11:58 | <shapr> | howdy |
| 23:12:07 | × | acidjnk_new quits (~acidjnk@p200300d6e7137a26a0c5c39a40faf46b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 23:12:13 | <gqplox> | i did my first advent of code today |
| 23:12:30 | <shapr> | nice |
| 23:12:32 | <rustisafungus> | in C++? |
| 23:12:42 | <gqplox> | haha |
| 23:12:44 | <gqplox> | haskell :) |
| 23:12:50 | <rustisafungus> | oh |
| 23:12:50 | <gqplox> | http://sprunge.us/AM56z3 |
| 23:12:58 | × | Guest75 quits (~Guest75@178.141.153.191) (Quit: Client closed) |
| 23:13:00 | <gqplox> | please let me know improvements i could make |
| 23:13:42 | <gqplox> | I think the groups there is a better way of doing it because filter is kind of a hack |
| 23:14:23 | <gqplox> | also I think there must be a better way to write the groupBy without using the lambda right? |
| 23:16:33 | → | freeside joins (~mengwong@103.252.202.193) |
| 23:17:16 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 23:21:22 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 256 seconds) |
| 23:21:36 | <EvanR> | what's the policy on AoC help on the same day the question is still happening |
| 23:21:45 | <EvanR> | spoiler channel? |
| 23:23:47 | <gqplox> | oh sorry! |
| 23:26:25 | × | king_gs quits (~Thunderbi@187.201.204.122) (Read error: Connection reset by peer) |
| 23:26:34 | → | king_gs1 joins (~Thunderbi@2806:103e:29:94a4:81e0:429b:22ec:cf13) |
| 23:26:46 | <geekosaur> | people have been helping out all day so I think it's a bit late for that |
| 23:27:35 | → | freeside joins (~mengwong@103.252.202.193) |
| 23:28:06 | <geekosaur> | usually after they've already solved it in whatever way, looking for improvements as here |
| 23:28:07 | <yushyin> | at least mark the link as a day01 spoiler next time? |
| 23:28:51 | king_gs1 | is now known as king_gs |
| 23:29:39 | <sm> | we usually had a separate channel for advent solutions ? |
| 23:30:27 | <dsal> | #adventofcode-spoilers is a #haskell2 |
| 23:30:51 | → | merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) |
| 23:30:55 | <gqplox> | yyep sorry, I'll take care for next time |
| 23:31:59 | × | sammelweis quits (~quassel@c-68-48-18-140.hsd1.mi.comcast.net) (Ping timeout: 264 seconds) |
| 23:32:08 | <dsal> | I made a foldable monoidal type that could hold N items and just used a different type for part 1 and part 2 and used sum to go `Top n Int -> Int` |
| 23:32:27 | <monochrom> | IMO no worries in this case because just a few lines before the link it's already said this is someone's AoC solution. |
| 23:32:33 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 268 seconds) |
| 23:32:36 | × | zant quits (~zant@62.214.20.26) (Ping timeout: 248 seconds) |
| 23:32:54 | <dsal> | Theoretically, my parser does all the folding, but in practice, I'm using megaparsec which collects everything into a list before I can fold it. |
| 23:33:01 | <monochrom> | Instead, more people should learn: 1. Read the context; 2. Don't just click links. |
| 23:33:20 | <dsal> | I need to make variations of `sepBy` et. al. that let me bring my own monoid. |
| 23:34:00 | → | Guest75 joins (~Guest75@178.141.153.191) |
| 23:35:25 | <dsal> | My solution is way better than the above though because instead of `solve 1` I get to type `solve @1` with a ton of extensions. |
| 23:35:32 | × | merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
| 23:36:59 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 23:39:29 | <gqplox> | so is there a cleaner way to write the lambda where I used the groupBy? |
| 23:39:36 | <gqplox> | I think there must be right? |
| 23:41:13 | <jackdk> | `const (/= "")`? |
| 23:41:20 | <dsal> | @pl \_ x -> x /= "" |
| 23:41:20 | <lambdabot> | const ([] /=) |
| 23:41:25 | <monochrom> | heh |
| 23:41:37 | × | opticblast quits (~Thunderbi@secure-165.caltech.edu) (Remote host closed the connection) |
| 23:42:46 | <dsal> | maybe `const (not . null)` |
| 23:42:54 | × | xff0x quits (~xff0x@ai071162.d.east.v6connect.net) (Ping timeout: 256 seconds) |
| 23:44:09 | → | zant joins (~zant@62.214.20.26) |
| 23:44:27 | <gqplox> | ah cool thank you |
| 23:44:42 | <gqplox> | do you have any general feedback? |
| 23:45:19 | × | oldsk00l quits (~znc@ec2-18-185-101-38.eu-central-1.compute.amazonaws.com) (Remote host closed the connection) |
| 23:45:30 | <gqplox> | @pl parse s = map (map read) (groups $ lines s) |
| 23:45:30 | <lambdabot> | parse = map (map read) . groups . lines |
| 23:46:29 | <dsal> | I was about to type something like that. Not sure it's *better*, but I'd probably have written that `parse = (fmap . fmap) read . groups . lines` |
| 23:48:06 | <gqplox> | nice, thank you |
| 23:48:24 | <dsal> | And `groups = fmap (filter (not . null)) . groupBy (const (not . null))` |
| 23:49:20 | <dsal> | that's slightly better to me, but that doesn't mean it's better in general. |
| 23:49:41 | <dsal> | I don't like unnecessary names (like `xs`) and I do like reading something like this as a pipeline from right to left. |
| 23:50:49 | → | ub joins (~Thunderbi@p200300ecdf264efbff642f477e75bc86.dip0.t-ipconnect.de) |
| 23:51:14 | × | ubert quits (~Thunderbi@p200300ecdf264e704707c189dcb0868f.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 23:51:14 | ub | is now known as ubert |
| 23:51:19 | <dsal> | Similarly, I'd just say `parsed <- parse <$> readFile "01_input.txt"` so I'd have one fewer name / line of code that aren't essential. |
| 23:51:31 | <dsal> | Basically, I don't like code, so I try to get rid of it where I can. |
| 23:51:48 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 23:52:24 | <gqplox> | hahah fair point |
| 23:52:41 | <gqplox> | i did initially have not . null but i changed it back |
| 23:52:49 | <gqplox> | ah I don't know the <$> ill look that up |
| 23:52:52 | <dsal> | Yeah, I'd go either way on that. |
| 23:53:09 | <dsal> | <$> is fmap. You can't write any haskell code without. |
| 23:53:14 | <monochrom> | I like code, but I don't like names. Similar conclusion though. |
| 23:54:49 | <monochrom> | \_ (*) -> (*) /= "" |
| 23:55:16 | <dsal> | One thing I did in mine was just not keep that inner `[Int]` -- you don't ever need it. My parser sums it while reading. |
| 23:55:18 | <ChaiTRex> | In GHCi, `it` refers to the result of the last line. Is there a way to get the result of other previous lines? |
| 23:55:25 | <monochrom> | No. |
| 23:56:22 | <dsal> | The rule of thumb in GHCI is that if you want to do something that's not obvious, you probably shouldn't be in ghci. :) |
| 23:56:48 | <monochrom> | I have a better rule. Or worse? I have a tautology... >:) |
| 23:57:12 | <monochrom> | If you want to do something that ghci doesn't do, you shouldn't be in ghci >:) |
| 23:57:26 | → | freeside joins (~mengwong@103.252.202.193) |
| 23:57:58 | <monochrom> | A good rule though is: just don't expect ghci to be feature-rich. |
| 23:58:37 | <hpc> | another general rule, find the things your tools are good at, and try to only do those things |
| 23:58:42 | <monochrom> | We barely succeeded to convince the authors to add line editing. |
| 23:59:07 | <hpc> | for ghci, imo that's mainly just :r |
| 23:59:12 | <gqplox> | thank you guys for the help |
| 23:59:27 | <gqplox> | heading off now, bye |
| 23:59:31 | <monochrom> | Ugh that sounds dangerously close to "if you have a hammer, think of everything as only nails" |
| 23:59:45 | <hpc> | more like if you have a hammer, don't buy screws |
| 23:59:53 | <monochrom> | haha |
All times are in UTC on 2022-12-01.