2021/07/09

2021-07-09 00:02:03 +0200jespada(~jespada@90.254.247.46) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-07-09 00:02:17 +0200yauhsien(~yauhsien@61-231-39-135.dynamic-ip.hinet.net)
2021-07-09 00:02:44 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
2021-07-09 00:02:57 +0200 <koz> If I want to test whether something _compiles_ (say, if I'm trying to TH stuff up) in an automated way, what's a good thing to use?
2021-07-09 00:02:57 +0200sm(~sm@plaintextaccounting/sm)
2021-07-09 00:03:03 +0200jespada(~jespada@90.254.247.46)
2021-07-09 00:03:18 +0200fluffyballoon(~fluffybal@199.204.58.62) (Quit: Client closed)
2021-07-09 00:03:28 +0200 <geekosaur> ghc -fno-code ?
2021-07-09 00:03:41 +0200fluffyballoon(~fluffybal@199.204.58.62)
2021-07-09 00:03:43 +0200 <koz> I mean, something similar to unit tests.
2021-07-09 00:03:57 +0200 <koz> So I can like, run it as part of a test suite and have it fail if compilation fails.
2021-07-09 00:05:40 +0200dminuosowould also add -O0 to geekosaur's suggestion
2021-07-09 00:05:44 +0200neceve(~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 252 seconds)
2021-07-09 00:05:52 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-07-09 00:06:34 +0200warnz(~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8)
2021-07-09 00:07:26 +0200yauhsien(~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-07-09 00:10:59 +0200warnz(~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) (Ping timeout: 255 seconds)
2021-07-09 00:13:53 +0200argento(~argent0@168-227-97-34.ptr.westnet.com.ar)
2021-07-09 00:14:36 +0200chele(~chele@user/chele) (Remote host closed the connection)
2021-07-09 00:17:21 +0200argento(~argent0@168-227-97-34.ptr.westnet.com.ar) (Client Quit)
2021-07-09 00:20:22 +0200mikail(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f)
2021-07-09 00:21:40 +0200trattue(~trattue@152.70.182.158) (Quit: bye)
2021-07-09 00:21:47 +0200cheater(~Username@user/cheater) (Ping timeout: 255 seconds)
2021-07-09 00:22:11 +0200cheater(~Username@user/cheater)
2021-07-09 00:29:22 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
2021-07-09 00:29:36 +0200aerona(~aerona@2600:6c54:4600:f300:c99c:8727:19f:ba14)
2021-07-09 00:29:56 +0200acidjnk(~acidjnk@p200300d0c72b956384793fd2325b5113.dip0.t-ipconnect.de)
2021-07-09 00:30:09 +0200slep(~slep@cpc150002-brnt4-2-0-cust437.4-2.cable.virginm.net) (Quit: No Ping reply in 180 seconds.)
2021-07-09 00:30:13 +0200mikail(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f) (Ping timeout: 246 seconds)
2021-07-09 00:30:13 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 246 seconds)
2021-07-09 00:30:22 +0200slep(~slep@cpc150002-brnt4-2-0-cust437.4-2.cable.virginm.net)
2021-07-09 00:30:43 +0200fendor(~fendor@91.141.49.3.wireless.dyn.drei.com) (Read error: Connection reset by peer)
2021-07-09 00:33:01 +0200chris-the-slurpa(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-09 00:33:43 +0200chris-the-slurpa(~chris@81.96.113.213)
2021-07-09 00:37:59 +0200chris-the-slurpa(~chris@81.96.113.213) (Ping timeout: 255 seconds)
2021-07-09 00:38:53 +0200chomwitt(~Pitsikoko@athedsl-16082.home.otenet.gr) (Ping timeout: 255 seconds)
2021-07-09 00:42:29 +0200acowley(~acowley@c-68-83-22-43.hsd1.nj.comcast.net) (Read error: Connection reset by peer)
2021-07-09 00:50:13 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-09 00:51:10 +0200acowley(~acowley@c-68-83-22-43.hsd1.nj.comcast.net)
2021-07-09 00:52:11 +0200kilolympus(~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) (Read error: Connection reset by peer)
2021-07-09 00:53:53 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net)
2021-07-09 00:53:53 +0200Kaipi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Ping timeout: 265 seconds)
2021-07-09 00:58:07 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-07-09 00:59:19 +0200Atum_(~IRC@user/atum/x-2392232)
2021-07-09 01:03:10 +0200yauhsien(~yauhsien@61-231-39-135.dynamic-ip.hinet.net)
2021-07-09 01:06:00 +0200ptr_frac7al(~longlong@user/ptr-frac7al/x-0038398)
2021-07-09 01:07:45 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection)
2021-07-09 01:07:52 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-09 01:08:10 +0200yauhsien(~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
2021-07-09 01:12:33 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 258 seconds)
2021-07-09 01:12:53 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-07-09 01:13:55 +0200ukari(~ukari@user/ukari)
2021-07-09 01:19:40 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-07-09 01:24:20 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
2021-07-09 01:25:41 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2021-07-09 01:25:44 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 244 seconds)
2021-07-09 01:34:14 +0200alx741(~alx741@181.196.68.47) (Ping timeout: 255 seconds)
2021-07-09 01:38:56 +0200 <oak-> I've been doing my first project where I'm writing Haskell code into production system and being paid doing the work, and I must say that I'm amazed how quick I can advance on the project even though I think I'm still quite beginner with Haskell
2021-07-09 01:39:12 +0200 <oak-> The client said I can use any programming language I want, so I naturally chose Haskell :D
2021-07-09 01:39:23 +0200acidjnk_new(~acidjnk@p200300d0c72b95631d5780c7e55edf21.dip0.t-ipconnect.de)
2021-07-09 01:40:03 +0200acidjnk_new3(~acidjnk@p200300d0c72b9563e5efeb4dbf0edadc.dip0.t-ipconnect.de)
2021-07-09 01:40:45 +0200 <oak-> The solution is already working quite well, but I think I should probably learn either MTL or Tagless Final to make the code cleaner and more readable
2021-07-09 01:40:45 +0200 <orzo> sounds nice
2021-07-09 01:41:00 +0200jol(~jol@jol.dev)
2021-07-09 01:43:08 +0200 <oak-> The downside is there won't be not so many hours to bill :D
2021-07-09 01:43:12 +0200acidjnk(~acidjnk@p200300d0c72b956384793fd2325b5113.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-07-09 01:43:43 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-07-09 01:44:04 +0200 <orzo> last time i used haskell in production, i was bitten by the poor cross support
2021-07-09 01:44:11 +0200acidjnk_new(~acidjnk@p200300d0c72b95631d5780c7e55edf21.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-07-09 01:44:16 +0200 <orzo> it was a long time ago
2021-07-09 01:44:35 +0200 <orzo> but ghc still isn't well known for being a great cross compiler
2021-07-09 01:45:42 +0200 <orzo> it's surely better now than then though
2021-07-09 01:46:02 +0200 <orzo> still, i wished it "just worked"
2021-07-09 01:46:05 +0200 <oak-> I'm doing development on Mac and then using virtual machine with Ubuntu (because the target system is using Ubuntu) to build the code and package it to .deb package, and then just deploy the .deb package to target system
2021-07-09 01:46:05 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
2021-07-09 01:46:21 +0200 <oak-> At least on Mac Os and Linux it runs, I haven't tried Windows :P
2021-07-09 01:46:37 +0200 <orzo> i was on mac too
2021-07-09 01:46:44 +0200 <orzo> years ago
2021-07-09 01:46:47 +0200 <orzo> say 2008
2021-07-09 01:46:50 +0200justache(~justache@user/justache) (Read error: Connection reset by peer)
2021-07-09 01:47:10 +0200 <orzo> it sounds like you got a nice dev enviro setup
2021-07-09 01:47:44 +0200justache(~justache@user/justache)
2021-07-09 01:47:50 +0200 <orzo> it's annoying how everything takes tons of resources to build nowadays
2021-07-09 01:48:01 +0200 <orzo> i'm using an old laptop as my main computer
2021-07-09 01:48:09 +0200 <orzo> that i do all my dev on
2021-07-09 01:48:31 +0200 <orzo> there's no reason why projects can't build on this machine
2021-07-09 01:48:49 +0200 <orzo> i'm particularly annoyed with the latest android tools
2021-07-09 01:48:52 +0200 <orzo> not haskell related
2021-07-09 01:49:19 +0200 <oak-> I have also done Android development in the past in various companies
2021-07-09 01:49:29 +0200 <orzo> i wish i could write android in haskell and use only ghc to make an apk file
2021-07-09 01:49:39 +0200 <oak-> Like at the operating system level, built the whole Android image from the source
2021-07-09 01:49:49 +0200 <orzo> oh right
2021-07-09 01:49:53 +0200 <orzo> that's what i wish i could avoid
2021-07-09 01:50:12 +0200 <orzo> but just using the sdk/studio seems to be almost as much resources as the whole os
2021-07-09 01:50:15 +0200 <oak-> Even with the latest hardware the clean build seems to take ~1 hour
2021-07-09 01:50:44 +0200 <oak-> Last Android I was building was the 8.1 or something, I haven't tried to build the latest 11 version
2021-07-09 01:51:47 +0200 <oak-> There's just massive amounts of Java code on the Android operating system, especially in the frameworks/base
2021-07-09 01:51:59 +0200 <oak-> Yeah, isn't the Android Studio based on IntelliJ IDEA or something
2021-07-09 01:52:19 +0200 <orzo> i'd like a way to just build apk files from java source and resources using gnu make or something
2021-07-09 01:52:22 +0200 <koz> oak-: Yep, I believe so.
2021-07-09 01:52:38 +0200 <orzo> we shouldn't need a huge sdk
2021-07-09 01:52:46 +0200 <orzo> android is just a linux distro ultimately
2021-07-09 01:54:33 +0200 <oak-> Last time I did Android App development I just used NeoVim from the shell and built with Gradle from the shell
2021-07-09 01:54:39 +0200 <oak-> It still uses quite much resources though
2021-07-09 01:55:47 +0200 <orzo> is there some reason why community people cant maintain an alternate build system for android?
2021-07-09 01:56:10 +0200 <orzo> it seems simple in principle, just pack .dex files and .res files into an .apk zip
2021-07-09 01:56:37 +0200 <orzo> gradle would be an improvement over the studio maybe, but i'm currently annoyed with it too
2021-07-09 01:57:18 +0200 <orzo> i think letting google maintain all the dev tools for android is not working out
2021-07-09 01:57:21 +0200 <oak-> Doesn't Studio use Gradle in the background?
2021-07-09 01:57:24 +0200 <orzo> yes
2021-07-09 01:57:31 +0200 <orzo> but i don't know how to use gradle
2021-07-09 01:57:41 +0200 <orzo> i'm coming back to android after a long hiatus
2021-07-09 01:57:41 +0200cjb(~cjb@user/cjb)
2021-07-09 01:57:48 +0200 <orzo> back in my day it was eclipse and ant
2021-07-09 01:58:41 +0200 <oak-> Gradle seems fine as long at it works :D
2021-07-09 01:58:46 +0200 <orzo> i have good makefile skills, so its a little annoying to have to work with these super ambitious build systems that ultimately just disable incremental builds
2021-07-09 01:59:47 +0200 <oak-> I tried Eta (compiler which compiles Haskell to Java bytecode) a year ago, and it was pain to work around all the tooling
2021-07-09 02:00:07 +0200 <orzo> i trie dto build that recently with a ghc 7.10.3 binary i downloaded
2021-07-09 02:00:14 +0200 <orzo> it fails with a lot of link issues
2021-07-09 02:01:13 +0200 <orzo> one thing i really like about ghc is that you don't even need cabal if you are compiling a single file haskell program
2021-07-09 02:01:23 +0200 <orzo> you just pass it to the compiler and it makes a binary
2021-07-09 02:01:24 +0200 <orzo> very simple
2021-07-09 02:01:32 +0200 <orzo> i want that for android
2021-07-09 02:01:44 +0200 <orzo> hello world android shouldn't even need a build system
2021-07-09 02:01:48 +0200 <oak-> I've been looking forward to try to use Reflex to build native Android apps, that should use regular GHC to build native code
2021-07-09 02:02:01 +0200 <orzo> i'm not familiar with Reflex
2021-07-09 02:02:03 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-09 02:02:35 +0200 <oak-> That is a set of libraries for Haskell to implement the functional reactive programming paradigm
2021-07-09 02:02:39 +0200 <orzo> even deb files can be packed manulally from components
2021-07-09 02:03:04 +0200 <orzo> is that how you pack your debs on your haskell-mac-to-ubuntu system?
2021-07-09 02:03:31 +0200 <oak-> I think it needs to be packaged because of the Java's class system
2021-07-09 02:04:30 +0200 <oak-> I'm just building the binary with stack, and then generating the .deb package with fpm
2021-07-09 02:05:20 +0200 <orzo> i wonder if fpm can be made to support android
2021-07-09 02:05:43 +0200 <oak-> fpm makes it much easier to generate simple .deb packages (and also simple .rpm packages)
2021-07-09 02:05:44 +0200DNH(~DNH@2a02:8108:1100:16d8:99cf:ff96:88:4a77) (Ping timeout: 255 seconds)
2021-07-09 02:06:00 +0200 <orzo> i'm pretty familiar with dpkg-deb and what not
2021-07-09 02:06:12 +0200 <orzo> i make a lot of casual deb packaging for my own purposes
2021-07-09 02:06:36 +0200 <oak-> Yeah it's just more complicated, you need to write like 5 files to control what kind of .deb package is created :D
2021-07-09 02:06:37 +0200 <orzo> i use debian
2021-07-09 02:06:49 +0200 <orzo> hm
2021-07-09 02:06:49 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2021-07-09 02:06:59 +0200Deide(~Deide@user/deide) (Quit: Seeee yaaaa)
2021-07-09 02:07:35 +0200 <orzo> fpm doesn't seem to be in th edebian archives
2021-07-09 02:08:22 +0200 <orzo> if it was, i'd install it and maybe try it out
2021-07-09 02:08:32 +0200 <orzo> but i cant be bothered to clone it and install from source
2021-07-09 02:08:59 +0200 <oak-> It can be installed from rubygems
2021-07-09 02:11:02 +0200acidjnk_new3(~acidjnk@p200300d0c72b9563e5efeb4dbf0edadc.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2021-07-09 02:11:27 +0200 <orzo> i have an old android app that i screwed up the gradle files for
2021-07-09 02:11:33 +0200 <orzo> i don't know how to get it to build
2021-07-09 02:11:49 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-09 02:12:00 +0200 <orzo> i recently got a fresh wizard-created app to build and run from the studio
2021-07-09 02:12:20 +0200 <orzo> but my old eclipse/ant app is borked
2021-07-09 02:15:59 +0200 <orzo> every binary in the sdk seems to consist of a bash script with over 80 lines of code to set up the enviro
2021-07-09 02:16:01 +0200chris-the-slurpa(~chris@81.96.113.213)
2021-07-09 02:16:46 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Read error: Connection reset by peer)
2021-07-09 02:16:48 +0200 <oak-> It shouldn't be that hard but you probably need to match the SDK version you initially used to build the app
2021-07-09 02:19:08 +0200 <oak-> Also It starts to be a bit offtopic if we start to debug your Android app building in the #haskell channel :P
2021-07-09 02:20:04 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2021-07-09 02:21:18 +0200 <orzo> yeah sorry
2021-07-09 02:30:21 +0200P1RATEZ(piratez@user/p1ratez)
2021-07-09 02:33:25 +0200dajoer(~david@user/gvx)
2021-07-09 02:36:29 +0200Atum_(~IRC@user/atum/x-2392232) (Quit: Atum_)
2021-07-09 02:36:38 +0200 <ephemient> Bazel and Buck both seem to have teams maintaining their android app building capabilities
2021-07-09 02:37:19 +0200 <ephemient> probably not gonna be any lighter on orzo's computer than Gradle, though
2021-07-09 02:40:55 +0200hmmmas(~fidnc@183.217.200.144)
2021-07-09 02:43:17 +0200 <orzo> everyone makes huge hungry build enviros these days
2021-07-09 02:44:29 +0200 <orzo> there should be an effort to make building accessible to cheap low power devices
2021-07-09 02:44:51 +0200 <orzo> i'm on an i5 anyway with 8gig ram, it should be sufficient
2021-07-09 02:45:18 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-07-09 02:45:51 +0200 <orzo> one might suspect they don't want people to build their own binaries
2021-07-09 02:46:03 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-09 02:53:40 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-09 02:53:51 +0200cjb(~cjb@user/cjb) (Ping timeout: 246 seconds)
2021-07-09 02:57:39 +0200epolanski(uid312403@id-312403.brockwell.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-09 02:58:14 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-07-09 02:59:51 +0200Feuermagier(~Feuermagi@user/feuermagier) (Remote host closed the connection)
2021-07-09 03:04:51 +0200 <exarkun> what force is there exerting pressure on the software development process not increase its resource usage, apart from the absolute limit on what resources are actually available?
2021-07-09 03:05:18 +0200 <exarkun> and lacking such a force, why would resource usage not continuously expand to that limit?
2021-07-09 03:08:28 +0200 <davean> exarkun: I find making it complex harder, and I don't need to show I'm making a tangled mess to keep my job, so I can do it simply?
2021-07-09 03:09:09 +0200 <orzo> the force is randos like me longing for simpler tools
2021-07-09 03:10:56 +0200sheepduck(~sheepduck@user/sheepduck) (Remote host closed the connection)
2021-07-09 03:12:05 +0200 <exarkun> davean: Is _making_ it complex harder? Or is it harder to deal with once it's been made complex?
2021-07-09 03:12:23 +0200 <exarkun> And then once it's hard to deal with, what's the easiest thing to do? Well, add some more complexity of course...
2021-07-09 03:13:39 +0200 <exarkun> Just pull in another library, adopt a fancier build system, set up CI, set up CD, use tools to automate the development workflow, pull in linters, and formatters, and ...
2021-07-09 03:14:22 +0200 <dsal> Extra points if the additional layer has "simple" in the name.
2021-07-09 03:14:25 +0200 <exarkun> orzo: Yea, not enough of a force I guess. 1000x people who can't even recognize simple for every one of you randos.
2021-07-09 03:15:32 +0200 <DigitalKiwi> orzo++
2021-07-09 03:15:36 +0200 <exarkun> Even if you _want_ things to be simpler, you also want to get things done sometimes
2021-07-09 03:16:05 +0200 <exarkun> How often do you fully anticipate _all_ of the consequences of introducing a new piece of software into your system?
2021-07-09 03:16:45 +0200 <DigitalKiwi> https://source.android.com/setup/build/requirements#hardware-requirements
2021-07-09 03:16:47 +0200 <exarkun> There's extreme bias in the direction of more complexity, not less
2021-07-09 03:16:52 +0200hegstal(~hegstal@2a02:c7f:7604:8a00:5056:66c0:d6e:186f) (Remote host closed the connection)
2021-07-09 03:17:34 +0200 <DigitalKiwi> my computer only has 16GB of ram ;_;
2021-07-09 03:17:45 +0200 <exarkun> I sure don't like stripe-core's 20 minute build time, but what am I gonna do, write my own stripe client library?
2021-07-09 03:18:04 +0200 <DigitalKiwi> and it only had 500GB ssd
2021-07-09 03:18:44 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Remote host closed the connection)
2021-07-09 03:19:46 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2021-07-09 03:19:59 +0200 <DigitalKiwi> which i finally upgraded but due to the infinite wisdom of apple this $3,500+ macbook pro has the ram soldered on so that one's out...
2021-07-09 03:20:13 +0200 <DigitalKiwi> 3
2021-07-09 03:20:50 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-09 03:20:57 +0200 <dsal> You don't have a heat gun?
2021-07-09 03:21:57 +0200wei2912(~wei2912@112.199.250.21)
2021-07-09 03:22:02 +0200 <dsal> All of my computers have 4GB of RAM or less. cachix+github actions makes things actually work at least for me.
2021-07-09 03:22:12 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 252 seconds)
2021-07-09 03:22:31 +0200maf654321(~maf654321@user/maf654321)
2021-07-09 03:23:43 +0200 <DigitalKiwi> i have several heat guns but i don't think it would help ;p
2021-07-09 03:23:55 +0200gehmehgeh(~user@user/gehmehgeh)
2021-07-09 03:24:07 +0200 <monochrom> "developers" are spoiled.
2021-07-09 03:24:31 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-07-09 03:24:46 +0200 <monochrom> But what do you use a heat gun for? To fry the over-speced computers of the spoiled developers? >:)
2021-07-09 03:24:53 +0200 <exarkun> monochrom: "users" are undiscerning?
2021-07-09 03:25:15 +0200 <monochrom> Well, I'll complain about users some other day.
2021-07-09 03:25:40 +0200 <DigitalKiwi> when your users are developers what now
2021-07-09 03:25:49 +0200 <exarkun> or maybe both are true and irrelevant and fitness is maximized by the easy production and use of bloated software
2021-07-09 03:26:22 +0200 <exarkun> The heat gun is for desoldering the tiny DIMMs before replacing them
2021-07-09 03:26:39 +0200 <monochrom> cool
2021-07-09 03:26:52 +0200 <DigitalKiwi> should i just ignore exarkun before i go off at them
2021-07-09 03:27:51 +0200 <exarkun> DigitalKiwi: let me save you the trouble, I'm going to bed now
2021-07-09 03:27:55 +0200 <DigitalKiwi> g'night
2021-07-09 03:28:07 +0200 <DigitalKiwi> As of June 2021, Google is using 72-core machines with 64 GB of RAM internally, which take about 40 minutes for a full build (and just a few minutes for incremental builds, depending on exactly which files were modified). By contrast, a 6-core machine with a similar amount of RAM takes 3 hours.
2021-07-09 03:28:07 +0200 <DigitalKiwi> lolol
2021-07-09 03:28:55 +0200monochromintentional misreads that as "takes such and such time to build the machine"
2021-07-09 03:29:26 +0200 <monochrom> "I would think that fewer cores takes less time to build" :)
2021-07-09 03:30:24 +0200 <DigitalKiwi> well you see the 6-core machines have bigger cores so it takes longer to move them
2021-07-09 03:31:40 +0200 <monochrom> I wonder if https://xkcd.com/303/ is the true incentive for longer build times.
2021-07-09 03:32:53 +0200 <oak-> On one of my past workplaces they actually had the boffer swords in the office
2021-07-09 03:33:17 +0200 <monochrom> nice
2021-07-09 03:34:10 +0200warnz(~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8)
2021-07-09 03:34:18 +0200xff0x(~xff0x@2001:1a81:53dc:b800:d9eb:91ca:317b:6253) (Ping timeout: 252 seconds)
2021-07-09 03:36:05 +0200xff0x(~xff0x@2001:1a81:521d:ec00:3970:2542:2f1d:feb7)
2021-07-09 03:38:26 +0200warnz(~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) (Ping timeout: 255 seconds)
2021-07-09 03:42:57 +0200neurocyte404(~neurocyte@46.243.81.30)
2021-07-09 03:42:57 +0200neurocyte404(~neurocyte@46.243.81.30) (Changing host)
2021-07-09 03:42:57 +0200neurocyte404(~neurocyte@user/neurocyte)
2021-07-09 03:46:34 +0200neurocyte40(~neurocyte@user/neurocyte) (Ping timeout: 240 seconds)
2021-07-09 03:46:34 +0200neurocyte404neurocyte40
2021-07-09 03:47:00 +0200shredder(~user@user/shredder) (Quit: quitting)
2021-07-09 03:48:20 +0200MQ-17J(~MQ-17J@8.21.10.15) (Ping timeout: 255 seconds)
2021-07-09 03:49:20 +0200shredder(~user@user/shredder)
2021-07-09 03:51:24 +0200Reyu[M](~reyureyuz@matrix.reyuzenfold.com) (Remote host closed the connection)
2021-07-09 03:51:56 +0200Reyu[M](~reyureyuz@matrix.reyuzenfold.com)
2021-07-09 03:55:05 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
2021-07-09 03:56:55 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Read error: Connection reset by peer)
2021-07-09 04:00:17 +0200 <davean> exarkun: making it complex takes more work
2021-07-09 04:00:24 +0200 <davean> exarkun: its easier to make it simple
2021-07-09 04:00:35 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
2021-07-09 04:01:57 +0200 <davean> exarkun: pretty sure a lot of complexity comes from people trying to look busy, important, and valuable.
2021-07-09 04:02:55 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
2021-07-09 04:08:16 +0200maf654321(~maf654321@user/maf654321) (Quit: Textual IRC Client: www.textualapp.com)
2021-07-09 04:08:23 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-07-09 04:09:48 +0200mafdz(~maf654321@user/maf654321)
2021-07-09 04:11:04 +0200mafdzmaf654321
2021-07-09 04:17:46 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
2021-07-09 04:18:57 +0200maf654321(~maf654321@user/maf654321) (Quit: ZNC 1.7.4 - https://znc.in)
2021-07-09 04:20:32 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-07-09 04:21:07 +0200Reyu[M](~reyureyuz@matrix.reyuzenfold.com) (Remote host closed the connection)
2021-07-09 04:23:19 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-07-09 04:23:19 +0200FinnElijaGuest181
2021-07-09 04:23:19 +0200Guest181(~finn_elij@user/finn-elija/x-0085643) (Killed (mercury.libera.chat (Nickname regained by services)))
2021-07-09 04:23:19 +0200finn_elijaFinnElija
2021-07-09 04:23:27 +0200td_(~td@94.134.91.165) (Ping timeout: 258 seconds)
2021-07-09 04:24:01 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 246 seconds)
2021-07-09 04:24:30 +0200aerona(~aerona@2600:6c54:4600:f300:c99c:8727:19f:ba14) (Quit: Leaving)
2021-07-09 04:25:08 +0200td_(~td@muedsl-82-207-238-014.citykom.de)
2021-07-09 04:25:40 +0200polykernel[m](~polykerne@2001:470:69fc:105::ba04)
2021-07-09 04:27:52 +0200hexreel(~hr@69.233.98.238)
2021-07-09 04:33:37 +0200Reyu[M](~reyureyuz@matrix.reyuzenfold.com)
2021-07-09 04:34:36 +0200safinaskar(~user@109-252-90-89.nat.spd-mgts.ru)
2021-07-09 04:34:39 +0200 <safinaskar> hi
2021-07-09 04:34:50 +0200 <safinaskar> i just published my second hackage package!
2021-07-09 04:35:18 +0200 <safinaskar> see ann: https://mail.haskell.org/pipermail/haskell-cafe/2021-July/134205.html
2021-07-09 04:35:24 +0200 <safinaskar> it is parsing lib
2021-07-09 04:35:27 +0200 <safinaskar> arrow parsing
2021-07-09 04:37:16 +0200Reyu[M](~reyureyuz@matrix.reyuzenfold.com) (Remote host closed the connection)
2021-07-09 04:37:52 +0200 <Axman6> That's the longest email subject I've seen in my life, haha
2021-07-09 04:38:03 +0200 <Axman6> and longest package name too
2021-07-09 04:39:06 +0200 <safinaskar> :)
2021-07-09 04:39:13 +0200 <safinaskar> and longest package description?
2021-07-09 04:39:25 +0200hmmmas1(~fidnc@183.217.200.144)
2021-07-09 04:40:20 +0200 <pavonia> "the best parsing library" The code harder to read than e.g. MegaParsec code
2021-07-09 04:41:16 +0200hmmmas1(~fidnc@183.217.200.144) (Client Quit)
2021-07-09 04:41:38 +0200Reyu[M](~reyureyuz@matrix.reyuzenfold.com)
2021-07-09 04:41:50 +0200hmmmas(~fidnc@183.217.200.144) (Ping timeout: 252 seconds)
2021-07-09 04:42:31 +0200hmmmas(~fidnc@183.217.200.144)
2021-07-09 04:42:48 +0200 <safinaskar> pavonia: yes. but megaparsec doesn't support unbiased choice
2021-07-09 04:43:30 +0200 <glguy> safinaskar: happy has no trouble being used with tokens that have line and also column information
2021-07-09 04:44:35 +0200dragestil(~quassel@user/dragestil) (Ping timeout: 252 seconds)
2021-07-09 04:45:28 +0200 <glguy> There's an example here where *parsing* fails because a name wasn't declared, but it think it's a lot nicer for the user if things like that don't break parsing. Once you've parsed the syntax you can then find all the problems at once and things like scope and typing, etc, don't have to be passing to know that the syntax is OK
2021-07-09 04:46:04 +0200dragestil(~quassel@user/dragestil)
2021-07-09 04:46:24 +0200 <pavonia> safinaskar: Why is unbiased choice better than biased choice?
2021-07-09 04:46:45 +0200 <Axman6> yeah I would have thought that often you know which bias you want
2021-07-09 04:47:12 +0200 <c_wraith> Nah, biased choice without backtracking is terrible. You constantly have to refactor your grammar around the parser limitations
2021-07-09 04:47:42 +0200 <glguy> I generally find it's a liability when you start computing inside your parser, which is a problem with most examples of parser-combinators uses
2021-07-09 04:47:58 +0200 <glguy> the grammar gets lost in the midst of the computation
2021-07-09 04:48:04 +0200 <Axman6> safinaskar: Good news, the haddocks have appeared on hackage :)
2021-07-09 04:49:13 +0200 <glguy> Unbiased choice parsing was handy on this year's Advent of Code; it saved me from having to think too hard when going for quick completion
2021-07-09 04:54:14 +0200 <qrpnxz> > • Could not deduce: ((n1 + m) + 1) ~ (n + m)
2021-07-09 04:54:14 +0200 <qrpnxz> > from the context: n ~ (n1 + 1)
2021-07-09 04:54:15 +0200 <qrpnxz> rip
2021-07-09 04:54:15 +0200 <lambdabot> <hint>:1:1: error: parse error on input ‘•’
2021-07-09 04:54:15 +0200 <lambdabot> error:
2021-07-09 04:54:15 +0200 <lambdabot> Pattern syntax in expression context: ~(n1 + 1)
2021-07-09 04:55:11 +0200bitmapper(uid464869@id-464869.tooting.irccloud.com)
2021-07-09 04:55:40 +0200 <Axman6> yeah you need to be quite careful about how you structure types with nats, sometimes just changing the order of the arguments can help. I think there are also GHC plugins which can resolve things which are obviously true
2021-07-09 04:56:07 +0200cmburnett(~cmburnett@c-73-37-184-238.hsd1.mn.comcast.net)
2021-07-09 04:56:49 +0200cmburnett(~cmburnett@c-73-37-184-238.hsd1.mn.comcast.net) ()
2021-07-09 04:57:20 +0200 <safinaskar> glguy: "happy has no trouble being used with tokens that have line and also column information" - yes, but then you have to manually combine this location information. For example, using (<-->) from srcloc. And you should do this in every happy production. My library does this automatically
2021-07-09 04:58:47 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-09 05:00:03 +0200 <safinaskar> glguy: "but it think it's a lot nicer for the user if things like that don't break parsing" - fully agree. My library (thanks to power of arrows) allow you to check you for parsing errors and then (if there is no parsing errors) check semantic errors. In other words parsing code is mixed/
2021-07-09 05:00:54 +0200 <safinaskar> glguy: in other words, parsing code is mixed/interleaved, but thanks to arrow power, when you actually run parser (in "main") you check for parsing errors and then other errors!!!
2021-07-09 05:01:58 +0200 <Axman6> trifecta adds location information by default right?
2021-07-09 05:03:29 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 255 seconds)
2021-07-09 05:05:25 +0200andreabedini(~andreabed@8s8kj6nl13s474s8p7bh.ip6.superloop.com)
2021-07-09 05:06:11 +0200 <glguy> putting code into the parser isn't great, but that's nice that it helps with locations
2021-07-09 05:08:15 +0200 <safinaskar> pavonia: "Why is unbiased choice better than biased choice?" - because unbiased choice captures my parsing intuition. And I think it captures parsing intuition of everybody else. I once had one tragedy: I created grammar for my language. In my head this grammar used unbiased choice, i. e. in my mental map the choice was unbiased. Then I converted this my mental map to code. To parsec code. Which uses
2021-07-09 05:08:21 +0200 <safinaskar> biased choice. The code worked. I wrote lot of code in this my new language. But then I discovered that original grammar (with unbiased choice) was ambiguous! But when I converted it to parsec code, the ambiguity vanished! So, the actual parser simply stick to particular choices, and I don't know to which! So all code in this my new language was possibly ambiguous!
2021-07-09 05:08:21 +0200mei(~mei@user/mei) (Ping timeout: 252 seconds)
2021-07-09 05:09:51 +0200 <safinaskar> pavonia: well, again: i think biased is counter-intuitive. Also, definitions of many languages use unbiased choice
2021-07-09 05:10:09 +0200dragestil(~quassel@user/dragestil) (Read error: Connection reset by peer)
2021-07-09 05:11:09 +0200mei(~mei@user/mei)
2021-07-09 05:15:09 +0200P1RATEZ(piratez@user/p1ratez) (Remote host closed the connection)
2021-07-09 05:18:23 +0200yauhsien(~yauhsien@61-231-39-135.dynamic-ip.hinet.net)
2021-07-09 05:32:53 +0200 <qrpnxz> i found out how to do existential with data by the way :)
2021-07-09 05:34:33 +0200warnz(~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8)
2021-07-09 05:34:51 +0200 <qrpnxz> this is epic
2021-07-09 05:35:40 +0200 <lechner> Hi, are emails for hackage account registration sent with a delay?
2021-07-09 05:36:02 +0200 <Axman6> I believe they have to be actioned by a human
2021-07-09 05:36:05 +0200 <safinaskar> qrpnxz: how?
2021-07-09 05:36:22 +0200 <lechner> Axman6: ah, no rush. thanks!
2021-07-09 05:36:33 +0200luna_(~luna@124.205.197.98)
2021-07-09 05:37:43 +0200 <qrpnxz> you can make something like `data SomeFoldable = forall a. Foldable f => SomeFoldable (f a)`, then you can do `deriving instance Foldable SomeFoldable`, and whatever you wrap will act like a dynamic interface type
2021-07-09 05:37:45 +0200 <qrpnxz> it's pretty nice
2021-07-09 05:39:02 +0200warnz(~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) (Ping timeout: 252 seconds)
2021-07-09 05:39:12 +0200 <glguy> Do you mean: data SomeFoldable a = ... ?
2021-07-09 05:39:19 +0200 <qrpnxz> yeah oops
2021-07-09 05:41:08 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 272 seconds)
2021-07-09 05:41:37 +0200 <qrpnxz> for that you need DeriveFoldable, StandaloneDeriving, and ExistentialQuantification by the way
2021-07-09 05:43:49 +0200 <qrpnxz> i wish it would just do all that for you, but oh well
2021-07-09 05:44:57 +0200 <glguy> What're you doing that you needed that?
2021-07-09 05:46:07 +0200 <qrpnxz> you can use this to return an interface on a function
2021-07-09 05:48:07 +0200 <monochrom> I'm pretty sure even "data SomeFoldable a = forall a. Foldable f => SomeFoldable (f a)" is not the real code.
2021-07-09 05:48:19 +0200 <qrpnxz> it is, it compiles
2021-07-09 05:48:19 +0200 <monochrom> For starters, free variable f.
2021-07-09 05:48:27 +0200 <qrpnxz> oh, i meant forall f
2021-07-09 05:48:28 +0200 <qrpnxz> ofc
2021-07-09 05:50:54 +0200 <c_wraith> I thought you were concerned with preventing fusion
2021-07-09 05:51:31 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-09 05:52:27 +0200bontaq(~user@ool-18e47f8d.dyn.optonline.net)
2021-07-09 05:52:30 +0200 <qrpnxz> I'm just saying I found how to do it
2021-07-09 05:53:20 +0200 <qrpnxz> thx for bringing that up though, would be good to bench it
2021-07-09 05:58:00 +0200 <safinaskar> qrpnxz: please write correct code. "f" is free
2021-07-09 05:58:13 +0200oxide(~lambda@user/oxide)
2021-07-09 05:58:34 +0200 <qrpnxz> already brought up, here is the corrected version `data SomeFoldable a = forall f. Foldable f => SomeFoldable (f a)`
2021-07-09 06:00:01 +0200 <safinaskar> qrpnxz: thanks
2021-07-09 06:01:00 +0200 <safinaskar> qrpnxz: so, SomeFoldable itself can be passed as "f", right? is this intentional?
2021-07-09 06:01:18 +0200 <qrpnxz> idk what you mean by passed as f
2021-07-09 06:02:42 +0200 <qrpnxz> c_wraith, seems to fuse fine. I think where you get in trouble is if you accept SomeFoldable for your function, but if you just return, the real type should always be known, and ghc can optimize for that. (And accepting SomeFoldable should never happen; should be using constraint there).
2021-07-09 06:05:52 +0200 <safinaskar> qrpnxz: i mean that SomeFoldable can be f. i. e. you can substitute SomeFoldable as f
2021-07-09 06:06:33 +0200 <qrpnxz> Eh, yes.
2021-07-09 06:06:57 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-07-09 06:07:16 +0200 <safinaskar> qrpnxz: is this intentional? i. e. i need this fact to understand this code?
2021-07-09 06:07:25 +0200 <Axman6> feels related to Yoneda
2021-07-09 06:08:52 +0200 <qrpnxz> safinaskar: It is intentional that SomeFoldable is a foldable if that's what you're asking.
2021-07-09 06:09:27 +0200 <c_wraith> Axman6: it's just the existential typeclass antipattern
2021-07-09 06:10:16 +0200 <Axman6> @hoogle Yoneda
2021-07-09 06:10:16 +0200 <lambdabot> module Data.Profunctor.Yoneda
2021-07-09 06:10:16 +0200 <lambdabot> Data.Profunctor.Yoneda newtype Yoneda p a b
2021-07-09 06:10:16 +0200 <lambdabot> Data.Profunctor.Yoneda Yoneda :: (forall x y . (x -> a) -> (b -> y) -> p x y) -> Yoneda p a b
2021-07-09 06:11:41 +0200 <Axman6> that was not useful
2021-07-09 06:12:51 +0200Megant(megant@user/megant) (Read error: Connection reset by peer)
2021-07-09 06:13:32 +0200 <c_wraith> Yoneda does something different - it captures the functionality of a class, but it doesn't wrap an unknown instance
2021-07-09 06:13:45 +0200 <c_wraith> wait, no, I'm thinking Coyoneda
2021-07-09 06:14:39 +0200Axman6muses that we need a Yoyoneda, which caputres the idea of traversing down into a structure and back up, and down again...
2021-07-09 06:16:43 +0200luna_(~luna@124.205.197.98) (Remote host closed the connection)
2021-07-09 06:18:27 +0200 <qrpnxz> c_wraith, Why do you say it is an antipattern
2021-07-09 06:18:49 +0200yauhsien(~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
2021-07-09 06:19:47 +0200 <c_wraith> because hiding types like that basically always gets in the way of good code in Haskell
2021-07-09 06:20:34 +0200 <qrpnxz> ok how
2021-07-09 06:21:47 +0200hexfive(~eric@50.35.83.177)
2021-07-09 06:25:00 +0200safinaskar(~user@109-252-90-89.nat.spd-mgts.ru) ()
2021-07-09 06:25:31 +0200 <qrpnxz> i could instead return like `(a -> b -> b) -> b -> b` which would be a completely explicit type, yet reveal no new information. Because functions are abstractions, and this is also an abstraction, except it's much nicer to use imo
2021-07-09 06:25:50 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
2021-07-09 06:29:28 +0200hexfive(~eric@50.35.83.177) (Quit: WeeChat 3.0)
2021-07-09 06:32:19 +0200luna_(~luna2021@124.205.197.98)
2021-07-09 06:32:42 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
2021-07-09 06:35:46 +0200derelict(~derelict@user/derelict) (Ping timeout: 240 seconds)
2021-07-09 06:38:25 +0200 <nshepperd> you could also just return whatever the underlying foldable is, instead of being paternalistic toward your user
2021-07-09 06:38:49 +0200 <c_wraith> basically, users always want to do things you haven't imagined
2021-07-09 06:38:58 +0200 <qrpnxz> but then changing it is a breaking change, it has nothing to do with paternalism
2021-07-09 06:39:09 +0200 <c_wraith> breaking changes are fine, as long as they break compilation
2021-07-09 06:41:14 +0200 <qrpnxz> well not really, because that change might've "taken away" features, features that i never intended to guarantee. It would not be an easy fix for you if my overkill type that i used is suddenly a very dumb type
2021-07-09 06:42:08 +0200 <c_wraith> you keep imagining that you know every valid use case
2021-07-09 06:42:24 +0200 <c_wraith> I assure you, users have weird ideas. :)
2021-07-09 06:42:32 +0200luna_(~luna2021@124.205.197.98) (Remote host closed the connection)
2021-07-09 06:42:38 +0200 <nshepperd> if you never intended to guarantee it but it's useful then that's good, value was created
2021-07-09 06:43:00 +0200dragestil(~quassel@user/dragestil)
2021-07-09 06:43:19 +0200dragestil(~quassel@user/dragestil) (Client Quit)
2021-07-09 06:43:54 +0200dragestil(~quassel@user/dragestil)
2021-07-09 06:44:34 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 240 seconds)
2021-07-09 06:49:32 +0200luna_(~luna2021@124.205.197.98)
2021-07-09 06:50:45 +0200 <nshepperd> you can just document what you guarantee in your haddock comments. this makes any usage outside that guarantee the user's responsibility, and freedom
2021-07-09 06:51:01 +0200 <qrpnxz> More is not always good. Encapsulation is good. It would also allow one to return a different foldable based on the inputs.
2021-07-09 06:51:38 +0200 <c_wraith> That sounds like a terrible thing to do
2021-07-09 06:52:01 +0200Megant(~kaitsu@user/megant)
2021-07-09 06:53:00 +0200 <nshepperd> The paternalism is that you are trying to protect the user from this responsibility
2021-07-09 06:53:30 +0200 <sm> sounds like php/perl/lisp-type coding. I will admit, those rich do-everything functions can seem handy at times.
2021-07-09 06:53:41 +0200 <sm> in those languages
2021-07-09 06:54:16 +0200 <sm> nothing illegal about it in haskell either, if it's documented with types..
2021-07-09 06:54:23 +0200luna_(~luna2021@124.205.197.98) (Ping timeout: 252 seconds)
2021-07-09 06:54:26 +0200 <qrpnxz> like in some function I could do if you gave me a set maybe i use that directly and then return a set too, otherwise i do an ordered list.
2021-07-09 06:55:24 +0200hexreel(~hr@69.233.98.238) (WeeChat 3.2)
2021-07-09 07:01:58 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-07-09 07:03:03 +0200ukari(~ukari@user/ukari)
2021-07-09 07:03:14 +0200 <qrpnxz> i agree with my arguments, and yet i would like to return a concrete type too. At least for this function I'm currently writing, but I still think this is a legitimate feature.
2021-07-09 07:04:39 +0200yauhsien(~yauhsien@61-231-39-135.dynamic-ip.hinet.net)
2021-07-09 07:09:09 +0200anandprabhu(~anandprab@94.202.243.198)
2021-07-09 07:09:26 +0200edwtjo(~edwtjo@user/edwtjo) (Ping timeout: 258 seconds)
2021-07-09 07:17:33 +0200 <sm> are we talking about a Monoid a => m a -> m a function ?
2021-07-09 07:18:37 +0200 <qrpnxz> eh, no. idk where you got that
2021-07-09 07:19:03 +0200 <sm> "some function I could do if you gave me a set maybe i use that directly and then return a set too, otherwise i do an ordered list"
2021-07-09 07:19:29 +0200 <sm> I may not have understood you, no worries
2021-07-09 07:20:05 +0200 <qrpnxz> well we were using foldable as an example, idk if set has monoid ig it does.
2021-07-09 07:20:23 +0200 <qrpnxz> but sure you could say something similar but with monoid instead
2021-07-09 07:20:41 +0200 <sm> I was just trying to think what's the haskell way of saying "some collection of things"
2021-07-09 07:21:10 +0200 <sm> it sounded like you wanted to make a function polymorphic in the collection type. But I've just jumped in at the end of your discussion.
2021-07-09 07:22:30 +0200 <sm> (afk)
2021-07-09 07:22:45 +0200 <qrpnxz> ah well we are talking about function that returns an interface rather than a concrete type. For accepting any foldable, you use forall, but to return any generic (specific) foldable, you use existential.
2021-07-09 07:23:54 +0200edwtjo(~edwtjo@h-109-228-137-133.A213.priv.bahnhof.se)
2021-07-09 07:23:54 +0200edwtjo(~edwtjo@h-109-228-137-133.A213.priv.bahnhof.se) (Changing host)
2021-07-09 07:23:54 +0200edwtjo(~edwtjo@user/edwtjo)
2021-07-09 07:24:00 +0200 <qrpnxz> ok i have to go to bed now gn
2021-07-09 07:24:20 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-07-09 07:29:21 +0200luna_(~luna2021@124.205.197.98)
2021-07-09 07:29:21 +0200anandprabhu(~anandprab@94.202.243.198) (Quit: Leaving)
2021-07-09 07:29:21 +0200oxide(~lambda@user/oxide) (Ping timeout: 272 seconds)
2021-07-09 07:29:22 +0200tabemann_(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2021-07-09 07:30:41 +0200oxide(~lambda@user/oxide)
2021-07-09 07:31:01 +0200scrazen(~scrazen@user/scrazen) (Remote host closed the connection)
2021-07-09 07:31:20 +0200tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Ping timeout: 256 seconds)
2021-07-09 07:31:20 +0200motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 272 seconds)
2021-07-09 07:31:29 +0200scrazen(~scrazen@user/scrazen)
2021-07-09 07:31:57 +0200motherfsck(~motherfsc@user/motherfsck)
2021-07-09 07:41:30 +0200ptr_frac7al(~longlong@user/ptr-frac7al/x-0038398) (Quit: ptr_frac7al)
2021-07-09 07:44:59 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-07-09 07:49:56 +0200Megant(~kaitsu@user/megant) (Ping timeout: 252 seconds)
2021-07-09 07:50:44 +0200gioyik(~gioyik@gateway/tor-sasl/gioyik) (Quit: WeeChat 3.1)
2021-07-09 07:51:21 +0200ishutin(~ishutin@79.120.162.129)
2021-07-09 08:05:46 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-07-09 08:11:23 +0200tabemann_(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection)
2021-07-09 08:11:29 +0200tabemann_(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2021-07-09 08:12:14 +0200artagnon(sid7560@id-7560.tooting.irccloud.com)
2021-07-09 08:12:34 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 246 seconds)
2021-07-09 08:14:13 +0200Cale(~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com) (Ping timeout: 258 seconds)
2021-07-09 08:14:48 +0200Cale(~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com)
2021-07-09 08:15:49 +0200chele(~chele@user/chele)
2021-07-09 08:18:51 +0200jneira(~jneira@212.8.115.226)
2021-07-09 08:18:53 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
2021-07-09 08:20:09 +0200turlando(~turlando@user/turlando)
2021-07-09 08:22:00 +0200jespada(~jespada@90.254.247.46) (Ping timeout: 268 seconds)
2021-07-09 08:22:03 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-09 08:22:33 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-09 08:25:04 +0200xerxes(~xerxes@117.222.64.149)
2021-07-09 08:25:07 +0200jespada(~jespada@90.254.247.46)
2021-07-09 08:27:47 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 255 seconds)
2021-07-09 08:28:31 +0200Megant(megant@user/megant)
2021-07-09 08:28:34 +0200kenran(~kenran@b2b-37-24-119-190.unitymedia.biz)
2021-07-09 08:29:05 +0200acidjnk(~acidjnk@p200300d0c72b9563509afe7c5cdd8ef5.dip0.t-ipconnect.de)
2021-07-09 08:29:15 +0200awth13(~user@user/awth13) (Remote host closed the connection)
2021-07-09 08:29:36 +0200awth13(~user@user/awth13)
2021-07-09 08:34:51 +0200neurocyte40(~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat)
2021-07-09 08:39:38 +0200neurocyte404(~neurocyte@46.243.81.30)
2021-07-09 08:39:38 +0200neurocyte404(~neurocyte@46.243.81.30) (Changing host)
2021-07-09 08:39:38 +0200neurocyte404(~neurocyte@user/neurocyte)
2021-07-09 08:44:30 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com)
2021-07-09 08:45:40 +0200bOy_isOg(~bOy_isOg@119.93.22.3)
2021-07-09 08:46:30 +0200bOy_isOg(~bOy_isOg@119.93.22.3) ()
2021-07-09 08:49:34 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-07-09 08:51:06 +0200polux(~polux@51.15.169.172) (Quit: The Lounge - https://thelounge.github.io)
2021-07-09 08:51:23 +0200polux(~polux@51.15.169.172)
2021-07-09 08:52:44 +0200fendor(~fendor@77.119.197.100.wireless.dyn.drei.com)
2021-07-09 08:52:51 +0200anandprabhu(~anandprab@94.202.243.198)
2021-07-09 08:54:20 +0200chris-the-slurpa(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-09 08:55:01 +0200chris-the-slurpa(~chris@81.96.113.213)
2021-07-09 08:55:58 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-07-09 08:56:55 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-07-09 08:58:58 +0200chris-the-slurpa(~chris@81.96.113.213) (Ping timeout: 240 seconds)
2021-07-09 09:00:11 +0200flipchan(~yumman@user/flipchan) (Ping timeout: 255 seconds)
2021-07-09 09:00:33 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-09 09:05:08 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 255 seconds)
2021-07-09 09:10:23 +0200chomwitt(~Pitsikoko@ppp-94-67-202-202.home.otenet.gr)
2021-07-09 09:18:56 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-07-09 09:22:55 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2021-07-09 09:23:29 +0200nerdypepper(~nerdypepp@user/nerdypepper) (Remote host closed the connection)
2021-07-09 09:24:00 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-07-09 09:24:58 +0200thiross(~thiross@39.170.37.82)
2021-07-09 09:25:51 +0200thiross(~thiross@39.170.37.82) (Remote host closed the connection)
2021-07-09 09:26:42 +0200nschoe(~quassel@2a01:e0a:8e:a190:156a:d066:25bb:13b1)
2021-07-09 09:27:38 +0200rhett(Username@174-126-122-77.cpe.sparklight.net)
2021-07-09 09:27:53 +0200rhett(Username@174-126-122-77.cpe.sparklight.net) (Excess Flood)
2021-07-09 09:28:10 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-07-09 09:31:05 +0200zaquest(~notzaques@5.128.210.178) (Remote host closed the connection)
2021-07-09 09:32:15 +0200zaquest(~notzaques@5.128.210.178)
2021-07-09 09:33:38 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-07-09 09:34:20 +0200gehmehgeh(~user@user/gehmehgeh)
2021-07-09 09:35:49 +0200nerdypepper(~nerdypepp@user/nerdypepper)
2021-07-09 09:36:09 +0200warnz(~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8)
2021-07-09 09:39:43 +0200azeem(~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it) (Ping timeout: 246 seconds)
2021-07-09 09:40:41 +0200warnz(~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) (Ping timeout: 255 seconds)
2021-07-09 09:41:20 +0200azeem(~azeem@176.201.41.131)
2021-07-09 09:43:50 +0200Pickchea(~private@user/pickchea)
2021-07-09 09:45:59 +0200azeem(~azeem@176.201.41.131) (Ping timeout: 252 seconds)
2021-07-09 09:46:54 +0200azeem(~azeem@176.201.41.131)
2021-07-09 09:49:41 +0200cfricke(~cfricke@user/cfricke)
2021-07-09 09:51:08 +0200kuribas(~user@ptr-25vy0i8xkirhfn6k3n1.18120a2.ip6.access.telenet.be)
2021-07-09 09:51:50 +0200opqdonut_(opqdonut@pseudo.fixme.fi) (Ping timeout: 265 seconds)
2021-07-09 09:52:14 +0200opqdonut(opqdonut@pseudo.fixme.fi)
2021-07-09 09:54:10 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-09 09:58:56 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-07-09 10:00:47 +0200thiross(~thiross@39.170.37.82)
2021-07-09 10:01:03 +0200ubert(~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-07-09 10:02:02 +0200thiross(~thiross@39.170.37.82) (Client Quit)
2021-07-09 10:06:33 +0200hendursa1(~weechat@user/hendursaga)
2021-07-09 10:07:00 +0200aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Ping timeout: 252 seconds)
2021-07-09 10:09:38 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 244 seconds)
2021-07-09 10:12:08 +0200zeenk(~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3)
2021-07-09 10:17:22 +0200azeem(~azeem@176.201.41.131) (Ping timeout: 240 seconds)
2021-07-09 10:17:55 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-07-09 10:17:57 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-07-09 10:18:10 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-07-09 10:18:13 +0200azeem(~azeem@176.201.41.131)
2021-07-09 10:19:22 +0200ray(~ray@user/re) (Ping timeout: 240 seconds)
2021-07-09 10:19:33 +0200aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2021-07-09 10:22:04 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-07-09 10:22:58 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds)
2021-07-09 10:23:17 +0200Lord_of_Life_Lord_of_Life
2021-07-09 10:23:45 +0200xerxes(~xerxes@117.222.64.149) (Quit: leaving)
2021-07-09 10:29:10 +0200lavaman(~lavaman@98.38.249.169)
2021-07-09 10:33:06 +0200turlando(~turlando@user/turlando) (Ping timeout: 272 seconds)
2021-07-09 10:33:22 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2021-07-09 10:38:07 +0200jay-invariant(~jay@c-24-4-6-169.hsd1.ca.comcast.net) (Remote host closed the connection)
2021-07-09 10:38:07 +0200Gurkenglas_(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
2021-07-09 10:38:07 +0200ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
2021-07-09 10:38:07 +0200jay-invariant(~jay@c-24-4-6-169.hsd1.ca.comcast.net)
2021-07-09 10:39:57 +0200gehmehgeh_(~user@user/gehmehgeh)
2021-07-09 10:40:04 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 272 seconds)
2021-07-09 10:41:09 +0200gehmehgeh(~user@user/gehmehgeh) (Ping timeout: 244 seconds)
2021-07-09 10:43:41 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
2021-07-09 10:48:28 +0200azeem(~azeem@176.201.41.131) (Read error: Connection reset by peer)
2021-07-09 10:50:03 +0200azeem(~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it)
2021-07-09 10:51:24 +0200michalz(~michalz@185.246.204.61)
2021-07-09 10:55:42 +0200viluon(uid453725@id-453725.brockwell.irccloud.com)
2021-07-09 10:56:16 +0200nsilv(~nsilv@212.103.198.210)
2021-07-09 10:59:51 +0200Teacup_(~teacup@user/teacup)
2021-07-09 11:00:29 +0200Teacup(~teacup@user/teacup) (Ping timeout: 268 seconds)
2021-07-09 11:02:35 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
2021-07-09 11:03:46 +0200pjb(~pjb@user/pjb) (Read error: Connection reset by peer)
2021-07-09 11:08:15 +0200 <tomsmeding> Does anyone happen to know a class of numerical two-argument functions that 1. are associative, and 2. can be randomly generated?
2021-07-09 11:09:06 +0200trattue(~trattue@152.70.182.158)
2021-07-09 11:09:08 +0200 <tomsmeding> I want to quickcheck a thing that requires a (numerically) differentiable function (a -> a -> a) that is also associative (f(f(x,y),z) == f(x,f(y,z)))
2021-07-09 11:09:27 +0200ray(~ray@user/re)
2021-07-09 11:09:53 +0200 <tomsmeding> '\x y -> b*x*y + u*x + v*y' is associative for all b and with u in {0,1}, but is there perhaps a larger set?
2021-07-09 11:10:06 +0200 <tomsmeding> (correction, u and v in {0,1})
2021-07-09 11:12:45 +0200 <tomsmeding> (correction, u=v=0 or u=v=1 :p)
2021-07-09 11:13:11 +0200haykam2(~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
2021-07-09 11:13:24 +0200haykam3(~haykam@static.100.2.21.65.clients.your-server.de)
2021-07-09 11:14:54 +0200acid(~acid@user/acid) (Ping timeout: 272 seconds)
2021-07-09 11:16:56 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-09 11:17:00 +0200acid(~acid@user/acid)
2021-07-09 11:17:30 +0200MoC(~moc@user/moc)
2021-07-09 11:19:56 +0200 <viluon> surely `\x y -> 3` is also associative?
2021-07-09 11:21:13 +0200 <tomsmeding> ah, true!
2021-07-09 11:21:48 +0200 <tomsmeding> maybe this class of things, together with matrix multiplication, is already diverse enough to get some confidence that my function is correct :p
2021-07-09 11:21:56 +0200 <viluon> could you perhaps arrive at the entire set compositionally?
2021-07-09 11:22:14 +0200 <tomsmeding> that's what I would be interested in
2021-07-09 11:23:38 +0200 <viluon> all constant functions are differentiable & associative (so they're in let's say S), multiplications of an f ∈ S by a scalar (αf) are also in S, their additions are also in S, as are their multiplications, where you define + and * on these functions as f + g = \x y -> f x y + g x y (analogically for *)
2021-07-09 11:23:57 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:44e3:e9f0:ea4d:f039) (Remote host closed the connection)
2021-07-09 11:24:30 +0200 <viluon> I mean, hopefully right? make sure such + and * makes sense esp. w.r.t. differentiation
2021-07-09 11:24:49 +0200 <tomsmeding> yeah don't worry about the differentiation :p
2021-07-09 11:25:31 +0200 <viluon> but that's still all just constant functions if you look closely
2021-07-09 11:25:46 +0200 <tomsmeding> yeah
2021-07-09 11:25:47 +0200 <viluon> there's no use of the arguments in the leaves of functions defined as such
2021-07-09 11:26:03 +0200 <tomsmeding> \x y -> x + y ought to be in S, but \x y -> (x + y) * (x + y) is definitely not in S
2021-07-09 11:26:18 +0200 <viluon> it'd be great if there were an identity function, but I'm not sure how to do that with two arguments
2021-07-09 11:26:34 +0200 <tomsmeding> well \x _ -> x and \_ y -> y are also in S
2021-07-09 11:27:10 +0200 <viluon> yeah true that, you have the projections
2021-07-09 11:28:01 +0200 <viluon> it's really the set of ℝ × ℝ → ℝ, for some definition of ℝ, I don't think you get much from partial application here
2021-07-09 11:28:19 +0200 <viluon> (the subset of*)
2021-07-09 11:28:27 +0200 <viluon> (a subset of*)
2021-07-09 11:28:38 +0200 <tomsmeding> problem is that S is not at all closed under + or *
2021-07-09 11:29:01 +0200 <viluon> hmm
2021-07-09 11:30:43 +0200kenran(~kenran@b2b-37-24-119-190.unitymedia.biz) (Quit: WeeChat info:version)
2021-07-09 11:42:10 +0200neceve(~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f)
2021-07-09 11:44:07 +0200jippiedoe(~david@2a02-a44c-e14e-1-99a5-f36d-ee14-d92.fixed6.kpn.net)
2021-07-09 11:44:36 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-07-09 11:48:29 +0200chomwitt(~Pitsikoko@ppp-94-67-202-202.home.otenet.gr) (Ping timeout: 255 seconds)
2021-07-09 11:49:42 +0200trattue(~trattue@152.70.182.158) (Remote host closed the connection)
2021-07-09 11:51:18 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-07-09 11:51:30 +0200Trattue(~Trattue@152.70.182.158)
2021-07-09 11:59:07 +0200jakalx(~jakalx@base.jakalx.net) ()
2021-07-09 11:59:37 +0200 <viluon> what are the desired properties for + and * on functions?
2021-07-09 12:00:13 +0200 <tomsmeding> I'm not even sure I need the set to be closed under particular operations specifically
2021-07-09 12:00:35 +0200 <tomsmeding> I just want a large set of functions, parametrised in some way that I can randomly generate them, that are all associative
2021-07-09 12:01:21 +0200 <viluon> btw here's a notion of function composition that works, but isn't very revealing `f . g = \ x y -> let z = g x y in f z z`
2021-07-09 12:01:23 +0200 <tomsmeding> but (\x y -> f x y) + (\a b -> g a b) can only really mean \x y -> f x y + g x y
2021-07-09 12:01:46 +0200 <viluon> I'm struggling to find the "point" at which the associativity is lost
2021-07-09 12:01:54 +0200 <tomsmeding> :D
2021-07-09 12:02:18 +0200 <tomsmeding> that function composition also doesn't preserve associativity I believe
2021-07-09 12:02:19 +0200fef(~thedawn@user/thedawn)
2021-07-09 12:05:15 +0200Trattue(~Trattue@152.70.182.158) (Quit: bye)
2021-07-09 12:05:30 +0200Trattue(~Trattue@152.70.182.158)
2021-07-09 12:08:07 +0200 <viluon> ah, you may be right!
2021-07-09 12:08:21 +0200 <viluon> it's associative if `g (let q = g x y in f q q) z ≟ g x (let q = g y z in f q q)`
2021-07-09 12:10:30 +0200 <tomsmeding> not associative for f = g = (+) :p
2021-07-09 12:10:40 +0200 <tomsmeding> because \x y -> 2 * x * y is not associative
2021-07-09 12:10:54 +0200 <tomsmeding> uh correction, \x y -> 2 * (x + y)
2021-07-09 12:11:13 +0200wqsz7xn(~wqsz7xn@202.36.244.28)
2021-07-09 12:11:42 +0200 <tomsmeding> I feel like the only things that really compose here are \x _ -> x and \_ y -> y
2021-07-09 12:13:24 +0200 <viluon> associativity is way more elusive than I thought
2021-07-09 12:14:18 +0200jakalx(~jakalx@base.jakalx.net)
2021-07-09 12:14:29 +0200 <viluon> hmm, *just* multiplication or *just* addition would work though, wouldn't it?
2021-07-09 12:14:36 +0200 <viluon> that'd give you a group, right?
2021-07-09 12:14:38 +0200 <tomsmeding> yes, also c*x*y
2021-07-09 12:14:47 +0200 <tomsmeding> would it?
2021-07-09 12:14:59 +0200 <viluon> oh, group has inverses
2021-07-09 12:15:09 +0200 <tomsmeding> monoid rather
2021-07-09 12:15:20 +0200 <viluon> semigroup?
2021-07-09 12:15:28 +0200 <viluon> associative binary operation
2021-07-09 12:15:53 +0200 <viluon> oh monoid is a semigroup plus identity, fair enough
2021-07-09 12:17:12 +0200fluffyballoon(~fluffybal@199.204.58.62) (Quit: Client closed)
2021-07-09 12:17:29 +0200fluffyballoon(~fluffybal@199.204.58.62)
2021-07-09 12:18:32 +0200 <viluon> so it's the interactions between + and * that screw it up
2021-07-09 12:18:46 +0200 <tomsmeding> yeah
2021-07-09 12:24:26 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:44e3:e9f0:ea4d:f039)
2021-07-09 12:26:28 +0200 <viluon> tomsmeding: I think you can get quite far with just the two separate monoids, plus multiplication by a scalar on each (although that has to be on the "top-level" I believe, without further composition via + or *). There may be functions that mix + and * in other ways that this doesn't cover, but I don't know how to find them :/
2021-07-09 12:28:54 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:44e3:e9f0:ea4d:f039) (Ping timeout: 252 seconds)
2021-07-09 12:29:22 +0200nsilv(~nsilv@212.103.198.210) (Quit: WeeChat 3.0.1)
2021-07-09 12:34:56 +0200luna_(~luna2021@124.205.197.98) (Remote host closed the connection)
2021-07-09 12:39:08 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2021-07-09 12:39:47 +0200aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Ping timeout: 252 seconds)
2021-07-09 12:45:02 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-07-09 12:54:23 +0200luna_(~luna2021@124.205.197.98)
2021-07-09 12:54:50 +0200zcombinator(~zcombinat@host-87-7-58-35.retail.telecomitalia.it)
2021-07-09 12:56:21 +0200chris-the-slurpa(~chris@81.96.113.213)
2021-07-09 12:56:53 +0200andreabedini(~andreabed@8s8kj6nl13s474s8p7bh.ip6.superloop.com) (Ping timeout: 255 seconds)
2021-07-09 12:57:11 +0200ray(~ray@user/re) (Quit: WeeChat 3.2)
2021-07-09 12:58:02 +0200s__(~s@50.34.81.185)
2021-07-09 12:58:16 +0200azeem(~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it) (Ping timeout: 258 seconds)
2021-07-09 12:59:03 +0200fluffyballoon(~fluffybal@199.204.58.62) (Quit: Client closed)
2021-07-09 12:59:14 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-09 12:59:15 +0200s_(~s@50.34.81.185) (Read error: Connection reset by peer)
2021-07-09 12:59:21 +0200fluffyballoon(~fluffybal@199.204.58.62)
2021-07-09 13:00:34 +0200Pickchea(~private@user/pickchea) (Ping timeout: 240 seconds)
2021-07-09 13:02:19 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-09 13:03:00 +0200vpan(~vilius@212.117.1.172)
2021-07-09 13:03:34 +0200luna__(~luna2021@124.205.197.98)
2021-07-09 13:06:18 +0200luna_(~luna2021@124.205.197.98) (Ping timeout: 252 seconds)
2021-07-09 13:06:44 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 252 seconds)
2021-07-09 13:08:41 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-07-09 13:08:53 +0200aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2021-07-09 13:11:34 +0200luna__(~luna2021@124.205.197.98) ()
2021-07-09 13:12:46 +0200jippiedoe(~david@2a02-a44c-e14e-1-99a5-f36d-ee14-d92.fixed6.kpn.net) (Remote host closed the connection)
2021-07-09 13:13:02 +0200jippiedoe(~david@2a02-a44c-e14e-1-e2b1-5b1f-ad9a-57c9.fixed6.kpn.net)
2021-07-09 13:16:27 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-09 13:18:14 +0200azeem(~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it)
2021-07-09 13:22:09 +0200andreabedini(~andreabed@8s8kj6n9tyzc511tnjb7.ip6.superloop.com)
2021-07-09 13:22:10 +0200 <dminuoso> 11:08:15 tomsmeding | Does anyone happen to know a class of numerical two-argument functions that 1. are associative, and 2. can be randomly generated?
2021-07-09 13:23:11 +0200 <dminuoso> Elliptic curves come to mind
2021-07-09 13:23:43 +0200 <dminuoso> (e.g. elliptic curves over Galois fields)
2021-07-09 13:23:58 +0200 <dminuoso> Or.. is that even associative I wonder?
2021-07-09 13:25:38 +0200 <tomsmeding> "An elliptic curve is an abelian variety – that is, it has a group law defined algebraically, with respect to which it is an abelian group – and O99,99 serves as the identity element."
2021-07-09 13:25:52 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:44e3:e9f0:ea4d:f039)
2021-07-09 13:26:04 +0200 <tomsmeding> dminuoso: sounds like it should be associative; but it's also commutative, right?
2021-07-09 13:26:18 +0200 <tomsmeding> Suboptimal but quite interesting example
2021-07-09 13:26:47 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Quit: FinnElija)
2021-07-09 13:28:16 +0200favonia(~favonia@user/favonia) (Ping timeout: 246 seconds)
2021-07-09 13:28:30 +0200 <tomsmeding> Looks like you really need more than one-dimensional arguments to get interesting behaviour
2021-07-09 13:28:51 +0200ishutin_(~ishutin@87-97-88-250.pool.digikabel.hu)
2021-07-09 13:30:28 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-07-09 13:30:30 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:44e3:e9f0:ea4d:f039) (Ping timeout: 252 seconds)
2021-07-09 13:32:20 +0200ishutin(~ishutin@79.120.162.129) (Ping timeout: 272 seconds)
2021-07-09 13:33:08 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-07-09 13:34:52 +0200yauhsien(~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Read error: Connection reset by peer)
2021-07-09 13:35:08 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.2)
2021-07-09 13:35:19 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-07-09 13:37:34 +0200warnz(~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8)
2021-07-09 13:40:03 +0200favonia(~favonia@user/favonia)
2021-07-09 13:42:03 +0200warnz(~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) (Ping timeout: 252 seconds)
2021-07-09 13:45:38 +0200azeem(~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it) (Read error: Connection reset by peer)
2021-07-09 13:46:35 +0200epolanski(uid312403@id-312403.brockwell.irccloud.com)
2021-07-09 13:58:05 +0200jippiedoe(~david@2a02-a44c-e14e-1-e2b1-5b1f-ad9a-57c9.fixed6.kpn.net) (Ping timeout: 255 seconds)
2021-07-09 13:59:04 +0200dunj3(~dunj3@2001:16b8:30aa:f100:5749:57d0:4660:97ec)
2021-07-09 13:59:57 +0200acidjnk_new(~acidjnk@p200300d0c72b9550509afe7c5cdd8ef5.dip0.t-ipconnect.de)
2021-07-09 14:00:23 +0200 <AWizzArd> dminuoso: have you implemented Single Sign-On?
2021-07-09 14:01:30 +0200 <dminuoso> No.
2021-07-09 14:03:02 +0200acidjnk(~acidjnk@p200300d0c72b9563509afe7c5cdd8ef5.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2021-07-09 14:03:23 +0200coeus(~coeus@b2b-92-50-96-34.unitymedia.biz)
2021-07-09 14:05:42 +0200favonia(~favonia@user/favonia) (Ping timeout: 252 seconds)
2021-07-09 14:06:50 +0200favonia(~favonia@user/favonia)
2021-07-09 14:07:33 +0200 <viluon> hello, I have a question about generics-sop again. In pretty-sop's function `prettyValFor`, in the second equation, there's an auxiliary map for infix constructors (https://github.com/well-typed/pretty-sop/blob/master/src/Generics/SOP/PrettyVal.hs#L42-L45). It has the type `forall x y. NP (K Value) '[x, y] -> Value`, but is seemingly applied in a context where it is not known that `xs ~ '[x, y]`. How come this typechecks?
2021-07-09 14:08:05 +0200phma(phma@2001:5b0:211c:858:db7c:9aeb:2bd8:1b08) (Read error: Connection reset by peer)
2021-07-09 14:08:25 +0200 <viluon> I thought the `xs ~ '[x, y]` equivalence came as a consequence of pattern-matching on the `Infix` constructor of `ConstructorInfo`, but `ConstructorInfo` is not a GADT
2021-07-09 14:11:55 +0200fluffyballoon(~fluffybal@199.204.58.62) (Ping timeout: 246 seconds)
2021-07-09 14:12:51 +0200Pickchea(~private@user/pickchea)
2021-07-09 14:15:00 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-07-09 14:15:21 +0200anandprabhu(~anandprab@94.202.243.198) (Quit: Leaving)
2021-07-09 14:17:59 +0200azeem(~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it)
2021-07-09 14:23:11 +0200lortabac(~lortabac@95.138.56.124)
2021-07-09 14:24:45 +0200phma(phma@2001:5b0:212a:c338:e904:270b:aa2b:a4ce)
2021-07-09 14:31:03 +0200 <kosmikus> viluon: `ConstructorInfo` *is* a GADT.
2021-07-09 14:31:18 +0200 <kosmikus> viluon: what makes you think otherwise?
2021-07-09 14:31:40 +0200 <viluon> oh, am I confused? I'm probably confused https://hackage.haskell.org/package/generics-sop-0.5.1.1/docs/src/Generics.SOP.Type.Metadata.html#…
2021-07-09 14:31:55 +0200 <kosmikus> ah
2021-07-09 14:32:17 +0200 <kosmikus> that explains your confusion indeed
2021-07-09 14:32:23 +0200 <kosmikus> the right definition is here: https://hackage.haskell.org/package/generics-sop-0.5.1.1/docs/src/Generics.SOP.Metadata.html#Const…
2021-07-09 14:32:44 +0200 <kosmikus> generics-sop has two methods of providing metadata
2021-07-09 14:32:53 +0200 <kosmikus> one is that metadata is a term-level structure
2021-07-09 14:33:07 +0200 <kosmikus> the datatypes for this are defined in `Generics.SOP.Metadata`
2021-07-09 14:33:15 +0200 <kosmikus> (and have the GADT)
2021-07-09 14:33:24 +0200 <viluon> haha, that's mightily confusing. Thanks for clearing it up!
2021-07-09 14:33:25 +0200 <kosmikus> this is what's being used by `pretty-sop`.
2021-07-09 14:33:38 +0200 <kosmikus> the other is that the entire metadata can be lifted to the type-level.
2021-07-09 14:33:48 +0200 <kosmikus> and that uses "simple" datatypes.
2021-07-09 14:33:59 +0200 <kosmikus> primarily because there was a time when GADTs could not be promoted.
2021-07-09 14:34:20 +0200 <kosmikus> this is no longer the case. it might be worth exploring whether the two could be unified better.
2021-07-09 14:35:15 +0200 <kosmikus> but then again, even though GADTs can be lifted now, the type-level programming world is still different from the term-level programming world, so promoted GADTs don't quite behave as one might expect of GADTs.
2021-07-09 14:35:35 +0200 <Gurkenglas_> Is there a language that compiles to python, has IDE support, and is more like Haskell?
2021-07-09 14:35:39 +0200Gurkenglas_Gurkenglas
2021-07-09 14:36:18 +0200 <viluon> Gurkenglas haven't tried, but I heard of https://github.com/evhub/coconut
2021-07-09 14:36:30 +0200favonia(~favonia@user/favonia) (Ping timeout: 252 seconds)
2021-07-09 14:36:36 +0200 <darklambda> how's coconut these days?
2021-07-09 14:36:38 +0200 <kosmikus> Idris typically has backends for everything, but not necessarily backends of a very robust quality.
2021-07-09 14:37:14 +0200favonia(~favonia@user/favonia)
2021-07-09 14:38:10 +0200 <viluon> if I had a nickel every time I'm confused about something that would be cleared up by jump-to-definition, I would have at least one nickel today
2021-07-09 14:38:33 +0200 <viluon> HLS is wonderful but I wish it could jump to hackage sources as well
2021-07-09 14:39:07 +0200 <kosmikus> perhaps that will be possible some day.
2021-07-09 14:39:26 +0200 <kosmikus> HLS is evolving so quickly, it's amazing.
2021-07-09 14:39:50 +0200 <Gurkenglas> could you download acme-everything and just goto definition?
2021-07-09 14:40:13 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-07-09 14:40:14 +0200 <dminuoso> acme-everything sadly doesn't build, and quchen is too lazy to fix it.
2021-07-09 14:40:27 +0200 <dminuoso> We ought to start a petition.
2021-07-09 14:40:48 +0200ukari(~ukari@user/ukari)
2021-07-09 14:41:20 +0200pbrisbin(~patrick@pool-173-49-147-28.phlapa.fios.verizon.net)
2021-07-09 14:42:10 +0200 <Gurkenglas> the problem is that when you import lens and build your package goto definition doesnt work on lens, right? shouldnt it be possible to tell cabal/stack to put all the source in the local folder before building it?
2021-07-09 14:42:13 +0200pbrisbin(~patrick@pool-173-49-147-28.phlapa.fios.verizon.net) (Client Quit)
2021-07-09 14:44:45 +0200pbrisbin(~patrick@pool-173-49-147-28.phlapa.fios.verizon.net)
2021-07-09 14:47:27 +0200lavaman(~lavaman@98.38.249.169)
2021-07-09 14:48:26 +0200 <fendor> iirc, with a bit of hacking, you can goto hackage libs with hls
2021-07-09 14:48:33 +0200rostero(uid236576@id-236576.tooting.irccloud.com)
2021-07-09 14:48:51 +0200 <fendor> it's not stable yet, though
2021-07-09 14:49:43 +0200jneira(~jneira@212.8.115.226) (Quit: Client closed)
2021-07-09 14:51:20 +0200 <Gurkenglas> you mean, the required hacking is likely to change in the future so it's not worth adding it as a command to stack and hls?
2021-07-09 14:51:54 +0200favonia(~favonia@user/favonia) (Ping timeout: 252 seconds)
2021-07-09 14:52:12 +0200favonia(~favonia@user/favonia)
2021-07-09 14:53:34 +0200 <fendor> yep
2021-07-09 14:53:40 +0200 <fendor> based on hie files, iirc
2021-07-09 14:54:08 +0200fef(~thedawn@user/thedawn) (Remote host closed the connection)
2021-07-09 15:01:03 +0200fluffyballoon(~fluffybal@pat-verona-i.epic.com)
2021-07-09 15:01:15 +0200alx741(~alx741@186.178.108.75)
2021-07-09 15:03:48 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-07-09 15:06:17 +0200zebrag(~chris@user/zebrag)
2021-07-09 15:15:46 +0200hendursa1(~weechat@user/hendursaga) (Quit: hendursa1)
2021-07-09 15:16:47 +0200hendursaga(~weechat@user/hendursaga)
2021-07-09 15:19:35 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-07-09 15:21:52 +0200biberu(~biberu@user/biberu) (Read error: Connection reset by peer)
2021-07-09 15:22:11 +0200biberu(~biberu@user/biberu)
2021-07-09 15:22:14 +0200statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Remote host closed the connection)
2021-07-09 15:22:29 +0200statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com)
2021-07-09 15:24:25 +0200pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-57-65-92-163-194.dsl.bell.ca) (Quit: ZNC 1.8.2 - https://znc.in)
2021-07-09 15:24:43 +0200pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-57-65-92-163-194.dsl.bell.ca)
2021-07-09 15:24:54 +0200viluon(uid453725@id-453725.brockwell.irccloud.com) (Ping timeout: 252 seconds)
2021-07-09 15:25:27 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 252 seconds)
2021-07-09 15:25:32 +0200viluon(uid453725@id-453725.brockwell.irccloud.com)
2021-07-09 15:26:00 +0200ishutin_(~ishutin@87-97-88-250.pool.digikabel.hu) (Ping timeout: 252 seconds)
2021-07-09 15:26:24 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-07-09 15:26:45 +0200ishutin(~ishutin@87-97-88-250.pool.digikabel.hu)
2021-07-09 15:27:18 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:44e3:e9f0:ea4d:f039)
2021-07-09 15:28:00 +0200Katarushisu(~Katarushi@cpc152083-finc20-2-0-cust170.4-2.cable.virginm.net) (Quit: Ping timeout (120 seconds))
2021-07-09 15:28:18 +0200Katarushisu(~Katarushi@cpc152083-finc20-2-0-cust170.4-2.cable.virginm.net)
2021-07-09 15:29:36 +0200kuribas(~user@ptr-25vy0i8xkirhfn6k3n1.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2021-07-09 15:30:02 +0200kuribas(~user@ptr-25vy0i8xkirhfn6k3n1.18120a2.ip6.access.telenet.be)
2021-07-09 15:30:24 +0200typedfern_(~Typedfern@185.red-83-57-142.dynamicip.rima-tde.net) (Ping timeout: 252 seconds)
2021-07-09 15:31:38 +0200warnz(~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8)
2021-07-09 15:31:41 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:44e3:e9f0:ea4d:f039) (Ping timeout: 255 seconds)
2021-07-09 15:32:26 +0200turlando(~turlando@user/turlando)
2021-07-09 15:34:48 +0200funsafe(~funsafe@2601:1c1:4200:938f:32aa:eb39:2110:e2ea) (Ping timeout: 252 seconds)
2021-07-09 15:35:36 +0200funsafe(~funsafe@2601:1c1:4200:938f:32aa:eb39:2110:e2ea)
2021-07-09 15:36:37 +0200Martinsos(~Martinsos@cpe-188-129-56-84.dynamic.amis.hr)
2021-07-09 15:37:43 +0200vpan(~vilius@212.117.1.172) (Quit: Leaving.)
2021-07-09 15:38:02 +0200egoist(~egoist@186.235.80.249)
2021-07-09 15:38:07 +0200 <Martinsos> Hi! I am trying to decide between tml and transformers package, is there a general consensus one which one is better? It is a pretty common use case, writing a Parser monad that needs to combine state and exceptions, will probably be writing some Reader Env transformers in the future and similar.
2021-07-09 15:38:17 +0200 <Martinsos> mtl, not tml
2021-07-09 15:39:02 +0200 <nshepperd2> they work together
2021-07-09 15:39:13 +0200 <nshepperd2> mtl has the typeclasses, transformer has the types
2021-07-09 15:39:33 +0200kuribas(~user@ptr-25vy0i8xkirhfn6k3n1.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2021-07-09 15:39:49 +0200 <nshepperd2> it's not a thing where you need to only use one
2021-07-09 15:39:52 +0200kuribas(~user@ptr-25vy0i8xkirhfn6k3n1.18120a2.ip6.access.telenet.be)
2021-07-09 15:39:55 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-09 15:41:22 +0200 <Hecate> Martinsos: they work hand in hand
2021-07-09 15:43:01 +0200typedfern_(~Typedfern@185.red-83-57-142.dynamicip.rima-tde.net)
2021-07-09 15:43:07 +0200 <Hecate> hey typedfern_ :)
2021-07-09 15:44:55 +0200Morrow(~MorrowM_@bzq-110-168-31-106.red.bezeqint.net)
2021-07-09 15:45:22 +0200kuribas(~user@ptr-25vy0i8xkirhfn6k3n1.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2021-07-09 15:45:34 +0200kuribas(~user@ptr-25vy0i8xkirhfn6k3n1.18120a2.ip6.access.telenet.be)
2021-07-09 15:45:38 +0200chomwitt(~Pitsikoko@2a02:587:dc04:e00:d8f7:cdfe:4658:bec4)
2021-07-09 15:48:15 +0200MorrowM(~Morrow@bzq-110-168-31-106.red.bezeqint.net)
2021-07-09 15:48:51 +0200warnz(~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) (Remote host closed the connection)
2021-07-09 15:48:58 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 246 seconds)
2021-07-09 15:49:04 +0200warnz(~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8)
2021-07-09 15:49:51 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
2021-07-09 15:51:21 +0200derelict(~derelict@user/derelict)
2021-07-09 15:51:56 +0200favonia(~favonia@user/favonia) (Ping timeout: 255 seconds)
2021-07-09 15:53:05 +0200Morrow(~MorrowM_@bzq-110-168-31-106.red.bezeqint.net) (Read error: Connection reset by peer)
2021-07-09 15:53:29 +0200Morrow(~MorrowM_@bzq-110-168-31-106.red.bezeqint.net)
2021-07-09 15:53:45 +0200favonia(~favonia@user/favonia)
2021-07-09 15:55:07 +0200comerijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-09 15:55:07 +0200azeem(~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it) (Read error: Connection reset by peer)
2021-07-09 15:55:37 +0200mastarija(~mastarija@31.217.22.8)
2021-07-09 15:55:54 +0200mastarija(~mastarija@31.217.22.8) (Client Quit)
2021-07-09 15:57:21 +0200finsternis(~X@23.226.237.192) (Remote host closed the connection)
2021-07-09 15:57:40 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-07-09 16:02:37 +0200Martinsos(~Martinsos@cpe-188-129-56-84.dynamic.amis.hr) (Remote host closed the connection)
2021-07-09 16:02:55 +0200Martinsos(~Martinsos@cpe-188-129-56-84.dynamic.amis.hr)
2021-07-09 16:03:46 +0200azeem(~azeem@dynamic-adsl-84-220-226-129.clienti.tiscali.it)
2021-07-09 16:03:57 +0200comerijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-07-09 16:06:31 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-07-09 16:06:50 +0200nick8325(~nick@2001:9b1:26f9:3e00:b7ea:ac95:e18:4c1d)
2021-07-09 16:07:41 +0200dunj3(~dunj3@2001:16b8:30aa:f100:5749:57d0:4660:97ec) (Remote host closed the connection)
2021-07-09 16:07:43 +0200allbery_bgeekosaur
2021-07-09 16:09:34 +0200 <qrpnxz> I'm kind of surprised that associativity et al. or not yet things you can declare now that i think about it.
2021-07-09 16:10:33 +0200 <qrpnxz> *are
2021-07-09 16:12:48 +0200 <Martinsos> Thanks pplz! Ok, so I should use mtl and transformers with it. I shouldn't use just transfomers, although I could, because I am loosing on goodies that mtl brings, right?
2021-07-09 16:16:41 +0200nick8325(~nick@2001:9b1:26f9:3e00:b7ea:ac95:e18:4c1d) (Quit: Leaving.)
2021-07-09 16:17:32 +0200nick8325(~nick8325@2001:9b1:26f9:3e00:b7ea:ac95:e18:4c1d)
2021-07-09 16:17:40 +0200safinaskar(~user@109.252.90.89)
2021-07-09 16:18:11 +0200nick8325(~nick8325@2001:9b1:26f9:3e00:b7ea:ac95:e18:4c1d) (Client Quit)
2021-07-09 16:18:36 +0200 <safinaskar> i just published my second hackage package! read ann: https://mail.haskell.org/pipermail/haskell-cafe/2021-July/134205.html
2021-07-09 16:18:47 +0200 <safinaskar> parsing lib, arrow parsing
2021-07-09 16:20:21 +0200sergal(~ezra@user/ezra)
2021-07-09 16:22:12 +0200nick8325(~nick8325@2001:9b1:26f9:3e00:b7ea:ac95:e18:4c1d)
2021-07-09 16:22:39 +0200Sgeo(~Sgeo@user/sgeo)
2021-07-09 16:24:38 +0200 <yushyin> what is this way to long subject, /me closes tab
2021-07-09 16:27:17 +0200Martinsos(~Martinsos@cpe-188-129-56-84.dynamic.amis.hr) (Remote host closed the connection)
2021-07-09 16:27:34 +0200Martinsos(~Martinsos@cpe-188-129-56-84.dynamic.amis.hr)
2021-07-09 16:28:11 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-07-09 16:29:08 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-07-09 16:31:10 +0200yauhsien(~yauhsien@61-231-39-135.dynamic-ip.hinet.net)
2021-07-09 16:33:35 +0200Martinsos(~Martinsos@cpe-188-129-56-84.dynamic.amis.hr) (Remote host closed the connection)
2021-07-09 16:33:52 +0200Martinsos(~Martinsos@cpe-188-129-56-84.dynamic.amis.hr)
2021-07-09 16:33:55 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2021-07-09 16:36:38 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-07-09 16:37:25 +0200Vajb(~Vajb@n2hz3gq4auh6ltn9l-2.v6.elisa-mobile.fi)
2021-07-09 16:37:50 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 255 seconds)
2021-07-09 16:39:53 +0200Martinsos(~Martinsos@cpe-188-129-56-84.dynamic.amis.hr) (Remote host closed the connection)
2021-07-09 16:40:10 +0200Martinsos(~Martinsos@cpe-188-129-56-84.dynamic.amis.hr)
2021-07-09 16:40:58 +0200favonia(~favonia@user/favonia) (Ping timeout: 240 seconds)
2021-07-09 16:41:21 +0200MorrowM(~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 252 seconds)
2021-07-09 16:41:54 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:44e3:e9f0:ea4d:f039)
2021-07-09 16:42:07 +0200favonia(~favonia@user/favonia)
2021-07-09 16:48:36 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Quit: WeeChat 2.8)
2021-07-09 16:48:43 +0200sedeki(~textual@user/sedeki)
2021-07-09 16:50:16 +0200zcombinator(~zcombinat@host-87-7-58-35.retail.telecomitalia.it) (Quit: WeeChat 3.2)
2021-07-09 16:50:26 +0200cheater(~Username@user/cheater) (Ping timeout: 255 seconds)
2021-07-09 16:50:54 +0200cheater(~Username@user/cheater)
2021-07-09 16:51:08 +0200tomku(~tomku@user/tomku) (Ping timeout: 252 seconds)
2021-07-09 16:51:17 +0200tomku(~tomku@user/tomku)
2021-07-09 16:54:27 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:44e3:e9f0:ea4d:f039) (Remote host closed the connection)
2021-07-09 16:56:09 +0200son0p(~ff@181.136.122.143) (Remote host closed the connection)
2021-07-09 16:56:44 +0200favonia(~favonia@user/favonia) (Ping timeout: 255 seconds)
2021-07-09 16:56:55 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-09 16:58:01 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-07-09 16:58:37 +0200son0p(~ff@181.136.122.143)
2021-07-09 16:59:02 +0200favonia(~favonia@user/favonia)
2021-07-09 16:59:53 +0200Vajb(~Vajb@n2hz3gq4auh6ltn9l-2.v6.elisa-mobile.fi) (Ping timeout: 255 seconds)
2021-07-09 17:00:06 +0200son0p(~ff@181.136.122.143) (Remote host closed the connection)
2021-07-09 17:02:59 +0200Martinsos(~Martinsos@cpe-188-129-56-84.dynamic.amis.hr) (Remote host closed the connection)
2021-07-09 17:03:18 +0200Martinsos(~Martinsos@cpe-188-129-56-84.dynamic.amis.hr)
2021-07-09 17:03:28 +0200MorrowM(~Morrow@bzq-110-168-31-106.red.bezeqint.net)
2021-07-09 17:05:08 +0200Martinsos(~Martinsos@cpe-188-129-56-84.dynamic.amis.hr) (Remote host closed the connection)
2021-07-09 17:05:22 +0200chomwitt(~Pitsikoko@2a02:587:dc04:e00:d8f7:cdfe:4658:bec4) (Ping timeout: 240 seconds)
2021-07-09 17:05:25 +0200Martinsos(~Martinsos@cpe-188-129-56-84.dynamic.amis.hr)
2021-07-09 17:06:13 +0200sedeki(~textual@user/sedeki) (Quit: Textual IRC Client: www.textualapp.com)
2021-07-09 17:06:22 +0200hmmmas(~fidnc@183.217.200.144) (Quit: Leaving.)
2021-07-09 17:07:17 +0200wei2912(~wei2912@112.199.250.21) (Quit: Lost terminal)
2021-07-09 17:09:06 +0200chris-the-slurpa(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-09 17:09:47 +0200chris-the-slurpa(~chris@81.96.113.213)
2021-07-09 17:11:39 +0200chris-th_(~chris@81.96.113.213)
2021-07-09 17:11:39 +0200chris-the-slurpa(~chris@81.96.113.213) (Read error: Connection reset by peer)
2021-07-09 17:13:15 +0200 <qrpnxz> interesting, i will check it out today
2021-07-09 17:13:15 +0200lbseale(~lbseale@user/ep1ctetus)
2021-07-09 17:14:54 +0200tomku(~tomku@user/tomku) (Ping timeout: 252 seconds)
2021-07-09 17:15:01 +0200tomku(~tomku@user/tomku)
2021-07-09 17:17:20 +0200 <safinaskar> thanks! :)
2021-07-09 17:19:15 +0200leeb(~leeb@KD111239157039.au-net.ne.jp)
2021-07-09 17:20:48 +0200 <azeem> tomsmeding: You can get a lot of examples by consider matrices with coefficients in some ring and I think even a semiring. You can consider the ring of Integers modulo n and even of polynomials in some number of variables.
2021-07-09 17:21:20 +0200 <azeem> They will be non-commutative but associative.
2021-07-09 17:26:05 +0200Martinsos(~Martinsos@cpe-188-129-56-84.dynamic.amis.hr) (Remote host closed the connection)
2021-07-09 17:26:22 +0200Martinsos(~Martinsos@cpe-188-129-56-84.dynamic.amis.hr)
2021-07-09 17:28:32 +0200Martinsos(~Martinsos@cpe-188-129-56-84.dynamic.amis.hr) (Remote host closed the connection)
2021-07-09 17:28:49 +0200Martinsos(~Martinsos@cpe-188-129-56-84.dynamic.amis.hr)
2021-07-09 17:30:13 +0200Morrow(~MorrowM_@bzq-110-168-31-106.red.bezeqint.net) (Quit: Leaving)
2021-07-09 17:31:31 +0200MorrowM(~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Quit: ZNC 1.8.2 - https://znc.in)
2021-07-09 17:31:54 +0200Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net)
2021-07-09 17:35:10 +0200lbseale(~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
2021-07-09 17:37:00 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com)
2021-07-09 17:38:04 +0200yauhsien(~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-07-09 17:38:54 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-07-09 17:42:38 +0200ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Ping timeout: 255 seconds)
2021-07-09 17:43:46 +0200cheater(~Username@user/cheater) (Ping timeout: 246 seconds)
2021-07-09 17:44:27 +0200cheater(~Username@user/cheater)
2021-07-09 17:46:36 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:44e3:e9f0:ea4d:f039)
2021-07-09 17:47:21 +0200favonia(~favonia@user/favonia) (Ping timeout: 252 seconds)
2021-07-09 17:48:23 +0200sqrt2(~ben@80-108-18-7.cable.dynamic.surfer.at) (Quit: ZNC - http://znc.in)
2021-07-09 17:48:42 +0200favonia(~favonia@user/favonia)
2021-07-09 17:50:30 +0200MQ-17J(~MQ-17J@8.21.10.15)
2021-07-09 17:51:32 +0200 <Martinsos> I published my very first package on Hackage -> strongly typed paths, similar like 'path' which was big inspiration but I try to take it one level further: https://hackage.haskell.org/package/strong-path . Any comments on code / API are very welcome, as I still consider myself to be intermediate in Haskell!
2021-07-09 17:51:41 +0200sqrt2(~ben@tunnel330957-pt.tunnel.tserv6.fra1.ipv6.he.net)
2021-07-09 17:52:14 +0200 <maerwald> Martinsos: I posted my comment on reddig already :p
2021-07-09 17:52:17 +0200 <maerwald> *reddit
2021-07-09 17:52:50 +0200 <Martinsos> maerwald ah that is you thanks for that :D! I thought it might be worth putting it here also, I don't know how much people from IRC are also on reddit
2021-07-09 17:53:10 +0200 <maerwald> Also, if you're using FilePath under the hood, then that would be my other critique
2021-07-09 17:53:17 +0200 <jle`> nice Martinsos !
2021-07-09 17:53:26 +0200lortabac(~lortabac@95.138.56.124) (Quit: WeeChat 2.8)
2021-07-09 17:54:06 +0200egoist(~egoist@186.235.80.249) (Quit: WeeChat 3.2)
2021-07-09 17:54:31 +0200Kofid(~Kofid@2601:404:d300:5a0:fcbf:c290:5998:a5c6)
2021-07-09 17:55:43 +0200 <Martinsos> I am using Path under the hood actually, which uses FilePath :). Makes sense, but we can change that implementation in the future with no / little effect on the API I believe.
2021-07-09 17:55:57 +0200 <maerwald> if I ever get AFPP done, yeah
2021-07-09 17:56:22 +0200 <maerwald> Martinsos: https://github.com/hasufell/abstract-filepath
2021-07-09 17:56:27 +0200 <Martinsos> Just read about AFPP, that would be cool!
2021-07-09 17:57:11 +0200 <maerwald> I have green light from the CLC to attempt a user space implementation and start writing patches for e.g. filpath/unix/Win32, but it's gonna be a lot of wor
2021-07-09 17:57:26 +0200favonia(~favonia@user/favonia) (Ping timeout: 246 seconds)
2021-07-09 17:58:19 +0200neurocyte4048(~neurocyte@46.243.81.30)
2021-07-09 17:58:19 +0200neurocyte4048(~neurocyte@46.243.81.30) (Changing host)
2021-07-09 17:58:19 +0200neurocyte4048(~neurocyte@user/neurocyte)
2021-07-09 17:58:30 +0200neurocyte404(~neurocyte@user/neurocyte) (Read error: Connection reset by peer)
2021-07-09 17:58:30 +0200neurocyte4048neurocyte404
2021-07-09 17:58:51 +0200favonia(~favonia@user/favonia)
2021-07-09 17:59:47 +0200 <Martinsos> It does look like a lot of work. I never got much into the lower-level details regarding the representation of path, normalization and similar, I leveraged Path for that, but I do hope to get some more time in the future to investigate that and to follow projects like AFPP
2021-07-09 18:00:30 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-09 18:02:01 +0200 <Martinsos> Maybe stupid question but I see that you have AbstractFilePath and WindowsFilePath exported from the top module, however there is no PosixFilePath -> how is that? You do have PosixString though hm
2021-07-09 18:03:24 +0200lbseale(~lbseale@user/ep1ctetus)
2021-07-09 18:05:13 +0200 <maerwald> those are the same
2021-07-09 18:05:18 +0200 <maerwald> https://github.com/hasufell/abstract-filepath/blob/master/lib/AbstractFilePath/Internal/Types.hs#L37
2021-07-09 18:05:37 +0200 <maerwald> the String vs FilePath was a major question that made me stop working
2021-07-09 18:05:56 +0200 <maerwald> rust also makes that distinction
2021-07-09 18:06:05 +0200 <maerwald> although those are the same representation afair
2021-07-09 18:07:42 +0200rednaZ[m](~r3dnazmat@2001:470:69fc:105::ba70)
2021-07-09 18:08:53 +0200 <maerwald> Martinsos: https://paste.tomsmeding.com/1nCW1bVt
2021-07-09 18:09:00 +0200yauhsien(~yauhsien@61-231-39-135.dynamic-ip.hinet.net)
2021-07-09 18:09:29 +0200 <albet70> does typeclass could be a type of another typeclass?
2021-07-09 18:09:38 +0200 <albet70> I don't know how to describe
2021-07-09 18:10:02 +0200 <albet70> typeclass has types, could typeclass has typeclass?
2021-07-09 18:10:59 +0200acidjnk_new(~acidjnk@p200300d0c72b9550509afe7c5cdd8ef5.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2021-07-09 18:10:59 +0200nschoe(~quassel@2a01:e0a:8e:a190:156a:d066:25bb:13b1) (Ping timeout: 255 seconds)
2021-07-09 18:11:03 +0200 <albet70> in Java, abstract class could extend interface, could typeclass extend typeclass?
2021-07-09 18:14:07 +0200 <boxscape> albet70: we do have a thing called "super class", you can put constraints in the definition of a type class, e.g. `class Eq a => Ord a where ...`
2021-07-09 18:14:10 +0200yauhsien(~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2021-07-09 18:14:44 +0200 <boxscape> not sure how close that comes to what you're thinking of
2021-07-09 18:14:58 +0200 <Martinsos> maerwald: ahh that is tricky, haven't considered that. Somehow thought that filepath functions should work only with filepaths :D! The problem is that for this proposal to make sense you need to support everything that was supported so far? I don't have complete understanding of the problem, but the approach where there is a more general concept then, OSString (or maybe it is just Path? Is that also too specific?), and then there is
2021-07-09 18:15:10 +0200 <Martinsos> Upff just lost second part of the message
2021-07-09 18:16:07 +0200 <Martinsos> Anyway FilePath being newtype for OsString, like Rust does, makes some sense. Although I don't at first undresatnd fromt he name what OSString stands for. I would that this more general than FilePath is just Path. OSString is even more general? What could that be?
2021-07-09 18:16:25 +0200safinaskar(~user@109.252.90.89) ()
2021-07-09 18:16:49 +0200 <maerwald> Martinsos: it's very simple... it's the encoding that the syscalls expect
2021-07-09 18:16:53 +0200 <maerwald> in a way
2021-07-09 18:17:09 +0200 <maerwald> so on windows it's UTF-16 (at least for Win32) and on unix it's just char[]
2021-07-09 18:17:17 +0200 <Martinsos> aha, so this is all about the encoding.
2021-07-09 18:17:21 +0200 <maerwald> yes
2021-07-09 18:17:29 +0200 <maerwald> rust uses WTF-8 though on windows, a custom encoding
2021-07-09 18:17:36 +0200econo(uid147250@user/econo)
2021-07-09 18:17:48 +0200 <maerwald> internally
2021-07-09 18:17:55 +0200 <maerwald> but once passed to syscalls it's UTF-16
2021-07-09 18:18:24 +0200 <albet70> boxscape how you describe the relation between typeclass and type
2021-07-09 18:18:50 +0200 <Martinsos> Got it. Wish I could comment something more useful right now, but from my limited knowledge of the domain: sounds tricky all together :D / I am always in for keeping the types true to their name / approach 2 sounds reasonable
2021-07-09 18:18:55 +0200 <maerwald> but it's not only filepaths that are UTF-16
2021-07-09 18:19:15 +0200 <boxscape> albet70: which typeclass and which type?
2021-07-09 18:19:35 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es)
2021-07-09 18:20:10 +0200 <Martinsos> approach #3 surely not
2021-07-09 18:20:15 +0200 <albet70> Semigroup and Monad
2021-07-09 18:20:50 +0200 <albet70> Maybe and Monad
2021-07-09 18:20:50 +0200 <boxscape> albet70: if you mean Semigroup and Monoid, Semigroup is a superclass of Monoid
2021-07-09 18:21:00 +0200 <boxscape> Maybe is an instance of Monad
2021-07-09 18:21:07 +0200 <albet70> yes
2021-07-09 18:21:17 +0200 <boxscape> (Semigroup and Monad (as opposed to Monoid) are unrelated)
2021-07-09 18:21:27 +0200Pickchea(~private@user/pickchea) (Ping timeout: 252 seconds)
2021-07-09 18:22:14 +0200 <albet70> if a type would be an instance of Monad, it could not be an instance of Semigroup?
2021-07-09 18:22:48 +0200 <davean> No, it could be
2021-07-09 18:22:56 +0200 <davean> well, sorta
2021-07-09 18:23:21 +0200 <davean> Depends on what you mean by "it"
2021-07-09 18:23:25 +0200kuribas(~user@ptr-25vy0i8xkirhfn6k3n1.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-07-09 18:23:41 +0200 <davean> albet70: https://hackage.haskell.org/package/base-4.15.0.0/docs/Data-List-NonEmpty.html#t:NonEmpty
2021-07-09 18:24:04 +0200 <davean> Note Monad NonEmpty and Semigroup (NonEmpty a)
2021-07-09 18:24:08 +0200 <drdo> How would I enable optimization for all packages (including external deps) in cabal.project?
2021-07-09 18:24:24 +0200 <davean> SLIGHTLY different membership, but probably what you mean by being both
2021-07-09 18:24:28 +0200 <boxscape> % :k Monad
2021-07-09 18:24:29 +0200 <yahb> boxscape: (* -> *) -> Constraint
2021-07-09 18:24:44 +0200Martinsos(~Martinsos@cpe-188-129-56-84.dynamic.amis.hr) (Remote host closed the connection)
2021-07-09 18:24:48 +0200 <boxscape> % :k Semigroup
2021-07-09 18:24:48 +0200 <yahb> boxscape: * -> Constraint
2021-07-09 18:25:04 +0200sergal(~ezra@user/ezra) (Changing host)
2021-07-09 18:25:04 +0200sergal(~ezra@fsf/member/ezra)
2021-07-09 18:30:02 +0200warnz(~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) (Remote host closed the connection)
2021-07-09 18:31:14 +0200 <albet70> Functor, Applicative, Monad
2021-07-09 18:31:30 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 256 seconds)
2021-07-09 18:31:58 +0200 <albet70> an instance of Monad, so it must be an instance of Functor and Applicative, right?
2021-07-09 18:32:19 +0200 <[exa]> true
2021-07-09 18:34:06 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 252 seconds)
2021-07-09 18:34:25 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
2021-07-09 18:34:31 +0200darklambdacs
2021-07-09 18:34:39 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-07-09 18:34:42 +0200cscpp
2021-07-09 18:35:46 +0200cppdarklambda
2021-07-09 18:37:16 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com)
2021-07-09 18:41:00 +0200ubert(~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de)
2021-07-09 18:41:15 +0200MQ-17J(~MQ-17J@8.21.10.15) (Ping timeout: 252 seconds)
2021-07-09 18:44:26 +0200shutdown_-h_now(~arjan@82-75-187-100.cable.dynamic.v4.ziggo.nl) (Ping timeout: 252 seconds)
2021-07-09 18:45:50 +0200ubert(~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2021-07-09 18:46:08 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-07-09 18:48:38 +0200 <zzz> if we have ´T a = T Wtv a` and i want to have `tmap :: (a -> b) -> T a -> Tb ; tmap f (T wtv a) = T wtv (f a)` how d we avoid the infinite type error?
2021-07-09 18:50:01 +0200 <dminuoso> zzz: Can you present your real code?
2021-07-09 18:50:25 +0200shutdown_-h_now(~arjan@82-75-187-100.cable.dynamic.v4.ziggo.nl)
2021-07-09 18:50:25 +0200 <dminuoso> It should exactly like that
2021-07-09 18:50:46 +0200kaizen(sid501599@id-501599.brockwell.irccloud.com) (Ping timeout: 246 seconds)
2021-07-09 18:51:02 +0200chomwitt(~Pitsikoko@ppp-94-67-202-202.home.otenet.gr)
2021-07-09 18:51:07 +0200hendi(sid489601@id-489601.tooting.irccloud.com) (Ping timeout: 246 seconds)
2021-07-09 18:51:32 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-07-09 18:51:42 +0200hendi(sid489601@id-489601.tooting.irccloud.com)
2021-07-09 18:51:44 +0200kaizen(sid501599@id-501599.brockwell.irccloud.com)
2021-07-09 18:52:59 +0200 <zzz> oops, my bad
2021-07-09 18:53:31 +0200hegstal(~hegstal@2a02:c7f:7604:8a00:7018:37c7:e025:203e)
2021-07-09 18:54:03 +0200 <zzz> i had `T = T Wtv (U a)`
2021-07-09 18:54:14 +0200 <zzz> i mean `T a = T Wtv (U a)`
2021-07-09 18:54:21 +0200 <zzz> time for a break
2021-07-09 18:59:02 +0200 <dminuoso> What do you expect this to do, with that type signature?
2021-07-09 18:59:48 +0200dajoer(~david@user/gvx) (Quit: leaving)
2021-07-09 19:02:54 +0200Obo(~roberto@70.pool90-171-81.dynamic.orange.es) (Quit: WeeChat 2.8)
2021-07-09 19:04:11 +0200phma(phma@2001:5b0:212a:c338:e904:270b:aa2b:a4ce) (Read error: Connection reset by peer)
2021-07-09 19:07:34 +0200michalz(~michalz@185.246.204.61) (Remote host closed the connection)
2021-07-09 19:10:16 +0200 <yin[m]> hi. I'm trying to make a short-circuiting fold, something like a foldl (||) False $ cycle [False, True] that doesn't hang. what's an idiomatic way of achieving this?
2021-07-09 19:10:46 +0200 <yin[m]> i want it to work on maps, not just lists
2021-07-09 19:11:10 +0200 <monochrom> foldr, despite wrong intuition
2021-07-09 19:11:22 +0200 <yin[m]> can you explain?
2021-07-09 19:11:24 +0200 <monochrom> > foldr (||) undefined (cycle [False, True])
2021-07-09 19:11:26 +0200 <lambdabot> True
2021-07-09 19:11:56 +0200 <yin[m]> let me think about that
2021-07-09 19:12:03 +0200 <monochrom> Perform lazy evaluation steps by hand to see why.
2021-07-09 19:12:27 +0200 <monochrom> The popular science story of "foldr starts from the right" is wrong. Has always been wrong.
2021-07-09 19:13:23 +0200 <yin[m]> of course. why did my intuition mislead me?
2021-07-09 19:14:16 +0200roconnor_(~roconnor@host-104-157-226-103.dyn.295.ca)
2021-07-09 19:15:14 +0200roconnor(~roconnor@host-45-78-208-216.dyn.295.ca) (Ping timeout: 252 seconds)
2021-07-09 19:15:30 +0200 <maerwald> compare foldl and foldr when using (-)
2021-07-09 19:15:45 +0200yauhsien(~yauhsien@61-231-39-135.dynamic-ip.hinet.net)
2021-07-09 19:15:46 +0200 <maerwald> then check how laziness works for ||
2021-07-09 19:16:18 +0200 <yin[m]> foldl actually starts _evaluating_ from the right
2021-07-09 19:16:34 +0200 <yin[m]> right?
2021-07-09 19:16:44 +0200 <monochrom> No.
2021-07-09 19:16:57 +0200 <monochrom> err, yes.
2021-07-09 19:17:07 +0200 <maerwald> you build all the thunks through the list before you apply the first function
2021-07-09 19:17:38 +0200Atum_(~IRC@user/atum/x-2392232)
2021-07-09 19:18:09 +0200roconnor(~roconnor@host-45-58-230-126.dyn.295.ca)
2021-07-09 19:19:06 +0200 <maerwald> and at that time your `cycle` has already killed the cat
2021-07-09 19:19:31 +0200 <monochrom> cycle killed the cat. foldr brought it back!
2021-07-09 19:19:32 +0200roconnor_(~roconnor@host-104-157-226-103.dyn.295.ca) (Ping timeout: 252 seconds)
2021-07-09 19:19:38 +0200 <maerwald> :>
2021-07-09 19:20:50 +0200phma(phma@2001:0:c38c:c38c:207c:8189:bcd3:2f32)
2021-07-09 19:23:23 +0200MoC(~moc@user/moc) (Quit: Konversation terminated!)
2021-07-09 19:24:52 +0200viluon(uid453725@id-453725.brockwell.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-09 19:25:13 +0200phma_(phma@2001:5b0:211b:d008:d38:3ff9:8a1d:e053)
2021-07-09 19:25:14 +0200phma(phma@2001:0:c38c:c38c:207c:8189:bcd3:2f32) (Ping timeout: 255 seconds)
2021-07-09 19:28:34 +0200 <zzz> :)
2021-07-09 19:31:50 +0200chomwitt(~Pitsikoko@ppp-94-67-202-202.home.otenet.gr) (Ping timeout: 265 seconds)
2021-07-09 19:34:34 +0200chris-th_(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-09 19:37:14 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:44e3:e9f0:ea4d:f039) (Remote host closed the connection)
2021-07-09 19:37:19 +0200chris-the-slurpa(~chris@81.96.113.213)
2021-07-09 19:37:20 +0200chris-the-slurpa(~chris@81.96.113.213) (Read error: Connection reset by peer)
2021-07-09 19:37:32 +0200chris-the-slurpa(~chris@81.96.113.213)
2021-07-09 19:37:58 +0200chris-the-slurpa(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-09 19:42:38 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:39f3:da:7ab8:bc1e)
2021-07-09 19:43:07 +0200chris-the-slurpa(~chris@81.96.113.213)
2021-07-09 19:44:47 +0200chris-the-slurpa(~chris@81.96.113.213) (Remote host closed the connection)
2021-07-09 19:45:15 +0200lavaman(~lavaman@98.38.249.169)
2021-07-09 19:45:19 +0200chris-the-slurpa(~chris@81.96.113.213)
2021-07-09 19:45:55 +0200Reyu[M](~reyureyuz@matrix.reyuzenfold.com) (Remote host closed the connection)
2021-07-09 19:47:05 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-07-09 19:47:31 +0200mikail(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f)
2021-07-09 19:47:44 +0200ukari(~ukari@user/ukari)
2021-07-09 19:49:25 +0200favonia(~favonia@user/favonia) (Ping timeout: 246 seconds)
2021-07-09 19:49:59 +0200chris-the-slurpa(~chris@81.96.113.213) (Ping timeout: 255 seconds)
2021-07-09 19:50:04 +0200Reyu[M](~reyureyuz@matrix.reyuzenfold.com)
2021-07-09 19:50:54 +0200favonia(~favonia@user/favonia)
2021-07-09 19:52:10 +0200yauhsien(~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-07-09 19:52:45 +0200derelict(~derelict@user/derelict) (Ping timeout: 252 seconds)
2021-07-09 19:52:57 +0200HotblackDesiato(~HotblackD@gateway/tor-sasl/hotblackdesiato) (Ping timeout: 244 seconds)
2021-07-09 19:53:45 +0200ubert(~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de)
2021-07-09 19:59:25 +0200warnz(~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8)
2021-07-09 19:59:34 +0200favonia(~favonia@user/favonia) (Ping timeout: 246 seconds)
2021-07-09 20:00:16 +0200HotblackDesiato(~HotblackD@gateway/tor-sasl/hotblackdesiato)
2021-07-09 20:00:54 +0200favonia(~favonia@user/favonia)
2021-07-09 20:04:38 +0200ubert(~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-07-09 20:05:34 +0200chris-the-slurpa(~chris@81.96.113.213)
2021-07-09 20:06:46 +0200roconnor_(~roconnor@host-104-157-231-207.dyn.295.ca)
2021-07-09 20:06:49 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:39f3:da:7ab8:bc1e) (Remote host closed the connection)
2021-07-09 20:07:24 +0200roconnor_(~roconnor@host-104-157-231-207.dyn.295.ca) (Client Quit)
2021-07-09 20:08:35 +0200roconnor(~roconnor@host-45-58-230-126.dyn.295.ca) (Ping timeout: 252 seconds)
2021-07-09 20:10:22 +0200chisui(~chisui@200116b866eaab00b869ec172918c6ce.dip.versatel-1u1.de)
2021-07-09 20:10:51 +0200Vajb(~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01)
2021-07-09 20:10:58 +0200 <chisui> Hey, is there a way to resolve this issue without the need of an additional type variable? `Could not deduce: n1 ~ (n - 1) from the context: n ~ (n1 + 1)`
2021-07-09 20:11:30 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-07-09 20:11:43 +0200lavaman(~lavaman@98.38.249.169)
2021-07-09 20:14:45 +0200favonia(~favonia@user/favonia) (Ping timeout: 252 seconds)
2021-07-09 20:15:53 +0200favonia(~favonia@user/favonia)
2021-07-09 20:19:34 +0200pavonia(~user@user/siracusa)
2021-07-09 20:19:50 +0200pgib(~textual@173.38.117.69)
2021-07-09 20:20:14 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-07-09 20:21:01 +0200ukari(~ukari@user/ukari)
2021-07-09 20:22:42 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-07-09 20:23:09 +0200yauhsien(~yauhsien@61-231-39-135.dynamic-ip.hinet.net)
2021-07-09 20:23:46 +0200ukari(~ukari@user/ukari)
2021-07-09 20:30:02 +0200favonia(~favonia@user/favonia) (Ping timeout: 255 seconds)
2021-07-09 20:31:45 +0200 <Hecate> would I sound absolutely demented if I suggested to examine which GHC language extensions can be moved to a compiler plugin?
2021-07-09 20:32:06 +0200 <Hecate> or have they all encroached in its architecture now?
2021-07-09 20:32:33 +0200favonia(~favonia@user/favonia)
2021-07-09 20:33:27 +0200 <Hecate> or maybe we have some work to make compiler plugins' ergonomics better so that it doesn't slow adoption?
2021-07-09 20:33:30 +0200 <peutri> bonus points for extracting ApplicativeDo
2021-07-09 20:33:33 +0200 <Hecate> bgamari: what do you think?
2021-07-09 20:34:03 +0200 <Hecate> peutri: yeah I was thinking of this, because people are talking about SelectiveDo on the subreddit and it might start as a compiler plugin
2021-07-09 20:34:36 +0200 <davean> Hecate: what would be the proposed benefit?
2021-07-09 20:35:01 +0200 <bgamari> yeah, I'll admit that I'm not entirely clear on what we would gain by doing so
2021-07-09 20:35:23 +0200 <bgamari> all I see are costs
2021-07-09 20:35:40 +0200 <Hecate> davean: the things that don't have to live in-tree can be put elsewhere, we can reduce the size of the GHC codebase…
2021-07-09 20:35:45 +0200 <Hecate> bgamari: I'm interested to know why!
2021-07-09 20:35:49 +0200 <Hecate> we're not modular enough?
2021-07-09 20:36:11 +0200 <davean> Hecate: So, more cost of maintainership for ... a larger overall code base? I'm confused, I see no benefits here
2021-07-09 20:36:43 +0200 <monochrom> I think the hope is that when a thing is called a "plugin", you can enable 3 plugins and expect no surprising interference, just because they are called "plugin"s. The word suggests so much modularity, no?
2021-07-09 20:36:58 +0200 <Hecate> davean: why more cost of maintenership?
2021-07-09 20:37:07 +0200 <bgamari> Hecate, well, many, if not most, extensions do require some extra syntax
2021-07-09 20:37:13 +0200 <peutri> wouldn't the point be to have a smaller, lighter ghc?
2021-07-09 20:37:14 +0200 <davean> Hecate: because you have to deal with GHC version still
2021-07-09 20:37:19 +0200 <monochrom> And I think the reality is that they will still have the same ugly surprising interference as when we did things the old "monolithic" way.
2021-07-09 20:37:22 +0200 <bgamari> and we currently have no means for plugins to extend the grammar
2021-07-09 20:37:29 +0200 <davean> monochrom: but thats clearly silly
2021-07-09 20:37:32 +0200 <Hecate> bgamari: ok, I wasn't quite aware of that. :)
2021-07-09 20:37:40 +0200 <bgamari> even for those cases that don't require new syntax
2021-07-09 20:37:43 +0200 <davean> but even if there was, theres only cost here
2021-07-09 20:38:09 +0200 <bgamari> you still have the usual composability problems that plugins introduce
2021-07-09 20:38:13 +0200 <bgamari> as monochrom suggested
2021-07-09 20:38:17 +0200 <Hecate> I see the errors of my ways. Let's first create a beautiful monolith before thinking about splitting and modularity
2021-07-09 20:38:34 +0200 <bgamari> then there are also the purely practical considerations
2021-07-09 20:38:47 +0200 <bgamari> e.g. presumably we would want to continue to evolve the plugin alongside GHC
2021-07-09 20:38:58 +0200 <Hecate> which is certainly reasonable :P
2021-07-09 20:39:03 +0200 <davean> Hecate: no, I don't think you EVER split this
2021-07-09 20:39:08 +0200 <bgamari> which means we would have to advance multiple projects in lockstep
2021-07-09 20:39:09 +0200 <davean> Hecate: because they're inhernetly tied
2021-07-09 20:39:18 +0200 <Hecate> bgamari: ok, got it!
2021-07-09 20:39:21 +0200 <Hecate> davean: 👍
2021-07-09 20:39:23 +0200 <bgamari> potentially introducing another haddock scenario
2021-07-09 20:39:35 +0200 <bgamari> it's an interesting idea though
2021-07-09 20:39:40 +0200motherfs1(~motherfsc@user/motherfsck)
2021-07-09 20:40:40 +0200 <davean> The only "benefit" to plugins I see here is supporting new things on older GHCs, but thats combinatorically more work, and its a bad idea - upgrade GHC, you need to anyway
2021-07-09 20:41:10 +0200 <monochrom> The monad transformer saga was a wake-up call.
2021-07-09 20:41:20 +0200 <Hecate> monochrom: tell me more :)
2021-07-09 20:41:34 +0200 <davean> monochrom: ?
2021-07-09 20:42:15 +0200 <monochrom> Early adoptors used to think that the monad transformer way was "modular", "plugin", "component", "mix and match", all those nice utopian->dystopian wordings.
2021-07-09 20:42:41 +0200 <monochrom> Just because each monad transformer has standalone definition, "no dependency".
2021-07-09 20:43:00 +0200motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 272 seconds)
2021-07-09 20:43:04 +0200 <monochrom> We now understand that you combine your monad transformers to build a monolith.
2021-07-09 20:43:05 +0200mikail(~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f) (Ping timeout: 255 seconds)
2021-07-09 20:43:45 +0200 <sclv> i think plugins for things like selective-do (or preprocessors) are good as proofs of concept
2021-07-09 20:43:54 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 252 seconds)
2021-07-09 20:44:14 +0200 <sclv> you can develop them independently, let a few brave people try them out and get a feel for it
2021-07-09 20:44:26 +0200 <sclv> but long term you have to fold it in to the main codebase or it usually dies
2021-07-09 20:45:12 +0200 <sclv> in the case of selective-do its the preprocessor approach rather than plugin imho, since its a syntactic transform
2021-07-09 20:45:13 +0200 <bgamari> right
2021-07-09 20:45:16 +0200 <bgamari> I agree with that
2021-07-09 20:45:23 +0200 <sclv> recall that's how arrows were first done too -- a long tradition!
2021-07-09 20:45:26 +0200favonia(~favonia@user/favonia) (Ping timeout: 252 seconds)
2021-07-09 20:45:30 +0200 <bgamari> plugins are really best used for a prototyping
2021-07-09 20:45:35 +0200 <Hecate> oki doki
2021-07-09 20:45:58 +0200 <bgamari> IIRC scala used to make quite a bit of use of compiler plugins
2021-07-09 20:46:14 +0200 <bgamari> and the effect was that projects became very tied to particular compiler versions
2021-07-09 20:46:53 +0200favonia(~favonia@user/favonia)
2021-07-09 20:47:40 +0200warnz(~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8) (Remote host closed the connection)
2021-07-09 20:48:18 +0200motherfs1(~motherfsc@user/motherfsck) (Ping timeout: 252 seconds)
2021-07-09 20:49:43 +0200 <lechner> Hi, what are the "row types" mentioned here, and why are they scary, please? Thanks! https://chrisdone.com/posts/clientside-programming-haskell/
2021-07-09 20:49:46 +0200 <sclv> also these days for syntactic prototyping one can do it directly with quasiquotes, which is pretty nice and stable
2021-07-09 20:49:53 +0200 <davean> I've seen plugins used for library support too
2021-07-09 20:49:55 +0200 <sclv> but again unpleasant compared to doing it directly
2021-07-09 20:50:06 +0200 <davean> where its not a language thing, but a specific library needs a macro-ish transform to work
2021-07-09 20:50:13 +0200 <davean> like for tracing
2021-07-09 20:50:23 +0200 <davean> Thats where a plugin always fits I think
2021-07-09 20:51:30 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
2021-07-09 20:52:14 +0200 <Hecate> davean: Polysemy needs a plugin to avoid terrible performance
2021-07-09 20:52:20 +0200 <sclv> lechner: they're just anonymous records, also known as heterogenous lists, hlists, or "extensible tuples" among other things
2021-07-09 20:52:25 +0200 <Hecate> (but delcont primop should fix this)
2021-07-09 20:52:36 +0200 <sclv> there's plenty of packages for doing them in haskell -- hlist, row-types, etc...
2021-07-09 20:52:53 +0200 <sclv> they were scary in the context of ur because it was written by a type theorist so they looked scary
2021-07-09 20:52:59 +0200 <sclv> in the docs :-)
2021-07-09 20:53:03 +0200 <Hecate> lechner: https://hgiasac.github.io/posts/2018-11-18-Record-Row-Type-and-Row-Polymorphism.html
2021-07-09 20:53:39 +0200 <sclv> ml also had them for years, where they were considered Not Scary
2021-07-09 20:54:12 +0200 <davean> sclv: I don't know, I thought they were scary because they type system implimentations tend to work poorly and have bad comprimises :)
2021-07-09 20:54:20 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-07-09 20:54:31 +0200yauhsien(~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
2021-07-09 20:54:35 +0200 <sclv> there's a lot of systems that do them pretty well in the literature, not least ml
2021-07-09 20:54:36 +0200 <Hecate> I know error reporting in PureScript is at times painful
2021-07-09 20:54:45 +0200 <monochrom> "The row types documentation frankly scares me away." is very different from "the row types scares me away".
2021-07-09 20:55:21 +0200 <sclv> having them in the presence of a ton of other things including type classes and higher order polymorphism etc can be a bit much
2021-07-09 20:55:22 +0200Vajb(~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
2021-07-09 20:55:30 +0200 <monochrom> As usual, Chris Done doesn't write ridiculous things.
2021-07-09 20:55:38 +0200 <sclv> well...
2021-07-09 20:55:41 +0200 <Hecate> monochrom: since the documentation is the gateway to the concept, they mean the same thing
2021-07-09 20:55:55 +0200 <davean> Hecate: absolutely not!
2021-07-09 20:56:05 +0200 <monochrom> No. I know how to write scary documentation for Int.
2021-07-09 20:56:14 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-09 20:56:18 +0200 <lechner> Is this still true? (from Hecate) "you can't define Person { name :: String } and Cat { name :: String } in same module. Function name will be duplicated"
2021-07-09 20:56:32 +0200 <monochrom> For Bool. For ().
2021-07-09 20:56:42 +0200 <davean> lechner: somewhat
2021-07-09 20:56:52 +0200 <davean> lechner: Thats never a problem though
2021-07-09 20:57:03 +0200 <davean> (Its a problem if you can!)
2021-07-09 20:57:07 +0200 <Hecate> monochrom: I swear to god I've had terrifying introductions in maths class for concepts that scared me years after until someone introduced me to them again
2021-07-09 20:57:21 +0200 <sclv> we have an extension that removes that limitation iirc -- a whole universe of extensions for working with that sort of stuff now in fact (and i'm not up to speed because i haven't bothered to use em in practice yet)
2021-07-09 20:57:24 +0200 <davean> Hecate: right, so don't do the documentation, just do the concepts
2021-07-09 20:57:38 +0200 <davean> sclv: well thats not Haskell persay
2021-07-09 20:57:38 +0200 <Hecate> davean: the concepts don't appear from nowhere in your head :)
2021-07-09 20:58:00 +0200 <davean> Hecate: No, they appear from the direct specification
2021-07-09 20:58:01 +0200 <monochrom> I know how to write scary documentation for javascript. Hell, I learned from Guy Steele, he did that.
2021-07-09 20:58:09 +0200 <davean> Usually the construction
2021-07-09 20:58:18 +0200 <Hecate> davean: specification isn't documentation?
2021-07-09 20:58:33 +0200 <davean> Hecate: absolutely not, it exactly the thing
2021-07-09 20:58:42 +0200 <davean> Its definitional
2021-07-09 20:58:44 +0200 <lechner> I plan to use Generic instances for FromJSON for parsing, but the files are complicated and may share field names across levels. Will that be a problem?
2021-07-09 20:59:03 +0200 <Hecate> davean: is a reference documentation for you?
2021-07-09 20:59:11 +0200 <davean> Hecate: Yes
2021-07-09 20:59:13 +0200 <sclv> lechner: that shouldn't be a problem, no. just make sure that the datatypes with overlapping field names are each defined in different modules.
2021-07-09 20:59:29 +0200 <davean> Hecate: I do not mean "specification" like "someone describing it" I mean specification as in "this specifies it"
2021-07-09 20:59:34 +0200 <lechner> ok, thanks!
2021-07-09 20:59:44 +0200xff0x(~xff0x@2001:1a81:521d:ec00:3970:2542:2f1d:feb7) (Ping timeout: 255 seconds)
2021-07-09 20:59:46 +0200 <Hecate> davean: then you're the first person I've met who doesn't believe that specification is documentation
2021-07-09 20:59:56 +0200 <Hecate> Personally I follow this quadrant: https://documentation.divio.com/_images/overview.png
2021-07-09 21:00:02 +0200 <sclv> also cf https://downloads.haskell.org/ghc/latest/docs/html/users_guide/exts/duplicate_record_fields.html
2021-07-09 21:00:17 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-09 21:00:19 +0200 <davean> Hecate: I think this is an issue with there being multiple meanings of the word specification, which I tried to clarify
2021-07-09 21:00:22 +0200 <dsal> ghc: panic! (the 'impossible' happened) -- well, I guess it's lunch time.
2021-07-09 21:00:29 +0200 <Hecate> dsal: happy meal
2021-07-09 21:00:36 +0200motherfs1(~motherfsc@user/motherfsck)
2021-07-09 21:01:03 +0200 <Hecate> davean: I don't understand the difference between "something describing it" and "something specifying it"?
2021-07-09 21:01:05 +0200 <monochrom> No one is interested in my scary take on Bool and ()? >:)
2021-07-09 21:01:20 +0200 <davean> Hecate: the later is the actual thing, the former is a description of a thing
2021-07-09 21:01:21 +0200 <Hecate> monochrom: I implemented 'Num ()', nothing scares me :P
2021-07-09 21:01:28 +0200xff0x(~xff0x@185.65.135.235)
2021-07-09 21:01:32 +0200 <Hecate> davean: but the actual thing… isn't it the implementation?
2021-07-09 21:01:38 +0200 <davean> Hecate: yes, exactly
2021-07-09 21:01:39 +0200 <Hecate> does it exist on paper?
2021-07-09 21:01:43 +0200 <sclv> we need an RFC on the meaning of specification and reference. a specification MAY be documentation. a reference MUST be documentation.
2021-07-09 21:01:50 +0200 <davean> Hecate: Maybe?
2021-07-09 21:01:53 +0200 <monochrom> That doesn't mean I can't tell a scary story logically equivalent to a normal explanation of ().
2021-07-09 21:01:55 +0200 <sclv> everything can exist on paper, if you have enough pages
2021-07-09 21:01:59 +0200 <davean> sclv: yes
2021-07-09 21:02:04 +0200 <Hecate> davean: don't you need then to reverse-engineer the implementation to extract a set of observable behaviours?
2021-07-09 21:02:25 +0200 <sclv> the implementation contains the observable behaviors within it directly
2021-07-09 21:02:38 +0200 <davean> Hecate: no, thats rediculous, it does the tihng it does
2021-07-09 21:02:41 +0200 <Hecate> so you presume an implementation that follows the spec?
2021-07-09 21:02:47 +0200 <davean> Hecate: no!
2021-07-09 21:02:49 +0200 <davean> never!
2021-07-09 21:02:51 +0200 <davean> Thats horrid
2021-07-09 21:02:52 +0200 <sclv> a "reference implementation" MAY be a specification
2021-07-09 21:03:02 +0200 <davean> sclv: yes
2021-07-09 21:03:14 +0200 <Hecate> ok for context I have very, very little experience in program or static analysis
2021-07-09 21:03:46 +0200 <sclv> i don't think this is directly related to that. basically a specification is a socially agreed on thing that can take any number of forms but which has some method of validating conformance
2021-07-09 21:03:50 +0200 <davean> Hecate: data Z = S Z | N
2021-07-09 21:03:51 +0200 <monochrom> I even know many long and contrived ways to say "true".
2021-07-09 21:03:53 +0200 <davean> thats a specification
2021-07-09 21:04:14 +0200 <davean> I can start adding other facts
2021-07-09 21:04:21 +0200 <Hecate> monochrom: ok spill the beans already :P
2021-07-09 21:04:28 +0200 <Hecate> davean: oh, okay
2021-07-09 21:04:38 +0200 <davean> You start talking about it, and you're not longer a specification
2021-07-09 21:04:40 +0200 <sclv> > fix ("true && " ++)
2021-07-09 21:04:41 +0200 <monochrom> "The books I read are the books read by all those who read all books I read" is a long way to say "true", since it is a tautology.
2021-07-09 21:04:42 +0200 <lambdabot> "true && true && true && true && true && true && true && true && true && tru...
2021-07-09 21:05:21 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 252 seconds)
2021-07-09 21:05:43 +0200 <monochrom> "the stone topology of two points" is a trolling way to say "Bool", since every stone topology is a boolean algebra.
2021-07-09 21:05:55 +0200favonia(~favonia@user/favonia) (Ping timeout: 252 seconds)
2021-07-09 21:06:11 +0200 <Hecate> damn I forgot what were talking about in the beginning
2021-07-09 21:06:38 +0200 <Hecate> ah yes, terrifying introductions that can bar access to simple concepts
2021-07-09 21:06:50 +0200 <monochrom> There are multiple ways to document/specify/define/characterize/whateveryoucallit a thing in a scary or trolling or highbrow way. All it takes is creativity and knowledge. Doesn't mean the thing itself is not simple.
2021-07-09 21:06:52 +0200 <davean> Hecate: the very nature of debuging is understanding something via specification instead of documentation!
2021-07-09 21:07:18 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:39f3:da:7ab8:bc1e)
2021-07-09 21:07:22 +0200 <davean> Thats a reasonable working definition of debugging in many ways
2021-07-09 21:07:25 +0200favonia(~favonia@user/favonia)
2021-07-09 21:07:30 +0200 <Hecate> hm okay
2021-07-09 21:07:50 +0200 <sclv> well i mean specification, implementation and documentation all may vary
2021-07-09 21:08:10 +0200 <davean> sclv: depending on which definition of specification you're using
2021-07-09 21:08:25 +0200 <Hecate> a function specification document I guess?
2021-07-09 21:08:36 +0200 <sclv> specification is a socially agreed on thing that can be validated against
2021-07-09 21:08:43 +0200 <davean> well I'd say implimentation is how you write down the specification, the specification is the actual behaviors
2021-07-09 21:08:58 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
2021-07-09 21:09:07 +0200 <sclv> implementation is a thing you validate against the specification, unless its a reference implementation taken to be the specification
2021-07-09 21:09:44 +0200 <davean> Hecate: do you get what I'm saying about about debugging though?
2021-07-09 21:09:52 +0200 <Hecate> that's the moment where I realise I missed a bunch of things by not studying onthology of programs lol
2021-07-09 21:10:01 +0200Deide(~Deide@217.155.19.23)
2021-07-09 21:10:02 +0200Deide(~Deide@217.155.19.23) (Changing host)
2021-07-09 21:10:02 +0200Deide(~Deide@user/deide)
2021-07-09 21:10:08 +0200 <sclv> specifications MAY have undefined behaviors. implementations definitionally CANNOT
2021-07-09 21:10:11 +0200 <Hecate> davean: yes, debugging is acting against the observable behaviour
2021-07-09 21:10:21 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-07-09 21:10:27 +0200 <davean> or derivable, sorta the same thing?
2021-07-09 21:10:31 +0200 <davean> but yah
2021-07-09 21:11:08 +0200 <davean> The main documentation I want is an ordering of how I should read an implimentation
2021-07-09 21:11:25 +0200 <Hecate> like Jonesforth?
2021-07-09 21:11:39 +0200 <monochrom> oh, internal vs external documentation...
2021-07-09 21:11:55 +0200__monty__(~toonn@user/toonn)
2021-07-09 21:11:57 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:39f3:da:7ab8:bc1e) (Ping timeout: 252 seconds)
2021-07-09 21:12:29 +0200chele(~chele@user/chele) (Remote host closed the connection)
2021-07-09 21:13:27 +0200xff0x(~xff0x@185.65.135.235) (Ping timeout: 268 seconds)
2021-07-09 21:14:17 +0200 <davean> Hecate: I'm not sure what that is, but a search seems to show a fuckton of problematic words instead of an actual order I should read an implimentation in
2021-07-09 21:14:39 +0200xff0x(~xff0x@2001:1a81:521d:ec00:3970:2542:2f1d:feb7)
2021-07-09 21:15:08 +0200 <Hecate> https://github.com/nornagon/jonesforth/blob/master/jonesforth.S
2021-07-09 21:15:13 +0200 <Hecate> It's literate programming
2021-07-09 21:15:21 +0200 <Hecate> you read it from top to bottom
2021-07-09 21:15:33 +0200 <davean> Great, see all thsoe words? Remove them
2021-07-09 21:15:38 +0200 <davean> DO NOT WANT
2021-07-09 21:16:07 +0200 <Hecate> not gonna lie when you don't know shit to Forth or Asm, it's darn useful :P
2021-07-09 21:16:21 +0200 <Hecate> but I acknowledge that we have different needs
2021-07-09 21:16:31 +0200 <davean> This is someone's attempt to explain sometihng with code
2021-07-09 21:16:35 +0200 <davean> it is NOT specificaiton
2021-07-09 21:16:51 +0200 <davean> I do not get truth from this
2021-07-09 21:17:01 +0200 <Hecate> (technically yes, because each Forth is different)
2021-07-09 21:17:11 +0200 <Hecate> you get the truth about this program's behaviour
2021-07-09 21:17:12 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
2021-07-09 21:17:20 +0200 <davean> Not from the words
2021-07-09 21:17:31 +0200 <Hecate> you mean the prose?
2021-07-09 21:17:34 +0200 <davean> yes
2021-07-09 21:17:41 +0200 <Hecate> what is truth for you?
2021-07-09 21:17:55 +0200 <davean> Now, take time to write the implimentation carefully so its assembled in a convinient form to think about
2021-07-09 21:17:57 +0200 <davean> THATS helpful
2021-07-09 21:18:28 +0200 <davean> Pick useful base pieces, build your implimentation from those
2021-07-09 21:18:47 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:39f3:da:7ab8:bc1e)
2021-07-09 21:19:10 +0200 <davean> Good factoring is sorta like documentation
2021-07-09 21:19:15 +0200 <Hecate> it only works when you use an implementation mechanism that can be perfectly understood, where you presume your reader to be ridden of all biases or unable to mis-understand your code
2021-07-09 21:19:35 +0200 <davean> No, it doesn't have to be perfectly understood - it can't be
2021-07-09 21:19:38 +0200 <monochrom> This being asm, I do expect a mess, code that misses the forest for the trees, and clever tricks that need back-stories.
2021-07-09 21:19:41 +0200 <davean> but you can reach truths from it
2021-07-09 21:20:11 +0200 <davean> Hecate: and no, theres no room for biases when you actually face truth
2021-07-09 21:20:18 +0200 <davean> prose is what allows biases, etc
2021-07-09 21:20:22 +0200 <davean> because theres room for interpritation
2021-07-09 21:20:34 +0200 <Hecate> davean: what do you call "truth"? For me it's the relationship between your perception of fact, and facts
2021-07-09 21:20:57 +0200 <Hecate> when they become aligned in their complexity, then you reach truth
2021-07-09 21:20:59 +0200 <davean> Truth is exactly what is
2021-07-09 21:21:18 +0200 <davean> Your understanding is beside the point
2021-07-09 21:21:52 +0200 <Hecate> your understanding is what allows you to act on truth, that's why many people with diverging conclusions are convinced to posess truth
2021-07-09 21:21:57 +0200 <Hecate> despite facing the same facts
2021-07-09 21:22:37 +0200 <davean> act sure - perhaps. Though I'd say one can act correctly without understanding. I've verified many things and used them without gaining understanding.
2021-07-09 21:28:35 +0200MQ-17J(~MQ-17J@8.21.10.15)
2021-07-09 21:29:30 +0200haykam3(~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
2021-07-09 21:29:42 +0200haykam1(~haykam@static.100.2.21.65.clients.your-server.de)
2021-07-09 21:30:01 +0200Ariakenom(~Ariakenom@c83-255-154-140.bredband.tele2.se)
2021-07-09 21:30:35 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-07-09 21:34:03 +0200cuz(~user@38.140.58.234)
2021-07-09 21:34:51 +0200cheater(~Username@user/cheater) (Ping timeout: 255 seconds)
2021-07-09 21:35:11 +0200cheater(~Username@user/cheater)
2021-07-09 21:36:48 +0200Guest62(~Guest62@187.83.249.216.dyn.smithville.net)
2021-07-09 21:37:35 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 246 seconds)
2021-07-09 21:39:32 +0200 <Guest62> so i'm suddenly having issues installing a package with stack on arch. used to work fine, but now when i do `stack install vulkan` in a directory without a project, it takes a few minutes, seems to work and exits gracefully after "Registering library for vulkan-3.6.2..". But import Vulkan.Core10 is always "could not find module" and stack exec
2021-07-09 21:39:32 +0200 <Guest62> ghc-pkg -- list doesn't have vulkan anywhere
2021-07-09 21:39:38 +0200 <Guest62> any ideas for what i might be doing wrong?
2021-07-09 21:40:59 +0200isekaijin(~pyon@user/pyon) (Ping timeout: 252 seconds)
2021-07-09 21:41:42 +0200isekaijin(~pyon@user/pyon)
2021-07-09 21:43:55 +0200 <boxscape> Why do I get this error when trying to derive Generic? I feel like I may be missing something obvious... https://paste.tomsmeding.com/6EopZUJE
2021-07-09 21:44:17 +0200 <boxscape> hm am I importing the wrong module
2021-07-09 21:44:36 +0200 <boxscape> yes
2021-07-09 21:44:38 +0200 <boxscape> it's GHC.Generics
2021-07-09 21:44:39 +0200 <boxscape> thanks
2021-07-09 21:44:44 +0200favonia(~favonia@user/favonia) (Ping timeout: 255 seconds)
2021-07-09 21:44:55 +0200 <lechner> yeah, that's what i use
2021-07-09 21:46:16 +0200coeus(~coeus@b2b-92-50-96-34.unitymedia.biz) (Killed (NickServ (GHOST command used by _coeus!~coeus@250.sub-174-205-176.myvzw.com)))
2021-07-09 21:46:39 +0200coeus(~coeus@b2b-92-50-96-34.unitymedia.biz)
2021-07-09 21:47:08 +0200favonia(~favonia@user/favonia)
2021-07-09 21:47:38 +0200 <sm> Guest62 are you sure you're not in a project ? Eg a parent directory ? Try to reproduce in $HOME
2021-07-09 21:48:06 +0200coeus(~coeus@b2b-92-50-96-34.unitymedia.biz) (Killed (NickServ (GHOST command used by _coeus!~coeus@250.sub-174-205-176.myvzw.com)))
2021-07-09 21:48:29 +0200coeus_(~coeus@b2b-92-50-96-34.unitymedia.biz)
2021-07-09 21:49:21 +0200 <Guest62> yeah, same thing. `stack exec ghc` returns 'could not find module', and `stack exec ghc-pkg -- list` still doesn't list vulkan even in ~
2021-07-09 21:49:37 +0200epolanski(uid312403@id-312403.brockwell.irccloud.com) (Quit: Connection closed for inactivity)
2021-07-09 21:50:17 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
2021-07-09 21:50:23 +0200 <sm> Odd, any funny haskell related env vars ?
2021-07-09 21:51:03 +0200 <sm> Try the install again with increased --verbosity ?
2021-07-09 21:58:46 +0200wqsz7xn(~wqsz7xn@202.36.244.28) (Quit: Leaving)
2021-07-09 21:59:02 +0200 <Guest62> tried reinstalling but it looks like it's just finding the package that was installed and just linking that
2021-07-09 21:59:06 +0200 <Boarders> this is really an algorithms question but someone here might know. If I have a set of integers and I want to choose a subset that is closest to summing to a target value, is there a nice algorithm to do that?
2021-07-09 21:59:13 +0200nschoe(~quassel@2a01:e0a:8e:a190:af88:6c9:cc87:d82a)
2021-07-09 21:59:21 +0200 <Guest62> i wonder if i might've set some default options somewhere for stack
2021-07-09 21:59:48 +0200favonia(~favonia@user/favonia) (Ping timeout: 252 seconds)
2021-07-09 22:00:22 +0200chisui(~chisui@200116b866eaab00b869ec172918c6ce.dip.versatel-1u1.de) (Quit: Client closed)
2021-07-09 22:00:31 +0200 <Guest62> ls
2021-07-09 22:01:07 +0200favonia(~favonia@user/favonia)
2021-07-09 22:01:43 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-07-09 22:01:56 +0200 <sm> Guest62: that would be in ~/.stack/global-project
2021-07-09 22:02:12 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-07-09 22:02:29 +0200 <sm> reinstalling with --verbosity=debug should show some kind of path info, if not then probably --force-reinstall or something will help
2021-07-09 22:02:33 +0200MQ-17J(~MQ-17J@8.21.10.15) (Ping timeout: 252 seconds)
2021-07-09 22:03:05 +0200smtnet3(~asdfasdfa@202.36.244.28)
2021-07-09 22:04:59 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:39f3:da:7ab8:bc1e) (Remote host closed the connection)
2021-07-09 22:05:15 +0200juhp(~juhp@128.106.188.66) (Ping timeout: 268 seconds)
2021-07-09 22:07:31 +0200juhp(~juhp@128.106.188.66)
2021-07-09 22:08:11 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-07-09 22:08:55 +0200ghais(~ghais@c-76-97-106-226.hsd1.ga.comcast.net)
2021-07-09 22:09:36 +0200yauhsien(~yauhsien@61-231-39-135.dynamic-ip.hinet.net)
2021-07-09 22:12:11 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 255 seconds)
2021-07-09 22:12:21 +0200phma_phma
2021-07-09 22:12:25 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-07-09 22:13:59 +0200yauhsien(~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 255 seconds)
2021-07-09 22:16:11 +0200 <ghais> Hi all. I have a package https://github.com/ghais/HQu which depends on hmatrix-gsl which in turn depends on gsl (Gnu Scientific Library). I cannot seem to get hackage servers to build this library correctly. However other libraries that depend on gsl seem to build fine on hackage build servers. Does anyone know if i have an issue in my cabal file
2021-07-09 22:16:12 +0200 <ghais> (https://github.com/ghais/HQu/blob/main/HQu.cabal)?
2021-07-09 22:16:23 +0200 <ghais> I would appreciate any help, i tried everything i can think about
2021-07-09 22:16:59 +0200 <ghais> Sorry second link is messed up: https://github.com/ghais/HQu/blob/main/HQu.cabal
2021-07-09 22:18:11 +0200 <ghais> alternatively are there any documentations about the hackage build servers where i can define my system dependencies?
2021-07-09 22:18:16 +0200 <ghais> pkgconfig-depends: gsl
2021-07-09 22:18:39 +0200 <ghais> doesn't seem to do the trick on the server, since i get a message saying it cannot be satisfied
2021-07-09 22:20:07 +0200waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
2021-07-09 22:20:34 +0200 <ghais> hackage build report is here: https://hackage.haskell.org/package/HQu-0.0.0.4/reports/2
2021-07-09 22:20:44 +0200favonia(~favonia@user/favonia) (Ping timeout: 255 seconds)
2021-07-09 22:21:48 +0200chomwitt(~Pitsikoko@ppp-94-67-202-202.home.otenet.gr)
2021-07-09 22:22:19 +0200zes(~zes@p2003000631de7b35c9a03d4c214f06a5.dip0.t-ipconnect.de)
2021-07-09 22:23:04 +0200favonia(~favonia@user/favonia)
2021-07-09 22:23:09 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
2021-07-09 22:24:32 +0200bontaq(~user@ool-18e47f8d.dyn.optonline.net) (Remote host closed the connection)
2021-07-09 22:26:32 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 252 seconds)
2021-07-09 22:27:12 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2021-07-09 22:28:01 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-09 22:28:04 +0200ubert(~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de)
2021-07-09 22:30:03 +0200Hanicef(~gustaf@81-229-9-108-no92.tbcn.telia.com)
2021-07-09 22:30:31 +0200 <sclv> ghais: please stop uploading to hackage to make your package build!
2021-07-09 22:30:40 +0200 <sclv> it has been abusive to the servers
2021-07-09 22:30:49 +0200 <ghais> sclv: My bad
2021-07-09 22:30:53 +0200 <ghais> I will stop
2021-07-09 22:30:55 +0200ubert(~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-07-09 22:31:09 +0200 <sclv> the buildbox lacks many libs, its fine if it doesn’t build
2021-07-09 22:31:28 +0200 <sclv> uploading the docs manually as you have done is fine
2021-07-09 22:31:53 +0200 <ghais> I understand that, however if i want to add it to stackage, it seems that there is a requirement that it builds on hackage first
2021-07-09 22:31:54 +0200 <sclv> the backstory is we moved servers at some point and the old one had more libs
2021-07-09 22:32:08 +0200 <sclv> that shouldn’t be a stackage requirement?
2021-07-09 22:32:33 +0200 <ghais> https://github.com/commercialhaskell/stackage/blob/master/MAINTAINERS.md#adding-a-package
2021-07-09 22:32:38 +0200 <sclv> i did notice you repeatedly attempting to upload and installed the libgsl stuff on the buildbox
2021-07-09 22:32:38 +0200turlando(~turlando@user/turlando) (Read error: Connection reset by peer)
2021-07-09 22:33:27 +0200 <ghais> again, i apologize. Maybe i misread the requirements from stackage
2021-07-09 22:33:39 +0200 <sclv> if you want libs installed there’s a hackage ticket you can comment on in the future as well, and also you can edit metadata and force rebuilds from the maintainer corner without a new upload
2021-07-09 22:33:54 +0200 <sclv> no big deal, just glad i could communicate to you about this! :-)
2021-07-09 22:34:16 +0200turlando(~turlando@93-42-250-112.ip89.fastwebnet.it)
2021-07-09 22:34:17 +0200turlando(~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
2021-07-09 22:34:17 +0200turlando(~turlando@user/turlando)
2021-07-09 22:34:25 +0200 <sclv> If it does turn out its a stackage req, do let me know. Id be surprised
2021-07-09 22:34:56 +0200 <sclv> I suspect they mean it needs to be on hackage and needs to be buildable, not that hackage itself needs to be able to build it :-)
2021-07-09 22:35:00 +0200 <ghais> I might be misunderstanding this statement from their documentation: The package is buildable and testable from Hackage
2021-07-09 22:35:12 +0200 <ghais> I understood this to mean that it must build successfully on hackage
2021-07-09 22:35:22 +0200 <ghais> Yeah, good point
2021-07-09 22:35:42 +0200 <sclv> the “from” means just that its on there i think..
2021-07-09 22:36:27 +0200 <ghais> thanks. I will just upload the documentation manually then
2021-07-09 22:38:31 +0200jumper149(~jumper149@80.240.31.34)
2021-07-09 22:38:59 +0200oxide(~lambda@user/oxide) (Quit: oxide)
2021-07-09 22:39:02 +0200 <sclv> releases are permanent so ideally should not be too frequent
2021-07-09 22:42:51 +0200TheRAt(~TheRAt@user/therat) (Ping timeout: 258 seconds)
2021-07-09 22:44:32 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.0.1)
2021-07-09 22:45:08 +0200TheRAt(~TheRAt@user/therat)
2021-07-09 22:45:30 +0200 <ghais> That part i understood, but i couldn't connect the dots to why other libraries with similar dependency successfully, and i assumed it was my issue. As a new comer to Haskell some of this knowledge is not easy to glue together, and documentation around the interaction between stack/cabal/build servers/hackage/stackage has been particular difficult
2021-07-09 22:45:30 +0200 <ghais> to glue together
2021-07-09 22:46:00 +0200favonia(~favonia@user/favonia) (Ping timeout: 252 seconds)
2021-07-09 22:46:10 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:39f3:da:7ab8:bc1e)
2021-07-09 22:47:53 +0200favonia(~favonia@user/favonia)
2021-07-09 22:48:06 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-07-09 22:49:10 +0200 <sclv> sure, understood. any specific suggestions of how to improve docs welcome!
2021-07-09 22:50:32 +0200warnz(~warnz@2600:1700:77c0:5610:edd9:472d:4b89:9ab8)
2021-07-09 22:50:51 +0200 <ghais> one none obvious thing i noticed is that to upload the documentation manually you have to have a specific directory name, and you need to tar but not gzip, and the tar needs to be done with a --format=ustar instead of the default format. I think adding this to the manual documentation upload page would have saved me a lot of time
2021-07-09 22:52:03 +0200 <sm> good info
2021-07-09 22:52:04 +0200 <ghais> another item that would be very useful is to understand the build process on hackage. It was only through my abusive trial and error that i leared that the build plan is dependent on the base library i specify in my cabal file
2021-07-09 22:52:32 +0200 <ghais> It seems that the base library constraints selects which versions of GHC will be used
2021-07-09 22:53:06 +0200 <sm> correct, GHC and base are locked together
2021-07-09 22:53:16 +0200 <davean> but it deosn't select which ghc is used
2021-07-09 22:53:34 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-07-09 22:53:38 +0200 <davean> the direction is the other, you just can't find a build plan if you aren't compatible with that GHC's base
2021-07-09 22:53:53 +0200 <sm> s/locked/semi-locked/
2021-07-09 22:54:37 +0200 <ghais> I understand this distinction, but look at it from the prespective of someone who started with "stack new projectX"
2021-07-09 22:55:12 +0200 <sm> ghais: you're not wrong.. we know.. :/
2021-07-09 22:55:16 +0200 <davean> Yah, you'd have to talk to stack folk for their documentation, not sure any of them are around here?
2021-07-09 22:55:23 +0200 <ghais> a base constraint is specified in the cabal file. A specific version of GHC is selected through which resolver you use, and then i start using some features
2021-07-09 22:55:25 +0200 <davean> ghc documents this for sure
2021-07-09 22:55:50 +0200 <ghais> No sorry, i was writing a multi line statement. I was trying to say that there is a disconnect between the tools
2021-07-09 22:56:26 +0200 <davean> ghais: hum, can you explain? different tools do different things, so I might be confused here
2021-07-09 22:56:59 +0200 <davean> (base being tied to GHC is a GHC-ism specificly)
2021-07-09 22:57:08 +0200 <ghais> davean, i was trying to relay my experience as a new comer, and why it is not trivial to connect all the pieces together without a little bit of abuse
2021-07-09 22:57:40 +0200acidjnk_new(~acidjnk@p200300d0c72b9550509afe7c5cdd8ef5.dip0.t-ipconnect.de)
2021-07-09 22:57:45 +0200 <davean> ghais: right, and I'm trying to figure out what you're saying specificly
2021-07-09 22:58:00 +0200 <ghais> davean, yeah this is clear to me and makes sense. What i didnt realize is that stack on the other hand created a config for me that had more base versions than the one the resolver supported.
2021-07-09 22:58:06 +0200 <davean> I think part of the confusion is "the way things are" vs "the way things can be"
2021-07-09 22:58:12 +0200 <sm> I think the general point is obviously correct
2021-07-09 22:58:15 +0200 <sm> ghais it's a well known problem. It's hard to change, and hard (costly) even to document
2021-07-09 22:58:16 +0200 <davean> Ah, yes, I see
2021-07-09 22:58:36 +0200 <sclv> so the command here for doc creation/upload is incorrect? https://hackage.haskell.org/upload
2021-07-09 22:58:41 +0200 <davean> ghais: I didn't realize it would create an open base bound - do you happen to have which bound it used?
2021-07-09 22:59:03 +0200 <ghais> sclv, gzip didn't work for me
2021-07-09 22:59:23 +0200 <sclv> or ah we don’t show the command on the doc upload pge?
2021-07-09 22:59:26 +0200 <sclv> hrm
2021-07-09 22:59:44 +0200 <ghais> on the doc upload page there are no instructions
2021-07-09 23:00:00 +0200 <sclv> right so we should put those there, assuming they work!
2021-07-09 23:00:10 +0200 <ghais> stack sdist, produces a package that can be immediately uploaded (it is a tar.gz)
2021-07-09 23:00:19 +0200 <ghais> however the documentation upload cannot be gzipped it seems
2021-07-09 23:01:14 +0200 <ghais> also since i use stack, the command example at the end of the page doesn't work, because my locally installed GHC version is different than the one i needed to build
2021-07-09 23:01:24 +0200favonia(~favonia@user/favonia) (Ping timeout: 252 seconds)
2021-07-09 23:01:57 +0200jumper149(~jumper149@80.240.31.34) (Quit: WeeChat 3.2)
2021-07-09 23:02:12 +0200 <davean> Use stack's ghc then with cabal
2021-07-09 23:02:28 +0200favonia(~favonia@user/favonia)
2021-07-09 23:03:13 +0200 <ghais> right, so stack haddock produced a folder. That i had to tar --format=ustar
2021-07-09 23:03:21 +0200 <ghais> otherwise i cannot upload the documentation
2021-07-09 23:04:29 +0200 <ghais> Sorry if it comes like i am complaining, truth is I am not
2021-07-09 23:04:41 +0200 <ghais> just relaying my experience and I am happy to help improve things in any way i can
2021-07-09 23:04:47 +0200 <davean> ghais: you can use "-w" to specify which ghc to use with cabal
2021-07-09 23:04:52 +0200 <davean> BTW
2021-07-09 23:05:02 +0200 <ghais> davean, i didn't know that. I appreciate that
2021-07-09 23:05:38 +0200 <davean> I'd still be curious what base bound you ended up with
2021-07-09 23:06:06 +0200 <ghais> base >= 4.11.0 && < 5
2021-07-09 23:06:17 +0200 <davean> wow, really?
2021-07-09 23:06:35 +0200 <davean> I have no idea the logic behind that
2021-07-09 23:06:54 +0200 <davean> I see people do the < 5 thing occasionally, I guess now I know where it comes from!
2021-07-09 23:07:17 +0200 <monochrom> dons used "< 10". :)
2021-07-09 23:07:37 +0200 <davean> (base often changes with breaking changes in the second digit, as would align with the PVP)
2021-07-09 23:07:48 +0200 <davean> (so < 5 is clearly an insane choice)
2021-07-09 23:07:56 +0200 <ghais> this comes from stack
2021-07-09 23:08:06 +0200 <davean> ghais: sure
2021-07-09 23:08:11 +0200 <ghais> if you do a "stack new X" you get:
2021-07-09 23:08:12 +0200 <ghais> build-depends:
2021-07-09 23:08:12 +0200 <ghais> base >=4.7 && <5
2021-07-09 23:08:17 +0200 <davean> I think I directly ackowleged it came from stack?
2021-07-09 23:08:26 +0200 <davean> "21:06:53 davean I see people do the < 5 thing occasionally, I guess now I know where it comes from!"
2021-07-09 23:08:55 +0200 <ghais> davean, i am not very good with implicit hints
2021-07-09 23:08:58 +0200 <ghais> :D
2021-07-09 23:09:11 +0200 <monochrom> "< 5" is or is not insane depending on how much of base you actually use.
2021-07-09 23:09:20 +0200 <sm> it predates stack for sure
2021-07-09 23:09:25 +0200 <davean> monochrom: I mean, prelude has broken that a lot
2021-07-09 23:09:38 +0200 <davean> monochrom: You'd have to use almost no part of base for that to not have broken you in the last few years
2021-07-09 23:09:53 +0200 <sm> it's an idiom that looks familiar and is simple, so it has stuck
2021-07-09 23:10:15 +0200yauhsien(~yauhsien@61-231-39-135.dynamic-ip.hinet.net)
2021-07-09 23:10:35 +0200 <davean> sm: Hum, wouldn't it be more sensible to but no upper bound?
2021-07-09 23:10:37 +0200 <monochrom> base is so large that you can use only 0.1% of it, and if you do, the probability that a difference between 4.11 and 4.12 actually affects you is 0.1%. At this rate one wouldn't care.
2021-07-09 23:10:57 +0200 <sm> perhaps back then base made larger version number jumps
2021-07-09 23:11:08 +0200 <davean> monochrom: I mean the core type classes change - what you say is correct, but people reliably use the same 0.1% and thats where changes happen
2021-07-09 23:11:43 +0200 <davean> (Probably because people use them?)
2021-07-09 23:12:02 +0200 <davean> sm: hum, it predates stack? Interesting
2021-07-09 23:12:17 +0200 <sclv> hackage requires a base upper bound to upload
2021-07-09 23:12:34 +0200nschoe(~quassel@2a01:e0a:8e:a190:af88:6c9:cc87:d82a) (Ping timeout: 240 seconds)
2021-07-09 23:12:57 +0200 <sclv> stack devs don’t like bounds, so they put in a useless bound to check the box, sigh
2021-07-09 23:13:09 +0200 <davean> It seems better to have no bound than a clearly wrong bound
2021-07-09 23:13:16 +0200 <sm> I'm sure you are being uncharitable there
2021-07-09 23:13:18 +0200 <davean> Is there a hacakge ticket about this?
2021-07-09 23:13:29 +0200 <davean> sm: which part?
2021-07-09 23:13:35 +0200 <sm> (sclv)
2021-07-09 23:13:57 +0200 <monochrom> A natural tug war may actually cancel out "it gets used more therefore it gets improved more" with "it gets used more therefore it dares not break backward compatibility".
2021-07-09 23:14:16 +0200 <davean> monochrom: I mean look at the change log
2021-07-09 23:15:08 +0200yauhsien(~yauhsien@61-231-39-135.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-07-09 23:15:57 +0200 <davean> monochrom: "Ix" stands out as being a bit unusual. I've wanted to use it but its got problems. So I'm unsure about its use rate
2021-07-09 23:16:58 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Quit: Leaving)
2021-07-09 23:17:08 +0200 <davean> sm: I know there were first step bumps for some historic major rearrangements
2021-07-09 23:17:40 +0200 <monochrom> Right, 3.x existed.
2021-07-09 23:18:38 +0200 <monochrom> But 3.x may be before PVP, I forgot.
2021-07-09 23:19:08 +0200 <davean> 4.0 was Nov 2008
2021-07-09 23:20:38 +0200 <davean> So well after PVP
2021-07-09 23:22:23 +0200cuz(~user@38.140.58.234) (Ping timeout: 255 seconds)
2021-07-09 23:24:18 +0200yauhsien(~yauhsien@118-167-64-241.dynamic-ip.hinet.net)
2021-07-09 23:25:47 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2021-07-09 23:26:02 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net)
2021-07-09 23:26:35 +0200 <davean> sclv: why does hackage have that base requirement?
2021-07-09 23:27:06 +0200 <davean> Its unique vs. other packages
2021-07-09 23:27:14 +0200MQ-17J(~MQ-17J@8.21.10.15)
2021-07-09 23:27:29 +0200 <sclv> because base induced breakages were the most frequent iirc
2021-07-09 23:27:59 +0200 <monochrom> Yikes, that contradicts my theory, heh.
2021-07-09 23:28:18 +0200 <davean> It matches my experience updating packages I depend on
2021-07-09 23:28:33 +0200 <davean> but, it doesn't make sense to make a more complicated, asymetric system because of that!
2021-07-09 23:28:54 +0200yauhsien(~yauhsien@118-167-64-241.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2021-07-09 23:29:09 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-07-09 23:29:12 +0200 <maerwald> it violates PVP
2021-07-09 23:29:25 +0200 <monochrom> But I have now taken a look at the 4.15.0.0 changelog and the 4.14.0.0 changelog. For me, they don't break my code. Perhaps they are even strictly improvements to my code too, without needing me to change my code.
2021-07-09 23:29:26 +0200 <davean> maerwald: base does?
2021-07-09 23:29:26 +0200 <maerwald> PVP doesn't demand an upper bound
2021-07-09 23:29:39 +0200 <davean> maerwald: yes
2021-07-09 23:29:46 +0200 <maerwald> from a spec perspective, it's arbitrary
2021-07-09 23:29:56 +0200 <ghais> what is PVP?
2021-07-09 23:29:58 +0200 <davean> So who made the decision to enforce it on hackage and why?
2021-07-09 23:30:10 +0200 <davean> ghais: Package Version Policy - its what definates the meaning of the parts of the version field
2021-07-09 23:30:17 +0200 <davean> https://pvp.haskell.org/
2021-07-09 23:30:19 +0200 <ghais> thank you!
2021-07-09 23:30:20 +0200 <monochrom> I acknowledge YMMV very much in this case. But I would be making a safe bet if I used "< 5" or "< 4.20" or something.
2021-07-09 23:30:39 +0200 <Clint> i always do "< 5"
2021-07-09 23:31:01 +0200fluffyballoon(~fluffybal@pat-verona-i.epic.com) (Quit: Client closed)
2021-07-09 23:31:37 +0200fluffyballoon(~fluffybal@pat-verona-i.epic.com)
2021-07-09 23:32:28 +0200 <monochrom> I do acknowledge that once in a while I would be burned. For example at the transition point of the functor-applicative-monad proposal. But this would be a once-in-a-decade event for my kind of code.
2021-07-09 23:33:33 +0200 <monochrom> And in 5-10 years the monad-of-no-return proposal.
2021-07-09 23:33:57 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
2021-07-09 23:34:02 +0200 <monochrom> (Even that one doesn't have a 100% chance of breaking everyone's code.)
2021-07-09 23:34:42 +0200Vajb(~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
2021-07-09 23:34:54 +0200 <monochrom> On the other side, I'm also too lazy to relax a tight bound when cabal init auto-defaults to a tight bound, so there!
2021-07-09 23:35:08 +0200 <davean> monochrom: thats very lazy :-p
2021-07-09 23:36:03 +0200MQ-17J(~MQ-17J@8.21.10.15) (Ping timeout: 252 seconds)
2021-07-09 23:36:18 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-09 23:37:58 +0200 <sm> tightness of upper bounds has always been a situation-dependent trade-off between annoying users and maintainers with unnecessary bound failures and annoying them with build errors
2021-07-09 23:38:07 +0200beka(~beka@104.193.170-244.PUBLIC.monkeybrains.net)
2021-07-09 23:39:26 +0200zes(~zes@p2003000631de7b35c9a03d4c214f06a5.dip0.t-ipconnect.de) (Quit: zes)
2021-07-09 23:40:46 +0200 <hpc> maybe being able to promise something's compatibility ahead of time would help?
2021-07-09 23:40:48 +0200 <davean> sm: you left correctness out entirely there
2021-07-09 23:41:15 +0200 <hpc> if i am writing a package, being able to say "this definition will behave the same way you expect for the next few major versions" could help consumers of that package
2021-07-09 23:42:10 +0200 <hpc> and breaking that promise would be a first-digit change, or something like that
2021-07-09 23:42:43 +0200 <davean> hpc: thats ... not an insane thing to do for some packages, put the high level semantic API on the first digit?
2021-07-09 23:42:58 +0200 <davean> Detail oriented functions on the second
2021-07-09 23:43:17 +0200 <hpc> it gives that digit a reason to be there, being just to be longer than semver
2021-07-09 23:43:21 +0200 <hpc> *besides
2021-07-09 23:43:43 +0200 <davean> hpc: haha, I mean semver wasn't a thing when it came into existance :)
2021-07-09 23:43:55 +0200 <hpc> yeah, just being cheeky
2021-07-09 23:44:04 +0200 <hpc> afaik there's no documented difference between the first two digits
2021-07-09 23:44:10 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 240 seconds)
2021-07-09 23:44:33 +0200jneira_(~jneira_@28.red-80-28-169.staticip.rima-tde.net)
2021-07-09 23:44:50 +0200viluon(uid453725@id-453725.brockwell.irccloud.com)
2021-07-09 23:44:51 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
2021-07-09 23:45:18 +0200 <davean> Correct
2021-07-09 23:45:28 +0200 <dsal> I like the freedom of the first digit.
2021-07-09 23:45:28 +0200 <davean> they're up to the library, other than that they are a major change
2021-07-09 23:46:29 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-07-09 23:46:52 +0200fendor(~fendor@77.119.197.100.wireless.dyn.drei.com) (Remote host closed the connection)
2021-07-09 23:47:53 +0200slice(~slice@user/slice)
2021-07-09 23:51:49 +0200Kaipi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net)
2021-07-09 23:52:14 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2021-07-09 23:54:19 +0200fluffyballoon(~fluffybal@pat-verona-i.epic.com) (Ping timeout: 246 seconds)
2021-07-09 23:54:36 +0200Atum_(~IRC@user/atum/x-2392232) (Read error: Connection reset by peer)
2021-07-09 23:56:35 +0200slice(~slice@user/slice) (Quit: zzz)
2021-07-09 23:57:14 +0200slice(~slice@user/slice)
2021-07-09 23:57:25 +0200slice(~slice@user/slice) (Client Quit)