2022/07/19

2022-07-19 00:00:07 +0200 <dlock> you can match that like recursively like; instance SomeClass n => SomeClass (S n) where
2022-07-19 00:00:27 +0200 <qrpnxz> i was about to say good thing i didn't need type level numbers like 3587298235, but i reckon it's possible to easily write a type function between Peano and Nat
2022-07-19 00:00:37 +0200 <dlock> but you couldnt do like; SomeClass (n-1) => SomeClass n where
2022-07-19 00:00:46 +0200 <dlock> because overlapping instances starts kicking up a fuss
2022-07-19 00:01:17 +0200 <qrpnxz> yeah, once i had to turn on undecidable i was like "hol' up, this is just wrong"
2022-07-19 00:01:21 +0200 <dlock> qrpnxz: yes there are utility functions i like to write like (getNat @n) :: Int
2022-07-19 00:01:51 +0200 <dlock> undecidable is fine, its about it not being able to match on the constraint
2022-07-19 00:02:03 +0200 <dlock> you cant write instance SomeClass (n+1)
2022-07-19 00:02:10 +0200yauhsien(~yauhsien@61-231-22-68.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-07-19 00:02:28 +0200 <dlock> so you have to write instance (n' ~ n-1) => SomeClass n
2022-07-19 00:02:39 +0200 <dlock> but the constraint part doesnt get matched so its overlapping
2022-07-19 00:02:53 +0200 <dlock> you need the concrete datatype constructor to match on (S)
2022-07-19 00:02:58 +0200 <qrpnxz> ah shit, it's actually not easy to go from Nat to Peano, for the same reason i wanted peano in the first place, can't write the inductive step lmao
2022-07-19 00:03:17 +0200mmhat(~mmh@p200300f1c7055987ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.6)
2022-07-19 00:03:18 +0200 <qrpnxz> wait no, for this family it lets me. WTF
2022-07-19 00:03:23 +0200 <dlock> ill fetch up my Nat helper module, hang on
2022-07-19 00:05:20 +0200 <qrpnxz> oh, i hadn't removed undecidable from my extensions yet
2022-07-19 00:05:22 +0200 <qrpnxz> now it complains
2022-07-19 00:05:24 +0200 <qrpnxz> good
2022-07-19 00:06:14 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-07-19 00:06:33 +0200Morrow(~Morrow@192.114.91.213) (Read error: Connection reset by peer)
2022-07-19 00:06:39 +0200Morrow_(~Morrow@192.114.91.213)
2022-07-19 00:08:58 +0200 <dlock> https://paste.tomsmeding.com/n4tHDtDd
2022-07-19 00:09:06 +0200jakalx(~jakalx@base.jakalx.net)
2022-07-19 00:09:54 +0200 <dlock> hmm, thats probably not what you want, sorry i used to use [()] for Nat
2022-07-19 00:11:51 +0200 <dlock> yeah, this is why i always just write it, because i cant locate my old code at all!
2022-07-19 00:12:32 +0200dlock(~dlock@213.205.241.187) (Remote host closed the connection)
2022-07-19 00:13:16 +0200talismanick(~talismani@campus-036-222.ucdavis.edu)
2022-07-19 00:14:02 +0200marcusxavier(~marcusxav@2804:6660:ff12:ef70:41cb:ef19:1743:9231)
2022-07-19 00:15:27 +0200fserucas_(~fserucas@39.64.114.89.rev.vodafone.pt) (Ping timeout: 272 seconds)
2022-07-19 00:17:20 +0200 <qrpnxz> lol [()], why not i guess
2022-07-19 00:21:18 +0200 <hpc> and of course, () is a type alias for [Void]
2022-07-19 00:21:40 +0200 <monochrom> onoes
2022-07-19 00:25:07 +0200Tuplanolla(~Tuplanoll@91-159-69-97.elisa-laajakaista.fi) (Quit: Leaving.)
2022-07-19 00:26:50 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds)
2022-07-19 00:31:35 +0200acidjnk_new3(~acidjnk@p200300d6e7058641e86f8f8671f06cda.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-07-19 00:34:03 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-19 00:37:11 +0200marcusxavier(~marcusxav@2804:6660:ff12:ef70:41cb:ef19:1743:9231) (Quit: WeeChat 3.6)
2022-07-19 00:38:03 +0200talismanick(~talismani@campus-036-222.ucdavis.edu) (Ping timeout: 276 seconds)
2022-07-19 00:38:51 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-07-19 00:41:04 +0200 <Hecate> < hpc> and of course, () is a type alias for [Void] // extremely cursed, thank you very much
2022-07-19 00:44:09 +0200 <qrpnxz> lmao
2022-07-19 00:46:40 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 00:47:09 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 276 seconds)
2022-07-19 00:47:54 +0200merijn(~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl)
2022-07-19 00:48:53 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-19 00:49:57 +0200nehsou^(~nehsou@12.187.69.131)
2022-07-19 00:59:53 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 244 seconds)
2022-07-19 01:02:13 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-19 01:02:44 +0200talismanick(~talismani@2601:200:c100:3850::dd64)
2022-07-19 01:05:54 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2022-07-19 01:06:06 +0200andscape(~andscape@ti0185a400-0748.bb.online.no) (Ping timeout: 252 seconds)
2022-07-19 01:06:18 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-07-19 01:18:08 +0200Midjak(~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
2022-07-19 01:18:13 +0200yauhsien(~yauhsien@61-231-22-68.dynamic-ip.hinet.net)
2022-07-19 01:21:10 +0200merijn(~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-07-19 01:22:37 +0200yauhsien(~yauhsien@61-231-22-68.dynamic-ip.hinet.net) (Ping timeout: 244 seconds)
2022-07-19 01:24:57 +0200dextaa(~DV@user/dextaa) (Read error: Connection reset by peer)
2022-07-19 01:25:28 +0200 <talismanick> Do I need to rebuild everything if I switched from glibc to musl?
2022-07-19 01:26:10 +0200 <talismanick> I recovered all my Haskell stuff in ~ from backups, but with different libc
2022-07-19 01:26:28 +0200 <talismanick> (that includes GHC, HLS, cabal-install, etc)
2022-07-19 01:26:41 +0200 <monochrom> I think yes
2022-07-19 01:27:07 +0200dextaa(~DV@user/dextaa)
2022-07-19 01:28:07 +0200 <geekosaur> yes, libc structs and such will be different, some things that were macros will be functions and vice versa, etc.
2022-07-19 01:29:01 +0200 <geekosaur> anything statically linked will still work, but many things in glibc can't be statically linked properly (they'll still try to dlopen glibc at runtime, which will fail under musl)
2022-07-19 01:29:26 +0200 <talismanick> how can I force a rebuild from ghcup, then?
2022-07-19 01:29:47 +0200 <geekosaur> uninstall and treinstall, ghcup should get appropriate new bindists
2022-07-19 01:29:55 +0200 <geekosaur> *reinstall
2022-07-19 01:30:22 +0200 <geekosaur> or build them if there isn't one
2022-07-19 01:30:36 +0200 <geekosaur> ($SOMEONE help you if that's ghc though…)
2022-07-19 01:30:55 +0200 <monochrom> treinstall is reinstall for the 3rd time >:)
2022-07-19 01:32:05 +0200 <talismanick> Uh, yeah, it's building GHC...
2022-07-19 01:32:13 +0200 <talismanick> wait nvm
2022-07-19 01:32:19 +0200 <talismanick> idk what it was compiling, but it worked
2022-07-19 01:33:55 +0200PiDelport(uid25146@id-25146.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2022-07-19 01:34:00 +0200gurkenglas(~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) (Ping timeout: 260 seconds)
2022-07-19 01:34:21 +0200zeenk(~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f) (Quit: Konversation terminated!)
2022-07-19 01:34:49 +0200 <monochrom> The messages look like building something, that's all.
2022-07-19 01:35:45 +0200 <talismanick> note to self: write some kind of script to rebuild stuff instead of reusing binaries if sys params aren't the same
2022-07-19 01:39:07 +0200 <geekosaur> ghc install uses a makefile and a configure script, but what it builds is a runtime settings file that adapts it to your system
2022-07-19 01:40:11 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 244 seconds)
2022-07-19 01:41:18 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2022-07-19 01:41:35 +0200nehsou^(~nehsou@12.187.69.131) (Ping timeout: 272 seconds)
2022-07-19 01:43:48 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-19 01:45:00 +0200chomwitt(~chomwitt@2a02:587:dc00:5a00:576f:713d:f0b0:d7e1) (Ping timeout: 276 seconds)
2022-07-19 01:46:33 +0200jmorris(uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2022-07-19 01:48:19 +0200 <talismanick> geekosaur: When you uninstall, does it destroy a symlink? If you reinstall, does it check that it's already there and recreate it?
2022-07-19 01:48:56 +0200 <geekosaur> there's a symlink from the install location to ~/.ghcup/bin, yes. it's smart enough to destroy and recreate it
2022-07-19 01:48:56 +0200 <talismanick> i.e. keep the tarball, check the sha256 is the same as on the server, "oh, I installed from this already"
2022-07-19 01:49:30 +0200 <geekosaur> oh, that. not sure but it may still need to reinstall from the tarball, all it would save is the download
2022-07-19 01:49:38 +0200 <talismanick> So I can replace Haskell stuff in backups with a script to reinstall whatever the last recorded version were. Noice.
2022-07-19 01:49:49 +0200 <geekosaur> it still has to refigure local settings, and there's no caching it can do for that
2022-07-19 01:50:07 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-19 01:50:10 +0200 <talismanick> versions*
2022-07-19 01:50:19 +0200 <geekosaur> but the result is $(ghc --print-libdir)/settings
2022-07-19 01:50:56 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
2022-07-19 01:52:05 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 01:52:30 +0200AlexZenon(~alzenon@178.34.160.206) (Ping timeout: 240 seconds)
2022-07-19 01:53:10 +0200dcoutts(~duncan@host86-167-206-10.range86-167.btcentralplus.com) (Ping timeout: 240 seconds)
2022-07-19 01:54:45 +0200Alex_test(~al_test@178.34.160.206) (Ping timeout: 276 seconds)
2022-07-19 01:55:20 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 272 seconds)
2022-07-19 01:56:27 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net)
2022-07-19 01:58:32 +0200Alex_test(~al_test@178.34.160.206)
2022-07-19 01:58:45 +0200AlexZenon(~alzenon@178.34.160.206)
2022-07-19 01:59:29 +0200phma(~phma@2001:5b0:211f:d1f8:9471:1396:f73f:5401) (Read error: Connection reset by peer)
2022-07-19 02:00:04 +0200AlexZenon(~alzenon@178.34.160.206) (*.net *.split)
2022-07-19 02:00:04 +0200John_Ivan(~John_Ivan@user/john-ivan/x-1515935) (*.net *.split)
2022-07-19 02:00:04 +0200Pickchea(~private@user/pickchea) (*.net *.split)
2022-07-19 02:00:04 +0200NaturalNumber(~monadam@137.229.82.64) (*.net *.split)
2022-07-19 02:00:04 +0200dolio(~dolio@130.44.130.54) (*.net *.split)
2022-07-19 02:00:04 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (*.net *.split)
2022-07-19 02:00:05 +0200kmein(~weechat@user/kmein) (*.net *.split)
2022-07-19 02:00:05 +0200marquis_andras(~marquis_a@202-161-119-113.tpgi.com.au) (*.net *.split)
2022-07-19 02:00:05 +0200byorgey(~byorgey@155.138.238.211) (*.net *.split)
2022-07-19 02:00:05 +0200inversed(~inversed@05412f44.skybroadband.com) (*.net *.split)
2022-07-19 02:00:05 +0200gawen(~gawen@user/gawen) (*.net *.split)
2022-07-19 02:00:05 +0200sayola(~sayola@dslb-088-078-152-210.088.078.pools.vodafone-ip.de) (*.net *.split)
2022-07-19 02:00:05 +0200Benzi-Junior(~BenziJuni@88-149-67-162.du.xdsl.is) (*.net *.split)
2022-07-19 02:00:05 +0200Igloo(~ian@matrix.chaos.earth.li) (*.net *.split)
2022-07-19 02:00:05 +0200heath(~heath@user/heath) (*.net *.split)
2022-07-19 02:00:05 +0200cross(~cross@spitfire.i.gajendra.net) (*.net *.split)
2022-07-19 02:00:05 +0200jjhoo(~jahakala@user/jjhoo) (*.net *.split)
2022-07-19 02:00:05 +0200Goodbye_Vincent(cyvahl@freakshells.net) (*.net *.split)
2022-07-19 02:00:05 +0200FragByte(~christian@user/fragbyte) (*.net *.split)
2022-07-19 02:00:05 +0200fryguybob(~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) (*.net *.split)
2022-07-19 02:00:05 +0200aforemny(~aforemny@static.248.158.34.188.clients.your-server.de) (*.net *.split)
2022-07-19 02:00:05 +0200Square(~a@user/square) (*.net *.split)
2022-07-19 02:00:05 +0200kaol(~kaol@94-237-42-30.nl-ams1.upcloud.host) (*.net *.split)
2022-07-19 02:00:05 +0200Guest1698(~Guest1698@20.83.116.49) (*.net *.split)
2022-07-19 02:00:05 +0200Patternmaster(~georg@user/Patternmaster) (*.net *.split)
2022-07-19 02:00:05 +0200xstill_(xstill@fimu/xstill) (*.net *.split)
2022-07-19 02:00:05 +0200shane_(~shane@ana.rch.ist) (*.net *.split)
2022-07-19 02:00:05 +0200statusfailed(~statusfai@statusfailed.com) (*.net *.split)
2022-07-19 02:00:05 +0200djanatyn1(~djanatyn@vps-7f49a6b0.vps.ovh.ca) (*.net *.split)
2022-07-19 02:00:05 +0200tomsmeding(~tomsmedin@static.21.109.88.23.clients.your-server.de) (*.net *.split)
2022-07-19 02:00:05 +0200orcus(~orcus@user/brprice) (*.net *.split)
2022-07-19 02:00:05 +0200kawen(~quassel@static.208.191.216.95.clients.your-server.de) (*.net *.split)
2022-07-19 02:00:05 +0200niko(niko@libera/staff/niko) (*.net *.split)
2022-07-19 02:00:05 +0200infinity0(~infinity0@185.112.146.113) (*.net *.split)
2022-07-19 02:00:05 +0200sajith(~sajith@user/sajith) (*.net *.split)
2022-07-19 02:00:05 +0200tired(~tired@user/tired) (*.net *.split)
2022-07-19 02:00:06 +0200Hecate(~mariposa@user/hecate) (*.net *.split)
2022-07-19 02:00:06 +0200hltk(~hltk@hltk.fi) (*.net *.split)
2022-07-19 02:00:06 +0200Heffalump(~ganesh@urchin.earth.li) (*.net *.split)
2022-07-19 02:00:06 +0200Unode(~Unode@194.94.44.220) (*.net *.split)
2022-07-19 02:00:06 +0200eagleflo(~aku@163.172.137.34) (*.net *.split)
2022-07-19 02:00:06 +0200ouroboros(~ouroboros@user/ouroboros) (*.net *.split)
2022-07-19 02:00:17 +0200byorgey(~byorgey@155.138.238.211)
2022-07-19 02:00:19 +0200Patternmaster(~georg@li1192-118.members.linode.com)
2022-07-19 02:00:20 +0200Benzi-Junior(~BenziJuni@dsl-149-67-162.hive.is)
2022-07-19 02:00:20 +0200Unode(~Unode@194.94.44.220)
2022-07-19 02:00:22 +0200Heffalump(~ganesh@urchin.earth.li)
2022-07-19 02:00:22 +0200Pickchea(~private@185.31.55.18.dyn.kraftcom.at)
2022-07-19 02:00:23 +0200FragByte(~christian@p200300f4c702350000197deb46927975.dip0.t-ipconnect.de)
2022-07-19 02:00:23 +0200AlexZenon(~alzenon@178.34.160.206)
2022-07-19 02:00:26 +0200djanatyn1(~djanatyn@vps-7f49a6b0.vps.ovh.ca)
2022-07-19 02:00:28 +0200Goodbye_Vincent(cyvahl@freakshells.net)
2022-07-19 02:00:28 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-07-19 02:00:29 +0200NaturalNumber(~monadam@137.229.82.64)
2022-07-19 02:00:40 +0200cross(~cross@spitfire.i.gajendra.net)
2022-07-19 02:00:41 +0200Pickchea(~private@185.31.55.18.dyn.kraftcom.at) (Changing host)
2022-07-19 02:00:41 +0200Pickchea(~private@user/pickchea)
2022-07-19 02:00:41 +0200FragByte(~christian@p200300f4c702350000197deb46927975.dip0.t-ipconnect.de) (Changing host)
2022-07-19 02:00:41 +0200FragByte(~christian@user/fragbyte)
2022-07-19 02:00:44 +0200Guest1698(~Guest1698@20.83.116.49)
2022-07-19 02:00:47 +0200inversed(~inversed@05412f44.skybroadband.com)
2022-07-19 02:00:50 +0200dolio(~dolio@130.44.130.54)
2022-07-19 02:00:52 +0200Patternmaster(~georg@li1192-118.members.linode.com) (Changing host)
2022-07-19 02:00:52 +0200Patternmaster(~georg@user/Patternmaster)
2022-07-19 02:00:55 +0200aforemny(~aforemny@static.248.158.34.188.clients.your-server.de)
2022-07-19 02:01:54 +0200John_Ivan(~John_Ivan@user/john-ivan/x-1515935)
2022-07-19 02:02:12 +0200infinity0(~infinity0@185.112.146.113)
2022-07-19 02:02:14 +0200John_Ivan(~John_Ivan@user/john-ivan/x-1515935) (Remote host closed the connection)
2022-07-19 02:02:16 +0200tired(~tired@user/tired)
2022-07-19 02:02:26 +0200tomsmeding(~tomsmedin@2a01:4f8:c0c:5e5e::2)
2022-07-19 02:02:27 +0200Square(~a@user/square)
2022-07-19 02:02:33 +0200ouroboros(~ouroboros@user/ouroboros)
2022-07-19 02:02:44 +0200sajith(~sajith@user/sajith)
2022-07-19 02:02:45 +0200John_Ivan(~John_Ivan@user/john-ivan/x-1515935)
2022-07-19 02:02:47 +0200gawen(~gawen@user/gawen)
2022-07-19 02:02:53 +0200orcus(~orcus@user/brprice)
2022-07-19 02:02:57 +0200heath(~heath@user/heath)
2022-07-19 02:02:58 +0200xstill_(xstill@fimu/xstill)
2022-07-19 02:02:59 +0200kawen(~quassel@static.208.191.216.95.clients.your-server.de)
2022-07-19 02:03:11 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2022-07-19 02:03:16 +0200kmein(~weechat@user/kmein)
2022-07-19 02:04:41 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-07-19 02:04:57 +0200sayola(~sayola@dslb-088-078-152-210.088.078.pools.vodafone-ip.de)
2022-07-19 02:05:11 +0200kaol(~kaol@94-237-42-30.nl-ams1.upcloud.host)
2022-07-19 02:05:11 +0200Igloo(~ian@matrix.chaos.earth.li)
2022-07-19 02:05:13 +0200shane(~shane@ana.rch.ist)
2022-07-19 02:05:16 +0200statusfailed(~statusfai@statusfailed.com)
2022-07-19 02:05:16 +0200hltk(~hltk@hltk.fi)
2022-07-19 02:05:17 +0200Hecate(~mariposa@user/hecate)
2022-07-19 02:05:22 +0200jjhoo(jahakala@user/jjhoo)
2022-07-19 02:05:25 +0200fryguybob(~fryguybob@cpe-74-67-169-145.rochester.res.rr.com)
2022-07-19 02:05:32 +0200eagleflo(~aku@163.172.137.34)
2022-07-19 02:05:34 +0200marquis_andras(~marquis_a@202-161-119-113.tpgi.com.au)
2022-07-19 02:06:31 +0200phma(phma@2001:5b0:211b:a238:1bda:2a18:c8e3:5e16)
2022-07-19 02:07:53 +0200jpds1(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-07-19 02:08:23 +0200jpds1(~jpds@gateway/tor-sasl/jpds)
2022-07-19 02:09:30 +0200Morrow_(~Morrow@192.114.91.213) (Read error: Connection reset by peer)
2022-07-19 02:09:36 +0200Morrow(~Morrow@192.114.91.213)
2022-07-19 02:17:27 +0200merijn(~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl)
2022-07-19 02:17:39 +0200nate4(~nate@98.45.169.16)
2022-07-19 02:20:45 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 276 seconds)
2022-07-19 02:22:25 +0200nate4(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2022-07-19 02:27:29 +0200lemonsni-(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
2022-07-19 02:28:27 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Ping timeout: 272 seconds)
2022-07-19 02:30:25 +0200niko(niko@libera/staff/niko)
2022-07-19 02:33:17 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-19 02:33:40 +0200nehsou^(~nehsou@12.187.69.131)
2022-07-19 02:34:06 +0200gleostocha(~runic@104-182-236-205.lightspeed.sntcca.sbcglobal.net)
2022-07-19 02:44:10 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 240 seconds)
2022-07-19 02:46:42 +0200Haskelytic(~Haskelyti@118.179.211.17)
2022-07-19 02:47:54 +0200xff0x(~xff0x@2405:6580:b080:900:1300:28ff:6b85:b3ee) (Ping timeout: 272 seconds)
2022-07-19 02:52:20 +0200merijn(~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
2022-07-19 02:53:30 +0200nehsou^(~nehsou@12.187.69.131) (Ping timeout: 268 seconds)
2022-07-19 02:56:19 +0200pgass(~pg@190.247.245.154) (Ping timeout: 272 seconds)
2022-07-19 02:59:13 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-19 03:01:11 +0200NaturalNumber(~monadam@137.229.82.64) (Quit: Have a nice day)
2022-07-19 03:02:05 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
2022-07-19 03:02:06 +0200zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2022-07-19 03:04:07 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2022-07-19 03:08:52 +0200chomwitt(~chomwitt@2a02:587:dc00:5a00:598f:68ae:c905:7332)
2022-07-19 03:09:38 +0200NaturalNumber(~monadam@137.229.82.64)
2022-07-19 03:10:42 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 272 seconds)
2022-07-19 03:10:48 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-07-19 03:11:07 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2022-07-19 03:15:09 +0200zaquest(~notzaques@5.130.79.72)
2022-07-19 03:16:55 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-07-19 03:19:34 +0200gleostocha(~runic@104-182-236-205.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2022-07-19 03:29:33 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2022-07-19 03:34:21 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-19 03:34:22 +0200nightbreak[Away]nightbreak
2022-07-19 03:36:32 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 03:36:43 +0200winny(~weechat@user/winny) (Remote host closed the connection)
2022-07-19 03:37:14 +0200winny(~weechat@user/winny)
2022-07-19 03:38:28 +0200dextaa(~DV@user/dextaa) (Read error: Connection reset by peer)
2022-07-19 03:39:28 +0200 <Haskelytic> how do you typically model is-a relation between types like in trad OOP?
2022-07-19 03:40:02 +0200nehsou^(~nehsou@12.187.69.131)
2022-07-19 03:40:45 +0200dextaa(~DV@user/dextaa)
2022-07-19 03:40:50 +0200y04nn(~y04nn@2001:ac8:28:95::a17e) (Ping timeout: 240 seconds)
2022-07-19 03:42:19 +0200John_Ivan(~John_Ivan@user/john-ivan/x-1515935) (Read error: Connection reset by peer)
2022-07-19 03:42:39 +0200NaturalNumber(~monadam@137.229.82.64) (Quit: Have a nice day)
2022-07-19 03:43:13 +0200 <c_wraith> Haskelytic: same way as in OOP. ignore subclassing because it's broken, and use composition.
2022-07-19 03:43:39 +0200 <Haskelytic> XD  thought so
2022-07-19 03:45:00 +0200 <c_wraith> OOP-like ideas come up sometimes when you want values with arbitrarily different behaviors that all have the same nominal type. For that you usually end up doing a record-of-functions thing.
2022-07-19 03:47:59 +0200merijn(~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl)
2022-07-19 03:52:07 +0200natto17(~natto@140.238.225.67) (Quit: a.)
2022-07-19 03:52:13 +0200 <monochrom> I thought is-a is between a class/interface and an object, between a type and a value.
2022-07-19 03:52:59 +0200natto(~natto@140.238.225.67)
2022-07-19 03:54:35 +0200frost(~frost@user/frost)
2022-07-19 03:54:51 +0200 <c_wraith> is-a is also used to describe the subclassing relationship. a rectange is a shape, etc
2022-07-19 03:55:16 +0200 <c_wraith> Except of course all those easy examples break down really fast when you try to actually write code like that.
2022-07-19 03:55:29 +0200 <c_wraith> but that's what object-oriented modeling wants you to think about
2022-07-19 03:59:18 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds)
2022-07-19 04:00:54 +0200lys(sid194105@user/lys) ()
2022-07-19 04:02:40 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-07-19 04:04:07 +0200jakalx(~jakalx@base.jakalx.net)
2022-07-19 04:04:20 +0200lottaquestions(~nick@2607:fa49:503e:7100:9456:dbb2:33e5:f0a2)
2022-07-19 04:06:30 +0200nightbreaknightbreak[Away]
2022-07-19 04:07:31 +0200winny(~weechat@user/winny) (Ping timeout: 268 seconds)
2022-07-19 04:08:08 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds)
2022-07-19 04:08:33 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-07-19 04:09:35 +0200kino-shinkai(~kino-shin@user/kino-shinkai)
2022-07-19 04:09:41 +0200winny(~weechat@user/winny)
2022-07-19 04:11:38 +0200chomwitt(~chomwitt@2a02:587:dc00:5a00:598f:68ae:c905:7332) (Ping timeout: 240 seconds)
2022-07-19 04:12:38 +0200Morrow(~Morrow@192.114.91.213) (Read error: Connection reset by peer)
2022-07-19 04:12:43 +0200Morrow_(~Morrow@192.114.91.213)
2022-07-19 04:22:54 +0200merijn(~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
2022-07-19 04:22:56 +0200dextaa(~DV@user/dextaa) (Read error: Connection reset by peer)
2022-07-19 04:24:56 +0200chomwitt(~chomwitt@2a02:587:dc00:5a00:8a2c:4e72:ccb9:e678)
2022-07-19 04:25:12 +0200dextaa(~DV@user/dextaa)
2022-07-19 04:29:44 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au)
2022-07-19 04:32:18 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au) (Client Quit)
2022-07-19 04:32:33 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au)
2022-07-19 04:34:01 +0200nasosev(~nasosev@193-116-244-197.tpgi.com.au) (Client Quit)
2022-07-19 04:34:15 +0200naso(~nasosev@193-116-244-197.tpgi.com.au)
2022-07-19 04:36:30 +0200NaturalNumber(~monadam@137.229.82.64)
2022-07-19 04:40:37 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-19 04:42:52 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2022-07-19 04:48:24 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-07-19 04:49:53 +0200nehsou^(~nehsou@12.187.69.131) (Ping timeout: 255 seconds)
2022-07-19 04:51:14 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 255 seconds)
2022-07-19 04:53:13 +0200Me-me(~me-me@user/me-me) (Quit: Disconnecting on purpose.)
2022-07-19 04:53:28 +0200biberu\(~biberu@user/biberu)
2022-07-19 04:54:05 +0200Me-me(~me-me@tunnel690570-pt.tunnel.tserv12.mia1.ipv6.he.net)
2022-07-19 04:54:57 +0200Me-me(~me-me@tunnel690570-pt.tunnel.tserv12.mia1.ipv6.he.net) (Changing host)
2022-07-19 04:54:57 +0200Me-me(~me-me@user/me-me)
2022-07-19 04:56:50 +0200td_(~td@94.134.91.5) (Ping timeout: 240 seconds)
2022-07-19 04:57:24 +0200biberu(~biberu@user/biberu) (Ping timeout: 276 seconds)
2022-07-19 04:57:24 +0200biberu\biberu
2022-07-19 04:58:09 +0200nightbreak[Away]nightbreak
2022-07-19 04:58:54 +0200td_(~td@muedsl-82-207-238-145.citykom.de)
2022-07-19 05:00:26 +0200nehsou^(~nehsou@12.187.69.131)
2022-07-19 05:09:22 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 05:10:39 +0200Haskelytic(~Haskelyti@118.179.211.17) (Quit: Client closed)
2022-07-19 05:13:23 +0200brence(~brence@2a01:4b00:895f:3d00:ddcd:fb62:887c:2ea0)
2022-07-19 05:13:41 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-19 05:18:31 +0200merijn(~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl)
2022-07-19 05:23:02 +0200kino-shinkai(~kino-shin@user/kino-shinkai) (Quit: The Lounge - https://thelounge.chat)
2022-07-19 05:24:50 +0200kino-shinkai(~kino-shin@user/kino-shinkai)
2022-07-19 05:28:16 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 05:35:17 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
2022-07-19 05:36:34 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-19 05:42:53 +0200 <qrpnxz> okay, this is epic: https://hackage.haskell.org/package/diffarray
2022-07-19 05:42:57 +0200 <yin> c_wraith: how is subtyping broken?
2022-07-19 05:43:49 +0200 <Clinton[m]> How can I write a function with the following signature? I feel like I should be able to do this but I'm just tying myself in knots a bit:... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/18f826d2b7e8b77db9230eb5eb154ef41aa5…)
2022-07-19 05:45:18 +0200chomwitt(~chomwitt@2a02:587:dc00:5a00:8a2c:4e72:ccb9:e678) (Ping timeout: 240 seconds)
2022-07-19 05:46:14 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-07-19 05:46:15 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2022-07-19 05:46:15 +0200califax(~califax@user/califx) (Write error: Connection reset by peer)
2022-07-19 05:46:15 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-07-19 05:46:15 +0200jpds1(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-07-19 05:46:29 +0200nightbreaknightbreak[Away]
2022-07-19 05:46:30 +0200nightbreak[Away]nightbreak
2022-07-19 05:46:33 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-07-19 05:46:41 +0200jpds1(~jpds@gateway/tor-sasl/jpds)
2022-07-19 05:47:00 +0200nightbreaknightbreak[Away]
2022-07-19 05:47:19 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-07-19 05:47:33 +0200califax(~califax@user/califx)
2022-07-19 05:49:12 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-07-19 05:50:02 +0200 <qrpnxz> Clinton[m]: g = getOp . contramap (\(p :: Proxy (Maybe p)) -> Proxy :: p) . Op . fmap Just
2022-07-19 05:50:27 +0200 <qrpnxz> needs ScopedTypeVariables
2022-07-19 05:50:39 +0200 <jackdk> `g f x =Just $ f Proxy`?
2022-07-19 05:50:55 +0200 <qrpnxz> bye bye x?
2022-07-19 05:51:20 +0200 <jackdk> returning the Maybe seems dubious
2022-07-19 05:51:34 +0200 <qrpnxz> oh lol yeah i guess you can do that
2022-07-19 05:52:26 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 255 seconds)
2022-07-19 05:52:36 +0200 <jackdk> `g' :: (Proxy a -> s) -> Proxy (Maybe a) -> s`; `g' f x = f Proxy` the fact that there's a `Maybe` in the second proxy adds no value-level information so you'll always be able to return an `s`
2022-07-19 05:52:38 +0200merijn(~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-07-19 05:54:36 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-19 05:56:08 +0200brence(~brence@2a01:4b00:895f:3d00:ddcd:fb62:887c:2ea0) (Ping timeout: 252 seconds)
2022-07-19 05:58:56 +0200nightbreak[Away]nightbreak
2022-07-19 06:05:56 +0200merijn(~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl)
2022-07-19 06:08:32 +0200chomwitt(~chomwitt@2a02:587:dc00:5a00:e3c4:775f:d866:7dfa)
2022-07-19 06:10:38 +0200merijn(~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-07-19 06:11:00 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-07-19 06:11:41 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-07-19 06:16:06 +0200Morrow_(~Morrow@192.114.91.213) (Read error: Connection reset by peer)
2022-07-19 06:16:11 +0200Morrow(~Morrow@192.114.91.213)
2022-07-19 06:17:35 +0200NaturalNumber(~monadam@137.229.82.64) (Remote host closed the connection)
2022-07-19 06:18:05 +0200Morrow(~Morrow@192.114.91.213) (Read error: Connection reset by peer)
2022-07-19 06:18:17 +0200Morrow(~Morrow@192.114.91.213)
2022-07-19 06:19:08 +0200nate4(~nate@98.45.169.16)
2022-07-19 06:20:23 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-07-19 06:20:49 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-07-19 06:20:54 +0200Morrow_(~Morrow@192.114.91.213)
2022-07-19 06:21:07 +0200Morrow(~Morrow@192.114.91.213) (Read error: Connection reset by peer)
2022-07-19 06:21:32 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-19 06:21:49 +0200naso(~nasosev@193-116-244-197.tpgi.com.au) ()
2022-07-19 06:24:20 +0200nate4(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-07-19 06:27:20 +0200 <Clinton[m]> Thank you, but I think I'm stuck on something again:... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/688906a3c5b59f65156a8b18d4a70bdf3747…)
2022-07-19 06:28:02 +0200Morrow_(~Morrow@192.114.91.213) (Ping timeout: 268 seconds)
2022-07-19 06:31:34 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-19 06:36:12 +0200 <Clinton[m]> Can I somehow split the instance? One instance for `(s :: Just Symbol)` and the other for `(s :: Nothing)`? This kind stuff I is twisting my mind a bit.
2022-07-19 06:40:21 +0200michalz(~michalz@185.246.204.77)
2022-07-19 06:43:38 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 06:43:41 +0200 <qrpnxz> Clinton[m]: i would write a KnownMaybeSymbol class and define instance for Maybe Symbol and Nothing to extract the value
2022-07-19 06:45:26 +0200 <Clinton[m]> Ah good idea. I just found out spliting the instance works fine also. Like:... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/b635f05045e5e0e29703d04c807550ad2d0c…)
2022-07-19 06:46:35 +0200 <qrpnxz> ah yeah that'll do
2022-07-19 07:05:52 +0200 <qrpnxz> anyone have intuition/experience with traversals on cyclic data? I'm guessing it probably is not a Lawful traversal, but I'm wondering how a derived instance would behave.
2022-07-19 07:06:57 +0200merijn(~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl)
2022-07-19 07:07:09 +0200yauhsien(~yauhsien@61-231-22-68.dynamic-ip.hinet.net)
2022-07-19 07:08:26 +0200redmp(~redmp@mobile-166-137-179-070.mycingular.net)
2022-07-19 07:10:00 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
2022-07-19 07:12:08 +0200 <qrpnxz> i write the instance just the same and works, since it would be lawful if it wasn't cyclic, also when it is cyclic? I never heard of a traversal law of "except when cyclic" lol
2022-07-19 07:12:13 +0200zxx7529(~Thunderbi@user/zxx7529)
2022-07-19 07:13:40 +0200yauhsien(~yauhsien@61-231-22-68.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2022-07-19 07:14:18 +0200mbuf(~Shakthi@122.165.55.71)
2022-07-19 07:25:30 +0200_ht(~quassel@231-169-21-31.ftth.glasoperator.nl)
2022-07-19 07:26:07 +0200vglfr(~vglfr@coupling.penchant.volia.net) (Ping timeout: 272 seconds)
2022-07-19 07:29:22 +0200nightbreaknightbreak[Away]
2022-07-19 07:29:56 +0200 <qrpnxz> ok so i did a test and i can feed a cyclic into a zipper, but if i modify the focus, that modification doesn't extend into the cycles. That makes sense since that would require actually mutation, but what we see is just a brand new data now pointing to the old data
2022-07-19 07:32:27 +0200mvk(~mvk@2607:fea8:5ce3:8500::909a) (Ping timeout: 272 seconds)
2022-07-19 07:35:30 +0200foul_owl(~kerry@23.82.194.109) (Ping timeout: 240 seconds)
2022-07-19 07:38:33 +0200NaturalNumber(~monadam@137.229.82.64)
2022-07-19 07:40:05 +0200foul_owl(~kerry@174-21-132-202.tukw.qwest.net)
2022-07-19 07:40:18 +0200merijn(~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-07-19 07:41:19 +0200 <qrpnxz> now, if i made the cyclic references themselves the targets of the traversal i think i'll be getting somewhere... :)
2022-07-19 07:42:31 +0200kino-shinkai(~kino-shin@user/kino-shinkai) (Remote host closed the connection)
2022-07-19 07:44:34 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2022-07-19 07:44:53 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-07-19 07:56:40 +0200kino-shinkai(~kino-shin@user/kino-shinkai)
2022-07-19 07:57:53 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2022-07-19 07:59:45 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-07-19 08:00:45 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-07-19 08:02:12 +0200winny(~weechat@user/winny) (Remote host closed the connection)
2022-07-19 08:02:38 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection)
2022-07-19 08:02:40 +0200winny(~weechat@user/winny)
2022-07-19 08:04:21 +0200kino-shinkai(~kino-shin@user/kino-shinkai) (Remote host closed the connection)
2022-07-19 08:04:55 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-07-19 08:10:49 +0200acidjnk_new3(~acidjnk@p200300d6e70586378c7d9ef9e9e8454b.dip0.t-ipconnect.de)
2022-07-19 08:12:03 +0200bliminse(~bliminse@user/bliminse) (Quit: leaving)
2022-07-19 08:12:51 +0200gmg(~user@user/gehmehgeh)
2022-07-19 08:13:39 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 08:15:10 +0200redmp(~redmp@mobile-166-137-179-070.mycingular.net) (Quit: leaving)
2022-07-19 08:17:05 +0200NaturalNumber(~monadam@137.229.82.64) (Remote host closed the connection)
2022-07-19 08:19:58 +0200kino-shinkai(~kino-shin@user/kino-shinkai)
2022-07-19 08:22:23 +0200NaturalNumber(~monadam@137.229.82.64)
2022-07-19 08:30:53 +0200mmhat(~mmh@p200300f1c7055987ee086bfffe095315.dip0.t-ipconnect.de)
2022-07-19 08:31:18 +0200foul_owl(~kerry@174-21-132-202.tukw.qwest.net) (Ping timeout: 240 seconds)
2022-07-19 08:35:49 +0200alternateved(~user@staticline-31-183-144-54.toya.net.pl)
2022-07-19 08:37:15 +0200merijn(~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl)
2022-07-19 08:38:02 +0200fserucas_(~fserucas@39.64.114.89.rev.vodafone.pt)
2022-07-19 08:40:33 +0200dtman34(~dtman34@2601:446:4400:2ad9:50de:fed7:560f:d711) (Quit: ZNC 1.7.2+deb3 - https://znc.in)
2022-07-19 08:42:14 +0200sus(zero@user/zeromomentum) (Quit: the lounge - https://webirc.envs.net)
2022-07-19 08:42:47 +0200dtman34(~dtman34@2601:446:4400:2ad9:d18c:aab6:fc87:3dca)
2022-07-19 08:44:35 +0200sus(zero@user/zeromomentum)
2022-07-19 08:45:22 +0200foul_owl(~kerry@23.82.194.107)
2022-07-19 08:47:37 +0200zxx7529(~Thunderbi@user/zxx7529) (Quit: zxx7529)
2022-07-19 08:48:19 +0200dtman34_(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net)
2022-07-19 08:48:54 +0200dtman34(~dtman34@2601:446:4400:2ad9:d18c:aab6:fc87:3dca) (Ping timeout: 272 seconds)
2022-07-19 08:51:03 +0200ccntrq(~Thunderbi@2a02:3100:70f0:db00:7397:6a5e:7236:7fcd)
2022-07-19 08:51:23 +0200ccntrq(~Thunderbi@2a02:3100:70f0:db00:7397:6a5e:7236:7fcd) (Remote host closed the connection)
2022-07-19 08:51:24 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 276 seconds)
2022-07-19 08:52:23 +0200MajorBiscuit(~MajorBisc@86-88-79-148.fixed.kpn.net)
2022-07-19 08:52:40 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-19 08:54:53 +0200ccntrq(~Thunderbi@2a02:3100:70f0:db00:d79a:be3f:a1fd:ac0d)
2022-07-19 08:56:37 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-07-19 08:58:05 +0200Major_Biscuit(~MajorBisc@c-001-019-019.client.tudelft.eduvpn.nl)
2022-07-19 09:00:21 +0200MajorBiscuit(~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 268 seconds)
2022-07-19 09:01:20 +0200cfricke(~cfricke@user/cfricke)
2022-07-19 09:02:25 +0200 <qrpnxz> if i use references, carry around the environment, and rebuild that environment on modification, i can zip around while making globally visible changes it seems
2022-07-19 09:02:40 +0200 <qrpnxz> no idea if this is a valid traversal but it works with zipper so... lol
2022-07-19 09:03:27 +0200 <qrpnxz> "value in context" perhaps i should be using comonad? Is this finally the moment?!
2022-07-19 09:06:18 +0200NaturalNumber(~monadam@137.229.82.64) (Quit: Have a nice day)
2022-07-19 09:11:19 +0200toluene(~toluene@user/toulene) (Quit: Ping timeout (120 seconds))
2022-07-19 09:12:12 +0200merijn(~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl) (Ping timeout: 276 seconds)
2022-07-19 09:14:17 +0200toluene(~toluene@user/toulene)
2022-07-19 09:16:54 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-19 09:25:24 +0200Neuromancer(~Neuromanc@user/neuromancer)
2022-07-19 09:25:30 +0200merijn(~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl)
2022-07-19 09:27:07 +0200zeenk(~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f)
2022-07-19 09:28:04 +0200jakalx(~jakalx@base.jakalx.net) ()
2022-07-19 09:30:14 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 09:30:43 +0200jakalx(~jakalx@base.jakalx.net)
2022-07-19 09:32:56 +0200nehsou^(~nehsou@12.187.69.131) (Ping timeout: 255 seconds)
2022-07-19 09:34:00 +0200maroloccio(~marolocci@37.100.36.239)
2022-07-19 09:34:41 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-07-19 09:36:28 +0200dcoutts(~duncan@host86-167-206-10.range86-167.btcentralplus.com)
2022-07-19 09:38:21 +0200 <Axman6> qrpnxz: can you detect that you have cycles?
2022-07-19 09:41:54 +0200 <qrpnxz> hypothetically, yes. I could tag each node with a unique id then do some pointer chasing
2022-07-19 09:43:22 +0200xerox__xerox
2022-07-19 09:47:07 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 09:51:52 +0200coot(~coot@213.134.190.95)
2022-07-19 09:53:12 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-19 09:54:33 +0200y04nn(~y04nn@2001:ac8:28:95::a17e)
2022-07-19 09:56:48 +0200naso(~nasosev@193-116-244-197.tpgi.com.au)
2022-07-19 09:56:51 +0200infinity0(~infinity0@185.112.146.113) (Ping timeout: 272 seconds)
2022-07-19 09:58:25 +0200naso(~nasosev@193-116-244-197.tpgi.com.au) (Client Quit)
2022-07-19 09:58:42 +0200naso(~nasosev@193-116-244-197.tpgi.com.au)
2022-07-19 09:59:17 +0200chele(~chele@user/chele)
2022-07-19 09:59:36 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net)
2022-07-19 09:59:39 +0200naso(~nasosev@193-116-244-197.tpgi.com.au) (Client Quit)
2022-07-19 10:01:26 +0200naso(~naso@193-116-244-197.tpgi.com.au)
2022-07-19 10:05:27 +0200kazaf(~kazaf@84.252.147.246)
2022-07-19 10:07:59 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-07-19 10:08:58 +0200shriekingnoise(~shrieking@201.212.175.181) (Quit: Quit)
2022-07-19 10:14:28 +0200gurkenglas(~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de)
2022-07-19 10:14:50 +0200kuribas(~user@silversquare.silversquare.eu)
2022-07-19 10:15:42 +0200bliminse(~bliminse@user/bliminse)
2022-07-19 10:16:56 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-19 10:17:27 +0200 <kuribas> I finished my Hkd record of lenses implementation, but it's pretty convoluted.
2022-07-19 10:18:13 +0200 <kuribas> The problem is that I need a (forall g :: (k -> *) . Rep (t g)), but that's not possible because Rep is a type family, and I cannot partially apply it.
2022-07-19 10:18:42 +0200 <kuribas> So instead I box it in an existential, then unsafely extract it.
2022-07-19 10:18:53 +0200 <kuribas> I don't think that's very efficient.
2022-07-19 10:19:55 +0200 <kuribas> I suppose a template haskell implementation will be more straightforward.
2022-07-19 10:19:57 +0200 <kuribas> And efficient.
2022-07-19 10:20:10 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-07-19 10:20:40 +0200nate4(~nate@98.45.169.16)
2022-07-19 10:20:58 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds)
2022-07-19 10:22:34 +0200 <[exa]> kuribas: how would you partially apply Rep there? (it has only 1 param right?)
2022-07-19 10:23:33 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 10:23:56 +0200 <kuribas> [exa]: but the `g` is unknown.
2022-07-19 10:24:08 +0200 <[exa]> ah you know `t` but not `g`?
2022-07-19 10:24:14 +0200 <kuribas> yeah
2022-07-19 10:24:27 +0200 <[exa]> can you make some wrap SplitRep t g where you could deduce something from `t` ?
2022-07-19 10:25:12 +0200 <kuribas> I have "newtype FLens s a = FLens { getFLens :: forall g . Lens' (g a) (s g)}"
2022-07-19 10:25:18 +0200nate4(~nate@98.45.169.16) (Ping timeout: 240 seconds)
2022-07-19 10:25:24 +0200 <kuribas> Then a (t (Flens t))
2022-07-19 10:25:33 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f) (Remote host closed the connection)
2022-07-19 10:26:08 +0200talismanick(~talismani@2601:200:c100:3850::dd64) (Ping timeout: 268 seconds)
2022-07-19 10:26:38 +0200 <kuribas> The g cannot be deduced, because it works for any g.
2022-07-19 10:27:40 +0200 <[exa]> ah I see
2022-07-19 10:27:45 +0200 <[exa]> ,_,
2022-07-19 10:27:45 +0200 <tomsmeding> % :k (forall g. GHC.Generics.Rep (Maybe g)) -- kuribas
2022-07-19 10:27:46 +0200 <yahb2> (forall g. GHC.Generics.Rep (Maybe g)) -- kuribas :: * -> *
2022-07-19 10:27:57 +0200 <tomsmeding> Not sure what about this doesn't work
2022-07-19 10:28:14 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-07-19 10:28:16 +0200Tuplanolla(~Tuplanoll@91-159-69-97.elisa-laajakaista.fi)
2022-07-19 10:29:26 +0200 <tomsmeding> Or you mean that Rep doesn't simplify for unknown g because its expansion depends on g?
2022-07-19 10:29:35 +0200 <kuribas> yes
2022-07-19 10:29:44 +0200Kaiepi(~Kaiepi@156.34.47.253) (Read error: Connection reset by peer)
2022-07-19 10:30:10 +0200 <tomsmeding> Type families that don't simplify aren't necessarily a problem in and of themselves, right?
2022-07-19 10:30:26 +0200 <tomsmeding> As long as eventually, at a usage site, it becomes monomorphic
2022-07-19 10:30:44 +0200 <kuribas> tomsmeding: not in my type signature.
2022-07-19 10:31:02 +0200 <kuribas> (t (Flens t)) is polymorphic at the usage site.
2022-07-19 10:31:23 +0200 <kuribas> tomsmeding: but I could make a version that would monomorphise.
2022-07-19 10:31:27 +0200toluene(~toluene@user/toulene) (Quit: Ping timeout (120 seconds))
2022-07-19 10:32:11 +0200 <tomsmeding> If you need to inspect the output of Rep somehow, e.g. because you want to put constraints on it, then I see why it might not work
2022-07-19 10:32:13 +0200 <kuribas> tomsmeding: but then wouldn't that create a new lens for each `g`?
2022-07-19 10:32:32 +0200 <tomsmeding> I mean, a polymorphic value _is_ a function from a type to a value
2022-07-19 10:32:38 +0200 <kuribas> The problem is that `g` is here not known at runtime.
2022-07-19 10:32:56 +0200toluene(~toluene@user/toulene)
2022-07-19 10:32:58 +0200 <kuribas> so the `Rep (t g)` isn't known either, and the typeclasses don't resolve.
2022-07-19 10:33:08 +0200 <tomsmeding> Right, typeclasses
2022-07-19 10:33:14 +0200 <tomsmeding> That's where it goes wrong
2022-07-19 10:33:21 +0200 <tomsmeding> You're not partially applying anything
2022-07-19 10:33:35 +0200 <tomsmeding> The issue is indeed that type classes need to get resolved statically
2022-07-19 10:33:51 +0200 <tomsmeding> Or, s/is indeed/could indeed well be/
2022-07-19 10:34:14 +0200 <kuribas> tomsmeding: I am partly apply FLens
2022-07-19 10:34:45 +0200 <tomsmeding> Right
2022-07-19 10:34:56 +0200 <tomsmeding> But you can partially apply newtypes, just not type families :)
2022-07-19 10:35:01 +0200 <tomsmeding> But I see the issue now
2022-07-19 10:35:09 +0200 <kuribas> which needs to go through the Generics.
2022-07-19 10:35:48 +0200vglfr(~vglfr@coupling.penchant.volia.net)
2022-07-19 10:36:26 +0200 <tomsmeding> The source of my questioning was that sometimes, knowing that this thing is the representation of this other thing is sufficient to make everything typecheck, even if "this other thing" is completely unknown
2022-07-19 10:36:42 +0200 <tomsmeding> But your situation is not one of those "sometimes" :)
2022-07-19 10:37:28 +0200 <kuribas> tomsmeding: you're right that i could remove the `forall g`, and make a set of lenses for a specific `g`.
2022-07-19 10:38:02 +0200 <kuribas> I just thought it would be inefficient, because it needs to create a monomorphic version for each `g`.
2022-07-19 10:38:14 +0200 <kuribas> But then maybe with inlining etc that's fine.
2022-07-19 10:38:17 +0200 <tomsmeding> It would always anyway, right?
2022-07-19 10:38:35 +0200 <kuribas> yeah, maybe that's my mistake.
2022-07-19 10:38:38 +0200 <tomsmeding> Because in core, a polymorphic value is a function from a type to the corresponding monomorphic value
2022-07-19 10:38:58 +0200 <kuribas> I don't know how ghc handles polymoprhic funtions at runtime.
2022-07-19 10:38:59 +0200 <tomsmeding> This is why MonomorphismRestriction exists
2022-07-19 10:39:07 +0200 <kuribas> maybe it has a generic representation of values?
2022-07-19 10:39:13 +0200 <kuribas> like a void pointer.
2022-07-19 10:39:32 +0200 <tomsmeding> Because if you had `let x = 10 in x + x` where x :: Num a => a, then x might be evaluated twice there
2022-07-19 10:40:02 +0200 <kuribas> right
2022-07-19 10:40:23 +0200 <tomsmeding> Now in that case it's really a function that takes a typeclass dictionary, and I'm not sure it can happen in the absence of constraints
2022-07-19 10:40:50 +0200 <tomsmeding> Yeah I believe that "void pointer" is the whole point of lifted values
2022-07-19 10:41:05 +0200 <tomsmeding> They have a uniform representation on the heap
2022-07-19 10:41:18 +0200 <tomsmeding> So I'm probably wrong, and this is only an issue if there are typeclass dicts involved
2022-07-19 10:41:26 +0200 <tomsmeding> Because that => is really a function
2022-07-19 10:42:30 +0200Patternmaster(~georg@user/Patternmaster) (Ping timeout: 240 seconds)
2022-07-19 10:42:56 +0200 <kuribas> right, so the best solution now is to remove the forall g, and make lenses specific for a `g`.
2022-07-19 10:43:11 +0200kino-shinkai(~kino-shin@user/kino-shinkai) (Quit: The Lounge - https://thelounge.chat)
2022-07-19 10:43:30 +0200Patternmaster(~georg@user/Patternmaster)
2022-07-19 10:43:32 +0200 <kuribas> then there is no need for a generic representation.
2022-07-19 10:44:01 +0200kino-shinkai(~kino-shin@user/kino-shinkai)
2022-07-19 10:44:13 +0200 <tomsmeding> This uniform lifted representation is also why this is not allowed https://play-haskell.tomsmeding.com/play/paste/3oecS2Tt/1
2022-07-19 10:44:53 +0200 <kuribas> yes, and why I needed to wrap in an existential.
2022-07-19 10:45:18 +0200 <tomsmeding> Mehs all around :p
2022-07-19 10:45:43 +0200 <kuribas> funny how types often simplify greatly if you take a different approach.
2022-07-19 10:46:06 +0200 <kuribas> I think that's why lispers don't like types, you cannot just implement any crazy idea :)
2022-07-19 10:46:34 +0200arahael1(~arahael@60-240-61-30.tpgi.com.au)
2022-07-19 10:46:42 +0200 <kuribas> But I find that the types guide you towards a solution that is more consistent, often also saner.
2022-07-19 10:47:26 +0200 <tomsmeding> As people like monochrom like to say: they require you to actually think about what you're doing, to an extent
2022-07-19 10:47:58 +0200arahael(~arahael@118.211.185.62) (Ping timeout: 272 seconds)
2022-07-19 10:48:03 +0200arahael1arahael
2022-07-19 10:48:32 +0200 <kuribas> think about the model
2022-07-19 10:49:57 +0200 <kuribas> I often see in lisp code that shows `how` to do things, but not `what` thing are, how they compose, etc...
2022-07-19 10:50:36 +0200 <kuribas> those are described by the types.
2022-07-19 10:51:13 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-19 10:51:21 +0200kino-shinkai(~kino-shin@user/kino-shinkai) (Ping timeout: 268 seconds)
2022-07-19 10:51:26 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds)
2022-07-19 10:55:40 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
2022-07-19 10:58:24 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 11:00:08 +0200luke-clifton[m](~luke-clif@2001:470:69fc:105::2:3122) (Quit: You have been kicked for being idle)
2022-07-19 11:00:33 +0200thewaves(~thewaves@2001:470:69fc:105::2:2eef) (Quit: You have been kicked for being idle)
2022-07-19 11:00:40 +0200Yehoshua(~yehoshua@2001:470:69fc:105::1:593f) (Quit: You have been kicked for being idle)
2022-07-19 11:00:45 +0200reza[m](~rezaphone@2001:470:69fc:105::3eda) (Quit: You have been kicked for being idle)
2022-07-19 11:00:47 +0200boxscape(~boxscape@user/boxscape) (Quit: You have been kicked for being idle)
2022-07-19 11:01:40 +0200 <kuribas> Usually being "stuck" by types is enlightening.
2022-07-19 11:01:54 +0200reza[m](~rezaphone@2001:470:69fc:105::3eda)
2022-07-19 11:01:54 +0200Yehoshua(~yehoshua@2001:470:69fc:105::1:593f)
2022-07-19 11:01:54 +0200 <kuribas> Because it shows a new path for development.
2022-07-19 11:01:54 +0200thewaves(~thewaves@2001:470:69fc:105::2:2eef)
2022-07-19 11:02:08 +0200boxscape(~boxscape@user/boxscape)
2022-07-19 11:02:37 +0200 <tomsmeding> Lispers will say that's stockholm syndrome :)
2022-07-19 11:03:05 +0200 <kuribas> yeah, and focussing on a language feature instead of the business logic.
2022-07-19 11:03:37 +0200thewaves(~thewaves@2001:470:69fc:105::2:2eef) ()
2022-07-19 11:04:01 +0200Yehoshua(~yehoshua@2001:470:69fc:105::1:593f) ()
2022-07-19 11:04:13 +0200reza[m](~rezaphone@2001:470:69fc:105::3eda) ()
2022-07-19 11:04:20 +0200boxscape(~boxscape@user/boxscape) ()
2022-07-19 11:05:18 +0200ccntrq(~Thunderbi@2a02:3100:70f0:db00:d79a:be3f:a1fd:ac0d) (Quit: ccntrq)
2022-07-19 11:05:34 +0200ccntrq(~Thunderbi@dynamic-078-050-043-144.78.50.pool.telefonica.de)
2022-07-19 11:06:10 +0200 <kuribas> But how I see it is that you gain insight in the business logic and the relations.
2022-07-19 11:06:50 +0200y04nn(~y04nn@2001:ac8:28:95::a17e) (Ping timeout: 260 seconds)
2022-07-19 11:07:07 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2022-07-19 11:08:25 +0200dschrempf(~dominik@2a01-036d-0118-4212-c433-bd85-0bb7-3c00.pool6.digikabel.hu)
2022-07-19 11:15:27 +0200ccntrq1(~Thunderbi@2a02:3100:70f0:db00:df27:9986:c8dc:f583)
2022-07-19 11:16:08 +0200Pickchea(~private@user/pickchea)
2022-07-19 11:17:52 +0200ccntrq(~Thunderbi@dynamic-078-050-043-144.78.50.pool.telefonica.de) (Ping timeout: 268 seconds)
2022-07-19 11:17:52 +0200ccntrq1ccntrq
2022-07-19 11:18:47 +0200causal(~user@50.35.83.177)
2022-07-19 11:20:16 +0200motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 272 seconds)
2022-07-19 11:25:40 +0200kino-shinkai(~kino-shin@user/kino-shinkai)
2022-07-19 11:25:56 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
2022-07-19 11:27:24 +0200mmhat(~mmh@p200300f1c7055987ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
2022-07-19 11:28:32 +0200__monty__(~toonn@user/toonn)
2022-07-19 11:31:02 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f) (Ping timeout: 272 seconds)
2022-07-19 11:31:40 +0200jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 272 seconds)
2022-07-19 11:33:06 +0200motherfsck(~motherfsc@user/motherfsck)
2022-07-19 11:33:38 +0200dschrempf(~dominik@2a01-036d-0118-4212-c433-bd85-0bb7-3c00.pool6.digikabel.hu) (Ping timeout: 240 seconds)
2022-07-19 11:37:01 +0200y04nn(~y04nn@2001:ac8:28:95::a17e)
2022-07-19 11:37:26 +0200cheater(~Username@user/cheater) (Ping timeout: 244 seconds)
2022-07-19 11:40:36 +0200mmhat(~mmh@p200300f1c70559dfee086bfffe095315.dip0.t-ipconnect.de)
2022-07-19 11:42:57 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-19 11:43:35 +0200hnOsmium0001(uid453710@user/hnOsmium0001) (Quit: Connection closed for inactivity)
2022-07-19 11:44:18 +0200mc47(~mc47@xmonad/TheMC47)
2022-07-19 11:44:28 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 268 seconds)
2022-07-19 11:46:11 +0200 <romes[m]> is there a reason why deriving (Eq1, Ord1) isn’t available?
2022-07-19 11:46:50 +0200 <merijn> Why would they be?
2022-07-19 11:47:28 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
2022-07-19 11:52:18 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-07-19 11:59:24 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-07-19 12:02:48 +0200 <jackdk> https://hackage.haskell.org/package/deriving-compat-0.6.1/docs/Data-Eq-Deriving-Internal.html#v:de…
2022-07-19 12:03:02 +0200 <jackdk> https://hackage.haskell.org/package/deriving-compat-0.6.1/docs/Data-Ord-Deriving-Internal.html#v:d…
2022-07-19 12:05:10 +0200cheater(~Username@user/cheater)
2022-07-19 12:05:58 +0200yauhsien(~yauhsien@61-231-22-68.dynamic-ip.hinet.net)
2022-07-19 12:06:22 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-19 12:07:16 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com)
2022-07-19 12:10:58 +0200yauhsien(~yauhsien@61-231-22-68.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2022-07-19 12:17:27 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 272 seconds)
2022-07-19 12:18:32 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 272 seconds)
2022-07-19 12:18:38 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Ping timeout: 240 seconds)
2022-07-19 12:18:47 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2022-07-19 12:19:08 +0200dschrempf(~dominik@2a01-036d-0118-4212-d780-b5a7-1f7c-1a85.pool6.digikabel.hu)
2022-07-19 12:19:21 +0200coot(~coot@213.134.190.95)
2022-07-19 12:19:36 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 12:20:10 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-07-19 12:20:19 +0200vglfr(~vglfr@coupling.penchant.volia.net) (Ping timeout: 244 seconds)
2022-07-19 12:20:48 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
2022-07-19 12:21:42 +0200Pickchea(~private@user/pickchea) (Ping timeout: 272 seconds)
2022-07-19 12:24:58 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f) (Ping timeout: 240 seconds)
2022-07-19 12:30:43 +0200Midjak(~Midjak@82.66.147.146)
2022-07-19 12:32:30 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 240 seconds)
2022-07-19 12:33:19 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-19 12:33:48 +0200califax(~califax@user/califx) (Remote host closed the connection)
2022-07-19 12:34:15 +0200califax(~califax@user/califx)
2022-07-19 12:36:06 +0200y04nn(~y04nn@2001:ac8:28:95::a17e) (Ping timeout: 264 seconds)
2022-07-19 12:36:15 +0200CiaoSen(~Jura@p200300c9570ffb002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-07-19 12:38:10 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 272 seconds)
2022-07-19 12:41:31 +0200hueso(~root@user/hueso) (Ping timeout: 272 seconds)
2022-07-19 12:41:55 +0200cyphase_eviltwin(~cyphase@user/cyphase) (Ping timeout: 260 seconds)
2022-07-19 12:43:12 +0200cyphase_eviltwin(~cyphase@user/cyphase)
2022-07-19 12:44:30 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
2022-07-19 12:46:07 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-19 12:46:56 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-07-19 12:47:58 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 240 seconds)
2022-07-19 12:48:13 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2022-07-19 12:53:45 +0200Kaiepi(~Kaiepi@156.34.47.253)
2022-07-19 12:54:49 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
2022-07-19 12:56:27 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-19 12:57:38 +0200 <romes[m]> jackdk: indeed, i’m using that at the moment, but was wondering why GHC doesn’t support it like Eq and Ord
2022-07-19 12:59:15 +0200CiaoSen(~Jura@p200300c9570ffb002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2022-07-19 12:59:37 +0200 <merijn> Eq and Ord a trivial to define mechanically, not really sure that's true for Eq1 and Ord1
2022-07-19 13:01:10 +0200Pickchea(~private@user/pickchea)
2022-07-19 13:10:46 +0200notzmv(~zmv@user/notzmv)
2022-07-19 13:10:48 +0200hellwolf(~hellwolf@7-41-50-84.sta.estpak.ee)
2022-07-19 13:12:31 +0200 <jackdk> Eq and Ord were in the report, I think Eq1 etc were invented back when people wanted to keep closer to Haskell98. But that was before my time.
2022-07-19 13:14:39 +0200xff0x(~xff0x@2405:6580:b080:900:604b:7f6a:615b:55d0)
2022-07-19 13:15:25 +0200frost(~frost@user/frost) (Quit: Client closed)
2022-07-19 13:17:35 +0200vglfr(~vglfr@coupling.penchant.volia.net)
2022-07-19 13:17:57 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-07-19 13:18:50 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 255 seconds)
2022-07-19 13:19:50 +0200dschrempf(~dominik@2a01-036d-0118-4212-d780-b5a7-1f7c-1a85.pool6.digikabel.hu) (Ping timeout: 260 seconds)
2022-07-19 13:19:53 +0200frost(~frost@user/frost)
2022-07-19 13:20:47 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-19 13:23:26 +0200iamgarpCAT_S
2022-07-19 13:23:41 +0200mastarija(~mastarija@2a05:4f46:e02:8c00:c16d:6f16:8e31:78a1)
2022-07-19 13:24:38 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-07-19 13:33:25 +0200cyanide3dinner(~cyanide4d@2402:e280:2149:513:931b:41cb:2a7e:791d)
2022-07-19 13:36:56 +0200kazaf(~kazaf@84.252.147.246) (Remote host closed the connection)
2022-07-19 13:37:14 +0200kazaf(~kazaf@84.252.147.246)
2022-07-19 13:37:48 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-07-19 13:39:45 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 13:43:00 +0200andscape(~andscape@ti0185a400-0748.bb.online.no)
2022-07-19 13:43:17 +0200cyanide4breakfas(~cyanide4d@2402:e280:2149:513:931b:41cb:2a7e:791d)
2022-07-19 13:44:26 +0200hueso(~root@user/hueso)
2022-07-19 13:44:42 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 268 seconds)
2022-07-19 13:48:25 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
2022-07-19 13:50:01 +0200cyanide4breakfas(~cyanide4d@2402:e280:2149:513:931b:41cb:2a7e:791d) (Quit: Leaving)
2022-07-19 13:51:13 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net)
2022-07-19 13:53:20 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f) (Ping timeout: 268 seconds)
2022-07-19 13:56:28 +0200y04nn(~y04nn@2001:ac8:28:95::a17e)
2022-07-19 13:59:58 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-07-19 14:04:52 +0200lortabac(~lortabac@37.101.134.31)
2022-07-19 14:08:37 +0200 <troydm> how can I force foldl to be strict?
2022-07-19 14:09:07 +0200 <Franciman> troydm: foldl'
2022-07-19 14:09:09 +0200 <Franciman> :t foldl'
2022-07-19 14:09:10 +0200 <lambdabot> Foldable t => (b -> a -> b) -> b -> t a -> b
2022-07-19 14:09:17 +0200 <Franciman> it is strict in the accumulator
2022-07-19 14:09:43 +0200 <troydm> Variable not in scope
2022-07-19 14:10:15 +0200 <troydm> I'm using GHC 9.0.2
2022-07-19 14:10:19 +0200 <geekosaur> @index foldl'
2022-07-19 14:10:19 +0200 <lambdabot> Data.Foldable, Data.List, GHC.OldList, Data.ByteString.Lazy.Char8, Data.ByteString.Lazy, Data.ByteString.Char8, Data.ByteString, Data.IntMap.Strict, Data.IntMap.Lazy, Data.IntMap, Data.IntSet, Data.
2022-07-19 14:10:19 +0200 <lambdabot> Map.Lazy, Data.Map.Strict, Data.Map, Data.Set
2022-07-19 14:10:29 +0200 <geekosaur> you want Data.Foldable
2022-07-19 14:10:33 +0200 <geekosaur> it's not in Prelude
2022-07-19 14:11:15 +0200 <troydm> ahh okey
2022-07-19 14:11:17 +0200 <troydm> thx
2022-07-19 14:11:21 +0200kazaf(~kazaf@84.252.147.246) (Remote host closed the connection)
2022-07-19 14:12:29 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-19 14:13:51 +0200kazaf(~kazaf@94.180.63.53)
2022-07-19 14:15:40 +0200kenran(~kenran@200116b82bc6b100b80672891718c9cf.dip.versatel-1u1.de)
2022-07-19 14:17:03 +0200infinity0(~infinity0@185.112.146.113)
2022-07-19 14:18:28 +0200kazaf(~kazaf@94.180.63.53) (Ping timeout: 252 seconds)
2022-07-19 14:19:58 +0200dschrempf(~dominik@94-21-158-143.pool.digikabel.hu)
2022-07-19 14:21:33 +0200zxx7529(~Thunderbi@user/zxx7529)
2022-07-19 14:22:10 +0200nate4(~nate@98.45.169.16)
2022-07-19 14:23:33 +0200kenran(~kenran@200116b82bc6b100b80672891718c9cf.dip.versatel-1u1.de) (Ping timeout: 276 seconds)
2022-07-19 14:24:59 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 255 seconds)
2022-07-19 14:26:37 +0200kazaf(~kazaf@94.180.63.53)
2022-07-19 14:26:50 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-19 14:27:17 +0200nate4(~nate@98.45.169.16) (Ping timeout: 272 seconds)
2022-07-19 14:28:17 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
2022-07-19 14:31:13 +0200coot(~coot@213.134.190.95)
2022-07-19 14:31:18 +0200kazaf(~kazaf@94.180.63.53) (Ping timeout: 252 seconds)
2022-07-19 14:32:45 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f) (Ping timeout: 260 seconds)
2022-07-19 14:36:22 +0200yauhsien(~yauhsien@61-231-22-68.dynamic-ip.hinet.net)
2022-07-19 14:39:09 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2022-07-19 14:39:24 +0200pgass(~pg@190.247.245.154)
2022-07-19 14:41:22 +0200yauhsien(~yauhsien@61-231-22-68.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2022-07-19 14:42:55 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-19 14:43:58 +0200cyanide3dinner(~cyanide4d@2402:e280:2149:513:931b:41cb:2a7e:791d) (Remote host closed the connection)
2022-07-19 14:46:01 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2022-07-19 14:46:35 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 255 seconds)
2022-07-19 14:47:15 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Max SendQ exceeded)
2022-07-19 14:47:59 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2022-07-19 14:54:43 +0200maroloccio(~marolocci@37.100.36.239) (Quit: WeeChat 3.0)
2022-07-19 14:59:08 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-07-19 14:59:17 +0200lys_(~lys@user/lys)
2022-07-19 15:07:47 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 15:08:54 +0200bontaq(~user@ool-45779fe5.dyn.optonline.net)
2022-07-19 15:12:11 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-07-19 15:13:43 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 15:14:07 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-07-19 15:15:17 +0200dschrempf(~dominik@94-21-158-143.pool.digikabel.hu) (Ping timeout: 268 seconds)
2022-07-19 15:15:56 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
2022-07-19 15:16:42 +0200dschrempf(~dominik@94-21-158-143.pool.digikabel.hu)
2022-07-19 15:16:58 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-07-19 15:17:54 +0200lys_(~lys@user/lys) (Quit: Leaving)
2022-07-19 15:19:15 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-19 15:21:07 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f) (Ping timeout: 272 seconds)
2022-07-19 15:29:38 +0200lys(sid194105@user/lys)
2022-07-19 15:30:40 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-07-19 15:30:46 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 15:35:26 +0200zxx7529(~Thunderbi@user/zxx7529) (Quit: zxx7529)
2022-07-19 15:40:18 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-19 15:42:37 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-07-19 15:43:29 +0200dextaa(~DV@user/dextaa) (Read error: Connection reset by peer)
2022-07-19 15:44:54 +0200winny(~weechat@user/winny) (Remote host closed the connection)
2022-07-19 15:45:11 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 272 seconds)
2022-07-19 15:45:26 +0200winny(~weechat@user/winny)
2022-07-19 15:45:42 +0200dextaa(~DV@user/dextaa)
2022-07-19 15:46:02 +0200dextaa(~DV@user/dextaa) (Read error: Connection reset by peer)
2022-07-19 15:47:20 +0200kuribas(~user@silversquare.silversquare.eu) (Remote host closed the connection)
2022-07-19 15:48:19 +0200dextaa(~DV@user/dextaa)
2022-07-19 15:48:39 +0200dextaa(~DV@user/dextaa) (Read error: Connection reset by peer)
2022-07-19 15:48:44 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 15:50:16 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-07-19 15:50:56 +0200dextaa(~DV@user/dextaa)
2022-07-19 15:51:42 +0200Pickchea(~private@user/pickchea) (Ping timeout: 264 seconds)
2022-07-19 15:58:58 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 16:03:08 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-19 16:07:39 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2022-07-19 16:08:56 +0200Sgeo(~Sgeo@user/sgeo)
2022-07-19 16:09:12 +0200andscape(~andscape@ti0185a400-0748.bb.online.no) (Ping timeout: 252 seconds)
2022-07-19 16:13:24 +0200lys(sid194105@user/lys) (Quit: sleep)
2022-07-19 16:14:05 +0200lys(sid194105@id-194105.uxbridge.irccloud.com)
2022-07-19 16:14:54 +0200lys(sid194105@id-194105.uxbridge.irccloud.com) (Changing host)
2022-07-19 16:14:54 +0200lys(sid194105@user/lys)
2022-07-19 16:18:11 +0200cfricke(~cfricke@user/cfricke)
2022-07-19 16:20:35 +0200dschrempf(~dominik@94-21-158-143.pool.digikabel.hu) (Quit: WeeChat 3.5)
2022-07-19 16:30:18 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-19 16:30:23 +0200kritzefitz(~kritzefit@debian/kritzefitz) (Ping timeout: 244 seconds)
2022-07-19 16:31:33 +0200kritzefitz(~kritzefit@debian/kritzefitz)
2022-07-19 16:31:37 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 16:34:54 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
2022-07-19 16:36:05 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-19 16:38:57 +0200lys(sid194105@user/lys) ()
2022-07-19 16:45:02 +0200hellwolf(~hellwolf@7-41-50-84.sta.estpak.ee) (Remote host closed the connection)
2022-07-19 16:45:26 +0200hellwolf(~hellwolf@7-41-50-84.sta.estpak.ee)
2022-07-19 16:45:53 +0200lys(sid194105@id-194105.uxbridge.irccloud.com)
2022-07-19 16:46:41 +0200kuribas(~user@silversquare.silversquare.eu)
2022-07-19 16:46:58 +0200son0p(~ff@181.136.122.143) (Ping timeout: 240 seconds)
2022-07-19 16:50:47 +0200lys(sid194105@id-194105.uxbridge.irccloud.com) (Changing host)
2022-07-19 16:50:47 +0200lys(sid194105@user/lys)
2022-07-19 16:53:24 +0200ccntrq(~Thunderbi@2a02:3100:70f0:db00:df27:9986:c8dc:f583) (Ping timeout: 272 seconds)
2022-07-19 16:53:42 +0200ccntrq1(~Thunderbi@2a01:c22:909c:5f00:dbaf:bba8:c756:e76f)
2022-07-19 16:54:28 +0200dextaa(~DV@user/dextaa) (Read error: Connection reset by peer)
2022-07-19 16:55:48 +0200alternateved(~user@staticline-31-183-144-54.toya.net.pl) (Ping timeout: 268 seconds)
2022-07-19 16:55:54 +0200ccntrq1ccntrq
2022-07-19 16:56:45 +0200dextaa(~DV@user/dextaa)
2022-07-19 16:57:03 +0200dextaa(~DV@user/dextaa) (Read error: Connection reset by peer)
2022-07-19 16:59:14 +0200dextaa(~DV@user/dextaa)
2022-07-19 17:00:20 +0200dextaa(~DV@user/dextaa) (Read error: Connection reset by peer)
2022-07-19 17:01:23 +0200dtman34_(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Read error: Connection reset by peer)
2022-07-19 17:01:41 +0200dtman34(~dtman34@2601:446:4400:2ad9:d18c:aab6:fc87:3dca)
2022-07-19 17:02:26 +0200dextaa(~DV@user/dextaa)
2022-07-19 17:02:50 +0200dextaa(~DV@user/dextaa) (Read error: Connection reset by peer)
2022-07-19 17:04:10 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 17:04:15 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-07-19 17:04:54 +0200dextaa(~DV@user/dextaa)
2022-07-19 17:05:32 +0200shriekingnoise(~shrieking@201.212.175.181)
2022-07-19 17:05:40 +0200dextaa(~DV@user/dextaa) (Read error: Connection reset by peer)
2022-07-19 17:07:48 +0200dextaa(~DV@user/dextaa)
2022-07-19 17:07:55 +0200dextaa(~DV@user/dextaa) (Read error: Connection reset by peer)
2022-07-19 17:08:45 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-19 17:09:22 +0200dcoutts(~duncan@host86-167-206-10.range86-167.btcentralplus.com) (Ping timeout: 268 seconds)
2022-07-19 17:10:08 +0200dextaa(~DV@user/dextaa)
2022-07-19 17:11:48 +0200coot(~coot@213.134.190.95)
2022-07-19 17:21:42 +0200kritzefitz(~kritzefit@debian/kritzefitz) (Remote host closed the connection)
2022-07-19 17:21:52 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-19 17:21:56 +0200kritzefitz(~kritzefit@debian/kritzefitz)
2022-07-19 17:24:41 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-07-19 17:26:38 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
2022-07-19 17:26:48 +0200ccntrq1(~Thunderbi@2a01:c22:8521:6a00:8a5e:c335:b76e:d8af)
2022-07-19 17:27:10 +0200ccntrq(~Thunderbi@2a01:c22:909c:5f00:dbaf:bba8:c756:e76f) (Ping timeout: 260 seconds)
2022-07-19 17:29:30 +0200ccntrq(~Thunderbi@2a01:c22:8586:2300:104:3af5:e0c1:639f)
2022-07-19 17:29:30 +0200lortabac(~lortabac@37.101.134.31) (Quit: WeeChat 2.8)
2022-07-19 17:29:41 +0200phma(phma@2001:5b0:211b:a238:1bda:2a18:c8e3:5e16) (Read error: Connection reset by peer)
2022-07-19 17:29:49 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.5)
2022-07-19 17:30:36 +0200phma(phma@2001:5b0:210b:99d8:7aa7:eab5:6b73:863a)
2022-07-19 17:31:35 +0200ccntrq1(~Thunderbi@2a01:c22:8521:6a00:8a5e:c335:b76e:d8af) (Ping timeout: 272 seconds)
2022-07-19 17:32:45 +0200zxx7529(~Thunderbi@user/zxx7529)
2022-07-19 17:36:00 +0200jakalx(~jakalx@base.jakalx.net) ()
2022-07-19 17:36:06 +0200jakalx(~jakalx@base.jakalx.net)
2022-07-19 17:38:05 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 17:38:11 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-19 17:38:11 +0200frost(~frost@user/frost) (Quit: Client closed)
2022-07-19 17:42:12 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-19 17:44:29 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Remote host closed the connection)
2022-07-19 17:44:43 +0200 <yin> would brick be a good choice for a 2D ascii game?
2022-07-19 17:45:11 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-19 17:45:54 +0200 <yin> or is it usually better to just use a graphics engine for performance?
2022-07-19 17:46:32 +0200 <yin> brick looks like it's made more with UIs in mind
2022-07-19 17:46:59 +0200ccntrq(~Thunderbi@2a01:c22:8586:2300:104:3af5:e0c1:639f) (Remote host closed the connection)
2022-07-19 17:47:00 +0200 <geekosaur> brick is a UI built on top of vty
2022-07-19 17:47:17 +0200ccntrq(~Thunderbi@2a01:c22:8586:2300:104:3af5:e0c1:639f)
2022-07-19 17:47:25 +0200 <geekosaur> depending on what you're doing, you may want to use vty directly
2022-07-19 17:47:40 +0200y04nn(~y04nn@2001:ac8:28:95::a17e) (Ping timeout: 268 seconds)
2022-07-19 17:47:58 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
2022-07-19 17:49:02 +0200 <dolio> My impression is that brick might be useful for laying out the game interface, but something like drawing an ascii map might require implementing a more custom widget.
2022-07-19 17:49:28 +0200 <dolio> But I haven't looked closely.
2022-07-19 17:50:54 +0200 <yin> ok that's what it seems to me. thanks
2022-07-19 17:51:35 +0200 <maerwald[m]> yin: https://hackage.haskell.org/package/ansi-terminal-game
2022-07-19 17:51:55 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
2022-07-19 17:54:23 +0200hueso(~root@user/hueso) (Ping timeout: 268 seconds)
2022-07-19 17:55:47 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Quit: WeeChat 3.6)
2022-07-19 17:57:05 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 17:57:50 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-07-19 17:58:23 +0200hueso(~root@user/hueso)
2022-07-19 17:59:53 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net) (Remote host closed the connection)
2022-07-19 17:59:53 +0200 <sm> +1
2022-07-19 18:01:04 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net)
2022-07-19 18:02:17 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-07-19 18:03:06 +0200 <yin> maerwald[m]: nice!
2022-07-19 18:03:44 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-07-19 18:07:41 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 272 seconds)
2022-07-19 18:09:07 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net)
2022-07-19 18:10:31 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 18:13:10 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-07-19 18:13:17 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 18:14:18 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds)
2022-07-19 18:14:40 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-07-19 18:14:52 +0200mvk(~mvk@2607:fea8:5ce3:8500::909a)
2022-07-19 18:15:30 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 18:15:58 +0200mrmr(~mrmr@user/mrmr) (Quit: The Lounge - https://thelounge.chat)
2022-07-19 18:17:08 +0200naso(~naso@193-116-244-197.tpgi.com.au) ()
2022-07-19 18:17:54 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 268 seconds)
2022-07-19 18:17:54 +0200 <c_wraith> yin: oh, missed your question last night. anyway, I didn't say subtyping is bad. I said subclassing is bad. That's because it conflates subtyping with implementation reuse, when they really should be completely different ideas.
2022-07-19 18:18:37 +0200kuribas(~user@silversquare.silversquare.eu) (Remote host closed the connection)
2022-07-19 18:23:42 +0200nate4(~nate@98.45.169.16)
2022-07-19 18:27:16 +0200Major_Biscuit(~MajorBisc@c-001-019-019.client.tudelft.eduvpn.nl) (Quit: WeeChat 3.5)
2022-07-19 18:28:57 +0200razetime(~quassel@117.254.35.64)
2022-07-19 18:28:59 +0200nate4(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-07-19 18:29:09 +0200superbil(~superbil@1-34-176-171.hinet-ip.hinet.net) (*.net *.split)
2022-07-19 18:29:50 +0200superbil(~superbil@1-34-176-171.hinet-ip.hinet.net)
2022-07-19 18:30:29 +0200ccntrq1(~Thunderbi@2a01:c23:9416:ba00:93fe:7a9d:27cd:9383)
2022-07-19 18:30:39 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net) (Remote host closed the connection)
2022-07-19 18:31:37 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net)
2022-07-19 18:32:24 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-19 18:32:30 +0200ccntrq(~Thunderbi@2a01:c22:8586:2300:104:3af5:e0c1:639f) (Ping timeout: 260 seconds)
2022-07-19 18:32:30 +0200ccntrq1ccntrq
2022-07-19 18:36:24 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 276 seconds)
2022-07-19 18:38:10 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
2022-07-19 18:39:19 +0200zxx7529(~Thunderbi@user/zxx7529) (Remote host closed the connection)
2022-07-19 18:40:55 +0200slack1256(~slack1256@191.125.227.211)
2022-07-19 18:42:19 +0200ccntrq1(~Thunderbi@2a01:c22:886b:9b00:348f:a0ea:8cc:1fef)
2022-07-19 18:42:43 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-19 18:42:52 +0200kenran(~kenran@200116b82bc6b100093795c796f55f58.dip.versatel-1u1.de)
2022-07-19 18:43:19 +0200kenran(~kenran@200116b82bc6b100093795c796f55f58.dip.versatel-1u1.de) (Client Quit)
2022-07-19 18:44:12 +0200ccntrq(~Thunderbi@2a01:c23:9416:ba00:93fe:7a9d:27cd:9383) (Ping timeout: 276 seconds)
2022-07-19 18:44:12 +0200ccntrq1ccntrq
2022-07-19 18:44:29 +0200mbuf(~Shakthi@122.165.55.71) (Quit: Leaving)
2022-07-19 18:45:04 +0200 <slack1256> I got a "sum" data type with a `Generic` instance. I would like to simulate a "Bounded" and "Ord" instance to enumarate all possible constructors. I cannot change the data definitions. Is there a easy way to do so? or should I write the function by hand over the Generic repr?
2022-07-19 18:51:09 +0200 <tomsmeding> slack1256: you can't just add "deriving (Ord, Bounded)"?
2022-07-19 18:51:10 +0200Kevin578(~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net)
2022-07-19 18:51:44 +0200 <tomsmeding> Or using StandaloneDeriving as a separate declaration: `deriving instance Ord MyDataType`
2022-07-19 18:51:51 +0200lys(sid194105@user/lys) ()
2022-07-19 18:52:21 +0200lys(sid194105@id-194105.uxbridge.irccloud.com)
2022-07-19 18:55:25 +0200 <slack1256> tomsmeding: I would to avoid add it to the original definition as it is a ADT generated via template-haskell. I can use StandaloneDeriving to define a orphan instance.
2022-07-19 18:56:04 +0200 <tomsmeding> (if you put the standalone instance in the same module as the (generated) data type declaration, it's not even an orphan)
2022-07-19 18:56:31 +0200 <slack1256> !!!!!!
2022-07-19 18:56:37 +0200 <slack1256> You are right!
2022-07-19 18:56:48 +0200 <slack1256> I don't have to put it on the splice itself. I can put it afterwards.
2022-07-19 18:57:26 +0200ccntrq(~Thunderbi@2a01:c22:886b:9b00:348f:a0ea:8cc:1fef) (Remote host closed the connection)
2022-07-19 18:57:53 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-07-19 18:59:40 +0200 <slack1256> Thank tomsmeding
2022-07-19 18:59:55 +0200 <tomsmeding> StandaloneDeriving is super useful sometimes
2022-07-19 19:00:08 +0200lys(sid194105@id-194105.uxbridge.irccloud.com) (Changing host)
2022-07-19 19:00:08 +0200lys(sid194105@user/lys)
2022-07-19 19:00:38 +0200 <slack1256> I had only used it to specify the heads of the deriving instances. This is a new trick for me! :-)
2022-07-19 19:01:09 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-07-19 19:02:02 +0200 <tomsmeding> I've mostly used it to derive e.g. Show got GADTs, because for some unknown (to me) reason, one cannot put `deriving (Show)` on a GADT declaration directly
2022-07-19 19:02:11 +0200 <Profpatsch> What’s the easiest way of “enriching” a Monad with a counter that returns how many monadic actions were taken?
2022-07-19 19:02:12 +0200 <tomsmeding> s/got/for/
2022-07-19 19:02:27 +0200 <Profpatsch> Just a WriterT (Sum Natural)?
2022-07-19 19:02:44 +0200 <Profpatsch> But pretty bad from a leaking perspective no?
2022-07-19 19:02:59 +0200 <tomsmeding> Profpatsch: how many >>= were executed or something more high-level?
2022-07-19 19:03:41 +0200 <Profpatsch> tomsmeding: just how many m a’s
2022-07-19 19:04:06 +0200 <Profpatsch> tomsmeding: i.e. f <$> ma <*> mb counts to 2 if both ma and mb have a count of 1
2022-07-19 19:04:22 +0200m1dnight(~christoph@78-22-0-121.access.telenet.be) (Ping timeout: 244 seconds)
2022-07-19 19:04:31 +0200 <tomsmeding> How much does `return () >> return ()` count for?
2022-07-19 19:04:37 +0200 <Profpatsch> 0
2022-07-19 19:05:00 +0200 <tomsmeding> And `return 42 >>= \x -> return (x + 1)`?
2022-07-19 19:05:37 +0200 <Profpatsch> tomsmeding: I think I’m thinking about this wrong
2022-07-19 19:05:43 +0200 <tomsmeding> If also 0, then I think your only option is WriterT (Sum Natural), and `tell` 1 in each of your primitive monadic actions that _do_ cost
2022-07-19 19:05:53 +0200 <Profpatsch> tomsmeding: yes, exactly
2022-07-19 19:06:09 +0200 <Profpatsch> tomsmeding: But would you use a StateT or a WriterT?
2022-07-19 19:06:15 +0200 <Profpatsch> Afaik WriterT always leaks spaces
2022-07-19 19:06:17 +0200 <Profpatsch> -s
2022-07-19 19:06:18 +0200 <tomsmeding> Because then there's no inherent feature in Haskell that determines whether actions cost something or not
2022-07-19 19:06:36 +0200 <tomsmeding> There is a cps-based writer that is supposed to be better
2022-07-19 19:07:09 +0200 <Profpatsch> I mean I could put it all in STM or something :)
2022-07-19 19:07:18 +0200 <c_wraith> note that CPS'd WriterT is the same type as StateT. it just exposes different operations
2022-07-19 19:07:19 +0200 <tomsmeding> https://hackage.haskell.org/package/transformers-0.6.0.4/docs/Control-Monad-Trans-Writer-CPS.html
2022-07-19 19:07:26 +0200 <Profpatsch> But this is just for a test
2022-07-19 19:07:28 +0200 <tomsmeding> Ah
2022-07-19 19:07:29 +0200 <Profpatsch> so nobody really cares
2022-07-19 19:07:36 +0200 <Profpatsch> c_wraith: oh that’s pretty cool
2022-07-19 19:07:40 +0200 <Profpatsch> Will keep that in mind!
2022-07-19 19:07:47 +0200 <Profpatsch> I guess this should really be the default writer
2022-07-19 19:08:32 +0200 <Profpatsch> What a bother that the default WriterT exposes its constructor
2022-07-19 19:08:36 +0200 <Profpatsch> otherwise we could just replace it
2022-07-19 19:09:17 +0200 <Profpatsch> Why there is no big fat warning in the WriterT documentation at this point is beyond me
2022-07-19 19:09:40 +0200 <tomsmeding> I mean, there is a warning, it's just very innocuous :p
2022-07-19 19:09:43 +0200 <c_wraith> the default WriterT is on rare occasion the correct choice - when you want the concatenation to be non-strict
2022-07-19 19:09:50 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 255 seconds)
2022-07-19 19:10:06 +0200 <Profpatsch> c_wraith: it’s not an actual wrapper around StateT btw
2022-07-19 19:10:15 +0200 <Profpatsch> https://hackage.haskell.org/package/transformers-0.6.0.4/docs/src/Control.Monad.Trans.Writer.CPS.h…
2022-07-19 19:10:16 +0200 <tomsmeding> "on rare occasion" does sound like, ideally, it shouldn't have been the default
2022-07-19 19:10:18 +0200 <Profpatsch> Just isomorphic
2022-07-19 19:10:34 +0200 <Profpatsch> tomsmeding: Haskell has a lot of things that people only figured out over the years :)
2022-07-19 19:10:39 +0200 <Profpatsch> Like `return`
2022-07-19 19:10:47 +0200 <tomsmeding> Profpatsch: both are newtypes, so they are even representationally equal ;)
2022-07-19 19:10:49 +0200 <c_wraith> err. yes. my phrasing was somewhere in the neighborhood of misleading to wrong
2022-07-19 19:11:10 +0200 <tomsmeding> Profpatsch: oh for sure, I'm not saying the designers of `transformers` should've known better
2022-07-19 19:11:30 +0200 <tomsmeding> It would have been nice, but hindsight is cheap
2022-07-19 19:11:31 +0200gff(~gff@70.56.148.67) (Quit: WeeChat 3.0)
2022-07-19 19:11:40 +0200m1dnight(~christoph@78-22-0-121.access.telenet.be)
2022-07-19 19:11:43 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-19 19:11:51 +0200 <Profpatsch> tomsmeding: We just have a buncho hlint rules that enforce things like this
2022-07-19 19:12:03 +0200gff(~gff@user/gff)
2022-07-19 19:12:03 +0200 <Profpatsch> e.g. one that tells users to not import Data.Map and import Data.Map.Strict instead
2022-07-19 19:12:16 +0200 <tomsmeding> Oh is that an hlint rule?
2022-07-19 19:12:17 +0200 <Profpatsch> And now I’m gonna add one for Writer.CPS
2022-07-19 19:12:21 +0200 <tomsmeding> That's one of the better ones then
2022-07-19 19:12:24 +0200 <Profpatsch> tomsmeding: only in our codebase
2022-07-19 19:12:30 +0200 <tomsmeding> Ah :)
2022-07-19 19:12:45 +0200 <Profpatsch> tomsmeding: But you and me both
2022-07-19 19:12:57 +0200 <Profpatsch> tomsmeding: https://gist.github.com/Profpatsch/5a41d0283755d573511b08c01ff40148
2022-07-19 19:13:28 +0200 <Profpatsch> To me it seems like hlint was built to nudge people towards maximally unreadable code :P
2022-07-19 19:13:31 +0200 <tomsmeding> Profpatsch: line 11 has a missed opportunity for a pun
2022-07-19 19:13:43 +0200 <Profpatsch> tomsmeding: oh
2022-07-19 19:13:44 +0200 <Profpatsch> lol
2022-07-19 19:14:21 +0200 <tomsmeding> Oh man that "Use fmap" thing is so harmful
2022-07-19 19:14:42 +0200econo(uid147250@user/econo)
2022-07-19 19:15:12 +0200 <tomsmeding> Where it tells you to change `do x <- long action and stuff ; return (x and more things)` to `(\x -> x and more things) <$> long action and stuff`
2022-07-19 19:15:18 +0200 <tomsmeding> _no_ that is not more readable
2022-07-19 19:15:26 +0200 <c_wraith> sometimes I really do want to case on a Book!
2022-07-19 19:15:36 +0200 <c_wraith> err. Bool. thanks, autocorrect
2022-07-19 19:17:18 +0200 <tomsmeding> Profpatsch: the isNothing thing actually has a reason, sortof: (== Nothing) requires Eq of the contained type, whereas isNothing doesn't
2022-07-19 19:17:18 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-07-19 19:17:26 +0200 <Profpatsch> tomsmeding: yeah that’s true
2022-07-19 19:17:27 +0200fserucas_(~fserucas@39.64.114.89.rev.vodafone.pt) (Quit: Leaving)
2022-07-19 19:17:28 +0200 <Profpatsch> however
2022-07-19 19:17:31 +0200 <Profpatsch> I can still write isNothing
2022-07-19 19:17:37 +0200 <Profpatsch> if the type really doesn’t have Eq
2022-07-19 19:17:44 +0200 <Profpatsch> It’s not like it will complain about that
2022-07-19 19:17:53 +0200 <tomsmeding> Though if there _is_ an Eq instance, it shouldn't really matter for runtime performance in the end
2022-07-19 19:17:58 +0200 <tomsmeding> Yeah
2022-07-19 19:17:59 +0200 <Profpatsch> But in that case I’d probably just case-match anyway
2022-07-19 19:18:23 +0200 <[Leary]> > null Nothing
2022-07-19 19:18:24 +0200 <tomsmeding> I agree with most of your ignores :p
2022-07-19 19:18:25 +0200 <lambdabot> True
2022-07-19 19:18:34 +0200 <[Leary]> Is the other option.
2022-07-19 19:18:40 +0200 <Profpatsch> [Leary]: Don’t remind me of Foldable omg
2022-07-19 19:18:46 +0200 <Profpatsch> you troll
2022-07-19 19:18:51 +0200 <tomsmeding> Well, I agree with all, because I prefer not to use a style linter at all lol
2022-07-19 19:19:10 +0200 <[Leary]> I actually like how generalised all the Foldable stuff is. *shrug*
2022-07-19 19:19:14 +0200 <Profpatsch> tomsmeding: hlint is super helpful if you want to tell people in your company that there is a better variant
2022-07-19 19:19:31 +0200 <tomsmeding> Right
2022-07-19 19:19:53 +0200 <tomsmeding> Now let it be the case that I'm doing a phd and write code mostly by myself :)
2022-07-19 19:20:13 +0200 <Profpatsch> [Leary]: Then you obviously never had a production bug because somebody changed (\a :: Int -> length a) to (\a :: (Int, Bool) -> length a) lol
2022-07-19 19:20:23 +0200 <Profpatsch> We had one,, in our authentication logic
2022-07-19 19:20:33 +0200 <tomsmeding> Profpatsch: length :: Int -> Int?
2022-07-19 19:20:49 +0200 <Profpatsch> tomsmeding: err replace Int with [Int] or something
2022-07-19 19:20:51 +0200 <tomsmeding> s/Int/[Int]/ presumably :p
2022-07-19 19:20:52 +0200 <tomsmeding> Yeah
2022-07-19 19:20:55 +0200 <Profpatsch> was thinking wrong
2022-07-19 19:21:02 +0200 <Profpatsch> Or [a]
2022-07-19 19:21:09 +0200 <tomsmeding> Or Maybe a
2022-07-19 19:21:24 +0200razetime(~quassel@117.254.35.64) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-07-19 19:21:25 +0200 <Profpatsch> So for example there is a hlint rule that tells people to use List.length instead of Foldable.length
2022-07-19 19:21:27 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-07-19 19:21:35 +0200 <Profpatsch> which will prevent such bugs, by being specific about the container
2022-07-19 19:21:42 +0200 <tomsmeding> Or Const () a
2022-07-19 19:21:46 +0200 <tomsmeding> ;)
2022-07-19 19:21:52 +0200 <Profpatsch> Oh, there was also multiple runtime crashes because of `maximum`. Fun stuff!
2022-07-19 19:22:05 +0200 <Profpatsch> Note how the default instance of `maximum` in the class is … partial
2022-07-19 19:22:17 +0200 <Profpatsch> Because it’s impossible to have a sensible `maximum` for Foldable
2022-07-19 19:22:34 +0200 <tomsmeding> If you use the linter to selectively enable the really useful rules, then I can see it being very helpful, especially in a company context
2022-07-19 19:22:49 +0200mastarija(~mastarija@2a05:4f46:e02:8c00:c16d:6f16:8e31:78a1) (Quit: Leaving)
2022-07-19 19:22:52 +0200 <Profpatsch> tomsmeding: hlint is actually a super useful tool, just not with good defaults
2022-07-19 19:22:54 +0200 <Profpatsch> like … vim for example
2022-07-19 19:22:59 +0200 <tomsmeding> Heh
2022-07-19 19:23:06 +0200 <tomsmeding> Maybe that's the conclusion
2022-07-19 19:23:45 +0200 <tomsmeding> I lazily revetted to hls.config.hlintOn = false
2022-07-19 19:23:49 +0200 <tomsmeding> *reverted
2022-07-19 19:24:15 +0200 <Profpatsch> tomsmeding: yeah if you create projects a lot, that’s probably the best if you don’t want to copy the default config everywhere
2022-07-19 19:24:17 +0200 <tomsmeding> > null (Const 42)
2022-07-19 19:24:18 +0200 <Profpatsch> tho nothing wrong with that.
2022-07-19 19:24:19 +0200 <lambdabot> True
2022-07-19 19:24:40 +0200 <Profpatsch> tomsmeding: wait, does that monomorphise to Const ()?
2022-07-19 19:24:58 +0200 <tomsmeding> There is `instance Foldable (Const m)`
2022-07-19 19:25:20 +0200 <tomsmeding> So it doesn't even matter what it monomorphises to :p
2022-07-19 19:25:25 +0200 <Profpatsch> oh noooo
2022-07-19 19:25:29 +0200 <tomsmeding> > toList (Const [1,2,3])
2022-07-19 19:25:30 +0200 <lambdabot> []
2022-07-19 19:25:49 +0200 <tomsmeding> :t Const
2022-07-19 19:25:50 +0200 <lambdabot> forall k a (b :: k). a -> Const a b
2022-07-19 19:26:03 +0200 <tomsmeding> There are no b's in a Const
2022-07-19 19:26:05 +0200 <geekosaur> and in any case () is a valid monomorphization because ExtendedDefaultRules is on
2022-07-19 19:26:08 +0200 <Profpatsch> foldl1 _ _ = errorWithoutStackTrace "foldl1: Proxy"
2022-07-19 19:26:10 +0200 <Profpatsch> foldr1 _ _ = errorWithoutStackTrace "foldr1: Proxy"
2022-07-19 19:26:12 +0200 <Profpatsch> hm
2022-07-19 19:27:01 +0200 <tomsmeding> > toList (Proxy :: Proxy Int)
2022-07-19 19:27:04 +0200 <lambdabot> []
2022-07-19 19:27:20 +0200 <tomsmeding> Lol that's got to be the most useless Foldable instance ever
2022-07-19 19:27:43 +0200 <tomsmeding> I see why it's there though, it enables auto-deriving Foldable on a data type containing proxies
2022-07-19 19:28:00 +0200 <Profpatsch> I guess that’s the reason for most of these instances
2022-07-19 19:28:05 +0200 <tomsmeding> Yeah
2022-07-19 19:28:13 +0200 <Profpatsch> just shouldn’t be in Prelude
2022-07-19 19:28:46 +0200 <tomsmeding> You mean the instance should be orphaned and put in a different module, like Show (a -> b) is in Text.Show.Functions?
2022-07-19 19:29:17 +0200 <tomsmeding> Not sure that's an improvement
2022-07-19 19:29:21 +0200 <Profpatsch> tomsmeding: I mean Prelude.length should have type :: [a] -> Int
2022-07-19 19:29:27 +0200 <tomsmeding> Ah yeah
2022-07-19 19:29:41 +0200 <Profpatsch> cause you can always use it with length . toList
2022-07-19 19:29:43 +0200 <Profpatsch> if you really must
2022-07-19 19:29:50 +0200 <tomsmeding> Or Foldable.length
2022-07-19 19:29:54 +0200 <Profpatsch> I guess toList can be in Prelude
2022-07-19 19:29:59 +0200 <Profpatsch> That would make sense
2022-07-19 19:30:05 +0200mvk(~mvk@2607:fea8:5ce3:8500::909a) (Ping timeout: 255 seconds)
2022-07-19 19:30:12 +0200 <geekosaur> but that's annoying if you want e.g. the size of a Set
2022-07-19 19:30:15 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 260 seconds)
2022-07-19 19:30:25 +0200 <geekosaur> instead of using custom functions (which Sets admittedly have)
2022-07-19 19:30:44 +0200 <Profpatsch> geekosaur: that’s Set.size
2022-07-19 19:30:45 +0200tomsmedingalways uses Set.size
2022-07-19 19:31:13 +0200 <Profpatsch> With hls it’s like “write it down, hit Ctrl+. and Enter”
2022-07-19 19:31:19 +0200 <Profpatsch> And you got the right import
2022-07-19 19:31:35 +0200 <Profpatsch> Okay, maybe once hls sorts the import suggestions by most viable instead of just alphabetically
2022-07-19 19:32:00 +0200 <tomsmeding> What I don't like about that auto-import feature is that it just dumps it at the bottom
2022-07-19 19:32:03 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-19 19:32:18 +0200 <tomsmeding> Maybe I'm going to patch my hls at some point to insert it where I want it to go
2022-07-19 19:32:46 +0200 <tomsmeding> Though that'll be more than a one-line change
2022-07-19 19:33:20 +0200 <tomsmeding> I already have it patched to auto-complete case-insensitively :p
2022-07-19 19:33:37 +0200 <tomsmeding> I don't want to have to press Shift to get Maybe
2022-07-19 19:34:08 +0200jakalx(~jakalx@base.jakalx.net)
2022-07-19 19:34:24 +0200mvk(~mvk@2607:fea8:5ce3:8500::909a)
2022-07-19 19:35:36 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2022-07-19 19:36:48 +0200 <Profpatsch> tomsmeding: how much effort is it to patch hls?
2022-07-19 19:37:10 +0200 <Profpatsch> I guess I use nix for the environment so it should be pretty easy to get it distributed once I have a patch
2022-07-19 19:38:32 +0200 <qrpnxz> look like diff arrays are a bust :( STArray/Vector here i come
2022-07-19 19:39:01 +0200 <tomsmeding> Profpatsch: Building hls is just `cabal build`, once you have copied the right cabal.project.* to cabal.project
2022-07-19 19:39:11 +0200 <tomsmeding> So patching is just, well, editing the code :p
2022-07-19 19:39:40 +0200 <Profpatsch> tomsmeding: nice
2022-07-19 19:39:41 +0200 <tomsmeding> qrpnxz: iirc diff arrays look promising but have pretty bad constant factor performanc3
2022-07-19 19:39:51 +0200 <tomsmeding> *performance
2022-07-19 19:39:54 +0200 <Profpatsch> tomsmeding: But hls has a billion zillion deps no?
2022-07-19 19:39:54 +0200o-90(~o-90@gateway/tor-sasl/o-90)
2022-07-19 19:39:55 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 268 seconds)
2022-07-19 19:39:59 +0200 <tomsmeding> Yes :D
2022-07-19 19:40:07 +0200 <tomsmeding> That's why we have cabal
2022-07-19 19:40:09 +0200 <Profpatsch> for the 1 Million $ question: can you run hls on the hls codebase
2022-07-19 19:40:13 +0200 <tomsmeding> Yes
2022-07-19 19:40:16 +0200 <Profpatsch> nice
2022-07-19 19:40:32 +0200 <qrpnxz> i looked into it, and it seem like they were ok/good, but at some point GHC changed and they got bad, and nobody has been interested in fixing/replacing/mantain it since. For like 20 years. Pretty sad tbh
2022-07-19 19:40:34 +0200 <Profpatsch> I should get into some hls tasks on company time
2022-07-19 19:40:51 +0200 <tomsmeding> qrpnxz: ah TIL
2022-07-19 19:41:36 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2022-07-19 19:42:17 +0200dcoutts(~duncan@host86-167-206-10.range86-167.btcentralplus.com)
2022-07-19 19:45:43 +0200 <qrpnxz> or probably i should be giving up on arrays and just use a intmap lol
2022-07-19 19:54:56 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-07-19 19:55:25 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 19:55:28 +0200chele(~chele@user/chele) (Quit: Leaving)
2022-07-19 19:56:27 +0200 <yin> qrpnxz: what's the performance you're after?
2022-07-19 19:58:09 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-07-19 19:59:39 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-19 20:00:11 +0200 <qrpnxz> just... as fast as possible :) ik that's not helpful, but I'm writing this for learning purposes not so much a particular practical goal. I also haven't benchmarked anything so probably this is even premature optimization, but I just know (i'm so getting jinxed) that all the copying of an Array is begging use either mutable or something else.
2022-07-19 20:05:23 +0200 <yin> ok, so different structures will have different compromises
2022-07-19 20:05:45 +0200 <yin> so there is not a right answer for the general case
2022-07-19 20:06:10 +0200 <yin> have you tried unboxed vectors?
2022-07-19 20:06:28 +0200 <yin> they have constant accessors
2022-07-19 20:06:56 +0200 <yin> https://hackage.haskell.org/package/vector-0.13.0.0/docs/Data-Vector-Unboxed.htm
2022-07-19 20:07:14 +0200 <yin> oops
2022-07-19 20:07:19 +0200 <yin> https://hackage.haskell.org/package/vector-0.13.0.0/docs/Data-Vector-Unboxed.html
2022-07-19 20:07:30 +0200 <qrpnxz> yeah, i think mutable unboxed would be the fastest, but I think that some kind of map could give me really good bang for my buck in pure code and possibly enable parallelization
2022-07-19 20:07:35 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds)
2022-07-19 20:08:45 +0200 <[exa]> yin: re brick, we tried with students and it's pretty much okay for ~20fps games in standard-size terminal
2022-07-19 20:09:23 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-19 20:09:31 +0200 <[exa]> the slowest thing there is brick laying out simple stuff ("pixel" characters in rows), I guess that can be circumvented with much performance gain
2022-07-19 20:09:58 +0200acidjnk_new3(~acidjnk@p200300d6e70586378c7d9ef9e9e8454b.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-07-19 20:10:31 +0200 <yin> thanks [exa]
2022-07-19 20:11:02 +0200 <yin> i'm exploring vty and ansi-terminal-game
2022-07-19 20:11:37 +0200 <[exa]> like, making a widget for your "graphical" stuff that renders directly to vty would probably solve most of the problems. Brick really is for "bricks" ie. tUI stuff
2022-07-19 20:11:54 +0200 <sm> i think ansi-terminal-game at least can run faster than that
2022-07-19 20:12:19 +0200 <sm> I suooose it depends on your machine and terminal sw
2022-07-19 20:13:36 +0200mvk(~mvk@2607:fea8:5ce3:8500::909a) (Ping timeout: 244 seconds)
2022-07-19 20:13:37 +0200 <exarkun> how much difference does, eg, gnome-terminal vs alacritty make
2022-07-19 20:13:43 +0200Pickchea(~private@user/pickchea)
2022-07-19 20:13:48 +0200 <yin> i'm interested in displaying 2D simulations mostly, think many layers of different automata interacting with themselves plus player events
2022-07-19 20:14:11 +0200 <yin> so my challenge is to display a map that updates quite frequently
2022-07-19 20:14:52 +0200 <tomsmeding> yin: if you use unicode, prepare for slowness in some terminals
2022-07-19 20:15:02 +0200 <yin> that's why i was considering openGL :)
2022-07-19 20:15:06 +0200 <tomsmeding> Ascii is fast enough in all common terminals
2022-07-19 20:15:36 +0200 <tomsmeding> Macos Terminal.app was notorious in the past for slow unicode; might have improved in the meantime
2022-07-19 20:15:56 +0200 <yin> ascii suffices
2022-07-19 20:16:16 +0200 <tomsmeding> Then terminal rendering performance shouldn't slow you down much
2022-07-19 20:16:16 +0200o-90(~o-90@gateway/tor-sasl/o-90) (Remote host closed the connection)
2022-07-19 20:16:43 +0200 <sm> I'd measure before abandoning ansi for opengl, that's quite a jump
2022-07-19 20:16:43 +0200 <sm> in complexity :)
2022-07-19 20:17:28 +0200 <yin> gloss looks simple enough!
2022-07-19 20:17:36 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 20:18:04 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds)
2022-07-19 20:18:59 +0200 <sm> true
2022-07-19 20:19:28 +0200 <yin> but yeah that's exactly where i'm at right now. going to try terminal first
2022-07-19 20:19:44 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-19 20:21:04 +0200 <yin> keep the interface layer separated so i can test both
2022-07-19 20:22:41 +0200 <exarkun> is there a ghc extension that lets you compile haskell down to vertex shaders (et al), or whatever it is modern graphics cards use?
2022-07-19 20:24:45 +0200hnOsmium0001(uid453710@user/hnOsmium0001)
2022-07-19 20:24:56 +0200nightbreak[Away]nightbreak
2022-07-19 20:26:42 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds)
2022-07-19 20:27:35 +0200 <merijn> exarkun: No
2022-07-19 20:27:44 +0200 <merijn> exarkun: And unlikely to exist anytime soon :p
2022-07-19 20:28:05 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-19 20:29:06 +0200nightbreak(~nightbrea@2600:1700:70d1:d800:4c68:423:c75b:c148) (Ping timeout: 244 seconds)
2022-07-19 20:30:50 +0200 <exarkun> aww
2022-07-19 20:30:55 +0200nightbreak(~nightbrea@2600:1700:70d1:d800:78c0:dca8:2899:48b2)
2022-07-19 20:32:53 +0200lys(sid194105@user/lys) ()
2022-07-19 20:32:54 +0200slack1256(~slack1256@191.125.227.211) (Read error: Connection reset by peer)
2022-07-19 20:34:39 +0200slack1256(~slack1256@186.11.21.37)
2022-07-19 20:36:10 +0200 <merijn> exarkun: That said, lemme do Athas' work and shill you some Futhark ;)
2022-07-19 20:36:22 +0200 <merijn> exarkun: https://futhark-lang.org/
2022-07-19 20:36:33 +0200 <merijn> exarkun: Which is as close to what you want as you can currently (afaik) get :p
2022-07-19 20:36:58 +0200y04nn(~y04nn@2001:ac8:28:95::a17e)
2022-07-19 20:37:23 +0200 <exarkun> neat
2022-07-19 20:39:54 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 276 seconds)
2022-07-19 20:40:36 +0200smmeant faster than 20fps
2022-07-19 20:41:13 +0200 <[exa]> sm: wow I didn't know about ansi-terminal-game
2022-07-19 20:41:15 +0200 <[exa]> cool
2022-07-19 20:44:24 +0200 <[exa]> exarkun: there's been a bit of recent development on that front, llvm can be translated to spir-v which can be run as a compute shader pretty much anywhere
2022-07-19 20:44:59 +0200 <sm> if you need fast text display using opengl, I believe ic.rbow in #haskell-game has a lib
2022-07-19 20:45:09 +0200 <[exa]> there's a hefty one-time investment of the vulkan boilerplate that runs it for you but it generally works nicely
2022-07-19 20:45:19 +0200son0p(~ff@181.136.122.143)
2022-07-19 20:49:13 +0200 <exarkun> Huh, did I even know there was an llvm backend for Haskell? maybe not. is this a real thing or just a one-off proof of concept from 15 years ago?
2022-07-19 20:49:32 +0200 <merijn> exarkun: It's been working in mainline GHC for over a decade?
2022-07-19 20:49:41 +0200 <merijn> exarkun: It's a bit finnicky, but it's been around for ages
2022-07-19 20:49:49 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-19 20:50:16 +0200Guest|27(~Guest|27@151.45.227.234)
2022-07-19 20:51:00 +0200Guest|27(~Guest|27@151.45.227.234) (Client Quit)
2022-07-19 20:51:08 +0200 <[exa]> I was thinking more of some kind of EDSL that runs atop llvm-hs or so, compiling the haskellish llvm to vulkan is IMHO a sci-fi at this point
2022-07-19 20:51:46 +0200 <exarkun> aha, there is real documentation, just took me a few tries to look in the right place, https://downloads.haskell.org/ghc/latest/docs/html/users_guide/codegens.html?highlight=llvm#llvm-c…
2022-07-19 20:51:53 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-07-19 20:52:01 +0200 <exarkun> [exa]: ah I see
2022-07-19 20:52:03 +0200 <exarkun> still, neat
2022-07-19 20:52:34 +0200 <[exa]> I kindof hope someone makes a dedicated EDSL for spir-v
2022-07-19 20:52:41 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2022-07-19 20:54:20 +0200 <[exa]> the availability of vulkan on hardware is cool, you can veeeeeery easily surpass openCL with it, and the shaders are more-or-less portable between vendors (slash some typical issues like workgroup sizing etc)
2022-07-19 20:58:21 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-07-19 20:59:24 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 276 seconds)
2022-07-19 21:05:01 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
2022-07-19 21:06:43 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-07-19 21:08:12 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f) (Remote host closed the connection)
2022-07-19 21:08:49 +0200cyphase_eviltwin(~cyphase@user/cyphase) (Ping timeout: 272 seconds)
2022-07-19 21:10:38 +0200y04nn(~y04nn@2001:ac8:28:95::a17e) (Ping timeout: 240 seconds)
2022-07-19 21:10:59 +0200nightbreaknightbreak[Away]
2022-07-19 21:15:40 +0200nightbreak[Away]nightbreak
2022-07-19 21:15:41 +0200acidjnk_new3(~acidjnk@p200300d6e7058637b1e8edca185469f4.dip0.t-ipconnect.de)
2022-07-19 21:24:14 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
2022-07-19 21:30:50 +0200Kevin578(~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net) (Ping timeout: 268 seconds)
2022-07-19 21:32:21 +0200slac90600(~slack1256@191.126.227.211)
2022-07-19 21:33:39 +0200Kevin578(~Kevin578@pool-173-76-179-30.bstnma.fios.verizon.net)
2022-07-19 21:33:52 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-07-19 21:35:09 +0200slack1256(~slack1256@186.11.21.37) (Ping timeout: 268 seconds)
2022-07-19 21:35:26 +0200slac90600slack1256
2022-07-19 21:36:56 +0200y04nn(~y04nn@nayon.fr)
2022-07-19 21:37:29 +0200nightbreaknightbreak[Away]
2022-07-19 21:47:42 +0200azimut_(~azimut@gateway/tor-sasl/azimut)
2022-07-19 21:48:49 +0200cyphase_eviltwin(~cyphase@user/cyphase)
2022-07-19 21:50:28 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 21:50:39 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds)
2022-07-19 21:53:49 +0200lys(sid194105@user/lys)
2022-07-19 21:54:59 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-19 21:55:21 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-07-19 21:59:14 +0200asarch(~asarch@2806:10ae:7:f3be:b47:e21f:5e63:b176)
2022-07-19 22:00:50 +0200polo(~Gambino@user/polo)
2022-07-19 22:01:09 +0200jinsun__(~jinsun@user/jinsun)
2022-07-19 22:01:09 +0200jinsun__jinsun
2022-07-19 22:02:13 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-07-19 22:07:42 +0200polo(~Gambino@user/polo) (Read error: Connection reset by peer)
2022-07-19 22:08:58 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 22:09:04 +0200Polo(~Gambino@user/polo)
2022-07-19 22:11:28 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2022-07-19 22:12:57 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-19 22:14:16 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-07-19 22:15:07 +0200jinsunGuest4203
2022-07-19 22:15:07 +0200jinsun__(~jinsun@user/jinsun)
2022-07-19 22:15:07 +0200Guest4203(~jinsun@user/jinsun) (Killed (molybdenum.libera.chat (Nickname regained by services)))
2022-07-19 22:15:07 +0200jinsun__jinsun
2022-07-19 22:15:44 +0200econo(uid147250@user/econo)
2022-07-19 22:21:21 +0200Polo(~Gambino@user/polo) (Killed (tungsten.libera.chat (Nickname regained by services)))
2022-07-19 22:22:07 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net)
2022-07-19 22:22:41 +0200talismanick(~talismani@campus-043-126.ucdavis.edu)
2022-07-19 22:25:14 +0200nate4(~nate@98.45.169.16)
2022-07-19 22:27:38 +0200merijn(~merijn@c-001-001-002.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
2022-07-19 22:28:58 +0200asarch(~asarch@2806:10ae:7:f3be:b47:e21f:5e63:b176) (Quit: Leaving)
2022-07-19 22:30:31 +0200nate4(~nate@98.45.169.16) (Ping timeout: 272 seconds)
2022-07-19 22:31:51 +0200 <tomsmeding> exarkun: the llvm backend drove arm support until ghc's native code generator started supporting arm in either 9.0 or 9.2
2022-07-19 22:34:14 +0200 <wrengr> You might also want to take a look at MLIR which can do various vulkan/spirv things, and which has Haskell bindings
2022-07-19 22:34:34 +0200winny(~weechat@user/winny) (Remote host closed the connection)
2022-07-19 22:35:07 +0200winny(~weechat@user/winny)
2022-07-19 22:36:15 +0200raym(~raym@user/raym) (Remote host closed the connection)
2022-07-19 22:36:59 +0200Topsi(~Topsi@dyndsl-095-033-017-083.ewe-ip-backbone.de)
2022-07-19 22:47:38 +0200Topsi(~Topsi@dyndsl-095-033-017-083.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2022-07-19 22:49:09 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds)
2022-07-19 22:49:18 +0200talismanick(~talismani@campus-043-126.ucdavis.edu) (Ping timeout: 264 seconds)
2022-07-19 22:49:51 +0200nate4(~nate@98.45.169.16)
2022-07-19 22:56:05 +0200John_Ivan(~John_Ivan@user/john-ivan/x-1515935)
2022-07-19 22:56:29 +0200 <John_Ivan> Hi, anyone wanna tell me what does it mean by the following error? https://pastebin.com/7Qz9dME7
2022-07-19 22:56:34 +0200 <John_Ivan> main.hs:5:25: error:Variable not in scope:split :: (Char, String) -> [String]
2022-07-19 22:57:34 +0200 <[exa]> John_Ivan: it doesn't know the split function
2022-07-19 22:57:34 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f) (Remote host closed the connection)
2022-07-19 22:57:51 +0200 <John_Ivan> is the function a "variable?"
2022-07-19 22:58:20 +0200 <[exa]> yes, functions are normal values
2022-07-19 22:58:48 +0200 <[exa]> btw you seem to use C-style function argument passing -- haskell doesn't use the parentheses() to call
2022-07-19 22:58:59 +0200 <[exa]> the canonical way to call the split with 2 arguments is roughly like
2022-07-19 22:59:07 +0200 <[exa]> split '/' "some/string"
2022-07-19 22:59:17 +0200 <John_Ivan> [exa], ok I'll change that. what package would contain the "String.split" method?
2022-07-19 22:59:40 +0200 <[exa]> given ofcourse there's a function that does splitting
2022-07-19 22:59:51 +0200 <c_wraith> @hoogle split
2022-07-19 22:59:52 +0200 <lambdabot> Data.ByteString split :: Word8 -> ByteString -> [ByteString]
2022-07-19 22:59:52 +0200 <lambdabot> Data.ByteString.Char8 split :: Char -> ByteString -> [ByteString]
2022-07-19 22:59:52 +0200 <lambdabot> Data.ByteString.Lazy split :: Word8 -> ByteString -> [ByteString]
2022-07-19 23:00:01 +0200 <c_wraith> Hmm. not any of those. darn you, lambdabot!
2022-07-19 23:00:13 +0200 <c_wraith> it's in a package called... wait for it... split
2022-07-19 23:00:15 +0200 <[exa]> likely the one from Data.List.Split
2022-07-19 23:00:23 +0200 <[exa]> yeah, that one ^
2022-07-19 23:01:00 +0200 <John_Ivan> main.hs:1:1: error:Failed to load interface for ‘Data.List.Split’
2022-07-19 23:01:05 +0200 <John_Ivan> "import Data.List.Split" ;/
2022-07-19 23:01:57 +0200 <[exa]> John_Ivan: you might need to pass `-package split`
2022-07-19 23:02:09 +0200 <[exa]> (and maybe install the package)
2022-07-19 23:02:22 +0200 <John_Ivan> I'm using an online compiler - https://www.tutorialspoint.com/compile_haskell_online.php
2022-07-19 23:02:36 +0200 <[exa]> (at this point it may look weird that splitting is not in a total base library, but in functional programming this functionality is kinda frowned upon)
2022-07-19 23:02:39 +0200 <John_Ivan> so no standard library incorporated for string split handling? :(
2022-07-19 23:02:48 +0200 <John_Ivan> eh?
2022-07-19 23:02:53 +0200 <John_Ivan> how come
2022-07-19 23:03:11 +0200 <[exa]> too many ways to do it wrong
2022-07-19 23:03:59 +0200 <Rembane> Too many kinds of strings
2022-07-19 23:04:03 +0200 <John_Ivan> Every day, little by little, I lose faith in functional programming :(
2022-07-19 23:04:11 +0200 <[exa]> anyway, you can very easily do the split in a way that is good for you
2022-07-19 23:04:53 +0200 <John_Ivan> No, actually, sorry but I think I'll put haskell away for yet another few months. Because the more I explore this language, the more I find dissapointment in it than anything worthwhile.
2022-07-19 23:04:54 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 264 seconds)
2022-07-19 23:05:14 +0200 <John_Ivan> Sorry about that. Appreciate the help though.
2022-07-19 23:05:18 +0200 <[exa]> John_Ivan: in your case I'd use: splitAt _ [] = []; splitAt c xs = takeWhile (/= c) xs : splitAt c (dropWhile (/= c) xs)
2022-07-19 23:05:29 +0200 <c_wraith> Why do you think it has anything to do with "functional programming"?
2022-07-19 23:05:48 +0200 <c_wraith> It's much more a case of "most every standard library gets this wrong. let's not do that."
2022-07-19 23:05:52 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net)
2022-07-19 23:06:13 +0200 <John_Ivan> ok
2022-07-19 23:07:44 +0200 <John_Ivan> c_wraith, I do not see anything objectively or subjectively wrong with a clear functionality that involves iterating character by character and splitting a string into an array of strings by that delimiter.
2022-07-19 23:07:46 +0200 <[exa]> (btw my example there contains a small mistake, I sholdn't code directly to IRC :D )
2022-07-19 23:08:16 +0200 <John_Ivan> if the "functional programming" community does, then I don't know how to retaliate.
2022-07-19 23:08:52 +0200 <John_Ivan> [exa], that's ok, no worries.
2022-07-19 23:09:33 +0200 <c_wraith> John_Ivan: unicode breaks a lot of things
2022-07-19 23:09:53 +0200 <c_wraith> John_Ivan: for instance, there are a lot of glyphs which aren't represented by single codepoints.
2022-07-19 23:10:08 +0200 <John_Ivan> I suppose it does, isn't it wiser to offer the encoding you expect to work on in each string function?
2022-07-19 23:10:25 +0200 <c_wraith> that's not even the same thing
2022-07-19 23:10:31 +0200 <c_wraith> encoding is for bytes
2022-07-19 23:10:35 +0200 <c_wraith> unicode is about code points
2022-07-19 23:10:38 +0200y04nn4471(~y04nn@2001:ac8:28:95::a17e)
2022-07-19 23:10:46 +0200 <John_Ivan> yet no unicode implementation exists without bytes
2022-07-19 23:10:52 +0200 <John_Ivan> be it UTF8 or widechar
2022-07-19 23:10:55 +0200 <John_Ivan> or w/e
2022-07-19 23:10:57 +0200 <c_wraith> those are encodings
2022-07-19 23:11:02 +0200 <John_Ivan> hence my point.
2022-07-19 23:11:03 +0200 <c_wraith> unicode doesn't describe those
2022-07-19 23:11:14 +0200 <c_wraith> I mean, it does, in an appendix somewhere
2022-07-19 23:11:20 +0200 <c_wraith> but they're not what it's about
2022-07-19 23:11:30 +0200 <John_Ivan> alright.
2022-07-19 23:11:51 +0200 <[exa]> John_Ivan: btw that view of split assumes that you want to store the result (people rarely want to)
2022-07-19 23:12:21 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-19 23:13:05 +0200y04nn(~y04nn@nayon.fr) (Ping timeout: 260 seconds)
2022-07-19 23:14:17 +0200 <[exa]> John_Ivan: anyway for the specialized "array-ish" representation of strings (Data.Text) there's the obvious splitOn: https://hackage.haskell.org/package/text-2.0/docs/Data-Text.html#v:splitOn
2022-07-19 23:16:35 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2022-07-19 23:16:35 +0200 <slack1256> Do common complains to ORM apply to libraries such as opaleye?
2022-07-19 23:19:10 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-07-19 23:24:06 +0200yauhsien(~yauhsien@61-231-22-68.dynamic-ip.hinet.net)
2022-07-19 23:24:21 +0200_ht(~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
2022-07-19 23:25:15 +0200 <monochrom> Belated, but most users of string splitting libraries are aiming for parsing. We go ahead and do parsing directly.
2022-07-19 23:26:14 +0200 <monochrom> But yeah if you shoehorn an idiom designed for one programming style to another programming style, you are supposed to be disappointed.
2022-07-19 23:26:18 +0200Pickchea(~private@user/pickchea) (Ping timeout: 276 seconds)
2022-07-19 23:26:39 +0200 <monochrom> Why doesn't C let me define my own >>= operator, for example.
2022-07-19 23:26:52 +0200 <hpc> the real secret is to always be disappointed ahead of time, then you can do whatever you want :D
2022-07-19 23:26:58 +0200 <monochrom> Every time I look at Python untypedness I lose more faith in Python.
2022-07-19 23:27:33 +0200 <monochrom> If Java doesn't do things the Haskell way, why should Haskell do things the Java way?
2022-07-19 23:27:54 +0200 <Rembane> Wield your disappointment like a sword!
2022-07-19 23:28:18 +0200yauhsien(~yauhsien@61-231-22-68.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-07-19 23:29:12 +0200 <hpc> at the same time, there's more than one way to do it
2022-07-19 23:29:14 +0200chomwitt(~chomwitt@2a02:587:dc00:5a00:e3c4:775f:d866:7dfa) (Ping timeout: 272 seconds)
2022-07-19 23:29:37 +0200 <monochrom> More ways to be disappointed.
2022-07-19 23:29:38 +0200 <hpc> trying to write a functional zipper data structure in rust is a sure sign of insanity, for instance
2022-07-19 23:29:44 +0200 <hpc> just use an array or whatever
2022-07-19 23:29:53 +0200 <hpc> but maybe in haskell the zipper is better
2022-07-19 23:30:07 +0200 <Rembane> hpc: Is it possible to write a functional zipper data structure in Rust?
2022-07-19 23:30:17 +0200Midjak(~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
2022-07-19 23:31:20 +0200 <hpc> probably, but i don't know how i would do it once the direct way fails me
2022-07-19 23:31:30 +0200segfaultfizzbuzz(~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 276 seconds)
2022-07-19 23:32:07 +0200 <hpc> another good example, bash and haskell are both rather good at processing streams
2022-07-19 23:32:10 +0200 <hpc> but in very different ways
2022-07-19 23:32:11 +0200`2jt(~jtomas@141.red-88-17-65.dynamicip.rima-tde.net)
2022-07-19 23:32:11 +0200 <monochrom> It is possible but insane to write your own "data List a = Nil | Cons a (List a)" in Rust in the first place. :)
2022-07-19 23:32:22 +0200 <Rembane> But fun! :D
2022-07-19 23:32:45 +0200 <hpc> spoken like a true dwarf fortress player
2022-07-19 23:32:48 +0200 <monochrom> The ownership system is going to ask a lot of questions.
2022-07-19 23:33:07 +0200 <Rembane> hpc: How did you know that?! :D
2022-07-19 23:33:13 +0200 <monochrom> In 5 minutes you realize how much you have been taking GC for granted.
2022-07-19 23:34:08 +0200 <hpc> and then you have to debug weird gc pauses, and learn to appreciate ownership all over again
2022-07-19 23:34:22 +0200 <hpc> it's a neverending cycle :D
2022-07-19 23:34:28 +0200 <monochrom> There is no way to win.
2022-07-19 23:34:43 +0200 <hpc> i always miss do blocks though
2022-07-19 23:35:08 +0200 <hpc> doesn't matter what language it is, being able to create my own foo $ do {...} constructs is too powerful to give up
2022-07-19 23:36:13 +0200 <hpc> ruby can almost do it, if you can stomach the ridiculous object-y stuff you have to do
2022-07-19 23:36:24 +0200 <hpc> and rust almost feels like it already has everything you need
2022-07-19 23:36:38 +0200 <hpc> but i always want more
2022-07-19 23:37:49 +0200 <Rembane> hpc: Are you doing the Church-Gödel-Turing-thing but no do-blocks?
2022-07-19 23:38:02 +0200 <hpc> heh
2022-07-19 23:40:29 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-07-19 23:42:58 +0200`2jt(~jtomas@141.red-88-17-65.dynamicip.rima-tde.net) (Ping timeout: 240 seconds)
2022-07-19 23:43:53 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2da3:f583:8579:9c6f)
2022-07-19 23:45:02 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-07-19 23:46:35 +0200califax(~califax@user/califx) (Ping timeout: 268 seconds)
2022-07-19 23:47:06 +0200califax(~califax@user/califx)
2022-07-19 23:48:37 +0200winny_(~weechat@user/winny)
2022-07-19 23:49:03 +0200winny(~weechat@user/winny) (Ping timeout: 268 seconds)
2022-07-19 23:49:03 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 268 seconds)
2022-07-19 23:49:15 +0200nate4(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2022-07-19 23:49:35 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-07-19 23:52:27 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-07-19 23:55:34 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2022-07-19 23:55:36 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net)
2022-07-19 23:58:47 +0200chexum(~quassel@gateway/tor-sasl/chexum)