2020/12/06

2020-12-06 00:00:10 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 246 seconds)
2020-12-06 00:00:46 +0100kipras(~Kipras@78-56-235-39.static.zebra.lt)
2020-12-06 00:01:15 +0100jedws(~jedws@121.209.181.215)
2020-12-06 00:01:24 +0100 <dminuoso> cads: The major issue either way is introducing a new keyword, something that will be met with much opposition.
2020-12-06 00:02:08 +0100softwarm(4408f588@ip68-8-245-136.sd.sd.cox.net)
2020-12-06 00:03:56 +0100 <cads> do you know whether template haskell can let us build something like this, without rewriting the core syntax?
2020-12-06 00:04:59 +0100son0p(~son0p@181.136.122.143) (Remote host closed the connection)
2020-12-06 00:06:31 +0100 <arahael> dminuoso: syntax in a proposal is automatically accepted? What if the syntax is utterly wacky? :D
2020-12-06 00:07:18 +0100LKoen(~LKoen@73.174.9.109.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
2020-12-06 00:07:49 +0100 <cads> I think dminuoso meant that the committe will automatically apply its totally subjective and techical debt derived preferences to it, is what will automatically happen
2020-12-06 00:09:52 +0100 <cads> but I'm not really bothered by that, since I would be amazed if I'm even still touching haskell in 3 months, let alone if I have authored a standards compliant language proposal.
2020-12-06 00:10:47 +0100 <cads> What you're seeing now is me desperately trying to make haskell into a language I can look at on a daily basis without wanting physically to leave this planet
2020-12-06 00:16:22 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-06 00:17:20 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-12-06 00:18:07 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
2020-12-06 00:18:55 +0100dustypacer(~pi@2600:6c50:80:2f4a:e9d0:6569:1cea:d1d4) (Remote host closed the connection)
2020-12-06 00:19:25 +0100dustypacer(~pi@2600:6c50:80:2f4a:e9d0:6569:1cea:d1d4)
2020-12-06 00:19:41 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-06 00:20:11 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: fuzzypixelz)
2020-12-06 00:20:45 +0100 <dminuoso> cads: No, TH does not.
2020-12-06 00:21:01 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
2020-12-06 00:21:05 +0100 <dminuoso> It lets you add top level declaration, you cant modify the module declaration itself.
2020-12-06 00:21:43 +0100 <dminuoso> In my eyes, the relatively verbose import lists are a nuissance at best.
2020-12-06 00:23:18 +0100conal(~conal@64.71.133.70)
2020-12-06 00:23:28 +0100 <dolio> The * thing seems like it's going to be confusing, too.
2020-12-06 00:23:37 +0100 <cads> yeah I hate the * thing
2020-12-06 00:24:23 +0100 <cads> alternative is to force a separate line for the module itself, which I'm honestly fine with being that it's an intermediary step that I'd have to implement anyways
2020-12-06 00:25:07 +0100 <cads> I really just want to relieve my poor eyes from that god awful import import import Data. Data. Data.
2020-12-06 00:25:24 +0100falafel(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net)
2020-12-06 00:25:24 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2020-12-06 00:25:36 +0100 <cads> some folks skim past that kind of line noise, but for me it causes me to become blind to the content of that code
2020-12-06 00:25:47 +0100knupfer(~Thunderbi@200116b82c2c6000b8f3e6f0b0d04c82.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2020-12-06 00:26:04 +0100 <dminuoso> Luckily the import statements are at the top.
2020-12-06 00:26:14 +0100 <dminuoso> So they are separate from the actual code that we tend to care about.
2020-12-06 00:27:37 +0100 <cads> still doesn't help. If I'm auditing 10 files, that's 10 mangled imports I have to parse with my poor dyslexic brain and I've just reached a point where I'd rather just change the compiler
2020-12-06 00:28:06 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-06 00:28:27 +0100 <texasmynsted> cads are you still fighting the imports?
2020-12-06 00:28:28 +0100 <sm[m]> cads: in a little while this feeling will weaken :)
2020-12-06 00:28:40 +0100 <sm[m]> just hang in there
2020-12-06 00:29:04 +0100 <cads> sm[m], nah, it won't go away, I'll just make a patch and run it in my org, because I am the boss.
2020-12-06 00:29:26 +0100 <texasmynsted> just put all the imports at the top and set a marker at the end of them. Then rather than start at the top, start at the marker.
2020-12-06 00:29:31 +0100 <cads> and if you wanna help you can, but I invite you to stop discouraging me ;)
2020-12-06 00:30:01 +0100 <texasmynsted> cads, I would appreciate it if you would write an import consolidator.
2020-12-06 00:30:15 +0100 <texasmynsted> or something that would automatically split code out into modules
2020-12-06 00:30:37 +0100 <texasmynsted> That would be really helpful. I would use it straight away.
2020-12-06 00:30:48 +0100gienah(~mwright@gentoo/developer/gienah)
2020-12-06 00:31:00 +0100 <sm[m]> I'm encouraging you. By all means continue, I support your making things better. cads++
2020-12-06 00:31:08 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-06 00:32:09 +0100texasmynstedreading scrollback
2020-12-06 00:32:31 +0100Tops21(~Tobias@dyndsl-091-249-083-001.ewe-ip-backbone.de)
2020-12-06 00:32:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-12-06 00:32:57 +0100 <dminuoso> cads: I dont care either way, really. Assuming you proposed it, it got accepted, and somebody implemented it, I likely wouldn't turn it on anyway.
2020-12-06 00:33:02 +0100 <dminuoso> Nothing forces me to. :)
2020-12-06 00:33:20 +0100 <boxscape> cads are you envisioning writing a preprocessor, ghc plugin, or to work ghc?
2020-12-06 00:33:23 +0100 <boxscape> s/work/fork
2020-12-06 00:33:44 +0100 <texasmynsted> please update fourmolu to parse it also
2020-12-06 00:34:10 +0100conal(~conal@64.71.133.70)
2020-12-06 00:34:16 +0100 <texasmynsted> because if fourmolu will not parse it, I will not use it.
2020-12-06 00:35:04 +0100 <texasmynsted> need to go but cads I am curious what languages you normally use.
2020-12-06 00:35:08 +0100 <cads> the cheapest, hackiest implementation I can learn about - preprocessor is probably able to let me do it with 2 regexes buuuuut. That's too cheap I think. I think I need to work with the lexer and parser, so maybe a plugin is the cheapest (lowest cost of ownership) option
2020-12-06 00:35:31 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 246 seconds)
2020-12-06 00:35:31 +0100Tops2(~Tobias@dyndsl-091-249-083-001.ewe-ip-backbone.de) (Ping timeout: 246 seconds)
2020-12-06 00:35:39 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
2020-12-06 00:36:04 +0100 <boxscape> cads looking at https://hackage.haskell.org/package/ghc-8.10.1/docs/Plugins.html#g:7 it looks like the earliest point that plugins can change something is *after* the parser is run, but I haven't tried writing one so that might be wrong
2020-12-06 00:36:13 +0100 <dminuoso> I found that grouping by inserting newlines between groups and having emacs execute a specially configured stylish-haskell to only sort import groups makes most of import list stuff quite bearable.
2020-12-06 00:36:14 +0100 <cads> texasmynsted, I normally model stuff in pure category theory and then tell folks what to implement, but in the last year I've been building a cad geometry processing system in python, and running my company on it
2020-12-06 00:36:31 +0100 <texasmynsted> nice
2020-12-06 00:36:36 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2020-12-06 00:37:00 +0100 <texasmynsted> I hope you are here later so I can find more about this. Talk with you later.
2020-12-06 00:37:30 +0100 <cads> boxscape, thanks, that kind of intelligence is hard for me to gather since there's so much to learn
2020-12-06 00:38:06 +0100wwwww(~wwwww@unaffiliated/wwwww) (Ping timeout: 272 seconds)
2020-12-06 00:38:14 +0100 <cads> you know, for code that I can personally babysit, a preprocessor regex is not THAT hard
2020-12-06 00:39:49 +0100hpc(~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 264 seconds)
2020-12-06 00:39:57 +0100wwwww(~wwwww@unaffiliated/wwwww)
2020-12-06 00:40:03 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2020-12-06 00:41:06 +0100drincruz_(~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 256 seconds)
2020-12-06 00:41:25 +0100 <cads> basically I want a lexer that rejects anything but my special import statement language. That queues up some importdecl tokens, and I re-emit those as well formed standard import statements.
2020-12-06 00:41:43 +0100 <dminuoso> cads: You can define a custom preprocessor in GHC
2020-12-06 00:41:50 +0100Varis(~Tadas@unaffiliated/varis)
2020-12-06 00:41:53 +0100 <cads> lol
2020-12-06 00:42:10 +0100 <cads> these kinds of tips save me literally hours, I thank you
2020-12-06 00:42:16 +0100 <dminuoso> See -F and -optF in the GHC manual respectively
2020-12-06 00:42:43 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-12-06 00:43:22 +0100 <cads> I don't think I even have to write it as a lexer -> parser -> transformer. I could /probably/ write it all as a single sed command if I was being sadistic
2020-12-06 00:44:26 +0100 <cads> I will look at some sample preprocessors instead, because I'm gonna regret it down the line (such as when I share the code for collaborator assistance) if I use regex
2020-12-06 00:45:22 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2020-12-06 00:45:56 +0100 <cads> https://github.com/ghc-proposals/ghc-proposals/blob/3dfec03b11e8829d7febbb7290c3183f752466d7/propo…
2020-12-06 00:46:12 +0100 <cads> This looks like a great reference proposal
2020-12-06 00:46:12 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-12-06 00:46:25 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-12-06 00:46:56 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Read error: Connection reset by peer)
2020-12-06 00:47:21 +0100 <cads> discusses the kind of considerations that the community considers, is very clear and short, and it was accepted
2020-12-06 00:48:09 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607)
2020-12-06 00:48:10 +0100haasn(~nand@mpv/developer/haasn) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
2020-12-06 00:48:35 +0100haasn(~nand@mpv/developer/haasn)
2020-12-06 00:49:47 +0100 <cads> I am thinking that I will follow this report format for my internal process, even if the goal is to create a private artefact that only my org will use
2020-12-06 00:50:23 +0100hexfive(~hexfive@50-47-142-195.evrt.wa.frontiernet.net)
2020-12-06 00:52:27 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-06 00:52:42 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607) (Ping timeout: 244 seconds)
2020-12-06 00:53:42 +0100conal(~conal@64.71.133.70)
2020-12-06 00:54:32 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: fuzzypixelz)
2020-12-06 00:54:49 +0100softwarm(4408f588@ip68-8-245-136.sd.sd.cox.net) (Remote host closed the connection)
2020-12-06 00:55:09 +0100softwarm(4408f588@ip68-8-245-136.sd.sd.cox.net)
2020-12-06 00:55:32 +0100 <cads> dolio, in context of qualified imports, and foreign and unsafe imports (which I don't even want to know the grammar for)... suddenly I sense why you might feel reluctant to load that syntax even more heavily
2020-12-06 00:55:59 +0100 <monochrom> Nice, cabal-install can hint me when I have a typo in a package name.
2020-12-06 00:56:22 +0100 <monochrom> I entered "cabal install --lib quickcheck" and it reminds me "do you mean QuickCheck"
2020-12-06 00:56:42 +0100 <monochrom> Perhaps next version if I enter "cabal install emacs" it will also ask me "do you mean vi"
2020-12-06 00:57:06 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com) (Quit: ZNC 1.8.2 - https://znc.in)
2020-12-06 00:57:22 +0100 <monochrom> You know what, I should put that as a wished feature for the next April 1st version of cabal-install :)
2020-12-06 00:57:39 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-12-06 00:58:55 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com)
2020-12-06 01:00:03 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-06 01:00:52 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Remote host closed the connection)
2020-12-06 01:00:55 +0100fendor_(~fendor@77.119.129.145.wireless.dyn.drei.com) (Remote host closed the connection)
2020-12-06 01:01:32 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-12-06 01:03:45 +0100halbGefressen(~halbGefre@2a02:810d:f40:2a9c:a4fe:2adc:248b:466f)
2020-12-06 01:04:15 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it) (Ping timeout: 260 seconds)
2020-12-06 01:04:42 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 272 seconds)
2020-12-06 01:05:11 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-12-06 01:08:37 +0100infinity0(~infinity0@freenet/developer/infinity0) (Ping timeout: 264 seconds)
2020-12-06 01:09:31 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:a9cd:d01b:63a8:de53:5983)
2020-12-06 01:09:52 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:a9cd:d01b:63a8:de53:5983) (Client Quit)
2020-12-06 01:10:02 +0100boxscape(54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) (Quit: Connection closed)
2020-12-06 01:10:24 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-12-06 01:11:18 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2020-12-06 01:13:50 +0100halbGefressen(~halbGefre@2a02:810d:f40:2a9c:a4fe:2adc:248b:466f) (Quit: halbGefressen)
2020-12-06 01:14:53 +0100Jeanne-Kamikaze(~Jeanne-Ka@66.115.189.235)
2020-12-06 01:16:39 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:69cb:4c40:655a:5f75) (Remote host closed the connection)
2020-12-06 01:19:04 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:69cb:4c40:655a:5f75)
2020-12-06 01:20:35 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 246 seconds)
2020-12-06 01:21:32 +0100Vulfe_(~vulfe@2600:1702:31b0:34e0:6dd4:a10a:cd57:9d07)
2020-12-06 01:22:53 +0100 <cads> monochrom, I hate to say that I have recently declared for VI in that conflict
2020-12-06 01:23:24 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:69cb:4c40:655a:5f75) (Ping timeout: 240 seconds)
2020-12-06 01:24:38 +0100 <cads> I don't understand why the ghc proposal process doesn't require an implementation along with the proposal https://github.com/ghc-proposals/ghc-proposals#how-to-start-a-new-proposal
2020-12-06 01:25:46 +0100Vulfe_(~vulfe@2600:1702:31b0:34e0:6dd4:a10a:cd57:9d07) (Ping timeout: 244 seconds)
2020-12-06 01:25:53 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:a9cd:d01b:63a8:de53:5983)
2020-12-06 01:25:56 +0100 <cads> saying "you need to have a correct implementation" would do a lot to prove performance charachteristics and utility - to wit, the community would be free to /try/ proposed changes
2020-12-06 01:26:00 +0100 <cads> by default
2020-12-06 01:26:44 +0100 <cads> is the implementation cost of some propose features so large that it depends on the committee to implement/attract implementers?
2020-12-06 01:27:55 +0100haskellfan(6ca82605@dhcp-108-168-38-5.cable.user.start.ca)
2020-12-06 01:28:17 +0100 <cads> 1. It has a spec. 2. It has code that implements the spec. 3. The code and spec don't totally stink (subjective review criterion) => this is a standalone proposal, and it warrants inclusion in the repo
2020-12-06 01:29:29 +0100 <cads> not saying "machine checked correctness proofs" here, but 80% unit test coverage for unit tests that can run under 10 seconds, sounds like a good idea
2020-12-06 01:29:56 +0100 <cads> ie, that's what I will demand for any hask code within my own org
2020-12-06 01:32:53 +0100Chronic(~Chronic__@84.203.103.100)
2020-12-06 01:33:20 +0100 <ephemient> nfd9001: I Ieft a message while you were disconnected yesterday
2020-12-06 01:33:29 +0100ChronicKronic
2020-12-06 01:34:31 +0100Tario(~Tario@200.119.184.125)
2020-12-06 01:34:33 +0100Kaivo(~Kaivo@104-200-86-99.mc.derytele.com) (Quit: WeeChat 2.9)
2020-12-06 01:34:48 +0100mouseghost(~draco@wikipedia/desperek) (Quit: mew wew)
2020-12-06 01:37:47 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-06 01:40:44 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:a9cd:d01b:63a8:de53:5983) (Quit: Textual IRC Client: www.textualapp.com)
2020-12-06 01:41:29 +0100da39a3ee5e6b4b0d(~da39a3ee5@mx-ll-171.5.29-209.dynamic.3bb.co.th)
2020-12-06 01:43:13 +0100argent0(~argent0@168.227.97.34) (Ping timeout: 272 seconds)
2020-12-06 01:43:28 +0100haskellfan(6ca82605@dhcp-108-168-38-5.cable.user.start.ca) (Remote host closed the connection)
2020-12-06 01:46:40 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-06 01:48:16 +0100conal(~conal@64.71.133.70)
2020-12-06 01:50:03 +0100emmanuel_erc(~user@2604:2000:1382:ce03::9af) (Ping timeout: 244 seconds)
2020-12-06 01:50:48 +0100Ariakenom(~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se) (Ping timeout: 256 seconds)
2020-12-06 01:51:41 +0100BlackCapCoder(~blackcap@48.80-203-23.nextgentel.com) (Ping timeout: 244 seconds)
2020-12-06 01:51:43 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-06 01:52:16 +0100conal(~conal@64.71.133.70)
2020-12-06 01:52:16 +0100Tario(~Tario@200.119.184.125) (Read error: Connection reset by peer)
2020-12-06 01:52:26 +0100Tario(~Tario@201.192.165.173)
2020-12-06 01:52:31 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-06 01:55:25 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds)
2020-12-06 01:55:40 +0100conal(~conal@64.71.133.70)
2020-12-06 01:55:40 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-06 01:56:56 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:6dd4:a10a:cd57:9d07)
2020-12-06 01:57:22 +0100borne(~fritjof@200116b8645b9f009ba1d43461655289.dip.versatel-1u1.de) (Ping timeout: 244 seconds)
2020-12-06 01:57:47 +0100conal(~conal@64.71.133.70)
2020-12-06 02:00:37 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-06 02:01:25 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:6dd4:a10a:cd57:9d07) (Ping timeout: 244 seconds)
2020-12-06 02:01:45 +0100Ariakenom(~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se)
2020-12-06 02:02:04 +0100Ariakenom(~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se) (Client Quit)
2020-12-06 02:02:20 +0100nyaomi(~naomi@cpe-74-75-6-125.maine.res.rr.com) (Ping timeout: 272 seconds)
2020-12-06 02:02:26 +0100conal(~conal@64.71.133.70)
2020-12-06 02:02:34 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-06 02:03:51 +0100conal(~conal@64.71.133.70)
2020-12-06 02:04:09 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-06 02:04:56 +0100conal(~conal@64.71.133.70)
2020-12-06 02:04:56 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-06 02:07:48 +0100borne(~fritjof@200116b8645b9f009ba1d43461655289.dip.versatel-1u1.de)
2020-12-06 02:09:19 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 246 seconds)
2020-12-06 02:10:29 +0100Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2020-12-06 02:10:43 +0100dhil(~dhil@195.213.192.34) (Ping timeout: 246 seconds)
2020-12-06 02:12:21 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2020-12-06 02:14:15 +0100Amras(~Amras@unaffiliated/amras) (Ping timeout: 272 seconds)
2020-12-06 02:16:18 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 256 seconds)
2020-12-06 02:16:29 +0100BlackCapCoder(~blackcap@48.80-203-23.nextgentel.com)
2020-12-06 02:17:26 +0100joaj(~joaj@2001:818:e326:8200:5273:55b7:3a86:e6ca) (Ping timeout: 264 seconds)
2020-12-06 02:18:26 +0100joaj(~joaj@2001:818:e326:8200:9fc:6bde:c18a:1771)
2020-12-06 02:18:31 +0100hackagec2hs 0.28.7 - C->Haskell FFI tool that gives some cross-language type safety https://hackage.haskell.org/package/c2hs-0.28.7 (deech)
2020-12-06 02:20:58 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:6dd4:a10a:cd57:9d07)
2020-12-06 02:22:14 +0100pjb(~t@2a01cb04063ec50041ee30a820ddb685.ipv6.abo.wanadoo.fr) (Ping timeout: 264 seconds)
2020-12-06 02:22:16 +0100opweiqw(~opweiqw@2604:880:50:5f:63:0:f0:1) (Remote host closed the connection)
2020-12-06 02:24:02 +0100hackagegrow-vector 0.1.0.0 - Mutable vector with efficient appends https://hackage.haskell.org/package/grow-vector-0.1.0.0 (NCrashed)
2020-12-06 02:27:12 +0100conal(~conal@64.71.133.70)
2020-12-06 02:28:13 +0100Feuermagier(~Feuermagi@213.178.26.41) (Remote host closed the connection)
2020-12-06 02:28:23 +0100thunderrd(~thunderrd@183.182.110.8) (Remote host closed the connection)
2020-12-06 02:28:29 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607)
2020-12-06 02:29:15 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-06 02:30:30 +0100softwarm(4408f588@ip68-8-245-136.sd.sd.cox.net) (Ping timeout: 245 seconds)
2020-12-06 02:31:34 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-06 02:32:09 +0100argent0(~argent0@168.227.97.34)
2020-12-06 02:36:16 +0100mounty1(~mounty@210.1.196.133)
2020-12-06 02:36:16 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2020-12-06 02:37:01 +0100orion(~orion@c-76-19-238-5.hsd1.nh.comcast.net)
2020-12-06 02:37:01 +0100orion(~orion@c-76-19-238-5.hsd1.nh.comcast.net) (Changing host)
2020-12-06 02:37:01 +0100orion(~orion@unaffiliated/orion)
2020-12-06 02:42:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-06 02:43:08 +0100Lord_of_Life_(~Lord@46.217.217.114)
2020-12-06 02:43:54 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607) (Remote host closed the connection)
2020-12-06 02:44:08 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607)
2020-12-06 02:44:34 +0100Feuermagier(~Feuermagi@213.178.26.41)
2020-12-06 02:45:23 +0100da39a3ee5e6b4b0d(~da39a3ee5@mx-ll-171.5.29-209.dynamic.3bb.co.th) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-06 02:45:25 +0100Lord_of_Life(~Lord@46.217.216.2) (Ping timeout: 240 seconds)
2020-12-06 02:45:30 +0100Lord_of_Life_Lord_of_Life
2020-12-06 02:45:59 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
2020-12-06 02:46:56 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-06 02:47:11 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2020-12-06 02:47:32 +0100ukari(~ukari@unaffiliated/ukari)
2020-12-06 02:47:45 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-06 02:48:26 +0100falafel(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net) (Ping timeout: 256 seconds)
2020-12-06 02:48:48 +0100Feuermagier(~Feuermagi@213.178.26.41) (Remote host closed the connection)
2020-12-06 02:49:16 +0100columbarius(~columbari@mue-88-130-54-019.dsl.tropolys.de) (Ping timeout: 240 seconds)
2020-12-06 02:51:27 +0100columbarius(~columbari@i5E86B34D.versanet.de)
2020-12-06 02:51:34 +0100Feuermagier(~Feuermagi@213.178.26.41)
2020-12-06 02:51:49 +0100conal(~conal@64.71.133.70)
2020-12-06 02:51:49 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-06 02:52:00 +0100kipras(~Kipras@78-56-235-39.static.zebra.lt) (Ping timeout: 256 seconds)
2020-12-06 02:55:50 +0100conal(~conal@64.71.133.70)
2020-12-06 02:56:31 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-06 02:56:41 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2020-12-06 02:57:57 +0100ph88(~ph88@2a02:8109:9e00:7e5c:cb1:a2e:bc62:aff6) (Ping timeout: 272 seconds)
2020-12-06 02:57:58 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2020-12-06 02:58:52 +0100softwarm(4408f588@ip68-8-245-136.sd.sd.cox.net)
2020-12-06 03:02:32 +0100hackagehledger-lib 1.20 - A reusable library providing the core functionality of hledger https://hackage.haskell.org/package/hledger-lib-1.20 (SimonMichael)
2020-12-06 03:05:33 +0100christo(~chris@81.96.113.213)
2020-12-06 03:10:59 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607) (Remote host closed the connection)
2020-12-06 03:16:57 +0100falafel(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net)
2020-12-06 03:17:59 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-bkkscsldnugnnelg) (Quit: Connection closed for inactivity)
2020-12-06 03:18:36 +0100xff0x(~fox@2001:1a81:522b:1800:ae20:ad8a:33ca:dfa5)
2020-12-06 03:21:25 +0100xff0x_(~fox@port-92-193-238-203.dynamic.as20676.net) (Ping timeout: 246 seconds)
2020-12-06 03:22:42 +0100thunderrd(~thunderrd@183.182.110.8)
2020-12-06 03:23:03 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-06 03:25:06 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2020-12-06 03:25:49 +0100joaj(~joaj@2001:818:e326:8200:9fc:6bde:c18a:1771) (Ping timeout: 272 seconds)
2020-12-06 03:30:21 +0100Tops2(~Tobias@dyndsl-091-249-083-001.ewe-ip-backbone.de)
2020-12-06 03:31:25 +0100s00pcan(~chris@075-133-056-178.res.spectrum.com) (Ping timeout: 264 seconds)
2020-12-06 03:32:58 +0100s00pcan(~chris@107.181.165.217)
2020-12-06 03:34:10 +0100Tops21(~Tobias@dyndsl-091-249-083-001.ewe-ip-backbone.de) (Ping timeout: 272 seconds)
2020-12-06 03:37:31 +0100xchg(~xchg@185.204.1.185) (Remote host closed the connection)
2020-12-06 03:41:36 +0100cads(~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 240 seconds)
2020-12-06 03:41:39 +0100alp(~alp@2a01:e0a:58b:4920:f8ca:e52d:bace:9aad) (Ping timeout: 272 seconds)
2020-12-06 03:41:49 +0100Kronic(~Chronic__@84.203.103.100) (Quit: Leaving)
2020-12-06 03:45:13 +0100sw1nn(~sw1nn@host81-131-191-165.range81-131.btcentralplus.com) (Ping timeout: 264 seconds)
2020-12-06 03:45:27 +0100 <ezzieyguywuf> does cabal update update any packages?
2020-12-06 03:45:32 +0100 <ezzieyguywuf> or just the database?
2020-12-06 03:45:56 +0100solonarv(~solonarv@astrasbourg-552-1-28-212.w90-13.abo.wanadoo.fr) (Ping timeout: 240 seconds)
2020-12-06 03:47:17 +0100 <MarcelineVQ> just the hackage index
2020-12-06 03:48:01 +0100Tops2(~Tobias@dyndsl-091-249-083-001.ewe-ip-backbone.de) (Quit: Leaving.)
2020-12-06 03:48:12 +0100 <ezzieyguywuf> how do I tell it to update any packages that have never versions?
2020-12-06 03:48:29 +0100 <ezzieyguywuf> or do I just have to do that manually?
2020-12-06 03:48:38 +0100 <ezzieyguywuf> specifically I'm just thinking about the things I've installed with cabal install
2020-12-06 03:49:43 +0100 <MarcelineVQ> manually. you'd type cabal install thething after a cabal update
2020-12-06 03:50:27 +0100 <sclv> with v2 whenever you cabal-build it'll calculate a plan with the latest avail pkgs
2020-12-06 03:50:41 +0100 <ezzieyguywuf> MarcelineVQ: gotcha.
2020-12-06 03:51:08 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Quit: Leaving)
2020-12-06 03:51:26 +0100 <ezzieyguywuf> so I have to know "ah, hledger v1.20 dropped, time to manually update!"
2020-12-06 03:51:30 +0100 <ezzieyguywuf> seems a bit tedious
2020-12-06 03:51:39 +0100 <ezzieyguywuf> sclv: lol, that wasn't the case before?
2020-12-06 03:54:45 +0100sparsity(5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145)
2020-12-06 03:54:47 +0100 <sclv> in v1 it uses the already installed versions if they satisfy the deps
2020-12-06 03:55:08 +0100 <sclv> i mean for an executable though of course its not going to magically keep them up to date in the background
2020-12-06 03:55:11 +0100 <ezzieyguywuf> interesting
2020-12-06 03:55:14 +0100 <sclv> its not like a system package manager
2020-12-06 03:55:19 +0100 <sclv> its a build tool that can fetch deps
2020-12-06 03:55:22 +0100 <ezzieyguywuf> indeed it is not.
2020-12-06 03:55:36 +0100 <ezzieyguywuf> so I wonder if I should avoid using `cabal install` and instead prefer my package manager
2020-12-06 03:55:56 +0100 <sclv> for executables, if you're ok with the release schedule of your package manager, yes
2020-12-06 03:56:00 +0100 <sclv> if you want to be more bleeding edge, no
2020-12-06 03:56:14 +0100 <monochrom> Your package manager lags way back behind.
2020-12-06 03:56:35 +0100 <sclv> i mean for 90% of the executables on any given linux box i'm okay with that tho
2020-12-06 03:56:55 +0100 <sclv> just.. i won't expect to be on the latest and greatest by a longshot
2020-12-06 03:57:07 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2020-12-06 03:57:14 +0100 <monochrom> But to be honest, I just use ubuntu's version of pandoc, yes. :)
2020-12-06 03:57:31 +0100 <monochrom> But totally not ubuntu's version of GHC, random, QuickCheck.
2020-12-06 03:57:35 +0100 <ezzieyguywuf> lol, my package manager doesn't have hledger anyway
2020-12-06 03:57:59 +0100 <ezzieyguywuf> monochrom: but QuickCheck, for example, I just use while coding, i.e. not as an executable in my path
2020-12-06 03:58:07 +0100paolo|out(~paolo|out@185.163.110.125)
2020-12-06 03:58:52 +0100sw1nn(~sw1nn@2a00:23c6:2385:3a00:415:b4b7:c159:18ea)
2020-12-06 04:05:33 +0100 <sm[m]> ezzieyguywuf: in hledger's case, there's a curl command you could run with cron :)
2020-12-06 04:11:23 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607)
2020-12-06 04:13:43 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-12-06 04:14:03 +0100pavonia(~user@unaffiliated/siracusa)
2020-12-06 04:14:06 +0100CMCDragonkai2(~Thunderbi@124.19.3.250)
2020-12-06 04:15:45 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607) (Ping timeout: 244 seconds)
2020-12-06 04:17:24 +0100Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Ping timeout: 260 seconds)
2020-12-06 04:19:01 +0100 <ezzieyguywuf> sm[m]: lol, I'm hesitant enough as it is running these variosu curl stuffies, without putting it on a cron
2020-12-06 04:19:14 +0100 <ezzieyguywuf> and cron is not the type of package management I'm interesting in, lol.
2020-12-06 04:20:11 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-06 04:22:06 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Client Quit)
2020-12-06 04:22:28 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-06 04:23:33 +0100conal(~conal@64.71.133.70)
2020-12-06 04:27:12 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds)
2020-12-06 04:28:56 +0100 <sm[m]> quite right :) though it's kind of like Debians unattended-upgrades..
2020-12-06 04:28:57 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-06 04:31:48 +0100rurt91(~rurt91@gateway/tor-sasl/rurt91)
2020-12-06 04:32:40 +0100lagothrixGuest41331
2020-12-06 04:32:40 +0100xirhtogal(~lagothrix@unaffiliated/lagothrix)
2020-12-06 04:32:40 +0100Guest41331(~lagothrix@unaffiliated/lagothrix) (Killed (tolkien.freenode.net (Nickname regained by services)))
2020-12-06 04:32:41 +0100xirhtogallagothrix
2020-12-06 04:33:13 +0100theDon(~td@muedsl-82-207-238-039.citykom.de) (Ping timeout: 264 seconds)
2020-12-06 04:34:13 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2020-12-06 04:34:41 +0100theDon(~td@94.134.91.74)
2020-12-06 04:38:22 +0100xff0x(~fox@2001:1a81:522b:1800:ae20:ad8a:33ca:dfa5) (Ping timeout: 260 seconds)
2020-12-06 04:38:41 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-06 04:39:01 +0100xff0x(~fox@83.236.23.112)
2020-12-06 04:39:36 +0100thusiiam(324240fd@S0106a0ff703dd1e7.cg.shawcable.net)
2020-12-06 04:42:39 +0100jmsx(~jordan@li1158-85.members.linode.com) (Quit: bye o/)
2020-12-06 04:43:14 +0100jmsx(~jordan@li1158-85.members.linode.com)
2020-12-06 04:53:05 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:a9cd:d01b:63a8:de53:5983)
2020-12-06 04:55:32 +0100ukari(~ukari@unaffiliated/ukari) (Remote host closed the connection)
2020-12-06 04:56:17 +0100softwarm(4408f588@ip68-8-245-136.sd.sd.cox.net) (Remote host closed the connection)
2020-12-06 04:56:35 +0100softwarm(4408f588@ip68-8-245-136.sd.sd.cox.net)
2020-12-06 04:59:06 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:6dd4:a10a:cd57:9d07) (Remote host closed the connection)
2020-12-06 05:00:14 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-06 05:01:10 +0100sparsity(5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) (Quit: Connection closed)
2020-12-06 05:01:32 +0100natechan(~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-12-06 05:02:03 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-06 05:03:18 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-12-06 05:04:00 +0100drincruz_(~adriancru@ool-44c748be.dyn.optonline.net)
2020-12-06 05:04:43 +0100Jeanne-Kamikaze(~Jeanne-Ka@66.115.189.235) (Quit: Leaving)
2020-12-06 05:05:39 +0100dxld(~dxld@rush.pub.dxld.at) (Quit: Bye)
2020-12-06 05:05:56 +0100dxld(~dxld@rush.pub.dxld.at)
2020-12-06 05:08:50 +0100natechan(~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2020-12-06 05:12:43 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607)
2020-12-06 05:16:20 +0100jmchael(~Chi1thang@87.112.60.168) (Ping timeout: 256 seconds)
2020-12-06 05:17:06 +0100drbean(~drbean@TC210-63-209-155.static.apol.com.tw)
2020-12-06 05:17:26 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607) (Ping timeout: 264 seconds)
2020-12-06 05:18:03 +0100ralu(~ralu@static.211.245.203.116.clients.your-server.de) (Ping timeout: 260 seconds)
2020-12-06 05:19:05 +0100urek(~urek@186.215.8.193)
2020-12-06 05:19:16 +0100Cthalupa(~cthulhu@47.186.47.75) (Ping timeout: 240 seconds)
2020-12-06 05:19:56 +0100ralu(~ralu@static.211.245.203.116.clients.your-server.de)
2020-12-06 05:20:46 +0100Cthalupa(~cthulhu@47.186.47.75)
2020-12-06 05:20:48 +0100 <ezzieyguywuf> hrm, hledger-web seems to hang if I change the journal file using my text editor
2020-12-06 05:21:05 +0100urek__(~urek@2804:7f1:e10a:a8d:a85d:6d9e:3db:9450) (Ping timeout: 272 seconds)
2020-12-06 05:21:16 +0100darjeeling_(~darjeelin@122.245.218.196) (Ping timeout: 240 seconds)
2020-12-06 05:22:00 +0100 <ezzieyguywuf> also, I tried `hledger-web MyAccount` but it still listed everything
2020-12-06 05:22:09 +0100 <sm[m]> ezzieyguywuf: strange, can you reproduce with a minimal file ?
2020-12-06 05:22:23 +0100 <ezzieyguywuf> sm[m]: let me try h/o
2020-12-06 05:23:06 +0100nerdypepper(nerdypeppe@152.67.160.69) (Ping timeout: 272 seconds)
2020-12-06 05:24:48 +0100 <ezzieyguywuf> sm[m]: this reproduces both
2020-12-06 05:24:50 +0100 <ezzieyguywuf> https://dpaste.com/89G2NYZ9H
2020-12-06 05:24:58 +0100 <ezzieyguywuf> `hledger-web -f Test.journal Checking`
2020-12-06 05:27:02 +0100justsomeguy(~justsomeg@216.186.218.241)
2020-12-06 05:27:02 +0100justsomeguy(~justsomeg@216.186.218.241) (Changing host)
2020-12-06 05:27:02 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2020-12-06 05:28:01 +0100 <sm[m]> thanks! not for me..
2020-12-06 05:28:06 +0100 <sm[m]> shall we take it to #hledger ?
2020-12-06 05:28:16 +0100 <ezzieyguywuf> lol thought I was in there already whoop
2020-12-06 05:32:50 +0100ario(~ario@178.62.234.211)
2020-12-06 05:32:57 +0100 <ario> hi
2020-12-06 05:33:08 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-12-06 05:34:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-06 05:36:20 +0100falafel(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net) (Ping timeout: 256 seconds)
2020-12-06 05:36:51 +0100 <rurt91> hi
2020-12-06 05:38:40 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:a9cd:d01b:63a8:de53:5983) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-06 05:40:13 +0100borne(~fritjof@200116b8645b9f009ba1d43461655289.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2020-12-06 05:41:00 +0100zaquest(~notzaques@5.128.210.178)
2020-12-06 05:41:26 +0100CMCDragonkai2(~Thunderbi@124.19.3.250) (Ping timeout: 256 seconds)
2020-12-06 05:44:29 +0100cads(~cads@ip-64-72-99-232.lasvegas.net)
2020-12-06 05:47:39 +0100mozzarella(~sam@unaffiliated/sam113101) (Read error: Connection reset by peer)
2020-12-06 05:47:46 +0100zaquest(~notzaques@5.128.210.178) (Read error: Connection reset by peer)
2020-12-06 05:52:43 +0100iqubic(~user@2601:602:9500:4870:55f6:de24:d001:bc51) (Remote host closed the connection)
2020-12-06 05:54:46 +0100iqubic(~user@2601:602:9500:4870:81cb:3fd4:dbe9:8921)
2020-12-06 05:55:05 +0100mozzarella(~sam@unaffiliated/sam113101)
2020-12-06 05:56:20 +0100softwarm(4408f588@ip68-8-245-136.sd.sd.cox.net) (Ping timeout: 245 seconds)
2020-12-06 05:59:56 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Quit: rcdilorenzo)
2020-12-06 06:03:08 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-06 06:03:24 +0100shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:a913:5438:3a24:3de8) (Ping timeout: 240 seconds)
2020-12-06 06:05:24 +0100 <koala_man> I'm trying to load a file in ghci but it says "Could not find module ‘Test.QuickCheck.All’". Can I point it to my cabal installed version? My ~/.cabal dir has a Test/QuickCheck/All.hi deep down but no .hs/.lhs/.hsig/.lhsig that ghci looks for
2020-12-06 06:06:16 +0100 <ezzieyguywuf> if I cabal install some-package-0.5, but alreaddy have some-package-0.6 installed, how can I make cabal update the symlink in ~/.local/bin?
2020-12-06 06:07:39 +0100 <ezzieyguywuf> hrm, ok just delete symlink and re-install
2020-12-06 06:08:31 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-12-06 06:08:54 +0100boxscape(54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8)
2020-12-06 06:09:18 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-06 06:09:43 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-06 06:10:21 +0100shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:d1c6:3077:d789:1553)
2020-12-06 06:11:14 +0100drincruz_(~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 256 seconds)
2020-12-06 06:13:15 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607)
2020-12-06 06:14:16 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2020-12-06 06:18:08 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607) (Ping timeout: 260 seconds)
2020-12-06 06:23:40 +0100unlink2(~unlink2@p200300ebcf259600971664e9499d7db7.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-12-06 06:24:42 +0100hexo(~hexo@gateway/tor-sasl/hexo) (Remote host closed the connection)
2020-12-06 06:24:42 +0100srk(~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection)
2020-12-06 06:24:58 +0100hexo(~hexo@gateway/tor-sasl/hexo)
2020-12-06 06:25:03 +0100unlink2(~unlink2@p200300ebcf259600971664e9499d7db7.dip0.t-ipconnect.de)
2020-12-06 06:25:07 +0100srk(~sorki@gateway/tor-sasl/sorki)
2020-12-06 06:26:09 +0100Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4)
2020-12-06 06:27:54 +0100unlink2(~unlink2@p200300ebcf259600971664e9499d7db7.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-12-06 06:33:00 +0100unlink2(~unlink2@p5dc0acf8.dip0.t-ipconnect.de)
2020-12-06 06:33:19 +0100urek(~urek@186.215.8.193) (Ping timeout: 260 seconds)
2020-12-06 06:33:37 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-06 06:34:59 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-xcscidhxhkxwhlyp) ()
2020-12-06 06:35:08 +0100conal(~conal@64.71.133.70)
2020-12-06 06:37:05 +0100Cthalupa(~cthulhu@47.186.47.75) (Ping timeout: 272 seconds)
2020-12-06 06:37:50 +0100Cthalupa(~cthulhu@47.186.47.75)
2020-12-06 06:38:54 +0100acidjnk_new(~acidjnk@p200300d0c719ff043467fd7c213734d3.dip0.t-ipconnect.de)
2020-12-06 06:39:47 +0100rif(~rif@c-24-4-99-49.hsd1.ca.comcast.net)
2020-12-06 06:40:09 +0100 <rif> Hello friends. Can anyone offer some package management help?
2020-12-06 06:41:33 +0100 <arahael> rif: You might want to be a little bit more specific if you want genuine help.
2020-12-06 06:42:31 +0100 <rif> Sorry, new here, I was trying to figure out if this was a reasonable place to ask a detailed question. I can certainly be a lot more specific.
2020-12-06 06:43:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-06 06:45:13 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds)
2020-12-06 06:45:20 +0100 <rif> High-level: I installed Haskell platform on ubuntu. Things seemed to be working fine, but tonight I tried to import Data.List.Unique in a program and it didn't work. I ended up trying `cabal install --lib Unique`. After that, I could import Data.List.Unique, but I can no longer import Data.List.Split --- I get errors about the split package being hidden. Additionally, neither cabal nor ghc seem to think the unique package is actually
2020-12-06 06:45:21 +0100 <rif> installed (e.g, `ghc-package -list` doesn't show it as either local or global). So I'm not sure how to proceed. Any advice is welcome.
2020-12-06 06:45:54 +0100 <rif> Sorry, "ghc-pkg list" doesn't show unique as installed.
2020-12-06 06:48:33 +0100euisuny(4450e645@c-68-80-230-69.hsd1.pa.comcast.net)
2020-12-06 06:48:51 +0100 <arahael> rif: I have to go, but it's probably hidden because it's not listed in your project's cabal file.
2020-12-06 06:50:14 +0100 <rif> I don't know that I *have* a cabal file? All I did was start creating a file with a name like foo.hs, and then saying `ghc --make foo.hs` to get a binary. But your comment gives me ideas for things to look at --- I guess I edited some default cabal config.
2020-12-06 06:50:40 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-06 06:51:06 +0100euisuny_(~euisuny@2601:47:4500:2140:89e0:403e:4683:85b2)
2020-12-06 06:51:30 +0100 <arahael> I think you'll want to try a `cabal init` or something
2020-12-06 06:51:39 +0100euisuny(4450e645@c-68-80-230-69.hsd1.pa.comcast.net) (Remote host closed the connection)
2020-12-06 06:51:48 +0100euisuny_(~euisuny@2601:47:4500:2140:89e0:403e:4683:85b2) (Client Quit)
2020-12-06 06:51:49 +0100 <arahael> Which should give you a file. Anyway, I'm gone.
2020-12-06 06:51:56 +0100 <rif> Thank you!
2020-12-06 06:52:02 +0100rurt91(~rurt91@gateway/tor-sasl/rurt91) (Remote host closed the connection)
2020-12-06 06:52:05 +0100euisuny(~euisuny@2601:47:4500:2140:89e0:403e:4683:85b2)
2020-12-06 06:52:23 +0100rurt91(~rurt91@gateway/tor-sasl/rurt91)
2020-12-06 06:54:53 +0100Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Ping timeout: 260 seconds)
2020-12-06 06:55:54 +0100rurt91(~rurt91@gateway/tor-sasl/rurt91) (Remote host closed the connection)
2020-12-06 06:56:05 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 272 seconds)
2020-12-06 06:56:13 +0100rurt91(~rurt91@gateway/tor-sasl/rurt91)
2020-12-06 06:56:31 +0100Saukk(~Saukk@2001:998:ec:944:a00f:6382:4f0:3e7e)
2020-12-06 06:57:01 +0100argent0(~argent0@168.227.97.34) (Ping timeout: 246 seconds)
2020-12-06 06:58:46 +0100rif(~rif@c-24-4-99-49.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
2020-12-06 06:59:03 +0100rif(~rif@c-24-4-99-49.hsd1.ca.comcast.net)
2020-12-06 07:00:57 +0100dxld(~dxld@rush.pub.dxld.at) (Quit: Bye)
2020-12-06 07:03:26 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-kvwfkzcfenglexqu) (Quit: Connection closed for inactivity)
2020-12-06 07:03:33 +0100sh9(~sh9@softbank060116136158.bbtec.net) (Quit: WeeChat 2.8)
2020-12-06 07:03:41 +0100BlackCapCoder(~blackcap@48.80-203-23.nextgentel.com) (Ping timeout: 272 seconds)
2020-12-06 07:04:08 +0100dxld(~dxld@rush.pub.dxld.at)
2020-12-06 07:09:06 +0100coot(~coot@37.30.53.191.nat.umts.dynamic.t-mobile.pl)
2020-12-06 07:10:31 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-06 07:13:57 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607)
2020-12-06 07:15:24 +0100conal(~conal@64.71.133.70)
2020-12-06 07:16:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-06 07:18:38 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607) (Ping timeout: 264 seconds)
2020-12-06 07:20:29 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-06 07:21:41 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-06 07:22:07 +0100conal(~conal@64.71.133.70)
2020-12-06 07:22:48 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-06 07:23:59 +0100sh9(~sh9@softbank060116136158.bbtec.net)
2020-12-06 07:24:36 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2020-12-06 07:25:38 +0100euisuny(~euisuny@2601:47:4500:2140:89e0:403e:4683:85b2) ()
2020-12-06 07:28:22 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) ()
2020-12-06 07:29:29 +0100elliott_(~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 246 seconds)
2020-12-06 07:29:50 +0100darjeeling_(~darjeelin@112.16.171.8)
2020-12-06 07:30:19 +0100urodna(~urodna@unaffiliated/urodna) (Quit: urodna)
2020-12-06 07:31:14 +0100Sayless(~seiless@45.132.225.91) (Ping timeout: 246 seconds)
2020-12-06 07:31:22 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2020-12-06 07:32:22 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-06 07:33:42 +0100fxg(~fxg@unaffiliated/fxg)
2020-12-06 07:33:49 +0100thusiiam(324240fd@S0106a0ff703dd1e7.cg.shawcable.net) (Ping timeout: 245 seconds)
2020-12-06 07:34:37 +0100rif(~rif@c-24-4-99-49.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2020-12-06 07:35:20 +0100falafel(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net)
2020-12-06 07:36:25 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 240 seconds)
2020-12-06 07:39:42 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2020-12-06 07:40:38 +0100notzmv(~user@unaffiliated/zmv) (Read error: Connection reset by peer)
2020-12-06 07:41:08 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2020-12-06 07:41:27 +0100boxscape(54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) (Quit: Ping timeout (120 seconds))
2020-12-06 07:41:52 +0100da39a3ee5e6b4b0d(~da39a3ee5@ppp-223-24-171-28.revip6.asianet.co.th)
2020-12-06 07:44:46 +0100phaazon(~phaazon@2001:41d0:a:fe76::1) (Remote host closed the connection)
2020-12-06 07:45:04 +0100nyaomi(~naomi@cpe-74-75-6-125.maine.res.rr.com)
2020-12-06 07:45:18 +0100phaazon(~phaazon@2001:41d0:a:fe76::1)
2020-12-06 07:46:43 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-06 07:47:51 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2020-12-06 07:51:05 +0100fxg(~fxg@unaffiliated/fxg) (Ping timeout: 240 seconds)
2020-12-06 07:51:47 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 268 seconds)
2020-12-06 07:51:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2020-12-06 07:54:48 +0100clever_(~clever@142.68.248.92)
2020-12-06 07:55:51 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar) (Remote host closed the connection)
2020-12-06 07:56:39 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar)
2020-12-06 07:57:51 +0100clever(~clever@NixOS/user/clever) (Ping timeout: 256 seconds)
2020-12-06 07:59:16 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 240 seconds)
2020-12-06 08:02:25 +0100Saukk(~Saukk@2001:998:ec:944:a00f:6382:4f0:3e7e) (Remote host closed the connection)
2020-12-06 08:02:52 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 260 seconds)
2020-12-06 08:03:06 +0100darjeeling_(~darjeelin@112.16.171.8) (Ping timeout: 256 seconds)
2020-12-06 08:07:39 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 272 seconds)
2020-12-06 08:11:55 +0100Guest4563(~Siempre@4e69b241.skybroadband.com) (Ping timeout: 246 seconds)
2020-12-06 08:13:08 +0100texasmynsted(~texasmyns@212.102.45.112) (Ping timeout: 260 seconds)
2020-12-06 08:15:57 +0100chris(~chris@bras-vprn-nwmkon8540w-lp130-10-142-112-210-136.dsl.bell.ca)
2020-12-06 08:16:13 +0100 <jle`> koz_: hey, did you ever make any libraries involving fintary with Word-backed Sets?
2020-12-06 08:16:22 +0100chrisGuest34720
2020-12-06 08:16:23 +0100 <koz_> jle`: Nope.
2020-12-06 08:16:37 +0100 <koz_> I worked on the idea a bit but never published it.
2020-12-06 08:17:44 +0100darjeeling_(~darjeelin@112.16.171.8)
2020-12-06 08:18:42 +0100 <jle`> ah, interesting. was talking about a similiar idea RE: AoC stuff and thought such a thing might be useful
2020-12-06 08:18:48 +0100 <jle`> are you looking for PRs? :)
2020-12-06 08:20:24 +0100 <jle`> it'd be in finitary-derive, right?
2020-12-06 08:20:46 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-06 08:20:55 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-06 08:21:30 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607)
2020-12-06 08:22:16 +0100doct0rhu(~orctarorg@pool-72-88-158-154.nwrknj.fios.verizon.net) (Remote host closed the connection)
2020-12-06 08:23:47 +0100XR0DRiG0(~Farinhoca@softbank126057187159.bbtec.net)
2020-12-06 08:23:57 +0100shatriff(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-12-06 08:31:58 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607) (Remote host closed the connection)
2020-12-06 08:37:19 +0100toorevitimirp(~tooreviti@117.182.181.85)
2020-12-06 08:38:49 +0100bitmagie(~Thunderbi@200116b806f98700c0a634702f137499.dip.versatel-1u1.de)
2020-12-06 08:39:26 +0100 <topos> Finitary + word-backed sets and Alexandra Ocasio-Cortez.
2020-12-06 08:39:29 +0100 <topos> what a night
2020-12-06 08:41:12 +0100bitmagie(~Thunderbi@200116b806f98700c0a634702f137499.dip.versatel-1u1.de) (Client Quit)
2020-12-06 08:46:44 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch)
2020-12-06 08:47:43 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-06 08:48:06 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-06 08:50:13 +0100 <koz_> It'd be a different package most likely.
2020-12-06 08:50:28 +0100 <koz_> Since you're going for a set based on a bitvector right?
2020-12-06 08:50:45 +0100 <koz_> (it could actually be a newtype)
2020-12-06 08:51:23 +0100 <koz_> (newtype FinitarySet a = FinitarySet (Vector (Cardinality a) Bit))
2020-12-06 08:51:35 +0100z0(~z0@188.251.65.247)
2020-12-06 08:53:19 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds)
2020-12-06 08:53:54 +0100argent0(~argent0@168.227.97.29)
2020-12-06 08:53:59 +0100 <jle`> mhm
2020-12-06 08:54:05 +0100argent0(~argent0@168.227.97.29) (Client Quit)
2020-12-06 08:54:10 +0100 <jle`> ah yeah, that would work i think :)
2020-12-06 08:54:17 +0100 <jle`> or maybe just a WordN
2020-12-06 08:54:22 +0100 <koz_> WordN?
2020-12-06 08:54:35 +0100argento(~argent0@168.227.97.29)
2020-12-06 08:54:37 +0100 <koz_> The main reason to use Vector (Cardinality a) Bit is just to borrow all the functions.
2020-12-06 08:54:47 +0100 <koz_> (and you could borrow like, 90% of the things you'd want)
2020-12-06 08:54:57 +0100 <jle`> Word8, Word64, etc :)
2020-12-06 08:55:02 +0100 <koz_> Ah.
2020-12-06 08:55:03 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-12-06 08:55:19 +0100 <koz_> Well, Vector (Cardinality a) Bit is secretly a Vector Word64 underneath.
2020-12-06 08:55:23 +0100 <jle`> with the constraint that Cardinality a has to be less than 8, 64, etc.
2020-12-06 08:55:37 +0100 <jle`> hm, for unboxed vector?
2020-12-06 08:55:42 +0100 <koz_> Yep.
2020-12-06 08:55:49 +0100 <koz_> Let me link.
2020-12-06 08:55:56 +0100 <jle`> oh neat. i had that suspicion but thought there might be paging issues or something
2020-12-06 08:56:00 +0100bitmagie(~Thunderbi@200116b806f98700c0a634702f137499.dip.versatel-1u1.de)
2020-12-06 08:56:16 +0100 <koz_> http://hackage.haskell.org/package/bitvec
2020-12-06 08:56:16 +0100falafel(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net) (Ping timeout: 240 seconds)
2020-12-06 08:56:41 +0100 <jle`> ooooh
2020-12-06 08:56:43 +0100 <koz_> This defines a newtype around Bool (called Bit) which has the relevant instances, including Unbox.
2020-12-06 08:56:50 +0100 <koz_> So it's packed super-tight.
2020-12-06 08:56:53 +0100 <jle`> noice
2020-12-06 08:57:00 +0100 <jle`> clever that they can just abuse the Unbox instance
2020-12-06 08:57:05 +0100 <koz_> Yep.
2020-12-06 08:57:11 +0100 <koz_> So you can just transitively abuse vector-sized.
2020-12-06 08:57:41 +0100 <koz_> There's also some specialized ops that you could use.
2020-12-06 08:58:05 +0100 <koz_> (zipBits for example)
2020-12-06 08:58:23 +0100 <koz_> You can use that to implement blindingly fast intersection and union.
2020-12-06 08:59:08 +0100 <koz_> You can also implement 'choose :: FinitarySet a -> Maybe a' using 'bitIndex'.
2020-12-06 08:59:14 +0100 <koz_> Also very fast.
2020-12-06 08:59:20 +0100 <jle`> i was looking at zipBits ... at first i thought it was inefficient, but then i noticed the type
2020-12-06 08:59:22 +0100 <jle`> very clever
2020-12-06 08:59:40 +0100 <koz_> Yeah, it's a clever hack.
2020-12-06 08:59:44 +0100 <jle`> also... `instance Bits (Vector Bit)`
2020-12-06 08:59:46 +0100 <jle`> dang
2020-12-06 08:59:52 +0100 <koz_> Yup.
2020-12-06 08:59:57 +0100 <koz_> Bodigrim did the work.
2020-12-06 09:00:12 +0100 <jle`> <3
2020-12-06 09:00:21 +0100 <koz_> So basically if you want FinitarySet, that's how I'd go about it.
2020-12-06 09:00:32 +0100argento(~argent0@168.227.97.29) (Remote host closed the connection)
2020-12-06 09:00:42 +0100 <koz_> Amusingly, if you want to galaxy brain it up, you can do FinitaryMultiMap a b.
2020-12-06 09:00:47 +0100 <koz_> (by using a bitmatrix)
2020-12-06 09:01:05 +0100bitmagie(~Thunderbi@200116b806f98700c0a634702f137499.dip.versatel-1u1.de) (Quit: bitmagie)
2020-12-06 09:01:29 +0100nowhere_man(~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155) (Ping timeout: 272 seconds)
2020-12-06 09:01:38 +0100 <koz_> Also makes me wonder if a MutableFinitarySet m a is a worthwhile idea.
2020-12-06 09:01:52 +0100 <koz_> (and if so, it needs a better name)
2020-12-06 09:03:07 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Quit: WeeChat 2.9)
2020-12-06 09:04:44 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2020-12-06 09:05:37 +0100darjeeling_(~darjeelin@112.16.171.8) (Ping timeout: 264 seconds)
2020-12-06 09:06:32 +0100 <jle`> the possibilities are endless
2020-12-06 09:07:18 +0100 <koz_> The multimap is the one I question the most.
2020-12-06 09:07:26 +0100 <koz_> It's cute, but it doesn't seem terribly useful.
2020-12-06 09:07:40 +0100 <koz_> (and it's not likely very efficiently packed either, because that matrix is likely sparse AF)
2020-12-06 09:08:14 +0100 <koz_> You can probably use some kind of sparse matrix representation I guess?
2020-12-06 09:08:26 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
2020-12-06 09:09:57 +0100z0(~z0@188.251.65.247) (Quit: Lost terminal)
2020-12-06 09:10:02 +0100 <jle`> hm...
2020-12-06 09:10:11 +0100 <jle`> i'll start with maybe implementing the finitary set for this specific application
2020-12-06 09:10:16 +0100 <jle`> and then see if it would be helpful to generalize :O
2020-12-06 09:10:25 +0100 <iqubic> Which application is it? Letters?
2020-12-06 09:10:42 +0100 <koz_> Also, do we even have Haskell librar{y,ies} for sparse matrices?
2020-12-06 09:10:58 +0100 <jle`> koz_: i use Map (a,a) heh
2020-12-06 09:11:05 +0100 <iqubic> Erm... I mean, is this a Letters Set thing?
2020-12-06 09:11:07 +0100 <jle`> but hmatrix might expose one
2020-12-06 09:13:20 +0100 <koz_> jle`: Not as far as I can tell.
2020-12-06 09:13:33 +0100Airscape(~Airscape@4e69b241.skybroadband.com)
2020-12-06 09:14:46 +0100 <jle`> koz_: https://hackage.haskell.org/package/hmatrix-0.20.1/docs/Numeric-LinearAlgebra-Data.html#v:mkSparse
2020-12-06 09:14:50 +0100wz1000(~wz1000@static.11.113.47.78.clients.your-server.de) (Ping timeout: 256 seconds)
2020-12-06 09:15:12 +0100 <koz_> Ah, never mind then, guess it does exist.
2020-12-06 09:15:52 +0100 <jle`> but it's not really usable i think...it's mostly internal/for testing
2020-12-06 09:15:58 +0100 <jle`> :(
2020-12-06 09:17:16 +0100 <koz_> There's also a range of representations possible for sparse matrices.
2020-12-06 09:17:22 +0100 <koz_> It depends on what you wanna be able to do.
2020-12-06 09:17:38 +0100bitmagie(~Thunderbi@200116b806f98700c0a634702f137499.dip.versatel-1u1.de)
2020-12-06 09:17:46 +0100 <iqubic> jle`: What is this for? Is it Advent Of Code related?
2020-12-06 09:18:00 +0100bitmagie(~Thunderbi@200116b806f98700c0a634702f137499.dip.versatel-1u1.de) (Client Quit)
2020-12-06 09:19:15 +0100johnw(~johnw@haskell/developer/johnw)
2020-12-06 09:22:24 +0100wz1000(~wz1000@static.11.113.47.78.clients.your-server.de)
2020-12-06 09:23:10 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-06 09:25:24 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-06 09:26:45 +0100cads(~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 240 seconds)
2020-12-06 09:27:31 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 246 seconds)
2020-12-06 09:30:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-12-06 09:32:21 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607)
2020-12-06 09:32:35 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607) (Remote host closed the connection)
2020-12-06 09:32:35 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-12-06 09:32:43 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607)
2020-12-06 09:33:24 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-12-06 09:39:40 +0100ptrcmd_(~ptrcmd@unaffiliated/petercommand)
2020-12-06 09:39:47 +0100ptrcmd_(~ptrcmd@unaffiliated/petercommand) (Client Quit)
2020-12-06 09:40:01 +0100ptrcmd_(~ptrcmd@unaffiliated/petercommand)
2020-12-06 09:40:18 +0100ptrcmd_(~ptrcmd@unaffiliated/petercommand) (Client Quit)
2020-12-06 09:40:32 +0100 <jle`> iqubic: yeah it's a byte-backed set
2020-12-06 09:40:39 +0100jedws(~jedws@121.209.181.215) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-06 09:42:29 +0100 <iqubic> Are you going to be releasing this onto hackage?
2020-12-06 09:43:56 +0100 <jle`> unsure at the moment
2020-12-06 09:49:21 +0100Neo--(~neo@188-230-138-83.dynamic.t-2.net)
2020-12-06 09:50:14 +0100skiold_(~skiold@gateway/tor-sasl/skiold) (Remote host closed the connection)
2020-12-06 09:50:39 +0100skiold_(~skiold@gateway/tor-sasl/skiold)
2020-12-06 09:50:49 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b8f3:ef0:2eb2:2607) (Remote host closed the connection)
2020-12-06 09:54:21 +0100Guest40272(421b4175@cpe-66-27-65-117.san.res.rr.com)
2020-12-06 09:54:40 +0100 <Guest40272> hi
2020-12-06 09:55:32 +0100da39a3ee5e6b4b0d(~da39a3ee5@ppp-223-24-171-28.revip6.asianet.co.th) (Read error: Connection reset by peer)
2020-12-06 09:56:14 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-06 09:58:28 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-06 09:58:33 +0100Guest40272(421b4175@cpe-66-27-65-117.san.res.rr.com) (Remote host closed the connection)
2020-12-06 09:58:42 +0100dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 256 seconds)
2020-12-06 09:59:40 +0100isrllynewhi(421b4175@cpe-66-27-65-117.san.res.rr.com)
2020-12-06 10:01:47 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2020-12-06 10:01:58 +0100isrllynewhiYourNick2
2020-12-06 10:02:10 +0100YourNick2YourNickyesthism
2020-12-06 10:03:01 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2020-12-06 10:03:24 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
2020-12-06 10:04:18 +0100dibblego(~dibblego@haskell/developer/dibblego)
2020-12-06 10:04:23 +0100YourNickyesthism(421b4175@cpe-66-27-65-117.san.res.rr.com) (Remote host closed the connection)
2020-12-06 10:08:05 +0100drbean(~drbean@TC210-63-209-155.static.apol.com.tw) (Ping timeout: 240 seconds)
2020-12-06 10:10:20 +0100kuribas(~user@ptr-25vy0i7m6krsx7uawj2.18120a2.ip6.access.telenet.be)
2020-12-06 10:16:03 +0100cads(~cads@ip-64-72-99-232.lasvegas.net)
2020-12-06 10:18:38 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2020-12-06 10:25:25 +0100dhil(~dhil@195.213.192.34)
2020-12-06 10:26:28 +0100 <hyiltiz> anyone with any experience/comment on the roundtrip (-string or -aeson) library? It seems like it is rarely used by any other packages, and mostly remains as an academic exercise, no?
2020-12-06 10:29:37 +0100Lord_of_Life(~Lord@46.217.217.114) (Changing host)
2020-12-06 10:29:37 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362)
2020-12-06 10:30:09 +0100 <maerwald> what library?
2020-12-06 10:30:28 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2020-12-06 10:32:12 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 260 seconds)
2020-12-06 10:33:10 +0100Kaiepi(~Kaiepi@47.54.252.148)
2020-12-06 10:34:56 +0100christo(~chris@81.96.113.213)
2020-12-06 10:36:09 +0100jamm_(~jamm@unaffiliated/jamm)
2020-12-06 10:36:13 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca)
2020-12-06 10:45:50 +0100abhixec(~abhixec@c-67-169-141-95.hsd1.ca.comcast.net) (Ping timeout: 244 seconds)
2020-12-06 10:51:33 +0100heatsink(~heatsink@2600:1700:bef1:5e10:c0d0:4847:f8e3:32ca)
2020-12-06 10:52:08 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-bjtotidkjwptzxld) (Quit: Connection closed for inactivity)
2020-12-06 10:54:52 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
2020-12-06 10:54:56 +0100Neo--(~neo@188-230-138-83.dynamic.t-2.net) (Ping timeout: 240 seconds)
2020-12-06 10:56:26 +0100heatsink(~heatsink@2600:1700:bef1:5e10:c0d0:4847:f8e3:32ca) (Ping timeout: 264 seconds)
2020-12-06 10:58:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-06 10:59:36 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-06 11:01:02 +0100fendor(~fendor@77.119.129.145.wireless.dyn.drei.com)
2020-12-06 11:03:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-06 11:04:18 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-06 11:04:44 +0100 <tomjaguarpaw> https://hackage.haskell.org/package/roundtrip https://hackage.haskell.org/package/roundtrip-aeson and https://hackage.haskell.org/package/roundtrip-string, presumably
2020-12-06 11:04:59 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
2020-12-06 11:07:18 +0100Amras(~Amras@unaffiliated/amras)
2020-12-06 11:08:24 +0100rprije(~rprije@14-201-170-17.tpgi.com.au) (Ping timeout: 256 seconds)
2020-12-06 11:08:48 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 256 seconds)
2020-12-06 11:09:13 +0100jchia(~jchia@58.32.35.91) (Read error: Connection reset by peer)
2020-12-06 11:10:46 +0100wei2912(~wei2912@unaffiliated/wei2912)
2020-12-06 11:11:49 +0100jchia(~jchia@45.32.62.73)
2020-12-06 11:12:50 +0100jchia(~jchia@45.32.62.73) (Remote host closed the connection)
2020-12-06 11:13:11 +0100wei2912(~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
2020-12-06 11:13:29 +0100jchia(~jchia@45.32.62.73)
2020-12-06 11:14:31 +0100jchia(~jchia@45.32.62.73) (Remote host closed the connection)
2020-12-06 11:14:33 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2020-12-06 11:15:17 +0100jchia(~jchia@45.32.62.73)
2020-12-06 11:16:18 +0100jchia(~jchia@45.32.62.73) (Remote host closed the connection)
2020-12-06 11:17:11 +0100jchia(~jchia@58.32.35.91)
2020-12-06 11:23:51 +0100knupfer(~Thunderbi@200116b82ce66f00d0a0befffe0a90d9.dip.versatel-1u1.de)
2020-12-06 11:23:55 +0100knupfer(~Thunderbi@200116b82ce66f00d0a0befffe0a90d9.dip.versatel-1u1.de) (Client Quit)
2020-12-06 11:24:10 +0100knupfer(~Thunderbi@i59F7FFAD.versanet.de)
2020-12-06 11:24:51 +0100jedws(~jedws@121.209.181.215)
2020-12-06 11:28:35 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-06 11:28:36 +0100tensegrist(b28016fd@178.128.22.253)
2020-12-06 11:28:56 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-12-06 11:29:23 +0100christo(~chris@81.96.113.213)
2020-12-06 11:30:48 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Quit: mputz)
2020-12-06 11:31:06 +0100alp(~alp@88.126.45.36)
2020-12-06 11:34:51 +0100LKoen(~LKoen@73.174.9.109.rev.sfr.net)
2020-12-06 11:35:43 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-06 11:36:29 +0100tintinthong(3c35076a@60.53.7.106)
2020-12-06 11:36:29 +0100Amras(~Amras@unaffiliated/amras) (Remote host closed the connection)
2020-12-06 11:36:49 +0100justinthong(~justintho@2001:e68:5442:b278:d500:5960:c253:e4cd)
2020-12-06 11:36:59 +0100 <justinthong> hi @tintinthong
2020-12-06 11:37:20 +0100justinthong(~justintho@2001:e68:5442:b278:d500:5960:c253:e4cd) (Remote host closed the connection)
2020-12-06 11:38:44 +0100Gianluca250888(~Username@host-82-60-47-183.retail.telecomitalia.it)
2020-12-06 11:38:59 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Quit: WeeChat 3.0)
2020-12-06 11:46:11 +0100Gianluca250888(~Username@host-82-60-47-183.retail.telecomitalia.it) (Quit: Going offline, see ya! (www.adiirc.com))
2020-12-06 11:49:33 +0100tintinthong(3c35076a@60.53.7.106) (Remote host closed the connection)
2020-12-06 11:49:33 +0100alp(~alp@88.126.45.36) (Quit: Leaving)
2020-12-06 11:50:42 +0100alp(~alp@2a01:e0a:58b:4920:a876:242c:b63f:f4da)
2020-12-06 11:51:32 +0100wei2912(~wei2912@unaffiliated/wei2912)
2020-12-06 11:52:18 +0100alp(~alp@2a01:e0a:58b:4920:a876:242c:b63f:f4da) (Client Quit)
2020-12-06 11:52:23 +0100alp-(~alp@163.172.83.213)
2020-12-06 11:52:42 +0100alp-alp
2020-12-06 11:54:05 +0100Amras(~Amras@unaffiliated/amras)
2020-12-06 11:55:19 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-06 11:55:33 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
2020-12-06 12:00:38 +0100alp(~alp@163.172.83.213) (Read error: Connection reset by peer)
2020-12-06 12:00:56 +0100alp(~alp@163.172.83.213)
2020-12-06 12:08:27 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2020-12-06 12:09:53 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-12-06 12:09:58 +0100livvy(~livvy@gateway/tor-sasl/livvy)
2020-12-06 12:11:25 +0100maralorn(maralornma@gateway/shell/matrix.org/x-qiuviuxllrzzhqdo) (Ping timeout: 240 seconds)
2020-12-06 12:11:36 +0100jesser[m](jessermatr@gateway/shell/matrix.org/x-sjfbluokfqydziao) (Ping timeout: 246 seconds)
2020-12-06 12:11:36 +0100sm[m](simonmicma@gateway/shell/matrix.org/x-pnthkezdxbpznobc) (Ping timeout: 246 seconds)
2020-12-06 12:11:36 +0100hyiltiz-M(hyiltizkde@gateway/shell/kde/matrix/x-antijvnmdrsgjnly) (Ping timeout: 246 seconds)
2020-12-06 12:11:36 +0100ComaGrayce[m](commagrays@gateway/shell/matrix.org/x-rgzepedcrcqimjdb) (Ping timeout: 246 seconds)
2020-12-06 12:11:41 +0100psamim(samimpmatr@gateway/shell/matrix.org/x-krmmfkjnfdrrbytd) (Ping timeout: 244 seconds)
2020-12-06 12:11:41 +0100rednaZ[m](r3dnazmatr@gateway/shell/matrix.org/x-ucrtzpurrvrdgbsf) (Ping timeout: 244 seconds)
2020-12-06 12:11:45 +0100aloiscochard[m](aloiscocha@gateway/shell/matrix.org/x-pkhjmcxyixjezljv) (Ping timeout: 240 seconds)
2020-12-06 12:11:57 +0100michaelpj(michaelpjm@gateway/shell/matrix.org/x-gxhxrzrfmkyfygya) (Ping timeout: 246 seconds)
2020-12-06 12:11:57 +0100wi[m](w1gzmatrix@gateway/shell/matrix.org/x-hvilmvtprutlggan) (Ping timeout: 246 seconds)
2020-12-06 12:11:57 +0100alexfmpe(alexfmpema@gateway/shell/matrix.org/x-dharghhrczrbdwpt) (Ping timeout: 246 seconds)
2020-12-06 12:11:58 +0100PotatoHatsue(berbermanp@gateway/shell/matrix.org/x-pgpiepqlttziknti) (Ping timeout: 260 seconds)
2020-12-06 12:12:01 +0100rab24ack[m](rab24ackma@gateway/shell/matrix.org/x-auwpzeruqhjinztt) (Ping timeout: 268 seconds)
2020-12-06 12:12:04 +0100pqwy[m](pqwymatrix@gateway/shell/matrix.org/x-lqkhfpwghttgzcww) (Ping timeout: 240 seconds)
2020-12-06 12:12:05 +0100siraben(sirabenmat@gateway/shell/matrix.org/x-zqeievqiualvamus) (Ping timeout: 240 seconds)
2020-12-06 12:12:07 +0100lambdaclan(lambdaclan@gateway/shell/matrix.org/x-bcmaxmksxtqadatv) (Ping timeout: 244 seconds)
2020-12-06 12:12:07 +0100Hanma[m](hanmamatri@gateway/shell/matrix.org/x-gsuncxeehyodgkwd) (Ping timeout: 244 seconds)
2020-12-06 12:12:07 +0100kadoban(kadobanmat@gateway/shell/matrix.org/x-smliontovhsjofmu) (Ping timeout: 244 seconds)
2020-12-06 12:12:07 +0100jtojnar(jtojnarmat@gateway/shell/matrix.org/x-odbepyltoezqkxgi) (Ping timeout: 244 seconds)
2020-12-06 12:12:12 +0100jeffcasavant[m](jeffcasava@gateway/shell/matrix.org/x-ocdaojbqtvzkcwus) (Ping timeout: 244 seconds)
2020-12-06 12:12:12 +0100alephu5[m](alephu5mat@gateway/shell/matrix.org/x-aercnrduxrfbvkwy) (Ping timeout: 244 seconds)
2020-12-06 12:12:12 +0100mikr[m](mikrdavral@gateway/shell/matrix.org/x-knmpvjrudfvaghww) (Ping timeout: 244 seconds)
2020-12-06 12:12:12 +0100patier[m](patiermatr@gateway/shell/matrix.org/x-vlhbzdwxhpzvyynq) (Ping timeout: 244 seconds)
2020-12-06 12:12:12 +0100tersetears[m](tersetears@gateway/shell/matrix.org/x-gskureyyzbunuhmw) (Ping timeout: 244 seconds)
2020-12-06 12:12:13 +0100camlriot42(camlriotma@gateway/shell/matrix.org/x-qnrookqqtxtksytk) (Ping timeout: 244 seconds)
2020-12-06 12:12:17 +0100lnxw37d4(lnxw37d4ma@gateway/shell/matrix.org/x-dlqnhxhuabqsxfuc) (Ping timeout: 246 seconds)
2020-12-06 12:12:18 +0100domenkozar[m](domenkozar@NixOS/user/domenkozar) (Ping timeout: 246 seconds)
2020-12-06 12:12:18 +0100srid(sridmatrix@gateway/shell/matrix.org/x-ihrygjdlnbozwtjk) (Ping timeout: 246 seconds)
2020-12-06 12:12:18 +0100dyniec[m](dyniecmatr@gateway/shell/matrix.org/x-axzvldhyxjesbgkx) (Ping timeout: 246 seconds)
2020-12-06 12:12:18 +0100TekShifter[m](tekshifter@gateway/shell/matrix.org/x-pjjmyvioalvivqgb) (Ping timeout: 246 seconds)
2020-12-06 12:12:32 +0100theduke(thedukem1@gateway/shell/matrix.org/x-sexqsjdnjitytpbp) (Ping timeout: 260 seconds)
2020-12-06 12:12:32 +0100boistordu(boistordum@gateway/shell/matrix.org/x-qisdfgjhwtgbhgjm) (Ping timeout: 260 seconds)
2020-12-06 12:12:32 +0100itai33[m](itai33matr@gateway/shell/matrix.org/x-hbawltlorgahcecl) (Ping timeout: 260 seconds)
2020-12-06 12:12:32 +0100dominicusin[m](dominicusi@gateway/shell/matrix.org/x-vcoaftteusesgvai) (Ping timeout: 260 seconds)
2020-12-06 12:12:38 +0100andreabedini[m](andreabedi@gateway/shell/matrix.org/x-lbginztlvjpljpan) (Ping timeout: 268 seconds)
2020-12-06 12:12:38 +0100johnnyboy[m](gifumatrix@gateway/shell/matrix.org/x-vacyeklvxcuwrdpb) (Ping timeout: 268 seconds)
2020-12-06 12:12:38 +0100jkaye[m](jkayematri@gateway/shell/matrix.org/x-skotoydfoufsqldx) (Ping timeout: 268 seconds)
2020-12-06 12:12:38 +0100ThaEwat(thaewraptm@gateway/shell/matrix.org/x-hwkysomttqzqctxo) (Ping timeout: 268 seconds)
2020-12-06 12:12:38 +0100CRTified[m](schnecfkru@gateway/shell/matrix.org/x-pojsifoicrnfbiru) (Ping timeout: 268 seconds)
2020-12-06 12:12:38 +0100themsay[m](themsaymat@gateway/shell/matrix.org/x-ntvrkrbtrqlxxjfp) (Ping timeout: 268 seconds)
2020-12-06 12:12:38 +0100doct0rhu[m](doct0rhumo@gateway/shell/matrix.org/x-tjezwjmljqaegekd) (Ping timeout: 268 seconds)
2020-12-06 12:12:38 +0100zerstroyer[m](zerstroyer@gateway/shell/matrix.org/x-uvziduqqpveqecsi) (Ping timeout: 268 seconds)
2020-12-06 12:12:43 +0100hsiktas[m](hsiktasmat@gateway/shell/matrix.org/x-nbwomcltkxmmxmak) (Ping timeout: 244 seconds)
2020-12-06 12:12:44 +0100fgaz(fgazmatrix@gateway/shell/matrix.org/x-urmkblempjoidfpt) (Ping timeout: 240 seconds)
2020-12-06 12:13:00 +0100berberman[T](berberma4@gateway/shell/matrix.org/x-frqpzbxlqadgittv) (Ping timeout: 246 seconds)
2020-12-06 12:13:00 +0100iinuwa(iinuwamatr@gateway/shell/matrix.org/x-ipassifbnrgnzhtq) (Ping timeout: 246 seconds)
2020-12-06 12:13:07 +0100psydruid(psydruidma@gateway/shell/matrix.org/x-xrerkddykdfqobox) (Ping timeout: 260 seconds)
2020-12-06 12:13:09 +0100mang0[m](dea223matr@gateway/shell/matrix.org/x-mptmksumjgntagzy) (Ping timeout: 244 seconds)
2020-12-06 12:13:14 +0100BenSima[m](bensimatim@gateway/shell/matrix.org/x-umqofddrxzxxxopi) (Ping timeout: 244 seconds)
2020-12-06 12:13:15 +0100unclechu(unclechuma@gateway/shell/matrix.org/x-pgxospnfpnngufam) (Ping timeout: 268 seconds)
2020-12-06 12:13:21 +0100drozdziak1(drozdziak1@gateway/shell/matrix.org/x-yctuipwfnhbsurol) (Ping timeout: 246 seconds)
2020-12-06 12:13:41 +0100Ericson2314(ericson231@gateway/shell/matrix.org/x-tpaglddbbaarshkp) (Ping timeout: 246 seconds)
2020-12-06 12:13:42 +0100falling-edge[m](falling-ed@gateway/shell/matrix.org/x-raeghvrbhfpgtupx) (Ping timeout: 260 seconds)
2020-12-06 12:14:33 +0100Cthalupa(~cthulhu@47.186.47.75) (Ping timeout: 260 seconds)
2020-12-06 12:15:42 +0100Cthalupa(~cthulhu@47.186.47.75)
2020-12-06 12:15:50 +0100knupfer(~Thunderbi@i59F7FFAD.versanet.de) (Ping timeout: 256 seconds)
2020-12-06 12:18:22 +0100Jonkimi727406120(~Jonkimi@223.213.165.31)
2020-12-06 12:18:33 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
2020-12-06 12:22:07 +0100Cthalupa(~cthulhu@47.186.47.75) (Ping timeout: 265 seconds)
2020-12-06 12:22:37 +0100Cthalupa(~cthulhu@47.186.47.75)
2020-12-06 12:22:43 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2020-12-06 12:22:50 +0100ericsagnes(~ericsagne@2405:6580:0:5100:cd57:3434:c0d0:b946) (Ping timeout: 264 seconds)
2020-12-06 12:23:00 +0100pavonia(~user@unaffiliated/siracusa) (Ping timeout: 272 seconds)
2020-12-06 12:24:05 +0100urek(~urek@2804:7f1:e10a:a8d:dc47:5170:f5a9:5634)
2020-12-06 12:26:04 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Read error: Connection reset by peer)
2020-12-06 12:26:15 +0100hyiltiz-M(hyiltizkde@gateway/shell/kde/matrix/x-geyejkuncnhxmpdr)
2020-12-06 12:26:23 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
2020-12-06 12:26:34 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2020-12-06 12:27:47 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-12-06 12:28:05 +0100Jonkimi727406120(~Jonkimi@223.213.165.31) (Ping timeout: 240 seconds)
2020-12-06 12:28:32 +0100ComaGrayce[m](commagrays@gateway/shell/matrix.org/x-wnllrsfagmchmmsu)
2020-12-06 12:28:51 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-12-06 12:28:58 +0100sm[m](simonmicma@gateway/shell/matrix.org/x-tslfcdwovccelfgc)
2020-12-06 12:29:15 +0100michaelpj(michaelpjm@gateway/shell/matrix.org/x-xwhhblcpkqxivscq)
2020-12-06 12:29:25 +0100maralorn(maralornma@gateway/shell/matrix.org/x-wfwnvstmnifltoqx)
2020-12-06 12:29:36 +0100berberman[T](berberma4@gateway/shell/matrix.org/x-vsysrbilolopjofm)
2020-12-06 12:29:36 +0100alexfmpe(alexfmpema@gateway/shell/matrix.org/x-gowqrzcegnrjuszh)
2020-12-06 12:29:40 +0100iinuwa(iinuwamatr@gateway/shell/matrix.org/x-lmbenmarrebbdhru)
2020-12-06 12:30:30 +0100hexfive(~hexfive@50-47-142-195.evrt.wa.frontiernet.net) (Quit: i must go. my people need me.)
2020-12-06 12:30:40 +0100Ericson2314(ericson231@gateway/shell/matrix.org/x-gsevokzxekchjacg)
2020-12-06 12:31:39 +0100Varis(~Tadas@unaffiliated/varis) (Read error: Connection reset by peer)
2020-12-06 12:31:46 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-06 12:31:47 +0100jesser[m](jessermatr@gateway/shell/matrix.org/x-fzvpwsyxxfsxfljc)
2020-12-06 12:32:16 +0100rednaZ[m](r3dnazmatr@gateway/shell/matrix.org/x-hfgocjsopdawrtek)
2020-12-06 12:32:39 +0100domenkozar[m](domenkozar@NixOS/user/domenkozar)
2020-12-06 12:32:51 +0100fgaz(fgazmatrix@gateway/shell/matrix.org/x-yxipcpeduqjuvcow)
2020-12-06 12:33:08 +0100dyniec[m](dyniecmatr@gateway/shell/matrix.org/x-qfhwjklxapmkgusb)
2020-12-06 12:33:17 +0100TekShifter[m](tekshifter@gateway/shell/matrix.org/x-whcsjptmuuxhmcff)
2020-12-06 12:33:26 +0100srid(sridmatrix@gateway/shell/matrix.org/x-bgcumtwxpughvykl)
2020-12-06 12:34:15 +0100ericsagnes(~ericsagne@2405:6580:0:5100:5e7a:6b93:86d8:5cb1)
2020-12-06 12:34:22 +0100psamim(samimpmatr@gateway/shell/matrix.org/x-flynuotvhbmrlxjh)
2020-12-06 12:35:23 +0100wi[m](w1gzmatrix@gateway/shell/matrix.org/x-vhbfmwpsvmrdtwkw)
2020-12-06 12:37:09 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 246 seconds)
2020-12-06 12:37:16 +0100jtojnar(jtojnarmat@gateway/shell/matrix.org/x-fmmuispbmxgnkzny)
2020-12-06 12:37:22 +0100pqwy[m](pqwymatrix@gateway/shell/matrix.org/x-vnqaotfsxzdmunat)
2020-12-06 12:37:33 +0100pavonia(~user@unaffiliated/siracusa)
2020-12-06 12:37:35 +0100patier[m](patiermatr@gateway/shell/matrix.org/x-vnsjzoxsrzoienfx)
2020-12-06 12:37:38 +0100aloiscochard[m](aloiscocha@gateway/shell/matrix.org/x-jabkszfxgnkdhvro)
2020-12-06 12:37:51 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-06 12:37:58 +0100tersetears[m](tersetears@gateway/shell/matrix.org/x-djplfbkhyixflrhq)
2020-12-06 12:37:58 +0100borne(~fritjof@200116b8649d08009ba1d43461655289.dip.versatel-1u1.de)
2020-12-06 12:38:03 +0100siraben(sirabenmat@gateway/shell/matrix.org/x-lezecatojskrdazl)
2020-12-06 12:38:37 +0100kadoban(kadobanmat@gateway/shell/matrix.org/x-kvlzxytjycizhbef)
2020-12-06 12:38:51 +0100Varis(~Tadas@unaffiliated/varis)
2020-12-06 12:40:19 +0100unclechu(unclechuma@gateway/shell/matrix.org/x-twjgulyebrjbbbcd)
2020-12-06 12:41:06 +0100BenSima[m](bensimatim@gateway/shell/matrix.org/x-gsvyurbvvhccmgvr)
2020-12-06 12:41:31 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2020-12-06 12:41:35 +0100jedws(~jedws@121.209.181.215) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-06 12:41:52 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2020-12-06 12:42:00 +0100rab24ack[m](rab24ackma@gateway/shell/matrix.org/x-xexybdvzbhtsmpoc)
2020-12-06 12:42:06 +0100camlriot42(camlriotma@gateway/shell/matrix.org/x-oczhhosnsfdjctzy)
2020-12-06 12:42:20 +0100mang0[m](dea223matr@gateway/shell/matrix.org/x-neesfcqailnhhnob)
2020-12-06 12:42:21 +0100lambdaclan(lambdaclan@gateway/shell/matrix.org/x-sbddbzdmvxmmvpbc)
2020-12-06 12:42:22 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:7588:30bb:c072:52a)
2020-12-06 12:42:27 +0100Hanma[m](hanmamatri@gateway/shell/matrix.org/x-xirqpfxzlgorfgfx)
2020-12-06 12:42:37 +0100alephu5[m](alephu5mat@gateway/shell/matrix.org/x-sazbrzymzspemrdm)
2020-12-06 12:42:41 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 244 seconds)
2020-12-06 12:42:43 +0100livvy(~livvy@gateway/tor-sasl/livvy) (Ping timeout: 240 seconds)
2020-12-06 12:43:03 +0100lnxw37d4(lnxw37d4ma@gateway/shell/matrix.org/x-cfpajotnlvpvilyo)
2020-12-06 12:43:17 +0100jeffcasavant[m](jeffcasava@gateway/shell/matrix.org/x-cmekccjvauwyyqfu)
2020-12-06 12:43:39 +0100mikr[m](mikrdavral@gateway/shell/matrix.org/x-rozxfutgcwhtyosh)
2020-12-06 12:43:42 +0100themsay[m](themsaymat@gateway/shell/matrix.org/x-cjdoxrvdegoiyqvf)
2020-12-06 12:43:55 +0100PotatoHatsue(berbermanp@gateway/shell/matrix.org/x-zegdpocllywoosgz)
2020-12-06 12:44:12 +0100hsiktas[m](hsiktasmat@gateway/shell/matrix.org/x-glefifefdwscjcqe)
2020-12-06 12:44:33 +0100doct0rhu[m](doct0rhumo@gateway/shell/matrix.org/x-sarufxwodykorttc)
2020-12-06 12:44:57 +0100Jonkimi727406120(~Jonkimi@223.213.165.31)
2020-12-06 12:45:06 +0100zerstroyer[m](zerstroyer@gateway/shell/matrix.org/x-sagppnyewsjacbwk)
2020-12-06 12:45:08 +0100whatisRT(~whatisRT@2002:5b41:6a33:0:5e3:170b:26c2:19e9)
2020-12-06 12:46:01 +0100andreabedini[m](andreabedi@gateway/shell/matrix.org/x-hjtxhxhwobrdxypa)
2020-12-06 12:46:38 +0100johnnyboy[m](gifumatrix@gateway/shell/matrix.org/x-mpuodigaaerwmayk)
2020-12-06 12:46:49 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:7588:30bb:c072:52a) (Ping timeout: 244 seconds)
2020-12-06 12:46:55 +0100drozdziak1(drozdziak1@gateway/shell/matrix.org/x-kopfdlgfyhfmispl)
2020-12-06 12:46:59 +0100psydruid(psydruidma@gateway/shell/matrix.org/x-strapbsmwdglzvet)
2020-12-06 12:47:01 +0100ThaEwat(thaewraptm@gateway/shell/matrix.org/x-ufbnzjraelhohfix)
2020-12-06 12:47:03 +0100__monty__(~toonn@unaffiliated/toonn)
2020-12-06 12:47:24 +0100itai33[m](itai33matr@gateway/shell/matrix.org/x-lwyfghxaoeqylvet)
2020-12-06 12:48:20 +0100CRTified[m](schnecfkru@gateway/shell/matrix.org/x-vrozfuovpxunwnos)
2020-12-06 12:48:30 +0100jkaye[m](jkayematri@gateway/shell/matrix.org/x-mmksapnwkzwrlfaf)
2020-12-06 12:48:40 +0100boistordu(boistordum@gateway/shell/matrix.org/x-dtootmkcjgdppcmk)
2020-12-06 12:49:18 +0100falling-edge[m](falling-ed@gateway/shell/matrix.org/x-rfbansvrujteeerw)
2020-12-06 12:49:20 +0100dominicusin[m](dominicusi@gateway/shell/matrix.org/x-cmzyfydfwudbfyjq)
2020-12-06 12:49:45 +0100theduke(thedukem1@gateway/shell/matrix.org/x-phrgqvuukcgbupcm)
2020-12-06 12:52:59 +0100heatsink(~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183)
2020-12-06 12:54:38 +0100darjeeling_(~darjeelin@122.245.218.196)
2020-12-06 12:55:21 +0100Jonkimi727406120(~Jonkimi@223.213.165.31) (Ping timeout: 246 seconds)
2020-12-06 12:55:24 +0100drbean(~drbean@TC210-63-209-94.static.apol.com.tw)
2020-12-06 12:56:30 +0100tensegrist(b28016fd@178.128.22.253) (Remote host closed the connection)
2020-12-06 12:57:35 +0100heatsink(~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183) (Ping timeout: 244 seconds)
2020-12-06 12:57:53 +0100clever_(~clever@142.68.248.92) (Changing host)
2020-12-06 12:57:53 +0100clever_(~clever@NixOS/user/clever)
2020-12-06 12:57:57 +0100clever_clever
2020-12-06 13:00:59 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-06 13:02:18 +0100livvy(~livvy@gateway/tor-sasl/livvy)
2020-12-06 13:03:21 +0100borne(~fritjof@200116b8649d08009ba1d43461655289.dip.versatel-1u1.de) (Ping timeout: 244 seconds)
2020-12-06 13:05:25 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2020-12-06 13:07:29 +0100 <nf> cross-post from #haskell-lens: if i have a getter and a setter for Set ( folded and sets Set.map respectively), can i turn them into a single "thing" that i can use (^..) and (%~) on? (preferably using microlens)
2020-12-06 13:09:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-06 13:09:31 +0100jedws(~jedws@121.209.181.215)
2020-12-06 13:11:03 +0100 <kuribas> nf: you want to traverse the Set?
2020-12-06 13:11:42 +0100 <nf> i don't know
2020-12-06 13:11:51 +0100 <nf> i want to combine these two actions into one "thing"
2020-12-06 13:12:00 +0100 <nf> is that a traversal? is there something intermediate?
2020-12-06 13:13:02 +0100 <kuribas> not sure that satisfies the lens laws...
2020-12-06 13:14:45 +0100 <kuribas> https://hackage.haskell.org/package/lens-4.16/docs/Data-Set-Lens.html
2020-12-06 13:15:53 +0100infinity0(~infinity0@freenet/developer/infinity0)
2020-12-06 13:15:55 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
2020-12-06 13:15:59 +0100 <kuribas> it looks like setmapped is what you want
2020-12-06 13:16:25 +0100 <nf> that's only the setter part, not the getter
2020-12-06 13:16:32 +0100 <nf> "Sadly, you can't create a valid Traversal for a Set"
2020-12-06 13:16:43 +0100 <kuribas> indeed
2020-12-06 13:17:00 +0100nfchecks the Traversal laws
2020-12-06 13:17:13 +0100livvy(~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection)
2020-12-06 13:17:14 +0100nowhere_man(~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155)
2020-12-06 13:17:47 +0100livvy(~livvy@gateway/tor-sasl/livvy)
2020-12-06 13:18:00 +0100 <nf> i guess the issue is the lack of an Ord constraint
2020-12-06 13:18:14 +0100 <nf> but i'm working with a single known type so maybe i can circumvent that
2020-12-06 13:18:26 +0100 <kuribas> no, the issue is that the set can shrink when mapping it.
2020-12-06 13:18:47 +0100 <kuribas> you can make an unlawful traversal though...
2020-12-06 13:20:04 +0100 <nf> ooh and that violates the second law because some effects could be executed less times than required? i think i get it
2020-12-06 13:24:17 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-06 13:25:27 +0100paolo|out(~paolo|out@185.163.110.125) (Remote host closed the connection)
2020-12-06 13:28:57 +0100 <kuribas> "The laws for a Traversal t follow from the laws for Traversable as stated in "The Essence of the Iterator Pattern"."
2020-12-06 13:29:04 +0100 <kuribas> fmap (t f) . t g ≡ getCompose . t (Compose . fmap f . g)
2020-12-06 13:29:13 +0100 <kuribas> "One consequence of this requirement is that a Traversal needs to leave the same number of elements as a candidate for subsequent Traversal that it started with. Another testament to the strength of these laws is that the caveat expressed in section 5.5 of the "Essence of the Iterator Pattern" about exotic Traversable instances that traverse the same entry multiple times was actually already ruled out by the second law
2020-12-06 13:29:13 +0100 <kuribas> paper!"
2020-12-06 13:29:39 +0100 <kuribas> http://hackage.haskell.org/package/lens-4.19.2/docs/Control-Lens-Traversal.html
2020-12-06 13:31:36 +0100 <nf> i just read https://artyom.me/lens-over-tea-2#traversal-laws, i'll read that now
2020-12-06 13:34:15 +0100joaj(~joaj@2001:818:e326:8200:9fc:6bde:c18a:1771)
2020-12-06 13:34:50 +0100joaj(~joaj@2001:818:e326:8200:9fc:6bde:c18a:1771) (Client Quit)
2020-12-06 13:35:44 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 240 seconds)
2020-12-06 13:35:59 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-06 13:36:31 +0100ironmarx(~ironmarx@178.239.168.171)
2020-12-06 13:37:42 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
2020-12-06 13:38:02 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-06 13:39:12 +0100Jonkimi727406120(~Jonkimi@223.213.165.31)
2020-12-06 13:39:49 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
2020-12-06 13:43:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-06 13:43:48 +0100 <nf> is this proved somewhere? that the 5.5 caveat was already excluded by the second law?
2020-12-06 13:44:00 +0100whatisRT(~whatisRT@2002:5b41:6a33:0:5e3:170b:26c2:19e9) (Ping timeout: 246 seconds)
2020-12-06 13:44:35 +0100wwwww(~wwwww@unaffiliated/wwwww) (Ping timeout: 272 seconds)
2020-12-06 13:45:10 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-06 13:45:37 +0100wwwww(~wwwww@unaffiliated/wwwww)
2020-12-06 13:47:17 +0100 <nf> i guess if i don't care about being lawful i can always do fmap Set.fromList . traverse f . Set.toList
2020-12-06 13:51:16 +0100Guest34720(~chris@bras-vprn-nwmkon8540w-lp130-10-142-112-210-136.dsl.bell.ca) (Ping timeout: 240 seconds)
2020-12-06 13:51:20 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-12-06 13:52:26 +0100 <kuribas> yes
2020-12-06 13:57:04 +0100jmchael(~jmchael@87.112.60.168)
2020-12-06 14:02:04 +0100christo(~chris@81.96.113.213)
2020-12-06 14:02:09 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-06 14:04:05 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-06 14:04:43 +0100incertia(~incertia@d4-50-26-103.nap.wideopenwest.com) (Ping timeout: 246 seconds)
2020-12-06 14:05:16 +0100fendor_(~fendor@77.119.131.148.wireless.dyn.drei.com)
2020-12-06 14:06:36 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2020-12-06 14:07:52 +0100fendor(~fendor@77.119.129.145.wireless.dyn.drei.com) (Ping timeout: 256 seconds)
2020-12-06 14:08:52 +0100Rudd0(~Rudd0@185.189.115.98) (Remote host closed the connection)
2020-12-06 14:11:57 +0100kuribas(~user@ptr-25vy0i7m6krsx7uawj2.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2020-12-06 14:16:23 +0100livvy(~livvy@gateway/tor-sasl/livvy) (Ping timeout: 240 seconds)
2020-12-06 14:17:51 +0100bliminse(~bliminse@host86-134-63-68.range86-134.btcentralplus.com) (Read error: Connection reset by peer)
2020-12-06 14:18:36 +0100neiluj(~jco@91-167-203-101.subs.proxad.net)
2020-12-06 14:18:36 +0100neiluj(~jco@91-167-203-101.subs.proxad.net) (Changing host)
2020-12-06 14:18:36 +0100neiluj(~jco@unaffiliated/neiluj)
2020-12-06 14:23:43 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-06 14:27:02 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
2020-12-06 14:27:27 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
2020-12-06 14:28:39 +0100Kaivo(~Kaivo@104-200-86-99.mc.derytele.com)
2020-12-06 14:33:48 +0100opFez(opFez@gateway/vpn/mullvad/opfez)
2020-12-06 14:36:25 +0100Neuromancer(~Neuromanc@unaffiliated/neuromancer) (Ping timeout: 240 seconds)
2020-12-06 14:36:42 +0100sagax(~sagax_nb@213.138.71.146) (Remote host closed the connection)
2020-12-06 14:37:56 +0100jedai(~jedai@lfbn-dij-1-708-251.w90-100.abo.wanadoo.fr)
2020-12-06 14:37:56 +0100jedai(~jedai@lfbn-dij-1-708-251.w90-100.abo.wanadoo.fr) (Client Quit)
2020-12-06 14:40:21 +0100Neo--(~neo@188-230-138-83.dynamic.t-2.net)
2020-12-06 14:41:22 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:7588:30bb:c072:52a)
2020-12-06 14:42:26 +0100Neuromancer(~Neuromanc@unaffiliated/neuromancer)
2020-12-06 14:47:05 +0100ambidextrose(~fut-learn@mobile-166-170-48-20.mycingular.net)
2020-12-06 14:47:10 +0100opFez(opFez@gateway/vpn/mullvad/opfez) (Quit: leaving)
2020-12-06 14:48:54 +0100 <dminuoso> Mmm. Bidrectional pattern synonyms or prisms...
2020-12-06 14:49:08 +0100hpc(~juzz@ip98-169-35-13.dc.dc.cox.net)
2020-12-06 14:49:13 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-06 14:49:22 +0100 <dminuoso> Seems like prisms are just more potent since you parametrize your code over arbitrary prisms.
2020-12-06 14:49:27 +0100drbean(~drbean@TC210-63-209-94.static.apol.com.tw) (Ping timeout: 260 seconds)
2020-12-06 14:49:39 +0100 <dminuoso> You *can
2020-12-06 14:50:44 +0100pjb(~t@2a01cb04063ec5000d865f68245bcc45.ipv6.abo.wanadoo.fr)
2020-12-06 14:51:38 +0100 <[exa]> prisms!
2020-12-06 14:51:42 +0100 <__monty__> Is there another name for `concatWith :: (a -> a -> a) -> t a -> a` as a generalisation of mconcat?
2020-12-06 14:51:48 +0100HarveyPwca(~HarveyPwc@c-98-220-98-201.hsd1.il.comcast.net) (Quit: Leaving)
2020-12-06 14:51:54 +0100Jonkimi727406120(~Jonkimi@223.213.165.31) (Ping timeout: 246 seconds)
2020-12-06 14:52:36 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:7588:30bb:c072:52a) (Remote host closed the connection)
2020-12-06 14:52:42 +0100zangi(~azure@180.247.190.63)
2020-12-06 14:52:46 +0100 <__monty__> Oh, that's just foldr1, isn't it?
2020-12-06 14:53:52 +0100 <dminuoso> Not quite
2020-12-06 14:54:04 +0100 <dminuoso> foldr is the generalization
2020-12-06 14:54:17 +0100 <dminuoso> With mconcat you have the implicit argument of foldr already
2020-12-06 14:54:20 +0100heatsink(~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183)
2020-12-06 14:54:22 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 272 seconds)
2020-12-06 14:54:37 +0100jedws(~jedws@121.209.181.215) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-06 14:54:41 +0100 <dminuoso> So a true generalizatoin of mconcat would be `concatWith :: (a -> a -> a) -> a -> t a -> a`
2020-12-06 14:54:43 +0100 <dminuoso> % :t foldr
2020-12-06 14:54:43 +0100 <yahb> dminuoso: Foldable t => (a -> b -> b) -> b -> t a -> b
2020-12-06 14:55:06 +0100 <dminuoso> (because what does mconcat do on an empty list?)
2020-12-06 14:55:07 +0100 <zangi> > map (+1) [1..10]
2020-12-06 14:55:09 +0100 <lambdabot> [2,3,4,5,6,7,8,9,10,11]
2020-12-06 14:55:17 +0100 <zangi> @
2020-12-06 14:55:27 +0100 <zangi> @help
2020-12-06 14:55:27 +0100 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
2020-12-06 14:55:33 +0100 <dminuoso> [exa]: Yeah Im thinking prisms too.
2020-12-06 14:55:36 +0100 <zangi> @list
2020-12-06 14:55:36 +0100 <lambdabot> What module? Try @listmodules for some ideas.
2020-12-06 14:55:46 +0100 <zangi> @help list
2020-12-06 14:55:47 +0100 <lambdabot> list [module|command]. Show commands for [module] or the module providing [command].
2020-12-06 14:55:47 +0100 <__monty__> dminuoso: Yep, you're right, I did realize that when writing it. Partiality is why I usually pretend foldr1 doesn't exist.
2020-12-06 14:55:56 +0100 <zangi> list
2020-12-06 14:55:56 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:7588:30bb:c072:52a)
2020-12-06 14:56:09 +0100 <dminuoso> zangi: You can chat with lambdabot in a private message/query
2020-12-06 14:56:17 +0100 <dminuoso> For experimentation
2020-12-06 14:56:40 +0100 <zangi> dminuoso: how? I'm new to irc
2020-12-06 14:56:52 +0100 <dminuoso> zangi: Which IRC client do you use?
2020-12-06 14:56:59 +0100 <zangi> weechat
2020-12-06 14:57:01 +0100 <xsperry> try /query lambdabot
2020-12-06 14:57:57 +0100 <__monty__> dminuoso: In this case though I need a different base case for an empty list than a full list, `[] -> S.empty; as -> foldr1 S.intersect as`
2020-12-06 14:58:25 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 264 seconds)
2020-12-06 14:58:38 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-12-06 14:58:38 +0100zangi(~azure@180.247.190.63) (Read error: Connection reset by peer)
2020-12-06 14:58:50 +0100heatsink(~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183) (Ping timeout: 264 seconds)
2020-12-06 14:59:04 +0100 <dminuoso> __monty__: That's no longer mconcat then.
2020-12-06 14:59:10 +0100zangi(~azure@103.154.230.250)
2020-12-06 15:00:56 +0100jchia(~jchia@58.32.35.91) (Read error: Connection reset by peer)
2020-12-06 15:01:02 +0100 <__monty__> Yeah, my mistaken reasoning was "Hmm, I want to mconcat this list of Sets with intersection."
2020-12-06 15:01:26 +0100jchia(~jchia@58.32.35.91)
2020-12-06 15:02:16 +0100toast52(97c0a219@151.192.162.25)
2020-12-06 15:02:26 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-12-06 15:02:46 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-12-06 15:02:47 +0100XR0DRiG0(~Farinhoca@softbank126057187159.bbtec.net) (Quit: Leaving)
2020-12-06 15:02:53 +0100zangi(~azure@103.154.230.250) (Client Quit)
2020-12-06 15:03:03 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-12-06 15:03:33 +0100 <toast52> Hey I'm a long time stack user but in my new setup I'm trying out ghcup + cabal
2020-12-06 15:03:38 +0100 <ephemient> https://mail.haskell.org/pipermail/libraries/2020-December/030951.html
2020-12-06 15:04:08 +0100 <toast52> I'm not sure how to do things with the cabal new commands
2020-12-06 15:04:24 +0100 <merijn> toast52: Can you be more specific? :)
2020-12-06 15:04:48 +0100 <toast52> with stack you specify src directory where all your modules go, and to add dependencies just edit the package.yaml right?
2020-12-06 15:04:55 +0100 <toast52> Whats the equivalent in cabal
2020-12-06 15:05:12 +0100 <toast52> and should I use the v2 commands, the new commands or just the bare commands?
2020-12-06 15:05:21 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it)
2020-12-06 15:05:26 +0100 <merijn> toast52: Do you have cabal-install 3.0 or later?
2020-12-06 15:05:31 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2020-12-06 15:05:38 +0100 <__monty__> toast52: For cabal 3.0+ those are all the same commands.
2020-12-06 15:05:38 +0100 <toast52> Yeah I believe I am on 3.2.0.0
2020-12-06 15:05:42 +0100 <merijn> (probably yes, but best to check)
2020-12-06 15:05:54 +0100 <merijn> toast52: From 3.0 on the commands *are* the v2 versions
2020-12-06 15:06:03 +0100gxt(~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds)
2020-12-06 15:06:08 +0100ambidextrose(~fut-learn@mobile-166-170-48-20.mycingular.net) (Quit: leaving)
2020-12-06 15:06:11 +0100 <ephemient> if you're using ghc 8.10+, you don't have any choice but cabal 3.2+ anyhow :D
2020-12-06 15:06:12 +0100 <merijn> toast52: v2 is just around for scripts that need to be compatible across multiple cabal versions
2020-12-06 15:06:25 +0100 <merijn> toast52: Anyway, lemme first point you here: https://gist.github.com/merijn/8152d561fb8b011f9313c48d876ceb07
2020-12-06 15:06:34 +0100 <__monty__> new-* is only around for hysterical raisins, v2-* is an immutable reference so to speak, the others are shorter for interactive use.
2020-12-06 15:07:34 +0100 <__monty__> ephemient: Some important distros don't update GHC all that fast, debian for example.
2020-12-06 15:08:06 +0100 <ephemient> __monty__: toast52 mentioned ghcup so presumably they're not relying on the distro ghc anyhow
2020-12-06 15:08:49 +0100 <toast52> so with cabal-install do we modify the cabal file directly?
2020-12-06 15:08:54 +0100 <merijn> toast52: Yeah
2020-12-06 15:09:13 +0100 <ephemient> you could still use hpack if you want, you just have to run it manually
2020-12-06 15:09:14 +0100 <merijn> You can use "cabal init --interactive --cabal-version=3.2" to create a new one from scratch
2020-12-06 15:09:18 +0100 <__monty__> ephemient: Though since they're migrating from stack they might want to stick to the latest LTS compiler.
2020-12-06 15:10:11 +0100 <merijn> ephemient: But you shouldn't, because hpack is bad :D
2020-12-06 15:11:22 +0100jathan(~jathan@69.61.93.38) (Quit: WeeChat 2.3)
2020-12-06 15:12:54 +0100 <toast52> hmmm. cabal install is used to install libraries or executables globally right
2020-12-06 15:13:09 +0100 <merijn> toast52: tbh, only executables
2020-12-06 15:13:18 +0100 <toast52> do nix style builds share libs?
2020-12-06 15:13:31 +0100 <merijn> toast52: Yes, when possible
2020-12-06 15:13:50 +0100Lord_of_Life_(~Lord@46.217.217.114)
2020-12-06 15:14:36 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 240 seconds)
2020-12-06 15:14:42 +0100 <merijn> toast52: Basically, there's a single global store (in ~/.cabal/store/ghc-version) and every library that gets installed gets tagged with a hash of its version, flags, config and transitive dependencies and installed there. If two packages/projects/whatever use the exact same configuration they will reuse the existing install.
2020-12-06 15:15:09 +0100 <merijn> toast52: So you can have, essentially, infinitely many different versions/configurations of any package without conflicts
2020-12-06 15:16:56 +0100 <toast52> Ok I think I more or less get it. Last question: In stack we just declare the src directory and have as many modules inside as we want. But it appears in a cabal file each module must be declared in other-modules?
2020-12-06 15:17:42 +0100 <ephemient> https://github.com/haskell/cabal/issues/5343
2020-12-06 15:18:15 +0100 <merijn> toast52: For libraries You've got "exposed-modules" these are what other packages can access and "other-modules" (these are internal). For executable you have Main and "other-modules"
2020-12-06 15:18:30 +0100 <merijn> ephemient: It's not happening
2020-12-06 15:18:48 +0100 <ephemient> right, I think there's decent justification in the linked issue
2020-12-06 15:20:04 +0100 <merijn> Like, I get why people find it annoying to manually list modules. But sometimes you gotta trade off immediate convenience for future sanity. But that's apparently a hard thing to accept for many people :p
2020-12-06 15:20:56 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-06 15:21:15 +0100 <ephemient> well, pretty much the only haskell code I work on these days is for advent of code, and I only need to keep it running for a month. so I have sympathy for that too
2020-12-06 15:22:27 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:a9cd:5081:c991:1e35:d185)
2020-12-06 15:23:02 +0100 <merijn> ephemient: tbh, I also feel people *massively* overstate how annoying it actually is
2020-12-06 15:23:10 +0100dhil(~dhil@195.213.192.34) (Ping timeout: 256 seconds)
2020-12-06 15:24:30 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-06 15:24:33 +0100jamm_(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2020-12-06 15:25:08 +0100urek(~urek@2804:7f1:e10a:a8d:dc47:5170:f5a9:5634) (Read error: Connection reset by peer)
2020-12-06 15:25:17 +0100 <merijn> ephemient: My biggest project is about 110 files/modules big, but it's not like you're writing those out every day. You start with a handful and incrementally add a few every few days or something. And if you important existing code you can just quickly sed it in once. In practice it's just not that big a deal
2020-12-06 15:26:01 +0100 <ephemient> it might also be a matter of what other systems people came from
2020-12-06 15:26:06 +0100urek(~urek@2804:7f1:e10a:a8d:dc47:5170:f5a9:5634)
2020-12-06 15:26:29 +0100rurt91(~rurt91@gateway/tor-sasl/rurt91) (Quit: Leaving)
2020-12-06 15:26:33 +0100sagax(~sagax_nb@213.138.71.146)
2020-12-06 15:26:43 +0100 <ephemient> build systems for C/C++ tend to require being explicit, and Rust's modules are also completely explicit, but Java and JS are typically always automatic discovery
2020-12-06 15:26:57 +0100 <merijn> ephemient: A lot of systems do, in fact, go for immediate convenience over long term sanity, which is why Python is on their, like, 15th package manager and it's *still* a pain :p
2020-12-06 15:27:01 +0100clemopemo(54ba165a@p54ba165a.dip0.t-ipconnect.de)
2020-12-06 15:28:19 +0100alfredo_dslv(6b48b289@107.72.178.137)
2020-12-06 15:29:56 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2020-12-06 15:29:58 +0100alfredo_dslv(6b48b289@107.72.178.137) (Remote host closed the connection)
2020-12-06 15:31:02 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2020-12-06 15:31:18 +0100dansho(~dansho@ec2-52-193-196-85.ap-northeast-1.compute.amazonaws.com)
2020-12-06 15:32:45 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-06 15:34:22 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-06 15:35:16 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
2020-12-06 15:35:35 +0100Jonkimi727406120(~Jonkimi@223.213.165.31)
2020-12-06 15:37:11 +0100wei2912(~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
2020-12-06 15:37:38 +0100 <toast52> But specifying the src directory is still pretty explicit no?
2020-12-06 15:38:27 +0100 <toast52> In fact Haskell's unqualified imports by default are a pretty good example why implicit is bad imo
2020-12-06 15:38:28 +0100shatriff(~vitaliish@176.52.219.10)
2020-12-06 15:39:42 +0100 <merijn> toast52: There's actually a better explanation why not to do that here: https://github.com/haskell/cabal/issues/7016#issuecomment-678609993
2020-12-06 15:40:26 +0100 <toast52> ahhh. That's true. I guess thats the point of something like hpack
2020-12-06 15:40:46 +0100 <toast52> so the reference cabal file is still there
2020-12-06 15:41:01 +0100 <toast52> while its painless to add modules
2020-12-06 15:41:30 +0100 <toast52> not that adding a line to the cabal file is a pain really. I guess I'm just unused
2020-12-06 15:42:42 +0100Neo--(~neo@188-230-138-83.dynamic.t-2.net) (Ping timeout: 265 seconds)
2020-12-06 15:43:09 +0100 <toast52> its just my prior experience telling me that these config files are usually not manually edited but handled by the CLI tool
2020-12-06 15:43:22 +0100 <merijn> toast52: As phadej points out in the issues, he's not opposed to a "cabal update-modules" command which dynamically updates the list in the cabal file explicitly (which is sorta what "cabal init" already does)
2020-12-06 15:43:56 +0100 <merijn> But the cabal codebase is...kinda legacy, so such command isn't trivial to implement :)
2020-12-06 15:44:14 +0100srk(~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection)
2020-12-06 15:44:14 +0100hexo(~hexo@gateway/tor-sasl/hexo) (Remote host closed the connection)
2020-12-06 15:44:53 +0100srk(~sorki@gateway/tor-sasl/sorki)
2020-12-06 15:44:59 +0100hexo(~hexo@gateway/tor-sasl/hexo)
2020-12-06 15:45:38 +0100 <merijn> The basic tension point is that for *developers* it's easy to have everything automatic and never have to do everything. But for *packaging*, especially long term archiving and distribution on many systems having everything *explicit* (locations, modules, flags, options, etc.) makes live much easier
2020-12-06 15:46:33 +0100 <merijn> If you look at for example Python, Ruby, JS, etc. developing is easy, but packaging is such a nightmare that the "normal" default way to do it now is "ship an entire docker container, because we have no clue which files need to be packaged"
2020-12-06 15:47:03 +0100 <dcoutts> merijn: btw, I was looking at the Cabal lib codebase last night. It's surprisingly clean. Oleg, Mikhail and others have done a great job there.
2020-12-06 15:47:12 +0100 <toast52> Yeah I get that
2020-12-06 15:47:36 +0100 <merijn> dcoutts: It's getting better, for sure. But it has quite a road to go :p
2020-12-06 15:48:07 +0100 <toast52> Maybe I'm clueless here but my impression was that that's what lock files are for
2020-12-06 15:48:19 +0100 <merijn> The problem is we only have one Oleg and one hvr to help people get up to speed :)
2020-12-06 15:48:27 +0100 <dcoutts> I think one of the hard things is going to be ditching legacy features, like migrating away from build-type Custom.
2020-12-06 15:48:33 +0100 <hpc> arguably, for developers it's easier to be explicit too - i am constantly running into issues where i am unable to build working git-cloned code
2020-12-06 15:48:35 +0100 <merijn> Which bottlenecks the influx of people helping :)
2020-12-06 15:48:41 +0100 <merijn> hpc: Sure
2020-12-06 15:48:54 +0100Jonkimi727406120(~Jonkimi@223.213.165.31) (Ping timeout: 256 seconds)
2020-12-06 15:48:54 +0100 <merijn> hpc: But it's hard getting that through their skulls ;)
2020-12-06 15:48:55 +0100 <dcoutts> And people kicked up quite a stink when Oleg wanted to remove the cabal sandbox feature (that's subsumed by the v2 features)
2020-12-06 15:49:53 +0100 <merijn> dcoutts: Well, the problem is that until the environment stuff is finished and gives people a nice way to install libs into a semi-global environment there's some workflows underserved and cabal sandbox + v1 could be used to deal with that
2020-12-06 15:50:30 +0100 <merijn> dcoutts: Lots of beginners want to "just install quickcheck and play in ghci" and that is currently, unfortunately, rather cumbersome
2020-12-06 15:50:51 +0100 <dcoutts> fair enough, but that's what we have to push on to be able to reduce complexity
2020-12-06 15:50:57 +0100 <merijn> But yeah, I think for "real" work v2 completely obsoletes sandboxes
2020-12-06 15:51:16 +0100_mefairS`(~st_ars@110.54.218.138)
2020-12-06 15:51:25 +0100 <merijn> dcoutts: Sure, I'm not disagreeing with the choice nor disparage the minor miracles Oleg is achieving :)
2020-12-06 15:51:36 +0100rotaerk(~rotaerk@ender.afternet.org) (Ping timeout: 240 seconds)
2020-12-06 15:51:39 +0100taio(~enrik@p200300ceaf0f3900597c3397d589339d.dip0.t-ipconnect.de)
2020-12-06 15:51:57 +0100 <merijn> dcoutts: It's just unfortunate to not have a good story for beginners wanting to play in ghci
2020-12-06 15:52:19 +0100 <hpc> sudo apt install libghc-quickcheck2-dev # :D
2020-12-06 15:52:28 +0100 <dcoutts> indeed, and the v2 design is intended to be able to cover those use cases too
2020-12-06 15:53:00 +0100texasmynsted(~texasmyns@212.102.45.103)
2020-12-06 15:53:14 +0100 <merijn> dcoutts: I mean, you're preaching to the choir with me, I dropped sandboxes and all my hdevtools based editor tooling back in 2016 just so I could use v2-build :p
2020-12-06 15:53:24 +0100_mefairS`(~st_ars@110.54.218.138) (Excess Flood)
2020-12-06 15:53:32 +0100 <merijn> And only this year with ghcide has my editor started recovering :p
2020-12-06 15:53:46 +0100 <dcoutts> :-)
2020-12-06 15:53:58 +0100_mefairS`(~st_ars@110.54.218.138)
2020-12-06 15:54:19 +0100 <toast52> Honestly I had no problems in the past simply installing ghc to use ghci, nor simply "upgrading" to stack and using stack repl
2020-12-06 15:54:27 +0100 <toast52> I would say it is pretty easy to get started
2020-12-06 15:55:10 +0100 <merijn> toast52: Yeah, but with v2 there isn't a super good story for "globally install this library to play with" the easiest (implemented) workflow is "just define a cabal package and use that"
2020-12-06 15:55:18 +0100_mefairS`(~st_ars@110.54.218.138) (Remote host closed the connection)
2020-12-06 15:55:43 +0100heatsink(~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183)
2020-12-06 15:56:03 +0100 <merijn> Which isn't too bad, almost anything with more than 2 modules or any dependencies should have a cabal file anyway, but it's not great for beginners who know feel like they first need to learn cabal-install before they can get to the fun coding
2020-12-06 15:56:35 +0100rif(~rif@c-24-4-99-49.hsd1.ca.comcast.net)
2020-12-06 15:57:08 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-06 15:57:17 +0100Tario(~Tario@201.192.165.173)
2020-12-06 15:57:29 +0100_mefairS`(~st_ars@110.54.218.138)
2020-12-06 15:57:33 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-06 15:57:47 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch)
2020-12-06 15:58:03 +0100dxld(~dxld@rush.pub.dxld.at) (Quit: Bye)
2020-12-06 15:58:56 +0100texasmynsted(~texasmyns@212.102.45.103) (Ping timeout: 240 seconds)
2020-12-06 15:59:29 +0100dxld(~dxld@rush.pub.dxld.at)
2020-12-06 16:00:13 +0100geekosaur(ae68c070@cpe-174-104-192-112.neo.res.rr.com)
2020-12-06 16:00:38 +0100heatsink(~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183) (Ping timeout: 264 seconds)
2020-12-06 16:01:13 +0100_mefairS`(~st_ars@110.54.218.138) (Read error: Connection reset by peer)
2020-12-06 16:03:32 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
2020-12-06 16:03:35 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-06 16:03:37 +0100 <adamCS> Related: Even as a somewhat experienced coder, the overhead of new cabal-file, etc. often leads me to jam vaguely-related-things into an existing library until it's obviously silly and then split it out, rather than start it on its own. Which is my problem, I know, but I would love an easier path for that too. Also not complaining! Cabal has come so far!
2020-12-06 16:03:55 +0100nowhere_man(~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155) (Ping timeout: 272 seconds)
2020-12-06 16:04:01 +0100 <merijn> adamCS: to be fair, that doesn't sound necessarily as a bad thing
2020-12-06 16:04:53 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it) (Quit: cosimone)
2020-12-06 16:05:28 +0100rif(~rif@c-24-4-99-49.hsd1.ca.comcast.net) (Quit: Leaving)
2020-12-06 16:05:43 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Ping timeout: 240 seconds)
2020-12-06 16:06:55 +0100 <adamCS> merjin: Sometimes. But it's often sub-optimal, especially since by the time I realize I need/ought to split it out, I'm often no longer as immersed in it and it also makes one less disciplined about keeping dependencies down, etc. I guess if I had good practice about a couple more things it might all make me less grumpy.
2020-12-06 16:07:02 +0100 <adamCS> merijn: ^
2020-12-06 16:07:04 +0100 <adamCS> sorry
2020-12-06 16:08:10 +0100 <merijn> adamCS: Well, if you're no longer as immersed in it nor planning to reuse it, is there really any point in cleaning it up/splitting it off?
2020-12-06 16:08:59 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
2020-12-06 16:09:28 +0100 <merijn> Like, that just sounds like "in retrospect I am not quite happy with my final choice of architecture", but if the code is abandonned then that's just "I have progressed and learned" rather than something that actually needs to be cleaned up? :)
2020-12-06 16:10:38 +0100 <merijn> In the past decade I've only split off and packaged, like, 4 packages. 3 of which are only a single module.
2020-12-06 16:10:44 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2020-12-06 16:11:03 +0100 <merijn> No point in packaging things unless you actually plan to reuse them :p
2020-12-06 16:11:04 +0100 <adamCS> merijn: Right. But the case I run across is not-immersed but often-using. So I maybe want to put on hackage or just keep cleaner boundaries and think harder about abstractions. But now it's sort of lazily intertwined. So the energy required to get it right is higher than it would've been if I'd kept it clean from the jump. But you may be right, that the cost is recouped over all the times that code ends up abandoned.
2020-12-06 16:11:20 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
2020-12-06 16:11:34 +0100danza(~francesco@151.37.86.29)
2020-12-06 16:11:36 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-06 16:12:41 +0100clemopemo(54ba165a@p54ba165a.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-12-06 16:12:47 +0100 <adamCS> merijn: Yeah. Perhaps what I am saying is that I wish the new-library route was just easy enough to inspire me to be a more disciplined coder in the first place. Which I stand by! But am also slightly ashamed of. Sigh.
2020-12-06 16:12:48 +0100nowhere_man(~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155)
2020-12-06 16:13:15 +0100 <merijn> adamCS: I mean, you can now split off into a separate library in the same package as a sort of intermediate step!
2020-12-06 16:13:54 +0100 <adamCS> merijn: Yes! I haven't tried that yet but it might be the ticket.
2020-12-06 16:14:13 +0100 <merijn> adamCS: You can have multiple (internal) libraries in a package in more recent cabal-install's, so you can "split it off, while still keeping it in", which makes splitting it off into a proper package easier
2020-12-06 16:14:16 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
2020-12-06 16:15:34 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2020-12-06 16:15:52 +0100 <adamCS> merijn: Yeah. I have a good test case for that which is approaching the, gosh why is this in the same place as everything else, stage. Maybe I will try an in-package split to learn how. Thanks!
2020-12-06 16:16:23 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-06 16:18:10 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2020-12-06 16:19:34 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-12-06 16:19:50 +0100nowhere_man(~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155) (Remote host closed the connection)
2020-12-06 16:20:12 +0100nowhere_man(~pierre@2a01:e0a:3c7:60d0:8e6f:ae06:e9b9:b7ab)
2020-12-06 16:21:13 +0100s00pcan(~chris@107.181.165.217) (Ping timeout: 246 seconds)
2020-12-06 16:22:31 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Quit: mputz)
2020-12-06 16:22:47 +0100ericsagnes(~ericsagne@2405:6580:0:5100:5e7a:6b93:86d8:5cb1) (Ping timeout: 244 seconds)
2020-12-06 16:23:02 +0100solonarv(~solonarv@astrasbourg-552-1-28-212.w90-13.abo.wanadoo.fr)
2020-12-06 16:23:21 +0100s00pcan(~chris@075-133-056-178.res.spectrum.com)
2020-12-06 16:23:35 +0100rotaerk(rotaerk@2600:3c02::f03c:91ff:fe70:4a45)
2020-12-06 16:26:34 +0100bitmagie(~Thunderbi@200116b806f98700c0a634702f137499.dip.versatel-1u1.de)
2020-12-06 16:27:19 +0100bitmagie(~Thunderbi@200116b806f98700c0a634702f137499.dip.versatel-1u1.de) (Client Quit)
2020-12-06 16:27:40 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:a9cd:5081:c991:1e35:d185) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-06 16:27:55 +0100texasmynsted(~texasmyns@212.102.45.103)
2020-12-06 16:30:22 +0100Deide(~Deide@217.155.19.23)
2020-12-06 16:30:52 +0100bitmagie(~Thunderbi@200116b806f98700c0a634702f137499.dip.versatel-1u1.de)
2020-12-06 16:31:14 +0100fendor_fendor
2020-12-06 16:35:06 +0100ericsagnes(~ericsagne@2405:6580:0:5100:fba4:3346:4adb:38f7)
2020-12-06 16:35:12 +0100Saukk(~Saukk@2001:998:ec:954:1c59:9bb5:b94c:3)
2020-12-06 16:36:16 +0100texasmynsted(~texasmyns@212.102.45.103) (Ping timeout: 240 seconds)
2020-12-06 16:36:19 +0100toast52(97c0a219@151.192.162.25) ()
2020-12-06 16:38:38 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net)
2020-12-06 16:39:10 +0100softwarm(4408f588@ip68-8-245-136.sd.sd.cox.net)
2020-12-06 16:41:13 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection)
2020-12-06 16:41:36 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-06 16:42:29 +0100machinedgod(~machinedg@24.105.81.50)
2020-12-06 16:44:12 +0100jrm2(~jrm@freebsd/developer/jrm)
2020-12-06 16:44:50 +0100jrm(~jrm@freebsd/developer/jrm) (Ping timeout: 256 seconds)
2020-12-06 16:44:51 +0100jrm2jrm
2020-12-06 16:46:21 +0100dhil(~dhil@195.213.192.34)
2020-12-06 16:47:16 +0100taioriko
2020-12-06 16:54:38 +0100ClaudiusMaximus(~claude@223.153.198.146.dyn.plus.net)
2020-12-06 16:54:46 +0100ClaudiusMaximus(~claude@223.153.198.146.dyn.plus.net) (Changing host)
2020-12-06 16:54:46 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus)
2020-12-06 16:55:12 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-12-06 16:55:18 +0100urodna(~urodna@unaffiliated/urodna)
2020-12-06 16:56:25 +0100heatsink(~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183)
2020-12-06 16:57:01 +0100 <zincy__> What are the main advantages of separating pure from impure code? In Haskell this really means monadic vs non-monadic right as opposed to pure/impure? Pure code is easier to reason about and easier to test, is there anything else?
2020-12-06 16:57:25 +0100 <dminuoso> That's it, pretty much.
2020-12-06 16:57:34 +0100 <merijn> zincy__: Nitpick: There is no impure code in Haskell (ignoring unsafe*), that's the entire point of having IO in the first place
2020-12-06 16:58:04 +0100 <merijn> People like to say "impure" when they mean "IO based", but IO *isn't* impure, that's the entire point
2020-12-06 16:58:19 +0100 <dminuoso> zincy__: Equational reasoning is priceless, it happens in all of our heads constantly.
2020-12-06 16:58:29 +0100 <dminuoso> Even in yours.
2020-12-06 16:58:36 +0100 <dminuoso> It might be as simple as
2020-12-06 16:58:55 +0100 <merijn> Equational reasoning is great, and the entire benefit of having IO as type is that it doesn't break purity and just allows you to keep equational reasoning
2020-12-06 16:59:30 +0100 <dminuoso> "transforming `f x y (g a b) (g a b)` into `let g' = g a b in f x y g' g'` is legitimate because of the properties of haskell
2020-12-06 16:59:52 +0100 <dminuoso> Its little things of refactoring you probably do every day already
2020-12-06 17:00:00 +0100coot(~coot@37.30.53.191.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2020-12-06 17:01:09 +0100texasmynsted(~texasmyns@212.102.45.103)
2020-12-06 17:01:14 +0100heatsink(~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183) (Ping timeout: 264 seconds)
2020-12-06 17:01:19 +0100Ariakenom(~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se)
2020-12-06 17:01:37 +0100 <zincy__> merijn: Yeah I am aware of this nitpick :)
2020-12-06 17:01:47 +0100 <merijn> zincy__: It's an important one, though :)
2020-12-06 17:01:55 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-12-06 17:02:01 +0100 <riko> What did the "makers of Haskell" think of allowing such mutually recursive definitions?
2020-12-06 17:02:05 +0100 <riko> f = g
2020-12-06 17:02:07 +0100 <zincy__> I was wondering do people mean IO or monadic code in general when they say "impure"?
2020-12-06 17:02:09 +0100 <riko> g = f
2020-12-06 17:02:16 +0100 <zincy__> In fact screw what people say
2020-12-06 17:02:22 +0100 <merijn> riko: I mean you can even skip a step there
2020-12-06 17:02:24 +0100 <dminuoso> riko: it's things like `repeat`
2020-12-06 17:02:30 +0100 <merijn> > let f = f in f
2020-12-06 17:02:33 +0100 <lambdabot> *Exception: <<loop>>
2020-12-06 17:02:49 +0100 <merijn> riko: The reason to allow that is because you can do incredibly useful things like:
2020-12-06 17:02:51 +0100 <dminuoso> riko: f = g; g = f is allowed just because it wouldnt make sense to forbid it, and detecting when to forbid is is impossible in the general case
2020-12-06 17:02:54 +0100 <dminuoso> (because halting problem)
2020-12-06 17:02:55 +0100 <merijn> > let ones = 1 : ones in ones
2020-12-06 17:02:57 +0100 <lambdabot> [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1...
2020-12-06 17:03:08 +0100 <zincy__> We should strive to separate effectful (monadic) code from non-effectful (non monadic) code right?
2020-12-06 17:03:13 +0100 <riko> when I query the type, I get f :: t
2020-12-06 17:03:14 +0100 <riko> and in GHCi the call does not terminate. very strange: D
2020-12-06 17:03:29 +0100 <merijn> zincy__: meh
2020-12-06 17:03:39 +0100 <merijn> zincy__: Not really, imo
2020-12-06 17:03:51 +0100 <zincy__> Ok what if you specialise that argument to IO
2020-12-06 17:03:56 +0100 <merijn> zincy__: https://twitter.com/k0001/status/1295846402648682496 :)
2020-12-06 17:03:58 +0100 <zincy__> Separate IO from non IO
2020-12-06 17:04:31 +0100 <merijn> zincy__: Separating IO from non-IO is generally good. But I feel many beginners over value it, to the point where it harms their productivity
2020-12-06 17:05:02 +0100bitmagie(~Thunderbi@200116b806f98700c0a634702f137499.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2020-12-06 17:05:07 +0100 <merijn> Writing Haskell with IO everywhere >> getting stuck unable to anything using Haskell :)
2020-12-06 17:05:14 +0100 <zincy__> This begins to become a tricky nuanced rule the "pure core/imperative shell" mindset. Since everything is pure
2020-12-06 17:05:17 +0100 <zincy__> I am confused
2020-12-06 17:05:43 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
2020-12-06 17:05:59 +0100 <merijn> zincy__: I write lots of concurrent/network-y/file-y/spawning other process-y code. It has IO everywhere and it's perfectly pleasant to work with
2020-12-06 17:06:32 +0100 <zincy__> So there is no cast iron rule saying thou shalt split IO code from non-io code where possible
2020-12-06 17:06:33 +0100 <merijn> zincy__: My point was simply that "writing code" >> "worrying about how you should be writing code" in terms of both productivity and learning :)
2020-12-06 17:06:45 +0100bitmagie(~Thunderbi@200116b80605380085ee684ceb032ce1.dip.versatel-1u1.de)
2020-12-06 17:06:48 +0100 <zincy__> hehe :D
2020-12-06 17:07:21 +0100 <merijn> zincy__: Is overuse of IO "not great"? Sure. But the best way to figure out why/when it sucks is to just write it and find out the hard way
2020-12-06 17:07:32 +0100 <zincy__> Isn't there a big argument for this separation because then you can rely less on mocking?
2020-12-06 17:07:38 +0100 <merijn> Does it help to stop and think if you can split the IO and logic? Sure it does!
2020-12-06 17:07:52 +0100 <ephemient> even when mutability is required, plenty of stuff works fine in ST
2020-12-06 17:08:08 +0100 <merijn> But you know, sometimes you wanna have a feeling of actually *doing* something and doing *something* with IO everywhere is better than *not* doing it :)
2020-12-06 17:08:10 +0100 <ephemient> free tries to get you the best of both worlds, being pure and providing access to IO equivalents
2020-12-06 17:08:15 +0100 <merijn> ephemient: Sure
2020-12-06 17:09:09 +0100 <merijn> ephemient: But so many beginners get paralysed by this idea of "avoiding IO at all costs", I think it's much more helpful in "unstucking" people to help them realise there's a time and place for everything and there's nothing wrong with "imperative Haskell" :)
2020-12-06 17:10:09 +0100 <ephemient> I think it depends on the code
2020-12-06 17:10:26 +0100 <ephemient> if IO is the only monad you're working with, then yeah it's not so bad
2020-12-06 17:10:30 +0100 <zincy__> Code with IO is harder to test
2020-12-06 17:10:53 +0100 <merijn> Same thing I keep saying about converting C people, maybe instead of focussing on "how safe" haskell is, we should be telling them how unsafe you can be if needed! unsafeCoerce, unsafePerformIO, accursedUnutterablePerformIO! So many escape hatches and unlifted types for your high performance needs!
2020-12-06 17:10:56 +0100 <zincy__> So minimising the surface area of IO does make your program easier to test
2020-12-06 17:11:02 +0100Lycurgus(~niemand@cpe-45-46-137-210.buffalo.res.rr.com)
2020-12-06 17:11:15 +0100 <zincy__> merijn: I like that argument
2020-12-06 17:11:17 +0100 <merijn> zincy__: Sure, but you find that out quick enough when writing IO heavy code and you will have learned something :)
2020-12-06 17:11:46 +0100s00pcan(~chris@075-133-056-178.res.spectrum.com) (Remote host closed the connection)
2020-12-06 17:12:00 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-12-06 17:12:00 +0100 <zincy__> Right so when it comes to learning just take action is the general motto
2020-12-06 17:12:01 +0100 <merijn> zincy__: Once you "give up" on being pure all the time and start writing code you will quickly find that actually a lot of your code is *still* pure and get a better sense of managing where/when of IO
2020-12-06 17:12:02 +0100 <ephemient> if it's performance you're after, though... haskell IO isn't great
2020-12-06 17:12:11 +0100 <merijn> ephemient: pfft
2020-12-06 17:12:13 +0100 <merijn> ephemient: It's fine
2020-12-06 17:12:16 +0100 <ephemient> it forces sequencing where equivalent code in C would allow for reordering
2020-12-06 17:12:23 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it)
2020-12-06 17:12:29 +0100 <dolio> How do you know?
2020-12-06 17:12:49 +0100 <merijn> ephemient: You can almost never reorder C and the place where you can the same can easily happen with IO
2020-12-06 17:13:10 +0100 <ephemient> IORef can not be reordered
2020-12-06 17:13:24 +0100 <ephemient> memory reads/writes, up to memory barriers, can
2020-12-06 17:13:34 +0100 <merijn> ephemient: Neither can accesses in C within a single thread
2020-12-06 17:13:44 +0100 <merijn> And if you're writing threaded C you're already fucked :p
2020-12-06 17:13:50 +0100amir__(~amir@37.98.47.224)
2020-12-06 17:14:38 +0100 <ephemient> C compiler is allowed to move, repeat, and elide memory access as it wants, as long as single-threaded observed behavior is equivalent
2020-12-06 17:14:50 +0100 <ephemient> e.g. it may reload, or it may lift stores and loads
2020-12-06 17:14:51 +0100ambidextrose(~fut-learn@mobile-166-170-51-98.mycingular.net)
2020-12-06 17:15:06 +0100hekkaidekapus(~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
2020-12-06 17:15:19 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-06 17:15:24 +0100 <ephemient> IORef is forced by IO's sequencing to be... well, sequential
2020-12-06 17:15:37 +0100 <merijn> "kinda"
2020-12-06 17:16:03 +0100 <merijn> Because then you get in the murky waters of CPU guaranteed consistency models :p
2020-12-06 17:16:11 +0100 <dolio> ephemient: This is false.
2020-12-06 17:16:36 +0100 <dolio> It's like saying that C can't reorder things because you typed it into the file in a certain order.
2020-12-06 17:17:05 +0100hekkaidekapus(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-12-06 17:17:29 +0100 <adamCS> When I started writing Haskell, a lot was in IO. Understanding how to move much of it out was the first time I had an assortment of "aha!" moments about functor and monad. There were more to follow, to be sure. Since IO is comparatively opaque, you really want to get things out of it sometimes so you figure out how when it wasn't necessary in the first place. And that is educational. Or it was for me, anyway.
2020-12-06 17:18:15 +0100Lycurgus(~niemand@cpe-45-46-137-210.buffalo.res.rr.com) (Quit: Exeunt)
2020-12-06 17:18:45 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-06 17:19:16 +0100 <ephemient> c <- newIORef 0; forM_ [0..9] $ \i -> readIORef c >>= print
2020-12-06 17:19:20 +0100 <ephemient> vs static int c; for (int i = 0; i < 10; i++) printf("%d\n", c);
2020-12-06 17:21:13 +0100sh9(~sh9@softbank060116136158.bbtec.net) (Quit: WeeChat 2.8)
2020-12-06 17:31:48 +0100lightwave(~chris@bras-vprn-nwmkon8540w-lp130-10-142-112-210-136.dsl.bell.ca)
2020-12-06 17:32:45 +0100 <lightwave> Stack newbie question: I tried to 'stack install cabal-install' but got the following error. What do I do to resolve the version conflict/requirement?
2020-12-06 17:32:55 +0100 <lightwave> Error: While constructing the build plan, the following exceptions were encountered:
2020-12-06 17:32:56 +0100 <lightwave> In the dependencies for cabal-install-3.2.0.0:
2020-12-06 17:32:56 +0100 <lightwave> Cabal-3.0.1.0 from stack configuration does not match ==3.2.* (latest matching version is 3.2.1.0)
2020-12-06 17:32:57 +0100 <lightwave> needed since cabal-install is a build target.
2020-12-06 17:33:25 +0100 <maerwald> lightwave: don't install cabal that way
2020-12-06 17:33:36 +0100 <maerwald> download the binary or use ghcup
2020-12-06 17:34:23 +0100 <lightwave> I'm following the "Haskell Tutorial and Cookbook" book...
2020-12-06 17:34:43 +0100 <merijn> lightwave: Well, the book is wrong on how to install things then :)
2020-12-06 17:35:17 +0100 <lightwave> What's the relation between ghcup & stack & cabal?
2020-12-06 17:35:19 +0100 <merijn> lightwave: Basically, Cabal-3.0 is the latest on stackage, afaict, but cabal-install isn't on there. So it blindly tries to build the latest versions (3.2) using stackage's dependencies (3.0)
2020-12-06 17:35:32 +0100 <merijn> lightwave: https://gist.github.com/merijn/8152d561fb8b011f9313c48d876ceb07
2020-12-06 17:35:56 +0100 <merijn> I should make an "hours of typing I saved myself" counter on that link :>
2020-12-06 17:36:28 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-06 17:36:30 +0100christo(~chris@81.96.113.213)
2020-12-06 17:36:39 +0100 <lightwave> LOL
2020-12-06 17:36:53 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-06 17:39:42 +0100knupfer(~Thunderbi@200116b82ce66f004c0142fffe7f139f.dip.versatel-1u1.de)
2020-12-06 17:41:13 +0100 <fuzzypixelz> how do I auto-add signatures in haskell-mode, I'm using (doom) emacs
2020-12-06 17:41:14 +0100acidjnk_new(~acidjnk@p200300d0c719ff043467fd7c213734d3.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2020-12-06 17:41:32 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds)
2020-12-06 17:41:40 +0100 <lightwave> Is ghcup the first thing to install for haskell beginner? Then stack?
2020-12-06 17:42:04 +0100DavidEichmann(~david@62.110.198.146.dyn.plus.net) (Ping timeout: 246 seconds)
2020-12-06 17:42:06 +0100knupfer(~Thunderbi@200116b82ce66f004c0142fffe7f139f.dip.versatel-1u1.de) (Remote host closed the connection)
2020-12-06 17:42:08 +0100 <merijn> lightwave: ghcup is a tool for easily installing GHC and cabal-install
2020-12-06 17:42:20 +0100knupfer(~Thunderbi@200116b82ce66f0091fa5495f7f0c4f9.dip.versatel-1u1.de)
2020-12-06 17:42:26 +0100 <lightwave> I thought stack also install ghc?
2020-12-06 17:42:28 +0100 <merijn> lightwave: stack manages GHC directly and will install it as needed
2020-12-06 17:43:05 +0100 <merijn> If you play to use stack you don't need ghcup or cabal-install. If you plan to use cabal-install, the easiest way to install GHC & cabal-install is probably ghcup
2020-12-06 17:43:10 +0100 <merijn> s/play/plan
2020-12-06 17:43:11 +0100 <lightwave> merijn: So ghcup install ghc & cabal-install globally while stack manage ghc locally at the project level?
2020-12-06 17:43:22 +0100 <merijn> lightwave: Pretty much
2020-12-06 17:43:35 +0100 <lightwave> Can I have both?
2020-12-06 17:43:41 +0100 <merijn> Sure
2020-12-06 17:43:41 +0100m4lvin(~m4lvin@w4eg.de) (Quit: m4lvin)
2020-12-06 17:43:53 +0100 <lightwave> Will my head explode if they are both install on my laptop?
2020-12-06 17:44:03 +0100m4lvin(~m4lvin@w4eg.de)
2020-12-06 17:44:03 +0100 <maerwald> no
2020-12-06 17:44:07 +0100 <ephemient> stack will cache the ghc etc. it downloads, so if you have multiple stack projects using the same versions it should reuse it
2020-12-06 17:44:14 +0100 <maerwald> they're completely independent
2020-12-06 17:44:40 +0100 <lightwave> Thank you guys for saving my head
2020-12-06 17:44:42 +0100 <ephemient> stack and system ghc won't interact at all, unless you use --system-ghc
2020-12-06 17:53:51 +0100Amras(~Amras@unaffiliated/amras) (Remote host closed the connection)
2020-12-06 17:55:02 +0100 <fuzzypixelz> https://stackoverflow.com/questions/8963488/automatically-add-type-signatures-to-top-level-functions suggests I do C-c C-t but that just shows the type signature in the bottom of my buffer
2020-12-06 17:55:24 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-06 17:56:21 +0100 <fuzzypixelz> I want it to be automagically added
2020-12-06 17:56:24 +0100Saukk(~Saukk@2001:998:ec:954:1c59:9bb5:b94c:3) (Remote host closed the connection)
2020-12-06 17:56:28 +0100 <lightwave> Good lord... my ~/.ghcup directory is 4.5G That's much bigger than I expected.
2020-12-06 17:56:55 +0100christo(~chris@81.96.113.213)
2020-12-06 17:57:17 +0100heatsink(~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183)
2020-12-06 17:57:32 +0100knupfer(~Thunderbi@200116b82ce66f0091fa5495f7f0c4f9.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2020-12-06 17:58:08 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-12-06 17:58:10 +0100 <merijn> lightwave: GHC is about 1-1.5 GB so if you got 2 or 3 GHCs installed that sounds about right
2020-12-06 17:58:17 +0100kupi(uid212005@gateway/web/irccloud.com/x-ilpqogltmhlqsyet) (Quit: Connection closed for inactivity)
2020-12-06 17:58:39 +0100 <lightwave> Only has 8.8.4 installed.
2020-12-06 17:59:03 +0100Tario(~Tario@201.192.165.173)
2020-12-06 17:59:09 +0100conal(~conal@64.71.133.70)
2020-12-06 17:59:22 +0100 <merijn> hmm, "du -d 1 -h" inside that directory to see where all the space is going ;)
2020-12-06 18:01:50 +0100heatsink(~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183) (Ping timeout: 264 seconds)
2020-12-06 18:02:09 +0100softwarm(4408f588@ip68-8-245-136.sd.sd.cox.net) (Ping timeout: 245 seconds)
2020-12-06 18:02:24 +0100xyggos(uid216035@gateway/web/irccloud.com/x-ojvoeipqhxhkiuhf)
2020-12-06 18:02:30 +0100xyggosshenyi
2020-12-06 18:02:38 +0100 <lightwave> I think majority of the space were taken up by various verions of haskell-language-server
2020-12-06 18:02:58 +0100knupfer(~Thunderbi@200116b82ce66f00c03c85fffe61b3bd.dip.versatel-1u1.de)
2020-12-06 18:03:08 +0100 <merijn> ah, possibly
2020-12-06 18:03:25 +0100knupfer(~Thunderbi@200116b82ce66f00c03c85fffe61b3bd.dip.versatel-1u1.de) (Remote host closed the connection)
2020-12-06 18:03:38 +0100knupfer(~Thunderbi@200116b82ce66f00891d43401c35143c.dip.versatel-1u1.de)
2020-12-06 18:03:57 +0100 <lightwave> Kind of weird how it install all the versions even though I only have ghc v8.8.4 installed.
2020-12-06 18:05:14 +0100zaquest(~notzaques@5.128.210.178)
2020-12-06 18:05:28 +0100zaquest(~notzaques@5.128.210.178) (Read error: Connection reset by peer)
2020-12-06 18:06:13 +0100amir__(~amir@37.98.47.224) (Remote host closed the connection)
2020-12-06 18:06:42 +0100Guest60204(~michael@142.93.75.170) (Quit: WeeChat 2.8)
2020-12-06 18:07:22 +0100bitmagie(~Thunderbi@200116b80605380085ee684ceb032ce1.dip.versatel-1u1.de) (Quit: bitmagie)
2020-12-06 18:07:25 +0100on_(~michael@142.93.75.170)
2020-12-06 18:11:53 +0100 <maerwald> if you're concerned about disk space, haskell will not be for you :p
2020-12-06 18:12:12 +0100 <maerwald> wait until you actually build a project
2020-12-06 18:12:17 +0100 <merijn> maerwald: It's really not that bad, tbh
2020-12-06 18:12:48 +0100dolio(~dolio@haskell/developer/dolio) (Quit: ZNC 1.8.2 - https://znc.in)
2020-12-06 18:12:58 +0100 <maerwald> merijn: it is. I installed one project with stack and my .stack is 4.4 GB :)
2020-12-06 18:13:02 +0100 <merijn> "ooh...GHC is so massive...it's one whole GB!", meanwhile my stripped minimal clang++ install is freaking 1.9 GB. The one I had to build from source is 5 GB
2020-12-06 18:13:13 +0100 <maerwald> I installed *several* projects with cargo and .cargo is 418mb
2020-12-06 18:13:27 +0100 <merijn> But people install clang/LLVM via their package manager and don't see it's size
2020-12-06 18:14:52 +0100 <lightwave> I told my wife that I need a bigger Macbook under the christmas tree... She's pretending she didn't hear me. LOL
2020-12-06 18:15:26 +0100 <maerwald> yeah, I just got a thinkpad X1 extreme, so I can do haskell stuff on my laptopt without crying
2020-12-06 18:15:45 +0100 <maerwald> 32gb is minimum IMO
2020-12-06 18:15:56 +0100ambidextrose(~fut-learn@mobile-166-170-51-98.mycingular.net) (Ping timeout: 240 seconds)
2020-12-06 18:16:04 +0100 <merijn> It's 2020, what are you doing without a 1 TB SSD in your laptop? >.>
2020-12-06 18:16:06 +0100 <maerwald> unfortunately, you can't upgrade macbooks
2020-12-06 18:16:08 +0100 <lightwave> I suspect I'd still cry. I'm never satisify with my new toy.
2020-12-06 18:16:15 +0100 <maerwald> merijn: lol, I have that one too
2020-12-06 18:16:21 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-06 18:16:37 +0100 <lightwave> I have 1TB on my MBP... but it's a nice excuse to buy a new one. LOL
2020-12-06 18:16:44 +0100 <maerwald> X1 extreme is in the same price range as macbook, but I can upgrade the ram... so why would I
2020-12-06 18:17:00 +0100cheater(~user@unaffiliated/cheater) (Ping timeout: 260 seconds)
2020-12-06 18:17:29 +0100 <lightwave> TBH, I never find myself needing to upgrade RAM in my dev machines.
2020-12-06 18:18:56 +0100 <maerwald> ok, start haskell-language-server
2020-12-06 18:19:40 +0100 <maerwald> also, firefox decided to run an entire OS per tab, so
2020-12-06 18:19:50 +0100 <lightwave> It can't be worse than the LSP for typescript... loller_
2020-12-06 18:20:01 +0100 <lightwave> s/loller_/LOL
2020-12-06 18:20:52 +0100dolio(~dolio@haskell/developer/dolio)
2020-12-06 18:21:01 +0100 <maerwald> and then run a few electron apps
2020-12-06 18:21:31 +0100 <maerwald> your gtk theme leaks memory and `rg` blows up the rest
2020-12-06 18:21:50 +0100 <maerwald> (yeah, rg isn't linear in memory)
2020-12-06 18:22:53 +0100mounty(~mounty@210.1.196.133) (Ping timeout: 256 seconds)
2020-12-06 18:23:01 +0100 <maerwald> oh, I forgot... make sure to use coc.nvim, because you want to run a few million lines of javascript inside your editor
2020-12-06 18:23:04 +0100 <lightwave> Chrome (any chromium browsers) & node are the worst on my bx.
2020-12-06 18:23:13 +0100 <dminuoso> 18:19:45 maerwald | [17:16:06] unfortunately, you can't upgrade macbooks
2020-12-06 18:23:31 +0100 <dminuoso> It's a well known fact that SSDs are non-upgradeable. It's physics
2020-12-06 18:23:33 +0100 <dminuoso> Physics of money.
2020-12-06 18:23:37 +0100 <loller_> lightwave: lol
2020-12-06 18:23:39 +0100 <loller_> XD
2020-12-06 18:23:44 +0100 <maerwald> dminuoso: loller_
2020-12-06 18:24:14 +0100 <lightwave> dminuoso: LOL
2020-12-06 18:24:19 +0100bliminse(~bliminse@host86-134-63-68.range86-134.btcentralplus.com)
2020-12-06 18:25:56 +0100 <lightwave> The Apple M1 chip is onto something. No longer is my lap getting BBQ by the Intel chip. I'm playing with one on loan to me from my wife's company.
2020-12-06 18:26:46 +0100foobarblob(188838c2@ip24-136-56-194.ga.at.cox.net)
2020-12-06 18:29:15 +0100Kronic(~Kronic___@84.203.103.100)
2020-12-06 18:29:54 +0100cheater(~user@unaffiliated/cheater)
2020-12-06 18:30:26 +0100juuandyy(~juuandyy@90.166.144.65)
2020-12-06 18:30:45 +0100 <Kronic> Hey there, I´m a little bit confused when it comes to parsers. I understand the concept, and I think it is something that given enough time, I could understand well, but what I really don´t get outright is which library to start with. I seemed to be spoiled for choice. Is it okay to just come to terms with parsec at first?
2020-12-06 18:31:03 +0100 <dminuoso> Kronic: Megaparsec is a safe default.
2020-12-06 18:31:06 +0100abhixec(~abhixec@c-67-169-141-95.hsd1.ca.comcast.net)
2020-12-06 18:31:09 +0100 <dminuoso> Parsec is dated and not a good starting place IMO.
2020-12-06 18:31:22 +0100 <dminuoso> (There's also attparsec to consider if you're dealing with binary data rather)
2020-12-06 18:31:44 +0100 <dminuoso> But if you just want a "give me a single library damnit", then look no further than megaparsec.
2020-12-06 18:32:12 +0100 <koz_> Megaparsec also has an extensive tutorial.
2020-12-06 18:32:18 +0100 <Kronic> Ah thank you, that makes sense, I noticed the documentation for that one seemed a little better (I only took a glance really, so I could be wrong!). I will get working on that
2020-12-06 18:33:23 +0100lightwave(~chris@bras-vprn-nwmkon8540w-lp130-10-142-112-210-136.dsl.bell.ca) (Remote host closed the connection)
2020-12-06 18:33:42 +0100 <dminuoso> Kronic: Another library to keep in mind that augments megaparsec nicely is parser-combinators.
2020-12-06 18:34:37 +0100 <dminuoso> (Im not actually sure how much overlap there is with megaparsec)
2020-12-06 18:35:44 +0100mcginleyr1(uid475794@gateway/web/irccloud.com/x-kmepugnonanirpgl) (Quit: Connection closed for inactivity)
2020-12-06 18:35:55 +0100urek(~urek@2804:7f1:e10a:a8d:dc47:5170:f5a9:5634) (Ping timeout: 272 seconds)
2020-12-06 18:40:49 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-06 18:41:12 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-06 18:43:56 +0100 <cads> hey all, anyone here use haskell to make python libraries before? What did you use? would you say it was pretty hellish, or that it was significantly (and surprisingly) less than hellish?
2020-12-06 18:45:02 +0100 <cads> I see missingpy exists, but that nobody has touched it in 8 years. So I don't think that's the current path for embedding haskell into python
2020-12-06 18:45:17 +0100bitmagie(~Thunderbi@200116b80605380085ee684ceb032ce1.dip.versatel-1u1.de)
2020-12-06 18:46:42 +0100 <cads> probably haskell can publish to some standard FFI technology, and python can import those libraries - my issue seems to be that I don't know what those techs are called, and so few people are writing about it that I can't easily google search it
2020-12-06 18:47:27 +0100 <cads> https://wiki.haskell.org/Applications_and_libraries/Interfacing_other_languages just found
2020-12-06 18:49:12 +0100lagothrix(~lagothrix@unaffiliated/lagothrix) (Ping timeout: 260 seconds)
2020-12-06 18:50:03 +0100lagothrix(~lagothrix@unaffiliated/lagothrix)
2020-12-06 18:50:28 +0100 <jackhill> cads: I've seen some good posts on crating a c shared library/calling haskell form c in the past, but I can't really find those now. I turned this up: https://wiki.haskell.org/Calling_Haskell_from_C
2020-12-06 18:51:38 +0100 <jackhill> I had to give up on my project because I didn't really knwo C well enough :/ I now even less about how Python integrates with C libraries or if there is a better way of integrating Haskell and Python. Maybe that's enough to get you started though.
2020-12-06 18:51:49 +0100 <cads> looks like one path (still terrifyingly complex) is to generate a C interface with c2hs, and then use python's CTYPES to reconstitute any facilities that might be "lost in translation"
2020-12-06 18:53:23 +0100zebrag(~inkbottle@aaubervilliers-654-1-115-108.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
2020-12-06 18:53:47 +0100zebrag(~inkbottle@aaubervilliers-654-1-115-108.w86-198.abo.wanadoo.fr)
2020-12-06 18:53:50 +0100 <cads> jackhill, thanks, I think doing C hax might be the best shortcut at this time
2020-12-06 18:54:03 +0100newsham(~ubuntu@ec2-18-218-216-88.us-east-2.compute.amazonaws.com) (Ping timeout: 256 seconds)
2020-12-06 18:54:51 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-06 18:55:14 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-06 18:55:22 +0100 <cads> Here is the story for writing a python module backed by rust: https://mycognosist.github.io/tutorial-rust-python-lib.html
2020-12-06 18:56:01 +0100newsham(~ubuntu@ec2-18-218-216-88.us-east-2.compute.amazonaws.com)
2020-12-06 18:57:52 +0100 <jackhill> cool
2020-12-06 18:57:58 +0100 <cads> that depends on a rust crate called cpython. This appears to wrap python objects in a rustic interface, so that rust code can receive and return them http://dgrunwald.github.io/rust-cpython/doc/cpython/
2020-12-06 18:57:59 +0100heatsink(~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183)
2020-12-06 18:59:40 +0100 <cads> perhaps I need a haskell value that represents a python objects. I am rather vague about the machinery that rust.cpython uses to actually produce python modules out of that code, but I'll keep reading.
2020-12-06 18:59:46 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 246 seconds)
2020-12-06 19:01:29 +0100notzmv(~user@unaffiliated/zmv)
2020-12-06 19:02:04 +0100heatsink(~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183) (Ping timeout: 240 seconds)
2020-12-06 19:03:26 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex) (Remote host closed the connection)
2020-12-06 19:04:54 +0100hekkaidekapus(~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
2020-12-06 19:05:08 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex)
2020-12-06 19:05:18 +0100hekkaidekapus(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-12-06 19:06:01 +0100Jeanne-Kamikaze(~Jeanne-Ka@66.115.189.175)
2020-12-06 19:09:54 +0100notzmv(~user@unaffiliated/zmv) (Read error: No route to host)
2020-12-06 19:09:55 +0100texasmynsted(~texasmyns@212.102.45.103) (Remote host closed the connection)
2020-12-06 19:10:11 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection)
2020-12-06 19:10:38 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-06 19:10:53 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection)
2020-12-06 19:11:18 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-06 19:11:43 +0100notzmv(~user@unaffiliated/zmv)
2020-12-06 19:14:04 +0100isovector1(~isovector@172.103.216.166.cable.tpia.cipherkey.com)
2020-12-06 19:14:20 +0100isovector1(~isovector@172.103.216.166.cable.tpia.cipherkey.com) ("Leaving")
2020-12-06 19:14:36 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
2020-12-06 19:16:55 +0100elliott__(~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
2020-12-06 19:17:00 +0100mrchampion_(~mrchampio@38.18.109.23)
2020-12-06 19:17:18 +0100urek(~urek@179.187.232.25.dynamic.adsl.gvt.net.br)
2020-12-06 19:18:21 +0100 <merijn> cads: Ok, so, pragmatic solution
2020-12-06 19:18:39 +0100 <merijn> cads: Do what I did and just spawn a python subprocess using whatever library you need
2020-12-06 19:19:31 +0100 <merijn> cads: Directly calling python means basically exporting your python interface to C first and then calling the C interface from Haskell's FFI, as C is the only well defined ABI and all other languages pretty much only support FFI to C
2020-12-06 19:20:00 +0100mrchampion(~mrchampio@216-211-54-88.dynamic.tbaytel.net) (Ping timeout: 260 seconds)
2020-12-06 19:20:02 +0100wagle(~wagle@quassel.wagle.io) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
2020-12-06 19:20:03 +0100 <merijn> Which, honestly, all sounds like much more work than "write a minimal Python script and call that"
2020-12-06 19:20:33 +0100wagle(~wagle@quassel.wagle.io)
2020-12-06 19:22:14 +0100 <koz_> merijn: Oof, yeah, that sounds... not fun.
2020-12-06 19:22:31 +0100 <koz_> Definitely not the sort of thing you wanna do by hand.
2020-12-06 19:22:38 +0100 <koz_> . o O (inline-python?)
2020-12-06 19:22:48 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-06 19:23:23 +0100jollygood2(~bc8165ab@217.29.117.252)
2020-12-06 19:23:31 +0100 <jollygood2> wasn't there something like this already?
2020-12-06 19:23:57 +0100 <jollygood2> (1, 2) -> (2, 1)
2020-12-06 19:24:20 +0100 <koz_> :t swap
2020-12-06 19:24:22 +0100 <lambdabot> (a, b) -> (b, a)
2020-12-06 19:24:33 +0100 <jollygood2> of course :). thanks
2020-12-06 19:24:43 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex) (Ping timeout: 240 seconds)
2020-12-06 19:25:06 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex)
2020-12-06 19:33:49 +0100danza(~francesco@151.37.86.29) (Ping timeout: 264 seconds)
2020-12-06 19:34:30 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:7588:30bb:c072:52a) (Read error: Connection reset by peer)
2020-12-06 19:36:26 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2020-12-06 19:40:44 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-blqgdwgqtvmgdyih)
2020-12-06 19:40:56 +0100juuandyy(~juuandyy@90.166.144.65) (Ping timeout: 240 seconds)
2020-12-06 19:40:59 +0100 <cads> merijn, I want the opposite - build some heavy number crunching code in haskell, give python users an easy to use interface
2020-12-06 19:41:21 +0100 <merijn> cads: That's about as hard as calling C from python
2020-12-06 19:41:25 +0100juuandyy(~juuandyy@90.166.144.65)
2020-12-06 19:41:38 +0100 <cads> know anyone who wants to make it easier?
2020-12-06 19:41:41 +0100 <merijn> cads: Basically, exposing Haskell functions to C is fairly trivial
2020-12-06 19:42:01 +0100 <merijn> So the most annoying/hard part is getting python to call those "C" functions
2020-12-06 19:42:11 +0100 <xerox_> @index swap
2020-12-06 19:42:12 +0100 <lambdabot> Data.Tuple
2020-12-06 19:42:45 +0100 <xerox_> not a huge package
2020-12-06 19:42:59 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-06 19:43:22 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-06 19:43:32 +0100 <cads> merijn, right - in the C part of python, there is a special way of handling python objects - so the python part of the code can call those C functions as if they're python methods, in the sense that they return python objects
2020-12-06 19:44:37 +0100 <cads> but it still requires some pretty subtle magic to take those c functions and wrap the pythonobject C-type into an actual, live, python object
2020-12-06 19:45:12 +0100 <cads> real "breathing life into clay" kinda stuff, and I bet that the rust cpython crate does the same thing
2020-12-06 19:45:13 +0100 <Rembane> cads: Can you create an interface using cython?
2020-12-06 19:45:19 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-06 19:45:29 +0100 <merijn> cads: Right, my point was that Haskell functions exported via the FFI are "indistinguishable" from C code from the python side :)
2020-12-06 19:45:47 +0100heatsink(~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183)
2020-12-06 19:46:25 +0100 <merijn> cads: So if you wanna call Haskell from Python there's not that much to do, unless you wanna be able to "call back" into python and, tbh, even that is fairly straightforward if you can expose the callbacks as C code
2020-12-06 19:46:25 +0100Guest_82(47e39310@c-71-227-147-16.hsd1.wa.comcast.net)
2020-12-06 19:46:53 +0100 <merijn> cads: so this is more of a "python problem" than a "haskell problem" :)
2020-12-06 19:47:07 +0100danza(~francesco@151.43.197.171)
2020-12-06 19:47:37 +0100 <merijn> cads: On the Haskell side the only thing you need (besides foreign exporting the Haskell functions) is to make sure you call some wrappers to setup the Haskell RTS before calling code
2020-12-06 19:47:38 +0100 <cads> well, hold on, because what I want is my python to call the haskell C interface and get python objects back. I think I need a python object "boxed type" in haskell land.
2020-12-06 19:47:52 +0100 <cads> oh, I think we just said the same thing
2020-12-06 19:47:57 +0100LKoen(~LKoen@73.174.9.109.rev.sfr.net) (Remote host closed the connection)
2020-12-06 19:48:02 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds)
2020-12-06 19:48:06 +0100 <merijn> I made a minimal-ish example of calling Haskell from C here: https://gist.github.com/merijn/4a0fee2b3a5ef3476aa4
2020-12-06 19:48:29 +0100 <cads> http://dgrunwald.github.io/rust-cpython/doc/cpython/py_class/index.html
2020-12-06 19:48:30 +0100 <Guest_82> I just tried installing ghcup via the command on the website and get an error on MacOS: https://pastebin.com/f3pWYu71 basically, it hardcodes $HOME as /home/johannd, which doesn't exist and isn't writeable on MacOS. I can't seem to find any bug reports about this. Is it a known problem?
2020-12-06 19:49:07 +0100 <cads> there's the ref for the rust equivalent of what I'd probably need to make this thing a usable tool rather than an unsustainable one time hack
2020-12-06 19:49:09 +0100 <merijn> cads: Right, but wrapping Haskell into python objects should happen on the python/C side of things, not on the Haskell side
2020-12-06 19:49:26 +0100 <maerwald> Guest_82: no, it doesn't hardcode anything, your environment variable HOME points to a non-existing directory
2020-12-06 19:49:40 +0100 <maerwald> or...
2020-12-06 19:49:46 +0100 <merijn> cads: I mean, I guess you could theoretically do it on the Haskell side, but that'll be a pain
2020-12-06 19:49:54 +0100 <cads> merijn, I have two implementations (CPython and Rust.cpython) that do it the other way, so why?
2020-12-06 19:49:54 +0100 <maerwald> "Operation not supported" sounds like some other problem
2020-12-06 19:50:11 +0100 <cads> I don't think it's because these communities intentionally want pain
2020-12-06 19:50:31 +0100euisuny(~euisuny@2601:47:4500:2140:c192:2e54:b4ff:5cb)
2020-12-06 19:50:44 +0100 <merijn> cads: CPython *does* do it on the C side...their entire implementation is "C side"
2020-12-06 19:51:00 +0100 <maerwald> Guest_82: fix your environment variable
2020-12-06 19:51:09 +0100 <cads> maybe I get more control and the python part is much easier to write if I make the haskell code responsible for producing a coherent python object
2020-12-06 19:51:22 +0100 <Guest_82> maerwald `echo $HOME` -> `/Users/johannd`
2020-12-06 19:51:35 +0100 <merijn> cads: A "python object" is just a C data structure with some stuff in it
2020-12-06 19:51:47 +0100softwarm(4408f588@ip68-8-245-136.sd.sd.cox.net)
2020-12-06 19:52:15 +0100 <merijn> cads: Generally manipulating C data structures is much less painful in *C*. It *can* be done in Haskell, but it's miserable, and there's almost no point if you're going to hand it over to C/Python afterwards
2020-12-06 19:52:25 +0100 <cads> merijn, I'm saying they do it on the C side as in they have built in the hosting language (c), an abstraction of python objects. And I'm saying that doing so in haskell should also be a thing.
2020-12-06 19:52:40 +0100 <Guest_82> maerwald even when I exec `sh`, which is piped to after curl, `echo $HOME` -> `/Users/johannd`
2020-12-06 19:52:42 +0100 <merijn> cads: So you write some C code that turns the Haskell "C" functions into an object and hand that to python
2020-12-06 19:52:45 +0100 <geekosaur> wondering if /etc/passwd (which is legacy on OS X, but tools like git won't know that) has /home/jdahm in it
2020-12-06 19:52:58 +0100 <maerwald> Guest_82: well, it definitely is not hardcoded
2020-12-06 19:53:12 +0100 <merijn> cads: You *can* do it Haskell, but I'm saying you shouldn't, because there is no reason to
2020-12-06 19:53:15 +0100 <geekosaur> the user database probably has the right value in it
2020-12-06 19:53:27 +0100 <merijn> cads: But if you like pain, whatever floats your boat
2020-12-06 19:53:32 +0100 <cads> merijn, I want ppl in haskell land to be explicitly working with a python return type. That way we know when interfaces are expected to touch python, and when they are "pure"
2020-12-06 19:53:46 +0100AlterEgo-(~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving)
2020-12-06 19:53:50 +0100 <merijn> cads: Well, that's just going to straight up suck
2020-12-06 19:53:51 +0100 <cads> does that sound like a benefit?
2020-12-06 19:53:59 +0100 <cads> why?
2020-12-06 19:54:02 +0100 <merijn> cads: No, it sounds like massive amounts of pain :)
2020-12-06 19:54:07 +0100 <cads> okay, but why?
2020-12-06 19:54:22 +0100 <merijn> cads: Because it involves lots of operating on C structs from Haskell, which is the most painful part of FFI
2020-12-06 19:54:24 +0100 <cads> why don't you want your types to reflect when a function needs to worry about python, vs when it can just be pure?
2020-12-06 19:54:32 +0100 <cads> I feel that is important documentation
2020-12-06 19:55:08 +0100 <cads> ie, suppose I can have 5 python touching functions (the interfaces), and 20 pure ones (the kernel)
2020-12-06 19:55:25 +0100 <cads> what if I /want/ to enforce that and document that?
2020-12-06 19:55:28 +0100 <merijn> cads: I'd say your Haskell numerical code shouldn't reflect python *at all* it should just operate on integers, arrays and matrices and then wrap that into a high level interface in C that gets passed to python
2020-12-06 19:55:50 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Read error: Connection reset by peer)
2020-12-06 19:56:24 +0100 <merijn> like, why would it matter that those 20 pure functions eventually get called from C/Python? That's irrelevant for what they do
2020-12-06 19:56:32 +0100 <cads> how then will my python code can never inspect an object that the user gives it? I have to break down the types into primitive matrices and tensors, and lose my user's object semantics
2020-12-06 19:56:41 +0100 <cads> I need these things to be python objects
2020-12-06 19:56:45 +0100 <merijn> cads: Oh
2020-12-06 19:56:52 +0100 <merijn> cads: Well...then RIP your sanity
2020-12-06 19:56:57 +0100 <cads> not something that I've temporarily forgotten is a python object
2020-12-06 19:57:00 +0100 <cads> lol
2020-12-06 19:57:09 +0100 <cads> merijn, I don't think it's that bad, because after all, cpython does it
2020-12-06 19:57:21 +0100 <merijn> cads: Because then you've gotta interact with those C structs from python and call functions on them and it will be a big hassle
2020-12-06 19:57:30 +0100 <cads> and cpython code is actually pretty clean to read, for all that it's C and abstracting python objects
2020-12-06 19:57:34 +0100 <merijn> cads: CPython does it from C and all of CPython is C
2020-12-06 19:57:44 +0100 <cads> I think haskell code that abstracts python objects will be if anything nicer than the cpython code
2020-12-06 19:57:52 +0100 <merijn> lol
2020-12-06 19:57:53 +0100 <merijn> no
2020-12-06 19:57:54 +0100 <cads> thought the kernel may have some mind bending insanity in it
2020-12-06 19:57:57 +0100LKoen(~LKoen@73.174.9.109.rev.sfr.net)
2020-12-06 19:58:01 +0100 <cads> merijn, why?
2020-12-06 19:58:10 +0100 <merijn> Clearly you haven't seen the insanity that C++ objects wrapped in Haskell looks like
2020-12-06 19:58:27 +0100 <cads> why would C be able to wrap python more elegantly than haskell can wrap python?
2020-12-06 19:58:34 +0100 <cads> we're talking about C
2020-12-06 19:59:08 +0100 <merijn> Because it's not wrapping python
2020-12-06 19:59:09 +0100 <cads> I find this highly ironic that C, the anti-abstraction, would be better at providing an abstraction layer than haskell, the language OF abstraction
2020-12-06 19:59:24 +0100 <cads> but hey, I would love that as a joke, so tell me the punchline
2020-12-06 19:59:37 +0100 <merijn> cads: CPython is a python interpreter written in C. It's not "wrapping" python, it just calling directly into interpreter implementation details
2020-12-06 19:59:59 +0100 <merijn> The reason it's "more elegant" is because there's no pretension at wrapping at all
2020-12-06 20:00:24 +0100 <merijn> You don't "wrap" python objects, you just directly call your (C) interpreter implementation details on objects that exist
2020-12-06 20:00:24 +0100 <cads> merijn, I'm not talking about the interpreter, I'm talking about the common library code that is written in C
2020-12-06 20:00:40 +0100 <merijn> cads: Right, but that library code does the same thing
2020-12-06 20:00:59 +0100 <cads> functions absolutely do wrap python objects inside the functions they work on native c types, and then when the function returns, it wraps it in a pythonobject struct
2020-12-06 20:01:07 +0100 <merijn> cads: Your Haskell code will not be wrapping Python either. It will be wrapping the C interpreter bits
2020-12-06 20:01:26 +0100 <cads> Look at the rust library
2020-12-06 20:02:09 +0100 <merijn> I mean, you don't have to take my word for it. God knows most people on the world don't listen to me :)
2020-12-06 20:02:13 +0100 <cads> it wraps the c interpreter bits too (because that's all it is really emitting), but it also wraps a python object type, so that users can actually extend functionality for python objects, like any real library must
2020-12-06 20:02:52 +0100 <cads> merijn, it's just that you're telling me that I don't get to have something I get to take for granted in other languages like rust, because I'd have to work too hard to get it. And the argument is falling flat, yes.
2020-12-06 20:03:02 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds)
2020-12-06 20:03:17 +0100 <cads> you see how you're trying to discourage me for no real reason, right?
2020-12-06 20:03:18 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
2020-12-06 20:03:25 +0100 <merijn> Anyway, either 1) you're misunderstanding what I'm saying, 2) I'm misunderstanding your description what you wanna do
2020-12-06 20:03:32 +0100berberman(~berberman@unaffiliated/berberman)
2020-12-06 20:03:39 +0100 <cads> okay, look at the rust code, and lets discuss it later
2020-12-06 20:08:52 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch)
2020-12-06 20:14:10 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
2020-12-06 20:14:38 +0100Guest_82(47e39310@c-71-227-147-16.hsd1.wa.comcast.net) (Remote host closed the connection)
2020-12-06 20:14:58 +0100Lord_of_Life_Lord_of_Life
2020-12-06 20:16:10 +0100Lord_of_Life(~Lord@46.217.217.114) (Changing host)
2020-12-06 20:16:10 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362)
2020-12-06 20:18:02 +0100 <dminuoso> 10:41:21 <cads> merijn, I want the opposite - build some heavy number crunching code in haskell, give python users an easy to use interface
2020-12-06 20:18:22 +0100 <dminuoso> If you want that, perhaps expose your Haskell code as a service to consumer, say over a unix domain socket?
2020-12-06 20:18:34 +0100 <cads> huh, or microservice
2020-12-06 20:18:40 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
2020-12-06 20:18:45 +0100 <dminuoso> Then you can have a well defined API to program against, without all the idiosyncracies of having to deal with crossing FFI.
2020-12-06 20:19:04 +0100 <jollygood2> I'm writing json using aeson, someone remind me, how can I control the order of fields in the json file?
2020-12-06 20:19:23 +0100 <merijn> Man...
2020-12-06 20:19:29 +0100 <cads> it kind of collapses the richness of the datypes of each repsective language, and I have to reason across a set of json interfaces. That's not so bad at all, acutally
2020-12-06 20:19:40 +0100 <cads> gets rid of a LOT of pain
2020-12-06 20:19:44 +0100 <merijn> You ever read a question and go "well...this sounds like a rabbithole of depressing tech issues.."? :p
2020-12-06 20:19:54 +0100michaelh(~user@81-234-107-251-no522.tbcn.telia.com)
2020-12-06 20:19:54 +0100 <cads> merijn, yes
2020-12-06 20:19:56 +0100 <cads> lol
2020-12-06 20:20:11 +0100 <dminuoso> I mean Haskell and cpython interacting with each other is *not* fun.
2020-12-06 20:20:13 +0100 <merijn> If you need to control order of fields in your JSON file you're already boned
2020-12-06 20:20:51 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com) (Quit: ZNC 1.8.2 - https://znc.in)
2020-12-06 20:20:52 +0100 <Chousuke> I can see reasons to do it that aren't altogether insane
2020-12-06 20:21:11 +0100 <merijn> cads: "it collapses the richness of datatypes of each respective language" <- well, yes, this is a fundamental limitation of FFI
2020-12-06 20:21:22 +0100 <Chousuke> you might want to programmatically modify a JSON file without causing too large a diff for example.
2020-12-06 20:21:41 +0100 <merijn> Chousuke: I'm vaguely aware of some...insert adjective here...IBM code that relied on something like that for XML or JSON, so...
2020-12-06 20:21:47 +0100 <cads> so I have to give up the idea that I'll be able to get a python object, and interrogate it in haskell land
2020-12-06 20:22:25 +0100 <cads> that changes how I write my python, because I'm used to passing python objects, and methods doing a number of queries and commands on them via that object's methods
2020-12-06 20:22:36 +0100 <merijn> cads: It's *theoretically* possible, but how would you even expose/use that information without reimplementing the entire python OO interface in Haskell?
2020-12-06 20:22:42 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com)
2020-12-06 20:23:07 +0100 <dminuoso> cads: By the way, consider CBOR over JSON if you can still decide on things
2020-12-06 20:23:38 +0100 <dminuoso> Especially if you want to deal with numbers.
2020-12-06 20:24:00 +0100darjeeling_(~darjeelin@122.245.218.196) (Ping timeout: 265 seconds)
2020-12-06 20:24:05 +0100juuandyy(~juuandyy@90.166.144.65) (Ping timeout: 256 seconds)
2020-12-06 20:24:05 +0100britva(~britva@2a02:aa13:7240:2980:6477:78c0:db0c:39cf)
2020-12-06 20:24:17 +0100toorevitimirp(~tooreviti@117.182.181.85) (Remote host closed the connection)
2020-12-06 20:24:25 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-12-06 20:24:31 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-12-06 20:24:53 +0100 <yushyin> cbor++ ;)
2020-12-06 20:25:09 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-ttkevgswiiluxpdp)
2020-12-06 20:25:57 +0100dansho(~dansho@ec2-52-193-196-85.ap-northeast-1.compute.amazonaws.com) (Quit: Leaving)
2020-12-06 20:26:09 +0100darjeeling_(~darjeelin@122.245.218.196)
2020-12-06 20:26:47 +0100 <cads> I convert things to toml any time a human has to see them, but I have been looking for a versatile binary wire format, thanks
2020-12-06 20:26:49 +0100dansho(~dansho@ec2-52-193-196-85.ap-northeast-1.compute.amazonaws.com)
2020-12-06 20:27:40 +0100lpy(~nyd@unaffiliated/elysian) (Quit: lpy)
2020-12-06 20:27:56 +0100 <cads> Looks like remarhsal can do the Toml <-> Cbor <-> Yaml <-> Json interop (lol @ how we no longer include XML in that list)
2020-12-06 20:28:23 +0100Tario(~Tario@201.192.165.173)
2020-12-06 20:28:52 +0100cadsstarted encountering Yaml in microservices land, hates it, and is generally much happier /w toml substitutes for confs
2020-12-06 20:29:09 +0100Varis(~Tadas@unaffiliated/varis)
2020-12-06 20:29:40 +0100 <cads> you know, the idea that a haskell entity should be big and bad enough to warrant its own microservice? I don't think I'll have trouble finding applications to fill those shoes
2020-12-06 20:29:58 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-06 20:30:39 +0100 <Rembane> cads: If you really want to fall down the configuration language rabbit hole: https://dhall-lang.org/
2020-12-06 20:31:57 +0100 <cads> as a haskell <-> python interop layer it doesn't do what I originally wanted it. But it is so much cheaper that I could have my first application /today/. That makes me like it. And that even makes me feel like it saves me from overengineering something that /even I/ could see was going to be miserable
2020-12-06 20:32:01 +0100 <michaelh> I have a list of fields which I want to use to populate a record. The list is obtained from parsing a file, so if some fields are missing, I won't create he record. This is a shortened example of how I solved it: https://pastebin.com/ud39S66b As you can see I pattern match on instances of the `Field` type i a list, which causes a lot of boiler plate. Is there a way to avoid that boiler plate? Is there a better way to do this overall?
2020-12-06 20:32:01 +0100 <michaelh> I'm a Haskell beginner :-)
2020-12-06 20:32:14 +0100coot(~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
2020-12-06 20:32:26 +0100ericsagnes(~ericsagne@2405:6580:0:5100:fba4:3346:4adb:38f7) (Ping timeout: 264 seconds)
2020-12-06 20:32:48 +0100 <michaelh> The fields that I parse can be in any order btw
2020-12-06 20:32:56 +0100 <Rembane> michaelh: Hi! What's the format of the file?
2020-12-06 20:33:12 +0100 <merijn> > (,) <$> Just 2 <*> Just True
2020-12-06 20:33:14 +0100 <lambdabot> Just (2,True)
2020-12-06 20:33:18 +0100 <merijn> > (,) <$> Just 2 <*> Nothing
2020-12-06 20:33:20 +0100 <lambdabot> Nothing
2020-12-06 20:33:35 +0100 <merijn> michaelh: You probably wanna have a look at Applicative and <$> and <*> :)
2020-12-06 20:34:01 +0100 <michaelh> Rembane: Custom format. Looking like this: "abc:123 def:Hello"
2020-12-06 20:34:04 +0100 <merijn> michaelh: Also, oof :)
2020-12-06 20:34:10 +0100 <michaelh> Actually, Advent of code, day 4
2020-12-06 20:34:15 +0100 <merijn> michaelh: ReadP is notoriously tricking and confusing :)
2020-12-06 20:34:44 +0100 <merijn> michaelh: I'd probably try using parsec/attoparsec/megaparsec instead :)
2020-12-06 20:35:18 +0100 <michaelh> merijn: Sure, I use applicative a bit too, not in this example here though. Will that help me remove all those get... functions?
2020-12-06 20:35:19 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
2020-12-06 20:35:58 +0100britva(~britva@2a02:aa13:7240:2980:6477:78c0:db0c:39cf) (Quit: This computer has gone to sleep)
2020-12-06 20:36:20 +0100 <merijn> oh, wait, I think I misparsed the bottom function
2020-12-06 20:36:20 +0100 <cads> micheal, it feels like each of those functions should be a pattern matching clause of a larger function
2020-12-06 20:36:41 +0100 <merijn> michaelh: Aren't you missing an fs on each function there?
2020-12-06 20:36:58 +0100 <cads> that might conceptually unify the four get_functions into a getField function, for instance
2020-12-06 20:36:59 +0100 <Rembane> michaelh: I primarily used this combination of functions, but my code has more of a hm... Perl feeling to it: concatMap (map (second tail . span (/= ':')) . words)
2020-12-06 20:37:06 +0100 <merijn> michaelh: You could basically write "Record <$> getAbc fs <*> getDef fs <*> getGhi fs" was my point :)
2020-12-06 20:37:12 +0100 <michaelh> merijn: oh, I totally do. `fs` should go after each one. Sorry about that.
2020-12-06 20:37:13 +0100 <cads> err, three
2020-12-06 20:38:22 +0100abhixec(~abhixec@c-67-169-141-95.hsd1.ca.comcast.net) (Quit: leaving)
2020-12-06 20:39:10 +0100MarcelineVQ(~anja@198.254.202.72) (Ping timeout: 246 seconds)
2020-12-06 20:39:39 +0100 <michaelh> merijn: Sure! That's neater. But I'll still have all those similar get-functions, that's the one thats making me think perhaps I'm doing this wrong.
2020-12-06 20:39:53 +0100 <cads> oh, the individual functions have meanings, but currently you have them named after the alphabet (AbcDefGhi). How about: getAbc => getInt, getDef => getString, getGhi => getBool
2020-12-06 20:40:29 +0100acidjnk_new(~acidjnk@p200300d0c719ff8291316ca5b709066d.dip0.t-ipconnect.de)
2020-12-06 20:40:37 +0100 <michaelh> cads: But they all return different types, so how would I combine them into one?
2020-12-06 20:40:44 +0100 <cads> then merijn's code becomes: Record <$> getInt fs <*> getString fs <*> getBool fs -- highly readable
2020-12-06 20:40:48 +0100abhixec(~abhixec@c-67-169-141-95.hsd1.ca.comcast.net)
2020-12-06 20:41:06 +0100 <merijn> michaelh: you could derive Ord for Field and instead of having a list like you have now, use a "Map Field Value" and do lookups, but I suppose that doesn't work with different field types
2020-12-06 20:41:35 +0100 <merijn> michaelh: tbh, the AoC exercise is on the awkward cusp of almost, but not quite, allowing a nice Haskell solution but not being worth the boilerplate
2020-12-06 20:41:50 +0100 <michaelh> cads: Yeah, that was just some bogus names I picked for now.
2020-12-06 20:41:52 +0100 <merijn> michaelh: I just used "Map Field String" and then did validation on the strings directly :p
2020-12-06 20:42:14 +0100Rembaneagrees with merijn
2020-12-06 20:42:49 +0100 <cads> michaelh, oh, right, the composite function would have to return some strange maybe type, then you'd have to handle it. Maybe not the best. I now prefer the "merijn pipe" architecture
2020-12-06 20:43:11 +0100nullheroes(~danielvu@168.235.66.22) (Quit: WeeChat 2.9)
2020-12-06 20:44:30 +0100ericsagnes(~ericsagne@2405:6580:0:5100:a371:8651:d375:8998)
2020-12-06 20:44:31 +0100 <cads> michaelh, after debogonizing + applicative chaining, that is code I would be proud of in my own production
2020-12-06 20:44:41 +0100 <michaelh> Yeah. My starting point was, "I want to pracitice Haskell and at the same time learn to use Text.ParserCombinators.ReadP", while doing AoC. I realize this might give quite a bit of resistance :-) I was also thinking about using, for instance, Map String String, and work with that. But I wanted to try to parse as much as possible. Perhaps not such a great idea
2020-12-06 20:45:12 +0100 <merijn> michaelh: tbh, ReadP is terrible and the problem isn't supper suitable for it, so you're fighting 2 problems at once :p
2020-12-06 20:45:14 +0100MarcelineVQ(~anja@198.254.202.72)
2020-12-06 20:46:32 +0100 <cads> merijn, which are lighter parser combinators to use for a problem like this? also interested for my own use
2020-12-06 20:46:45 +0100 <merijn> Light in which sense?
2020-12-06 20:46:52 +0100 <cads> conceptually
2020-12-06 20:47:10 +0100 <michaelh> Okay. Thanks for helping me realize that! :)
2020-12-06 20:47:10 +0100 <cads> and simple easy to write
2020-12-06 20:47:18 +0100 <merijn> attoparsec is probably the smallest/cleanest parser combinator library for simple formats
2020-12-06 20:47:44 +0100 <merijn> michaelh: I can link you my megaparsec solution, but that's of course a massive spoiler :p
2020-12-06 20:48:33 +0100 <michaelh> merijn: Sure, I'd be happy to see that. I've already solved the problem, so I don't need to worry about that.
2020-12-06 20:48:52 +0100cadswants to see too, also has no qualms /w spoilers
2020-12-06 20:48:59 +0100 <merijn> michaelh: https://github.com/merijn/AdventOfCode2020/blob/master/Day4.hs
2020-12-06 20:50:42 +0100 <michaelh> merijn: Thanks! I'll take closer look in a bit. By the way, now that I understand that fighting ReadP wasn't all my fault, can you recommend any of the Parsec-libraries for a newbie? I just want to get some more general parser combinator experience.
2020-12-06 20:51:18 +0100DavidEichmann(~david@62.110.198.146.dyn.plus.net)
2020-12-06 20:52:31 +0100 <trepanger> What does "debogonize" mean?
2020-12-06 20:52:59 +0100 <glguy> ReadP would be fine for parsing AoC. All of the AoC formats are simple enough that any choice of parser combinator library is going to be fine.
2020-12-06 20:53:17 +0100 <glguy> Where ReadP falls down is that it doesn't give good error messages, which can be helpful to debug your parser when you write it incorrectly
2020-12-06 20:53:20 +0100 <merijn> michaelh: tbh, the high level design is pretty much identical for all of them, it's the gritty details that differ. Parsec is a bit dated, having symbols conflicting with Prelude (due to predating Applicative/Alternative) and generally not being worked on anymore. Megaparsec is probably the most "industrial" library with the most features, but it's docs are a bit of a mess currently (they do have a bunch
2020-12-06 20:53:26 +0100 <merijn> of tutorial linked from the repo), attoparsec is rather minimalist, but very clear
2020-12-06 20:53:30 +0100notzmv`(~user@201-43-52-72.dsl.telesp.net.br)
2020-12-06 20:53:50 +0100 <merijn> michaelh: The design is so identical, in fact, that the parser-combinators library abstracts tons of functionality for all of them :p
2020-12-06 20:54:14 +0100Amras(~Amras@unaffiliated/amras)
2020-12-06 20:54:54 +0100notzmv(~user@unaffiliated/zmv) (Ping timeout: 256 seconds)
2020-12-06 20:55:55 +0100 <cads> Rembane, now I'm craving Dhall's semantic hashing. That's pretty fucking snazzy.
2020-12-06 20:56:54 +0100 <Rembane> cads: Muaha! They are indeed. And the types and the grumpy type checker and the syntax and the... it's a lovely language. ^^
2020-12-06 20:57:29 +0100 <Rembane> cads: And also, it isn't Turing complete by mistake.
2020-12-06 20:58:22 +0100 <cads> any way to banish the curly brackets? That is the main reason I ditched json in favor of toml
2020-12-06 20:58:44 +0100 <Rembane> You can always write a preprocessor.
2020-12-06 20:59:12 +0100 <cads> or I can write a semantic hashing function for toml
2020-12-06 20:59:14 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2020-12-06 20:59:17 +0100 <Rembane> Yes. :D
2020-12-06 20:59:46 +0100 <cads> that's a realy killer feature, lol, I could leave the fact that it's executable (which actually scares me shitless)
2020-12-06 21:00:08 +0100bitmagie(~Thunderbi@200116b80605380085ee684ceb032ce1.dip.versatel-1u1.de) (Quit: bitmagie)
2020-12-06 21:00:09 +0100 <michaelh> Alright, thanks again, all of you :)
2020-12-06 21:00:14 +0100cp-(~cp-@b157153.ppp.asahi-net.or.jp) (Remote host closed the connection)
2020-12-06 21:00:26 +0100 <monochrom> Do so much hate against curly braces.
2020-12-06 21:00:36 +0100 <monochrom> Pascal bannished curly braces.
2020-12-06 21:00:47 +0100 <monochrom> made you write "begin" and "end" instead.
2020-12-06 21:00:54 +0100 <aldum> pascal did a lot of unsavory things
2020-12-06 21:01:27 +0100 <aldum> to this day I occasionally muck up equality checking in C-style languages
2020-12-06 21:01:29 +0100 <trepanger> curly brace syntax is a hell of a lot easier to parse than whitespace, though
2020-12-06 21:01:37 +0100 <cads> technically toml does you dirty in order to give you a brace free experience. But I won't say how.
2020-12-06 21:02:41 +0100 <trepanger> (easier to write a parser for, I mean)
2020-12-06 21:02:41 +0100 <monochrom> And why so much hate against parentheses too.
2020-12-06 21:02:55 +0100cadsthinks the trend of ppl putting the wellbeing of parsers ahead of humans should end
2020-12-06 21:03:11 +0100 <trepanger> cads: yeah, you have a point
2020-12-06 21:03:14 +0100 <monochrom> COBOL bannishes curly braces, parentheses, and "begin" and "end". In fact, it bannishes all line noises.
2020-12-06 21:03:25 +0100 <aldum> cads: I think I read someone argue this
2020-12-06 21:03:36 +0100 <trepanger> but JSON is mostly for machines
2020-12-06 21:03:36 +0100 <monochrom> You write "multiply x by y into z" instead. It's pure English. No symbols allowed.
2020-12-06 21:03:41 +0100 <Rembane> monochrom: Doesn't COBOL banish almost everything?
2020-12-06 21:03:53 +0100 <aldum> we have two povs here, and we can't ditch human-readability
2020-12-06 21:04:01 +0100 <MarcelineVQ> humans probably aren't as good at reading as they think they are
2020-12-06 21:04:07 +0100 <cads> trepanger, I think it was xml that was mostly for machines - json took over because it was /partially/ for humans ;)
2020-12-06 21:04:30 +0100 <cads> rip xml *touchies fingers to lips, then to sky*
2020-12-06 21:04:50 +0100 <trepanger> haha, xml was a pain to parse for a machine also
2020-12-06 21:05:38 +0100 <cads> also there is no fun canonical way to turn xml into json :(
2020-12-06 21:05:49 +0100 <aldum> human processing takes shortcuts
2020-12-06 21:05:55 +0100 <Rembane> There's no canonical way to turn xml into anything.
2020-12-06 21:06:42 +0100 <cads> well there is, it's just creates lots of extra nodes that you don't want
2020-12-06 21:07:03 +0100 <cads> so then you filter the nodes. Boom, you lost the ability to convert back
2020-12-06 21:07:11 +0100 <aldum> https://eev.ee/blog/2016/12/01/lets-stop-copying-c/#braces-and-semicolons
2020-12-06 21:07:32 +0100 <Rembane> cads: That's quite fun in a derpy way. :)
2020-12-06 21:07:44 +0100 <monochrom> I have much doubt that xml was for machines. A binary format would be for machines. xml is everything but binary.
2020-12-06 21:08:02 +0100 <cads> i think xml was for schemas
2020-12-06 21:08:05 +0100 <aldum> xml was for the enterprise :D
2020-12-06 21:08:21 +0100 <cads> and that, or the same thing honestly
2020-12-06 21:09:03 +0100 <monochrom> Every time you see a syntax design supporting, even optimizing for, "meaningful" identifiers, you know it's designed for humans.
2020-12-06 21:09:05 +0100 <trepanger> I'm not convinced that whitespace *is* more readable in general. Particularly for deeply nested data structures.
2020-12-06 21:09:29 +0100 <aldum> I used to like XML, before I saw better designs, and before I had to do an XSLT/Xpath assignment for a class
2020-12-06 21:09:42 +0100 <Chousuke> I feel like YAML is popular only because JSON doesn't support comments and doesn't support trailing commas in maps and lists.
2020-12-06 21:09:46 +0100 <cads> I think we had a need for a really extensible, self referential, self documenting, and discoverable data format , and I think binary formats weren pretty terrible for that
2020-12-06 21:09:59 +0100 <Rembane> I think LISP would've been a better choice
2020-12-06 21:10:26 +0100 <aldum> Chousuke: then why not json5 or HOCON?
2020-12-06 21:10:37 +0100 <Chousuke> because YAML exists.
2020-12-06 21:10:45 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-06 21:10:45 +0100 <Chousuke> json5 is too late :)
2020-12-06 21:10:47 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-12-06 21:11:03 +0100 <aldum> well, I like HOCON :)
2020-12-06 21:11:17 +0100 <cads> Chousuke, and toml is popular (or hopefully getting so) basically because it also has comments and trailing commas, but doesn't have self Yaml's brand of referential madness
2020-12-06 21:11:20 +0100MarcelineVQlights the candle at the altar of .ini
2020-12-06 21:11:29 +0100 <cads> self-referential madness* even
2020-12-06 21:11:32 +0100notzmv`notzmv
2020-12-06 21:11:56 +0100notzmv(~user@201-43-52-72.dsl.telesp.net.br) (Changing host)
2020-12-06 21:11:56 +0100notzmv(~user@unaffiliated/zmv)
2020-12-06 21:12:28 +0100mounty1(~mounty@210.1.196.133) (Ping timeout: 256 seconds)
2020-12-06 21:12:36 +0100 <aldum> what's the take on dhall around here?
2020-12-06 21:13:49 +0100 <monochrom> Haskell shows that you can allow both curly braces and space layout.
2020-12-06 21:13:52 +0100 <dminuoso> This channel is frequently used for dhall related questions, because apparently it's mostly haskellers that use Dhall?
2020-12-06 21:13:59 +0100 <cads> Chousuke, fwiw, I'm going around my infrastructure religiously converting my yaml into toml and loving every second of it, so imho yaml's days in the sun are also numbered
2020-12-06 21:14:02 +0100 <merijn> monochrom: And absolutely no one will use the braces ;)
2020-12-06 21:14:09 +0100 <aldum> that's why I ask
2020-12-06 21:14:17 +0100 <monochrom> Aww, you forgot SPJ.
2020-12-06 21:14:28 +0100 <dminuoso> cads: cant beat ini for configuration files!
2020-12-06 21:14:40 +0100 <monochrom> Also, I sometimes use them when the space layout rules are against my code structure.
2020-12-06 21:15:13 +0100 <dminuoso> Though lately I've started preferring just environment variables.
2020-12-06 21:15:20 +0100 <monochrom> or rather, s/code/conceptual/
2020-12-06 21:15:36 +0100 <cads> dminuoso, toml manages to, because it lets you create entries into deeply nested lists, where ini would have nothing for you
2020-12-06 21:15:51 +0100 <aldum> I did some (rudimentary) toml today, it was just like ini
2020-12-06 21:15:52 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 256 seconds)
2020-12-06 21:15:54 +0100 <monochrom> dminuoso: Wait, how much information do you pack into those poor environment variables? :)
2020-12-06 21:15:54 +0100 <dminuoso> cads: Sure, by that I meant to include toml since I consider it an ini-style language
2020-12-06 21:15:59 +0100 <dminuoso> monochrom: A lot.
2020-12-06 21:16:05 +0100 <Chousuke> cads: I'm not convinced about toml either. It seems weird in its own way, too
2020-12-06 21:16:23 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
2020-12-06 21:16:32 +0100 <Chousuke> I prefer software that doesn't need configuration, or if it does, as little of it as possible :P
2020-12-06 21:16:34 +0100 <monochrom> OK I guess if TERMCAP can do it then you can do it too.
2020-12-06 21:16:52 +0100 <cads> Chousuke, I have some reservations, yes - but fewer than with yaml, json and xml - I can say I am "happy" with my metadata format today, insofar as it's humanly possible to be happy with such
2020-12-06 21:16:52 +0100 <monochrom> Do you need to use an IDE to edit the stuff you put in your env variables? :)
2020-12-06 21:17:06 +0100 <dminuoso> monochrom: Much of our haskell software is deployed in docker, so environment variables fit well into the tooling.
2020-12-06 21:17:23 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
2020-12-06 21:17:29 +0100 <dminuoso> And honestly I had all configuration file formats with a passion. Some just less than others like ini-styles (including toml)
2020-12-06 21:17:35 +0100 <cads> Chousuke, I prefer software that I can bill customers for, and those usually have configurations ;)
2020-12-06 21:17:41 +0100 <Chousuke> environment variables are kind of so-so because they're difficult to discover
2020-12-06 21:17:44 +0100 <dminuoso> I'd love to actually bake configuration into the software (which is ideal)..
2020-12-06 21:17:48 +0100doct0rhu(~orctarorg@pool-72-88-158-154.nwrknj.fios.verizon.net)
2020-12-06 21:18:04 +0100 <monochrom> OK I guess you can create many, many env vars.
2020-12-06 21:18:08 +0100 <dminuoso> Yes.
2020-12-06 21:18:26 +0100 <dminuoso> We configure our software with .env files that are essentially just lines of `FOO=bar`
2020-12-06 21:18:28 +0100doctorhu(~orctarorg@pool-72-88-158-154.nwrknj.fios.verizon.net)
2020-12-06 21:18:33 +0100 <Chousuke> cads: most software requires configuration, but there's tons of software that requires you to configure things that you just shouldn't need to ever touch.
2020-12-06 21:18:46 +0100 <Chousuke> because they have either no defaults, or insane ones.
2020-12-06 21:18:47 +0100 <monochrom> I was nerdily thinking "use just one env var but you take a 1000-line Haskell source code and compress it and that's the value of the env var"
2020-12-06 21:18:52 +0100 <dminuoso> It's far from ideal, but at the very least we dont drag a pile of dependency nonsense just to parse a damn config file
2020-12-06 21:19:00 +0100 <dminuoso> oh haha
2020-12-06 21:20:09 +0100 <Chousuke> so then you try to get the software running but you're missing some frobnicateWidgets = 16 from the configuration that must be exactly 16 because it defaults to 8 but that doesn't actually work
2020-12-06 21:21:18 +0100 <cads> dminuoso, I like to have one config file that parses into a conf object that I can work with like conf.client.id and conf.server.ip and so on
2020-12-06 21:21:39 +0100 <Chousuke> or you have software that has 700 optional modules and enables 300 of them by default but the defaults are insane and you really just need 5 modules
2020-12-06 21:21:43 +0100 <cads> but that's basically what ini does
2020-12-06 21:22:12 +0100 <dminuoso> Chousuke: We've really played with the idea of putting *all* configuration into source code.
2020-12-06 21:22:22 +0100rprije(~rprije@14-201-170-17.tpgi.com.au)
2020-12-06 21:22:22 +0100 <dminuoso> Except for secrets.
2020-12-06 21:22:54 +0100 <Chousuke> dminuoso: Have you ever used Clear Linux? They basically made a goal to make /etc empty by default.
2020-12-06 21:23:10 +0100 <dminuoso> yeah
2020-12-06 21:23:17 +0100 <dminuoso> well, not used but heard of it
2020-12-06 21:23:20 +0100 <MarcelineVQ> ~/etc/...
2020-12-06 21:23:42 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2020-12-06 21:23:53 +0100 <Chousuke> it's not really wrong to have configuration files since of course you need to configure things like what IPs a service will listen on etc, but a lot of the defaults can be compiled in
2020-12-06 21:23:55 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Read error: Connection reset by peer)
2020-12-06 21:24:00 +0100 <cads> Chousuke, I've recently run into a similar phenomenon auditing my /etc in alpine linux. I got to the etc/-groups and etc/groups files and lost it, because I had groups for software systems from the 80s that will NEVER run on my system
2020-12-06 21:24:07 +0100 <Chousuke> or should at least be read from static files somewhere that don't change.
2020-12-06 21:24:17 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2020-12-06 21:24:46 +0100 <cads> I get that the dead configuration isn't causing any pain in production, but it sure does make it hard to audit the configuration for correctness
2020-12-06 21:24:49 +0100 <Chousuke> cads: lots of those groups are probably standardized in POSIX or something :ÖP
2020-12-06 21:24:55 +0100 <cads> yeah, they were
2020-12-06 21:25:19 +0100 <dminuoso> Chousuke: Well, the question is what belongs into a configuration file and what does not.
2020-12-06 21:25:24 +0100 <monochrom> oooohhhh an oxygen atom that wants to donate 4 electrons....
2020-12-06 21:25:43 +0100 <Chousuke> :P
2020-12-06 21:25:52 +0100 <cads> dminuoso, as in, is the behavior easier to audit when you now have to audit code instead of confs
2020-12-06 21:26:35 +0100 <dminuoso> cads: With code we have traceable artifacts.
2020-12-06 21:26:41 +0100doctorhu(~orctarorg@pool-72-88-158-154.nwrknj.fios.verizon.net) (Quit: Leaving)
2020-12-06 21:26:57 +0100 <Chousuke> dminuoso: you can have 2 kinds of configuration files: user-modifiable ones and the kind you ship with the software that the user should not touch, ever. Just don't put them in the same place :)
2020-12-06 21:27:03 +0100 <cads> deployed configuration needs to come from a traceable place too
2020-12-06 21:27:08 +0100 <dminuoso> Say, if I tell you what's the sum in this `\x -> x + 4` you'd have to tell me "it depends on what x is"
2020-12-06 21:27:17 +0100 <cads> ie, keep it in source countrol as well
2020-12-06 21:27:20 +0100 <dminuoso> that is, it depends on how you resolve the dependency on x
2020-12-06 21:27:45 +0100 <dminuoso> Chousuke: If its not user modifiable, it belongs into the software for sure.
2020-12-06 21:27:57 +0100 <dminuoso> The entire point of a configuratoin file is so you can modify it.
2020-12-06 21:28:20 +0100 <dminuoso> Im a proponent of packing everything into the binary for most casual applications.
2020-12-06 21:28:21 +0100 <cads> it should be in a configuration file that only exists in production
2020-12-06 21:28:25 +0100 <Chousuke> yeah, but often there's configuration that really is not meant to be modified by the end user
2020-12-06 21:28:43 +0100 <Chousuke> I'm thinking of something like tomcat's XML files.
2020-12-06 21:29:06 +0100 <monochrom> and plain.tex :)
2020-12-06 21:29:11 +0100 <Chousuke> those are configuration for *developers*, not end users
2020-12-06 21:30:12 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Read error: Connection reset by peer)
2020-12-06 21:30:17 +0100 <cads> say you have an app, and part of the build is that you create a windows .msi package. for that you have to name the package and tell the install generator where the package should keep its registry keys, and what script should run to uninstall the package.
2020-12-06 21:30:36 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2020-12-06 21:30:38 +0100 <cads> This is part of the project's build time configuration... why not keep that in configuration files? why put that in code?
2020-12-06 21:30:45 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Read error: Connection reset by peer)
2020-12-06 21:31:19 +0100 <Chousuke> you usually don't ship that with the software though.
2020-12-06 21:32:01 +0100 <cads> I'm trying to give an example of a configuration file that the end user never even sees, but which developers might occasionally wish to adjust
2020-12-06 21:32:24 +0100drincruz_(~adriancru@ool-44c748be.dyn.optonline.net)
2020-12-06 21:32:54 +0100 <hpc> just imagine source code as a set of configuration files for the compiler
2020-12-06 21:32:59 +0100 <Chousuke> I'm just thinking about interfaces here. Lots of software exposes settings where if you actually change any of them from whatever the developers have set, the software will break.
2020-12-06 21:33:08 +0100 <hpc> also configuration files are just a domain-specific declarative language
2020-12-06 21:33:14 +0100 <cads> hpc, yep
2020-12-06 21:33:57 +0100 <cads> it's a language for the configuration domain of an app, designed to convey absolutely zero logic
2020-12-06 21:34:08 +0100 <cads> or as little logic as possible
2020-12-06 21:34:22 +0100Cale(~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com) (Remote host closed the connection)
2020-12-06 21:34:28 +0100 <Chousuke> cads: Tomcat / Wildfly XML files are things I wish I could avoid seeing, but the developers obviously need to work with to get their software deployed on the platform :P
2020-12-06 21:35:15 +0100 <cads> that way the configuration domain can stay far away from the logic domain, and you can cleanly interface between the two domains instead of smearing configuration through your logic like a turd in your pants
2020-12-06 21:35:19 +0100 <Chousuke> in the admin role I don't think I should have to worry about what classes and modules wildfly loads to run whatever software I'm configuring.
2020-12-06 21:35:39 +0100sparsity(5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145)
2020-12-06 21:35:55 +0100 <Chousuke> but often that configuration is mixed with things I actually *do* have to modify, like database settings
2020-12-06 21:36:17 +0100 <monochrom> Imagine runghc reading your Haskell code from an env var / It is not hard if you try / No more border between program and data / Down that road is Lisp ...
2020-12-06 21:36:24 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2020-12-06 21:36:35 +0100 <cads> Chousuke, I think that if I were coming from those platforms my crusade for readable conf files would still exist, but be of an opposite polarity
2020-12-06 21:36:37 +0100 <hpc> down that road is PAM, where the configuration files are a list of .so files to load :D
2020-12-06 21:36:49 +0100 <monochrom> haha you win
2020-12-06 21:37:44 +0100 <cads> hpc, I've recently stopped maintaining a single shell profile, and now I just add shell profile modules to my /etc/profile.d/ directory. I feel I have matoored
2020-12-06 21:37:47 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection)
2020-12-06 21:37:47 +0100 <Chousuke> hpc: or things like Jenkins, which is basically useless by itself, but you can make it into a CI system by loading just the right plugins.
2020-12-06 21:38:26 +0100euisuny(~euisuny@2601:47:4500:2140:c192:2e54:b4ff:5cb) (Remote host closed the connection)
2020-12-06 21:39:15 +0100 <hpc> the funny thing is i actually like jenkins, just not as a CI system
2020-12-06 21:39:17 +0100 <cads> Chousuke, in those systems does it help to have a base configuration that has been winnowed down to have the absolute minimum BS boilerplate, plus a live configuration of all the parameters that you actually /want/ to see when you open the conf file?
2020-12-06 21:39:43 +0100 <cads> Chousuke, that kind of hides the technical debt in a place you won't think about... and where it'll fester
2020-12-06 21:40:02 +0100 <cads> but it gives you a better day to day experience
2020-12-06 21:40:36 +0100cadsis afraid their own configurations are going to baloon like this, now that they are moving to micoservices and kubernetes
2020-12-06 21:41:38 +0100 <cads> I'm going to be working hard to deduplicate configuration, and to not have any configurations that I can't clearly explain what value they provide and why we want to have them
2020-12-06 21:41:47 +0100olligobber(~olligobbe@unaffiliated/olligobber)
2020-12-06 21:41:54 +0100 <Chousuke> cads: one way to do it sanely is to have the "default" config in /usr/share or something, load it, and then just override things from /etc
2020-12-06 21:42:44 +0100 <Chousuke> and if there's no way to provide a sane default configuration for something, just... don't.
2020-12-06 21:42:58 +0100 <Chousuke> abort startup and complain if the user hasn't configured it :)
2020-12-06 21:43:26 +0100xerox_(~xerox@unaffiliated/xerox) (Quit: leaving)
2020-12-06 21:43:58 +0100 <cads> Chousuke, I am okay with that solution from a security perspective with the proviso that security auditors /must/ inspect computed configurations so as to include the portions inherited from default (they cannot audit the conf file alone)
2020-12-06 21:44:08 +0100knupfer(~Thunderbi@200116b82ce66f00891d43401c35143c.dip.versatel-1u1.de) (Remote host closed the connection)
2020-12-06 21:44:16 +0100knupfer(~Thunderbi@200116b82ce66f00913d35fb7b6361ca.dip.versatel-1u1.de)
2020-12-06 21:44:59 +0100 <Chousuke> some software can dump the full configuration they would use. That's pretty nice.
2020-12-06 21:45:19 +0100 <cads> Chousuke, I dare say that the "complain and bail" or just "complain and keep running if possible" should be the default even in many cases you or I might be tempted to provide a "canonical" default behavior
2020-12-06 21:45:29 +0100 <cads> ie, yagi principle
2020-12-06 21:45:35 +0100 <Chousuke> eg. "doveconf -n"
2020-12-06 21:46:21 +0100 <Chousuke> yeah. It's always a tradeoff
2020-12-06 21:46:52 +0100xerox_(~xerox@unaffiliated/xerox)
2020-12-06 21:46:59 +0100 <cads> Chousuke, if you have a config module that unifies config from multiple places, I would say it makes sense to log the computed config on your debug level
2020-12-06 21:47:08 +0100 <Chousuke> it's convenient not having to configure something but there are things you just have to, because it's so heavily environment-dependent.
2020-12-06 21:48:06 +0100 <Chousuke> bad defaults are worse than no defaults :P
2020-12-06 21:48:20 +0100 <cads> then sec auditor audits that. If the config is simply loaded from a single conf file, then I don't think you need to log the config. If you have a commit hash for that instance's config, the auditor can audit that config file directly.
2020-12-06 21:48:53 +0100 <cads> so there's a little less security compliance tooling involved, which is nice, because how often will people invest in compliance tooling
2020-12-06 21:48:54 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-12-06 21:48:58 +0100 <gentauro> is it "safe" to delete snapshots in the `~/.stack/snapshots` folder? I think 119 snapshots using 15 GB of my hardrive is a bit to much …
2020-12-06 21:49:04 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-12-06 21:49:40 +0100 <Chousuke> cads: on the other hand if you have all kinds of "irrelevant" configuration in your configuration file it's hard for an auditor to tell what's actually been modified from the defaults.
2020-12-06 21:51:34 +0100 <cads> Chousuke, one thing that has helped me (when working with my own configurations) is to split the configuration into clean and nonintersecting subdomains (typically related to the subdomains that make up your app's concerns). But I don't have any legacy systems whos configurations have grown out of control. I think that tends to happen though, and I don't know if refactoring can hold it off forever.
2020-12-06 21:53:14 +0100Tops2(~Tobias@dyndsl-095-033-018-252.ewe-ip-backbone.de)
2020-12-06 21:54:34 +0100 <sm[m]> gentauro: yes, stack will just reinstall them if needed
2020-12-06 21:54:42 +0100 <gentauro> sm[m]: cool
2020-12-06 21:54:52 +0100 <sm[m]> ncdu is good for browsing & deleting
2020-12-06 21:55:19 +0100nowhere_man(~pierre@2a01:e0a:3c7:60d0:8e6f:ae06:e9b9:b7ab) (Remote host closed the connection)
2020-12-06 21:55:42 +0100nowhere_man(~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155)
2020-12-06 21:56:21 +0100michaelh(~user@81-234-107-251-no522.tbcn.telia.com) (Quit: ERC (IRC client for Emacs 26.1))
2020-12-06 21:57:45 +0100 <cads> ncdu++, also take a look at bootandy's 'dust': https://github.com/bootandy/dust
2020-12-06 21:59:57 +0100 <cads> (for when you want a deep usage graph, but don't need to delete things)
2020-12-06 22:03:20 +0100monochrom(trebla@216.138.220.146) (Quit: NO CARRIER)
2020-12-06 22:05:04 +0100texasmynsted(~texasmyns@212.102.45.103)
2020-12-06 22:05:34 +0100monochrom(trebla@216.138.220.146)
2020-12-06 22:08:13 +0100danso(~dan@69-165-210-185.cable.teksavvy.com)
2020-12-06 22:09:21 +0100ducaale(56897b9d@host86-137-123-157.range86-137.btcentralplus.com)
2020-12-06 22:09:25 +0100 <cads> dminuoso, are you and the team specifically implementing configuration as code practice? Ie, according to Paul Hammant that is " the formal migration of config between environments, backed by a version control system." https://rollout.io/blog/configuration-as-code-everything-need-know/
2020-12-06 22:10:09 +0100L29Ah(~L29Ah@unaffiliated/l29ah) (Ping timeout: 260 seconds)
2020-12-06 22:12:00 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-06 22:13:00 +0100hexfive(~hexfive@50-47-142-195.evrt.wa.frontiernet.net)
2020-12-06 22:14:29 +0100 <cads> by keeping conf tomls in vcs (except my secrets), it seems I already do that. I thought config as code meant writing all your config into constants sprinkled throughout the code, as if we're all learning to code for the first time and we're back to making rookie mistakes..
2020-12-06 22:16:07 +0100knupfer(~Thunderbi@200116b82ce66f00913d35fb7b6361ca.dip.versatel-1u1.de) (Quit: knupfer)
2020-12-06 22:16:15 +0100knupfer(~Thunderbi@200116b82ce66f005834defffe90090d.dip.versatel-1u1.de)
2020-12-06 22:16:18 +0100knupfer(~Thunderbi@200116b82ce66f005834defffe90090d.dip.versatel-1u1.de) (Client Quit)
2020-12-06 22:16:24 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2020-12-06 22:16:33 +0100knupfer(~Thunderbi@i59F7FFAD.versanet.de)
2020-12-06 22:17:34 +0100riko(~enrik@p200300ceaf0f3900597c3397d589339d.dip0.t-ipconnect.de) (Quit: Konversation terminated!)
2020-12-06 22:18:08 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-ttkevgswiiluxpdp) ()
2020-12-06 22:19:58 +0100heatsink(~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183) (Remote host closed the connection)
2020-12-06 22:20:00 +0100 <cads> oh, in this approach we keep a separate repo for configs, so that our dev doesn't have to be affected by the churn of production's current "flavor of the week" configuration
2020-12-06 22:20:43 +0100fuzzypixelz(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2020-12-06 22:20:55 +0100 <cads> his could be an issue, if the config your code encounters in dev and testing does not reflect the real world config
2020-12-06 22:21:11 +0100 <fuzzypixelz> sorry to be asking this again, but how do I get automatic type signature added in emacs?
2020-12-06 22:21:15 +0100 <fuzzypixelz> I'm using haskell-mode
2020-12-06 22:24:30 +0100ducaale(56897b9d@host86-137-123-157.range86-137.btcentralplus.com) (Remote host closed the connection)
2020-12-06 22:25:11 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus) (Quit: ...zzzZZZ)
2020-12-06 22:25:55 +0100knupfer(~Thunderbi@i59F7FFAD.versanet.de) (Ping timeout: 246 seconds)
2020-12-06 22:29:02 +0100Nahra(~Nahra@unaffiliated/nahra)
2020-12-06 22:29:58 +0100 <cads> fuzzypixelz, hmm, I could use that functionality too - are you sure haskell-mode is supposed to provide it?
2020-12-06 22:31:08 +0100heatsink(~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183)
2020-12-06 22:32:55 +0100geekosaur(ae68c070@cpe-174-104-192-112.neo.res.rr.com) (Remote host closed the connection)
2020-12-06 22:32:56 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 240 seconds)
2020-12-06 22:33:22 +0100 <cads> fuzzypixelz, The issue you're having is that when you do C-u C-c C-t, you get the type annotation (of the current function) in the bottom of the buffer. But what you want is for every nondecorated function in the file to become fully and permanently annotated. Is that correct?
2020-12-06 22:33:27 +0100acidjnk_new(~acidjnk@p200300d0c719ff8291316ca5b709066d.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-12-06 22:36:55 +0100 <koz_> :kind! 'Just 'True
2020-12-06 22:37:04 +0100 <koz_> > :kind! 'Just 'True
2020-12-06 22:37:08 +0100 <lambdabot> <hint>:1:1: error: <hint>:1:1: error: parse error on input ‘:’
2020-12-06 22:37:17 +0100 <koz_> > :k 'Just 'True
2020-12-06 22:37:20 +0100danza(~francesco@151.43.197.171) (Ping timeout: 272 seconds)
2020-12-06 22:37:20 +0100 <lambdabot> <hint>:1:1: error: <hint>:1:1: error: parse error on input ‘:’
2020-12-06 22:37:55 +0100 <cads> https://github.com/jaspervdj/stylish-haskell
2020-12-06 22:38:03 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2020-12-06 22:38:43 +0100 <cads> fuzzypixelz, I'm thinking that if we have to implement this ourselves, the most maintable way might be to write a stylish-haskell plugin
2020-12-06 22:39:40 +0100z0k(~user@115.186.169.31) (Quit: WeeChat 3.0)
2020-12-06 22:40:05 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2020-12-06 22:42:06 +0100 <cads> hmm... would it be unusual or at all a bad idea to repurpose a code beautifier into a code preprocessor for an experimental haskell syntax extension?
2020-12-06 22:42:29 +0100 <cads> I should say, to repurpose stylish-haskell
2020-12-06 22:44:25 +0100heatsink(~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183) (Remote host closed the connection)
2020-12-06 22:45:40 +0100GuerrillaMonkey(~Jeanne-Ka@66.115.189.207)
2020-12-06 22:46:22 +0100mp___313(~mp@hell.cx) (Ping timeout: 256 seconds)
2020-12-06 22:46:59 +0100mirrorbird(~psutcliff@h85-8-41-6.cust.a3fiber.se)
2020-12-06 22:47:17 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-06 22:47:56 +0100Jeanne-Kamikaze(~Jeanne-Ka@66.115.189.175) (Ping timeout: 240 seconds)
2020-12-06 22:48:04 +0100parsnip(sid147265@gateway/web/irccloud.com/x-ijryicdhhvmgitdg)
2020-12-06 22:48:22 +0100heatsink(~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183)
2020-12-06 22:49:12 +0100benjamingr__(uid23465@gateway/web/irccloud.com/x-vecwnwhdvzjuawlu)
2020-12-06 22:50:54 +0100L29Ah(~L29Ah@unaffiliated/l29ah)
2020-12-06 22:54:18 +0100LKoen(~LKoen@73.174.9.109.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
2020-12-06 22:55:20 +0100 <fuzzypixelz> cads: yes! exactly!
2020-12-06 22:58:21 +0100 <fuzzypixelz> cads: I wouldn't say reusing stylish-haskell is a bad idea
2020-12-06 22:58:26 +0100 <dminuoso> cads: Yes because it cant do what you want it to do. Assmuing you're still chasing this import business, then it's not sufficient.
2020-12-06 22:58:47 +0100 <dminuoso> stylish-haskell uses ghc-lib-parser, so it can only parse what GHC can parse (under all possible extensions)
2020-12-06 22:58:51 +0100 <dsal> Is there not a thing in Ix to go the other way? i.e., can (drop n . range) but can I just ask what n would be? It seems no from the docs, but I might be missing something.
2020-12-06 22:59:03 +0100 <sm[m]> cads: thanks for the dust tip. It's.. interesting! Going to stare at it a bit
2020-12-06 22:59:23 +0100 <dminuoso> dsal: What do you mean by "other way"?
2020-12-06 22:59:44 +0100 <dminuoso> Oh, different Ix sorry.
2020-12-06 22:59:49 +0100 <dminuoso> dsal: Use DOwn
2020-12-06 23:00:18 +0100 <dminuoso> % range (Down (1, 10))
2020-12-06 23:00:18 +0100 <yahb> dminuoso: ; <interactive>:57:8: error:; * Couldn't match expected type `(a, a)' with actual type `Down (a0, b0)'; * In the first argument of `range', namely `(Down (1, 10))'; In the expression: range (Down (1, 10)); In an equation for `it': it = range (Down (1, 10)); * Relevant bindings include it :: [a] (bound at <interactive>:57:1)
2020-12-06 23:00:18 +0100 <dsal> I mean it maps from the range a value. I want to know where a value would exist within that range.
2020-12-06 23:00:49 +0100 <dsal> I can do this by asking for the range as a list and dropping n elements from it. But that seems silly.
2020-12-06 23:01:26 +0100 <dminuoso> Oh wait, Down doesnt do what I want
2020-12-06 23:01:42 +0100britva(~britva@2a02:aa13:7240:2980:6477:78c0:db0c:39cf)
2020-12-06 23:01:55 +0100 <dminuoso> dsal: Do you need this polymorphic over any Ix, or can you monomorphize?
2020-12-06 23:02:31 +0100doct0rhu(~orctarorg@pool-72-88-158-154.nwrknj.fios.verizon.net) (Quit: Leaving)
2020-12-06 23:02:34 +0100 <dsal> Yeah, this is a bit abstract. In *practice*, it's Char and pretty obvious what to do. By definition, that's not a requirement.
2020-12-06 23:02:40 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Remote host closed the connection)
2020-12-06 23:03:38 +0100 <dminuoso> dsal: So this is an odd question but...
2020-12-06 23:03:41 +0100 <dminuoso> What's wrong with..
2020-12-06 23:03:44 +0100 <dminuoso> % :t index
2020-12-06 23:03:44 +0100 <yahb> dminuoso: Ix a => (a, a) -> a -> Int
2020-12-06 23:03:56 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2020-12-06 23:04:04 +0100 <dsal> I want Int -<> a
2020-12-06 23:04:07 +0100 <dsal> er, Int -> a
2020-12-06 23:04:37 +0100 <dminuoso> That doesnt work on Ix
2020-12-06 23:04:46 +0100 <dminuoso> Ix does not even guarantee its bounded
2020-12-06 23:05:06 +0100 <dminuoso> Or it could perhaps me a cyclic structure
2020-12-06 23:05:16 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-hbidpjgwzfhutzyx)
2020-12-06 23:05:25 +0100 <iqubic> Ix a does require that there's an Ord instance for a, right?
2020-12-06 23:05:46 +0100 <dminuoso> Right
2020-12-06 23:07:13 +0100Nahra(~Nahra@unaffiliated/nahra) (Quit: leaving)
2020-12-06 23:08:01 +0100 <dminuoso> dsal: A sort of "half way there" is Enum.
2020-12-06 23:08:19 +0100blah59(4a4047b5@cpe-74-64-71-181.hvc.res.rr.com)
2020-12-06 23:08:50 +0100 <dminuoso> Overall I dislike Enum because it admits partiality, and people use it as a poor mans "C enum" which it's not meant to be.
2020-12-06 23:08:52 +0100heatsink(~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183) (Remote host closed the connection)
2020-12-06 23:09:09 +0100 <cads> sm[m], I was out on my desert balcony and I wiped my finger and noticed "hmm, dusti". So I invented an idea for interactive dust (dust plus a ncurses cursor that lets you pick files, delete them, expand directories that dust has collapsed, and so on.). Could be a fun first rust project, but I digress.
2020-12-06 23:09:16 +0100 <dsal> Yeah, I was hoping there was Enum here. Ix is even more magic to me now.
2020-12-06 23:09:51 +0100 <cads> sm[m], if dust were dusti, it would replace ncdu for me I think
2020-12-06 23:09:57 +0100 <dsal> Oh, I see. range is defined by the instance, so it gets to use Enum, but I don't.
2020-12-06 23:10:06 +0100 <sm[m]> cads: I like it, but unfortunately find the display too unintuitive. Perhaps with more docs it'll stick
2020-12-06 23:11:01 +0100 <dminuoso> dsal: Right, there's no coherence laws with Enum, and Enum itself is sort of lawless
2020-12-06 23:11:37 +0100 <dsal> I'm also a bit of an anarchist.
2020-12-06 23:12:42 +0100 <cads> sm[m], I feel confident I could improve dust's display while i'm making it interactive, but since ncdu's code is in C I want it to rot in obscurity without my even reading it
2020-12-06 23:12:47 +0100bgamari(~bgamari@2001:470:e438::1)
2020-12-06 23:12:56 +0100cyphase(~cyphase@unaffiliated/cyphase) (Ping timeout: 240 seconds)
2020-12-06 23:13:49 +0100 <cads> but yeah, it's currently ugly, and I think what I see when I look at it is more its potential
2020-12-06 23:14:01 +0100bgamari_(~bgamari@72.65.103.183) (Ping timeout: 264 seconds)
2020-12-06 23:15:18 +0100 <cads> and the fact that it's rust is huge, because I can work with rust. And the visual mapping gives me new information about files underneath a given directory level - that's novel, and makes me want to explore and improve the visual presentation.
2020-12-06 23:16:36 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2020-12-06 23:17:21 +0100cyphase(~cyphase@unaffiliated/cyphase)
2020-12-06 23:17:28 +0100borne(~fritjof@200116b8649d08009ba1d43461655289.dip.versatel-1u1.de)
2020-12-06 23:17:31 +0100 <sm[m]> it is definitely informative, even without understanding the output in full. Will keep!
2020-12-06 23:17:59 +0100 <sm[m]> who will make duhst :)
2020-12-06 23:18:24 +0100britva(~britva@2a02:aa13:7240:2980:6477:78c0:db0c:39cf) (Quit: This computer has gone to sleep)
2020-12-06 23:18:25 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-12-06 23:18:42 +0100heatsink(~heatsink@2600:1700:bef1:5e10:406f:6a8d:2175:4183)
2020-12-06 23:19:20 +0100notzmv(~user@unaffiliated/zmv) (Read error: No route to host)
2020-12-06 23:20:55 +0100notzmv(~user@unaffiliated/zmv)
2020-12-06 23:22:15 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2020-12-06 23:22:37 +0100 <cads> sm[m], are you familiar with the output of the tree -L 2 command? This uses ascii pipe, elbow and tee characters to visualizes the top two levels. That is the current directory plus the immediate descendants of files in that directory. If you can visualize such a truncated file tree, note that each item is on its own row by convention
2020-12-06 23:24:07 +0100 <cads> Each row contains a file or a directory. We can annotate that row with an indicator of that item's size. We use either the file size or the composite size of a directory's descendants.
2020-12-06 23:25:24 +0100mounty(~mounty@2001:8000:2f59:0:a42d:288d:66cb:9dc6)
2020-12-06 23:25:28 +0100drincruz_(~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 256 seconds)
2020-12-06 23:25:53 +0100 <cads> dust can group directories by level or by the size of the directory contents. That means for instance that if a directory is very large, we do not display its contents, but display the size indicator for that entire directory
2020-12-06 23:26:21 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Disconnected by services)
2020-12-06 23:26:22 +0100hyperisco_(~hyperisco@d192-186-117-226.static.comm.cgocable.net)
2020-12-06 23:30:38 +0100 <cads> dminuoso no, I want to help fuzzypixelz do his type encrichment tool using something better than manual cut past automation of .hs files via perl, which is the current suggested solution according to stack exchange (only don't use it on qualified imports because it's broken)
2020-12-06 23:32:04 +0100fendor(~fendor@77.119.131.148.wireless.dyn.drei.com) (Remote host closed the connection)
2020-12-06 23:33:46 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-06 23:34:03 +0100o1lo01ol1o(~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
2020-12-06 23:35:48 +0100 <cads> fuzzypixelz's issue is that there are some functions - those whose types come from qualified imports - that the current perl based solution bonks on, because parsing qualified names is not implemented
2020-12-06 23:37:40 +0100 <cads> what should we call this? automatic type documentation?
2020-12-06 23:38:01 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
2020-12-06 23:39:38 +0100mirrorbird(~psutcliff@h85-8-41-6.cust.a3fiber.se) (Quit: Leaving)
2020-12-06 23:41:33 +0100dxld(~dxld@rush.pub.dxld.at) (Quit: Bye)
2020-12-06 23:43:11 +0100dxld(~dxld@rush.pub.dxld.at)
2020-12-06 23:43:13 +0100falafel(~falafel@pool-108-31-243-192.washdc.fios.verizon.net)
2020-12-06 23:45:03 +0100Ariakenom(~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se) (Quit: Leaving)
2020-12-06 23:45:40 +0100conal(~conal@64.71.133.70)
2020-12-06 23:46:28 +0100falafel_(~falafel@pool-108-31-243-192.washdc.fios.verizon.net)
2020-12-06 23:48:10 +0100falafel(~falafel@pool-108-31-243-192.washdc.fios.verizon.net) (Ping timeout: 246 seconds)
2020-12-06 23:48:11 +0100blah59(4a4047b5@cpe-74-64-71-181.hvc.res.rr.com) ()
2020-12-06 23:48:29 +0100GuerrillaMonkey(~Jeanne-Ka@66.115.189.207) (Quit: Leaving)
2020-12-06 23:48:35 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-06 23:48:39 +0100Jeanne-Kamikaze(~Jeanne-Ka@66.115.189.207)
2020-12-06 23:48:59 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-06 23:49:35 +0100TommyC7(~TommyC@unaffiliated/sepulchralbloom)
2020-12-06 23:50:56 +0100abhixec(~abhixec@c-67-169-141-95.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2020-12-06 23:52:28 +0100drincruz_(~adriancru@ool-44c748be.dyn.optonline.net)
2020-12-06 23:52:56 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Read error: Connection reset by peer)
2020-12-06 23:53:22 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2020-12-06 23:53:33 +0100 <hyiltiz> maerwald tomjaguarpaw: yeah, https://hackage.haskell.org/package/roundtrip https://hackage.haskell.org/package/roundtrip-aeson and https://hackage.haskell.org/package/roundtrip-string were the libs I were referring to
2020-12-06 23:53:56 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds)
2020-12-06 23:54:40 +0100 <hyiltiz> Anyone with any experience using 'em? The glaringly sparse documentation is a bit prohibitive, and seems like the libs were a result of an academic excercise