Home liberachat/#haskell: Logs Calendar

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.