2022/08/14

2022-08-14 00:06:18 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-08-14 00:07:50 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-14 00:13:25 +0200nate4(~nate@98.45.169.16)
2022-08-14 00:16:38 +0200chomwitt(~chomwitt@2a02:587:dc15:5e00:1855:2a35:cc0e:e682) (Ping timeout: 268 seconds)
2022-08-14 00:18:16 +0200kannon(~NK@c-73-158-0-130.hsd1.ca.comcast.net)
2022-08-14 00:23:23 +0200 <kannon> https://paste.tomsmeding.com/lYOKTfBH hello I commented out the else statement in the remove function, and the error (only error?) was on my function 'f' . why would the error be found there if haskell didn't like the commenting of the else statement?
2022-08-14 00:23:50 +0200 <monochrom> Ugh, "else" is mandatory, not optional.
2022-08-14 00:24:55 +0200 <kannon> ok thanks but why would the error be on line 17?
2022-08-14 00:25:17 +0200 <kannon> for a different function call?
2022-08-14 00:25:26 +0200 <hpc> the location in the error message isn't where things went wrong
2022-08-14 00:25:27 +0200 <monochrom> The computer sees "... then funcname param1 param2 parm3 param4 = forbid x y" this is not what you think.
2022-08-14 00:25:30 +0200 <hpc> it's where the compiler was surprised
2022-08-14 00:25:49 +0200 <monochrom> And yes your "f" now becomes param4 of your "remove".
2022-08-14 00:25:58 +0200 <Bulby[m]> oh no my ocaml is seeping in
2022-08-14 00:26:09 +0200 <Bulby[m]> let in let in let in
2022-08-14 00:26:35 +0200 <monochrom> let-in is cool :)
2022-08-14 00:26:50 +0200 <Bulby[m]> oh well, perhaps it means the compiler has less to optimize
2022-08-14 00:26:58 +0200yvan-sraka(~yvan-srak@105.67.135.250) (Remote host closed the connection)
2022-08-14 00:27:00 +0200 <monochrom> ocaml is not seeping in until you write "letrec" :)
2022-08-14 00:27:07 +0200 <kannon> the compiler sees 'f' as an additional parameter of the remove function?
2022-08-14 00:27:18 +0200 <Bulby[m]> letrec is all lets, no?
2022-08-14 00:27:36 +0200 <hpc> kannon: it doesn't know what to think of it, but everything up until then was valid haskell
2022-08-14 00:27:40 +0200 <hpc> if not the haskell you intended
2022-08-14 00:27:50 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-08-14 00:27:50 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2022-08-14 00:28:02 +0200 <monochrom> There was a time I wrote Haskell code and Java code interleavingly. One day I found myself writing "public class MyMonadClass where" in both Haskell and Java.
2022-08-14 00:28:14 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-08-14 00:28:30 +0200 <monochrom> "unified electro-weak-haskell-java force"
2022-08-14 00:28:38 +0200 <Bulby[m]> i hate how verbose java is compared to kotlin and scala
2022-08-14 00:28:59 +0200 <monochrom> Oh hey you have the benefit of hindsight.
2022-08-14 00:29:07 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-08-14 00:29:28 +0200 <kannon> hpc: so the omission of the else statement is valid?
2022-08-14 00:29:34 +0200 <monochrom> Look at the bright side. You love how concise kotlin and scala are as successors of java. :)
2022-08-14 00:29:59 +0200 <Bulby[m]> successors right
2022-08-14 00:30:05 +0200 <Bulby[m]> if they were successors more people would use them 😢
2022-08-14 00:30:25 +0200 <monochrom> Right? One could say "I hate how verbose COBOL is compared to APL" but that's not how advancement works. :)
2022-08-14 00:30:45 +0200 <Bulby[m]> public static final int
2022-08-14 00:30:54 +0200 <hpc> kannon: to ghc, you haven't omitted the else
2022-08-14 00:30:58 +0200 <hpc> you just haven't gotten to it yet
2022-08-14 00:31:06 +0200 <darkling> I really must try out APL some day.
2022-08-14 00:31:06 +0200 <hpc> but there's this equals sign that doesn't belong
2022-08-14 00:31:25 +0200 <Bulby[m]> but then most people use java when targeting jvm
2022-08-14 00:31:34 +0200 <Bulby[m]> so you have to either write in java or port your code to java
2022-08-14 00:31:39 +0200 <Bulby[m]> porting is painful
2022-08-14 00:31:43 +0200 <Bulby[m]> public static final int
2022-08-14 00:31:46 +0200 <Bulby[m]> public static final int
2022-08-14 00:32:00 +0200 <monochrom> UCOJEL = Unified COBOL-Java Enterprise Language = "MULTIPLY X BY Y GIVING PUBLIC STATIC FINAL INT Z" >:)
2022-08-14 00:32:36 +0200 <hpc> it's not enterprise unless it's in excel
2022-08-14 00:32:56 +0200 <hpc> =UCOJEL("MULTIPLY $A$1 BY $B$1 GIVING ...")
2022-08-14 00:33:02 +0200 <darkling> It's not Enterprise unless you have five layers of constructor singletons between you and the object you want...
2022-08-14 00:33:17 +0200 <monochrom> Haha hpc that's even better
2022-08-14 00:33:50 +0200 <darkling> Although that said, I did once discover by design process why it looks like that. It made sense at the time, but it was still horrible to make.
2022-08-14 00:33:54 +0200 <Bulby[m]> https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
2022-08-14 00:34:01 +0200 <darkling> :)
2022-08-14 00:34:02 +0200 <monochrom> But perhaps we can add one more layer of SQL for finishing touch!
2022-08-14 00:34:11 +0200 <monochrom> I guess s/of/for/
2022-08-14 00:34:12 +0200 <darkling> monochrom: Only one? Coward!
2022-08-14 00:34:26 +0200 <int-e> darkling: and 3 XML files. Or maybe a merry mix of XML, JSON, and yaml these days.
2022-08-14 00:35:05 +0200 <darkling> I once encountered a codebase that had Java files with XML embedded in them, and XLM files with Java embedded in them.
2022-08-14 00:35:21 +0200 <monochrom> This is heading in the direction of "on the 12th day of christmas"...
2022-08-14 00:35:22 +0200 <darkling> Oh, and lots of XSLT.
2022-08-14 00:35:45 +0200 <hpc> 12 days of christmas? that's a lot of negative leap seconds
2022-08-14 00:35:55 +0200 <darkling> After reading it for a day or two, I realised that they'd reimplemented flex and yacc in Java. XML, and XSLT...
2022-08-14 00:36:20 +0200 <darkling> At that point, I tried to find the nearest waste paper basket to vomit in.
2022-08-14 00:36:47 +0200 <monochrom> Sounds like the basket will have a space leak...
2022-08-14 00:36:50 +0200 <kannon> that's very informative hpc. ghc hasn't seen the else statement yet. considering allowed indentation and the empty line on 16, isn't that a design flaw?
2022-08-14 00:37:27 +0200 <darkling> The application was doing (highly constrained) NLP for synthetic organic chemistry papers, converting to a custom XML knowledge representation format.
2022-08-14 00:37:59 +0200 <kannon> why wouldnt an empty line signify the end of a if/then/else ?
2022-08-14 00:38:07 +0200 <monochrom> Well, at least the IUPAC names are highly mechanically NLP-able. :)
2022-08-14 00:38:51 +0200 <darkling> Synthesis papers are *very* formulaic.
2022-08-14 00:38:55 +0200 <hpc> empty lines are ignored so you can write longer definitions without it being a wall of text
2022-08-14 00:39:18 +0200 <hpc> also, i was mistaken about the error being on the equals sign
2022-08-14 00:39:33 +0200 <darkling> "To 10ml of X was aded 120 mg of Y, and heated under Z atmosphere to W °C..."
2022-08-14 00:39:36 +0200 <hpc> it's saying it didn't expect the 'f', /because/ it expected indentation
2022-08-14 00:39:47 +0200 <monochrom> Considering layout, I was likely mistaken too.
2022-08-14 00:39:49 +0200 <hpc> (or else, at slightly lower indentation)
2022-08-14 00:39:56 +0200 <hpc> so all working as intended
2022-08-14 00:40:07 +0200 <hpc> and the surprise is right where it should be
2022-08-14 00:40:11 +0200 <monochrom> But arguing parse error messages is futile. There is no way to win.
2022-08-14 00:40:43 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
2022-08-14 00:40:45 +0200 <kannon> ok else is required to finish if/then/else. thanks a lot hpc
2022-08-14 00:40:51 +0200 <qrpnxz> can now sum 1 billion random 16-bit words from stdin in 8.8 seconds. 😃
2022-08-14 00:41:01 +0200 <qrpnxz> tests are going well
2022-08-14 00:41:03 +0200 <kannon> and monochrom
2022-08-14 00:43:01 +0200 <qrpnxz> (with 1.7MB of memory btw)
2022-08-14 00:43:18 +0200 <d34df00d> How can ghc derive Eq for smth like `data Foo = Foo { foo :: forall a. Num a => a }`?
2022-08-14 00:43:31 +0200 <monochrom> I think it can't.
2022-08-14 00:43:33 +0200 <d34df00d> If I understand correctly, foo :: forall a. Num a => a is effectively a function from dictionaries of Num a to a.
2022-08-14 00:43:39 +0200 <d34df00d> monochrom: it can with standalone deriving.
2022-08-14 00:44:00 +0200Inst(~Inst@2601:6c4:4080:3f80:38a1:ad8c:aa85:4bd8)
2022-08-14 00:44:05 +0200 <Inst> hi, a question guys before I leave
2022-08-14 00:44:17 +0200 <Inst> I've been irritating everyone with my blackjack solver that fucks up because I'm running a brute force minimax algorithm
2022-08-14 00:44:23 +0200 <Inst> and it requires tremendous amounts of memory
2022-08-14 00:44:31 +0200 <Inst> I've decided to wholly rewrite it in main.hs
2022-08-14 00:44:34 +0200 <Inst> using Vectors instead
2022-08-14 00:45:14 +0200 <monochrom> Then it would be interesing to see what it actually derives.
2022-08-14 00:45:35 +0200 <d34df00d> monochrom: I just did -ddump-deriv, and it derives smth reasonable:
2022-08-14 00:45:38 +0200 <Inst> in terms of memory, is it better to use a memoizing approach to initialize the vector using an accumulator
2022-08-14 00:45:43 +0200 <d34df00d> instance GHC.Classes.Eq Ghci13.Foo where (GHC.Classes.==) (Ghci13.Foo a1_a45r) (Ghci13.Foo b1_a45s) = ((a1_a45r GHC.Classes.== b1_a45s))
2022-08-14 00:45:45 +0200 <Inst> or to use iterate?
2022-08-14 00:45:57 +0200 <monochrom> In all likelihood it generates the lackbuster "instance Eq (forall a. Num a => a) => Eq Foo" so now it's tautologically useless.
2022-08-14 00:46:12 +0200 <d34df00d> monochrom: it's not. Foo 10 == Foo 10 is True, and Foo 10 == Foo 20 is False.
2022-08-14 00:46:52 +0200 <d34df00d> (also it doesn't even ask for -XQuantifiedConstraints, so the instance is probably simpler)
2022-08-14 00:47:27 +0200 <d34df00d> (I also misparsed what you meant by "tautologically useless" at first, sorry)
2022-08-14 00:47:37 +0200 <monochrom> Hrm.
2022-08-14 00:48:01 +0200 <monochrom> Does the GHC User's Guide say something about this?
2022-08-14 00:48:18 +0200 <d34df00d> I quickly skimmed it before asking and didn't find anything relevant.
2022-08-14 00:49:34 +0200 <d34df00d> …because, of course, one cannot just write simple weekend fun web apps without GADTs and RankNTypes and what not.
2022-08-14 00:53:11 +0200alp_(~alp@user/alp)
2022-08-14 00:54:13 +0200alp_(~alp@user/alp) (Client Quit)
2022-08-14 00:56:22 +0200shriekingnoise(~shrieking@186.137.167.202)
2022-08-14 00:58:38 +0200 <kannon> hpc if you're around later I have other questions about upvoted answer, where I found the forbid/remove programs, thanks: https://stackoverflow.com/questions/53217914/maybe-monad-and-a-list
2022-08-14 01:01:47 +0200 <kannon> at one point the author of forbid/remove says the structure is the same, I'm assuming they mean ' noneOrNothing :: (a -> Bool) -> [a] -> Maybe [a] '
2022-08-14 01:04:00 +0200mikoto-chan(~mikoto-ch@164.5.249.78)
2022-08-14 01:06:38 +0200kannon(~NK@c-73-158-0-130.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
2022-08-14 01:07:18 +0200 <qrpnxz> naive parsing and summing words one by one take 2 minutes. So my chunking method run in 7.3% the time, or 13.6 times faster!
2022-08-14 01:09:09 +0200 <qrpnxz> well i should say naive, naive is with a list and that eats all memory and never finish. Streaming one by one take 2 minutes. unboxed chunked stream take 8.8 seconds
2022-08-14 01:09:20 +0200 <qrpnxz> *should not
2022-08-14 01:11:47 +0200forell(~forell@user/forell) (Quit: ZNC - https://znc.in)
2022-08-14 01:13:35 +0200forell(~forell@user/forell)
2022-08-14 01:14:26 +0200Tuplanolla(~Tuplanoll@91-159-69-12.elisa-laajakaista.fi) (Quit: Leaving.)
2022-08-14 01:18:09 +0200bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 268 seconds)
2022-08-14 01:21:33 +0200 <qrpnxz> if i need to swap endianness it's only 12 seconds vs 8 😱
2022-08-14 01:24:11 +0200 <qrpnxz> (and uses same memory (!))
2022-08-14 01:24:28 +0200Maxdamantus(~Maxdamant@user/maxdamantus) (Ping timeout: 268 seconds)
2022-08-14 01:28:18 +0200Unhammer(~Unhammer@user/unhammer) (Ping timeout: 240 seconds)
2022-08-14 01:29:35 +0200MajorBiscuit(~MajorBisc@46-229-126.internethome.cytanet.com.cy) (Ping timeout: 255 seconds)
2022-08-14 01:38:38 +0200 <monochrom> Hrm, if you use an ARM CPU, there is a flag you can toggle to switch endianness >:)
2022-08-14 01:39:13 +0200 <monochrom> Dr. Strange in The Multiverse of Endian Madness :)
2022-08-14 01:39:33 +0200 <geekosaur> mips had that too
2022-08-14 01:39:37 +0200 <darkling> PPC allowed that too.
2022-08-14 01:39:59 +0200 <monochrom> >_<
2022-08-14 01:40:18 +0200gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2022-08-14 01:40:37 +0200 <darkling> It wasn't until I tried writing arbitrary-length arithmetic code for Z80 last year that I realised why little-endinan is so much better.
2022-08-14 01:40:37 +0200bontaq(~user@ool-45779fe5.dyn.optonline.net)
2022-08-14 01:40:53 +0200 <monochrom> :)
2022-08-14 01:41:18 +0200 <geekosaur> Z80? haven't touched that since the early 80s
2022-08-14 01:41:27 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-08-14 01:41:33 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit)
2022-08-14 01:41:43 +0200 <darkling> I've got a SpecNext -- Z80N
2022-08-14 01:42:19 +0200jgeerds(~jgeerds@55d46bad.access.ecotel.net) (Ping timeout: 252 seconds)
2022-08-14 01:42:39 +0200 <darkling> I've got a meta-assembler sitting on the shelf since last year with Z80N as the first working target. I should probably revisit that and get it to releasable form.
2022-08-14 01:44:51 +0200 <darkling> Got a bunch of rewriting in the parser to make it useful for ARM3 first, though. :(
2022-08-14 01:45:56 +0200gentauro(~gentauro@user/gentauro)
2022-08-14 01:46:28 +0200kitty4(~kitty@096-039-147-043.res.spectrum.com)
2022-08-14 01:46:39 +0200 <qrpnxz> monochrom: bruh, i legit have a cracked `endianness` thing that does unsafePerformIO to figure it out, and the comment says "not expecting endianness to change at runtime, are we?". You've destroyed me 😭
2022-08-14 01:48:09 +0200 <qrpnxz> toggling that flag sounds hella unsafe. Can userspace even touch that?
2022-08-14 01:48:33 +0200 <darkling> It's usually a very early boot-time thing.
2022-08-14 01:48:42 +0200 <qrpnxz> makes sense lol
2022-08-14 01:49:00 +0200 <darkling> Firmware option, I think.
2022-08-14 01:50:28 +0200 <darkling> I don't know if it flips the instruction byte order. (On any of the mentioned architectures).
2022-08-14 01:51:02 +0200 <darkling> AFAIK, most people just go for little-endian. BE is an oddity.
2022-08-14 01:51:36 +0200 <qrpnxz> i believe powerpc was BE
2022-08-14 01:51:46 +0200 <geekosaur> both-endian
2022-08-14 01:51:50 +0200 <qrpnxz> lol
2022-08-14 01:51:53 +0200 <geekosaur> with a cpu flag as mentioned
2022-08-14 01:52:25 +0200 <geekosaur> I have no clue what they were thinking
2022-08-14 01:52:56 +0200 <darkling> Yeah, I remember seeing ads for the first revision of the PPC platform (PREP?) from IBM.
2022-08-14 01:53:01 +0200 <qrpnxz> so called network order is BE. No idea why. atm i'm working on a parser for a network protocol called packstream that also does BE
2022-08-14 01:53:06 +0200 <darkling> Definiotely endian-switchable.
2022-08-14 01:53:12 +0200 <geekosaur> because Sun was BE
2022-08-14 01:53:20 +0200 <geekosaur> originally MC68020 then SPARC
2022-08-14 01:54:46 +0200 <geekosaur> and many of the core TCP/IP protocols came out of Stanford (now look up what Sun originally stood for: Stanford University Networking)
2022-08-14 01:55:22 +0200 <darkling> PDP-11(?) had some funky endianness going on -- the CPU had 18-bit memory locations, with 36-bit registers, but split characters into 9-bit values packed into the 18-bit memory locations, so you could have any combination of LE(byte)+LE(char), LE(byte)+BE(char), ...
2022-08-14 01:56:05 +0200 <geekosaur> actually pdp11 was the sane one with bytes
2022-08-14 01:56:05 +0200 <darkling> So there was a middle-endian possibility that led to the string "UNIX" being displayed as "NUXI".
2022-08-14 01:56:17 +0200 <geekosaur> 18- and 36-bit stuff was on most of the other DEC models
2022-08-14 01:56:18 +0200 <darkling> Maybe I'm thinking of PDP-8.
2022-08-14 01:56:45 +0200 <darkling> It's been a while since I dug into the detail of the PDPs.
2022-08-14 01:56:57 +0200 <geekosaur> but pdp11 did have that weird mixed-endian 32-bit thing, yes
2022-08-14 01:59:56 +0200 <geekosaur> the 9-bit "byte" thing did affect other protocols; FTP still has TYPE L 8 to specify compatibility with those systems, although I think the last few were retired in 1995ish
2022-08-14 02:00:48 +0200 <darkling> It was one of the design goals of my meta-assembler that it would support things like 9- or 18-bit bytes.
2022-08-14 02:01:19 +0200 <darkling> I had plenty of other fish to fry in getting the Z80N stuff working first, but at least I know where it was trying to go. :)
2022-08-14 02:04:19 +0200zeenk(~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f) (Quit: Konversation terminated!)
2022-08-14 02:10:35 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2022-08-14 02:11:17 +0200liz(~liz@host86-157-124-38.range86-157.btcentralplus.com) (Quit: Lost terminal)
2022-08-14 02:12:00 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-08-14 02:12:20 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-08-14 02:18:02 +0200mvk(~mvk@2607:fea8:5ce3:8500::a1ec)
2022-08-14 02:18:15 +0200Batzy_(~quassel@user/batzy) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-08-14 02:18:48 +0200Batzy(~quassel@user/batzy)
2022-08-14 02:20:53 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 255 seconds)
2022-08-14 02:21:09 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-08-14 02:22:06 +0200Pickchea(~private@user/pickchea)
2022-08-14 02:22:07 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit)
2022-08-14 02:24:33 +0200luffy(~chenqisu1@183.217.201.23)
2022-08-14 02:27:43 +0200Maxdamantus(~Maxdamant@user/maxdamantus)
2022-08-14 02:32:08 +0200gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2022-08-14 02:33:32 +0200E23[m](~mkomlofsk@2001:470:69fc:105::2:4224) (Quit: User was banned)
2022-08-14 02:36:50 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-08-14 02:37:44 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-08-14 02:38:08 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-08-14 02:38:19 +0200Pickchea(~private@user/pickchea) (Ping timeout: 268 seconds)
2022-08-14 02:43:25 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-14 02:45:39 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net)
2022-08-14 02:50:10 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
2022-08-14 02:51:22 +0200mikoto-chan(~mikoto-ch@164.5.249.78) (Read error: Connection reset by peer)
2022-08-14 03:02:12 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net)
2022-08-14 03:04:10 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-08-14 03:04:34 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-08-14 03:06:42 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
2022-08-14 03:09:50 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2022-08-14 03:10:19 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-08-14 03:11:21 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-08-14 03:11:25 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
2022-08-14 03:11:44 +0200ryantrinkle(~ryan@2607:f00:3:14c0:7c6b:7160:d1ff:3f7) (Ping timeout: 255 seconds)
2022-08-14 03:16:26 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-08-14 03:20:34 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net)
2022-08-14 03:23:21 +0200ryantrinkle(~ryan@209.91.209.121)
2022-08-14 03:24:47 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
2022-08-14 03:43:35 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-08-14 03:43:35 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-08-14 03:43:36 +0200wroathe(~wroathe@user/wroathe)
2022-08-14 03:45:21 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2022-08-14 03:46:36 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-08-14 03:47:31 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-08-14 03:52:43 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-14 03:53:00 +0200Feuermagier(~Feuermagi@user/feuermagier)
2022-08-14 03:53:54 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net)
2022-08-14 03:58:00 +0200nilradical(~nilradica@user/naso)
2022-08-14 03:58:22 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
2022-08-14 04:07:02 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-08-14 04:07:19 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-08-14 04:09:13 +0200Jeanne-Kamikaze(~Jeanne-Ka@142.147.89.253)
2022-08-14 04:12:29 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-08-14 04:12:29 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-08-14 04:12:29 +0200finn_elijaFinnElija
2022-08-14 04:21:33 +0200 <Bulby[m]> is vector what you use for random access containers
2022-08-14 04:28:51 +0200td_(~td@muedsl-82-207-238-051.citykom.de) (Ping timeout: 268 seconds)
2022-08-14 04:30:35 +0200td_(~td@94.134.91.250)
2022-08-14 04:31:26 +0200 <Bulby[m]> mood
2022-08-14 04:33:32 +0200kavvadias(~kavvadias@2001:9e8:630d:e200:2032:f506:e11d:b38d)
2022-08-14 04:34:15 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2022-08-14 04:35:29 +0200nate4(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-08-14 04:36:52 +0200 <kavvadias> hello everyone im having some problems with trying to print a list of tuples on a terminal game im trying to do, is anyone able to help out a bit?
2022-08-14 04:37:04 +0200 <kavvadias> where im struggling looks like that
2022-08-14 04:37:41 +0200 <kavvadias>  let aliens (a:as) = lift . lift $ setCursorPosition a >>= putChar '@' >>= aliens a
2022-08-14 04:38:19 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2022-08-14 04:39:44 +0200 <kavvadias> also the github is here https://github.com/Astodialo/space_inv
2022-08-14 04:45:50 +0200 <ski> what's the problem ?
2022-08-14 04:46:24 +0200 <kavvadias> well im lost in types tbh
2022-08-14 04:46:29 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net)
2022-08-14 04:46:41 +0200 <ski> type error(s) ?
2022-08-14 04:46:47 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-08-14 04:46:54 +0200 <kavvadias> yes
2022-08-14 04:47:00 +0200 <ski> specifically ?
2022-08-14 04:47:55 +0200 <ski> (should `randomRIO (0, mCol)' be `randomRIO (0,mCol - 1)' ?)
2022-08-14 04:49:12 +0200 <kavvadias> yes
2022-08-14 04:49:16 +0200 <kavvadias> thanks
2022-08-14 04:49:59 +0200 <ski> i'm still missing the type error messages
2022-08-14 04:50:40 +0200 <kavvadias> Couldn't match expected type ‘IO () -> Int -> a’
2022-08-14 04:50:40 +0200 <kavvadias>                   with actual type ‘IO ()’
2022-08-14 04:51:04 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
2022-08-14 04:51:42 +0200mvk(~mvk@2607:fea8:5ce3:8500::a1ec) (Ping timeout: 264 seconds)
2022-08-14 04:51:43 +0200 <ski> however, `aliens' does look incorrect. `lift . lift $ setCursorPosition a' probably would be better as `(lift . lift) (setCursorPosition a)' (because `foo $ blah >>= bleh' is read as `foo $ (blah >>= bleh)', rather than `(foo $ blah) >>= bleh')
2022-08-14 04:52:15 +0200 <ski> also, `... >>= aliens a' presumably ought to be `... >>= aliens as'
2022-08-14 04:52:37 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-08-14 04:52:46 +0200 <ski> also, `>>=' looks like you meant to say `>>' (or you could use `do'-notation)
2022-08-14 04:53:00 +0200 <c_wraith> I'm getting the feeling the whole thing should be a mapM_
2022-08-14 04:53:11 +0200mvk(~mvk@2607:fea8:5ce3:8500::a1ec)
2022-08-14 04:53:15 +0200 <ski> (and there's no base case)
2022-08-14 04:55:29 +0200 <ski> if you make a `newtype' for `ReaderT Config (StateT Game IO)', and derive `Functor',`Applicative',`Monad',`MonadReader Config',`MonadState Game',`MonadIO', you could use `liftIO' rather than `lift . lift'. and if you decide you need another layer, you don't need to change (again) the type signatures of `play' and `renderGame'
2022-08-14 04:57:19 +0200 <kavvadias> would the base case return () ?
2022-08-14 04:57:41 +0200 <ski> i don't know. depends on what you want `aliens' to do ?
2022-08-14 04:58:31 +0200 <ski> (and in such a case, c_wraith's suggestion would be appropriate)
2022-08-14 04:59:03 +0200 <ski> oh, you're also shadowing the earlier `aliens' by the function definition
2022-08-14 04:59:35 +0200 <ski> is `N' only used initially ?
2022-08-14 04:59:38 +0200 <kavvadias> have never used mapM
2022-08-14 04:59:44 +0200 <kavvadias> ill read up on it
2022-08-14 05:00:09 +0200 <ski> try something like `mapM_ print [2,3,5,7]'
2022-08-14 05:00:31 +0200 <energizer> in python if mymod.py does `from collections import *` then the mymod.OrderedDict binding is created. is the same true in haskell?
2022-08-14 05:00:51 +0200 <ski> or `forM_ [2,3,5,7] $ \n -> do print n'
2022-08-14 05:01:48 +0200 <ski> `OrderedDict' being what, in the Haskell case ?
2022-08-14 05:02:40 +0200 <energizer> ski: just some name in the collections module.
2022-08-14 05:02:46 +0200 <energizer> i'm asking about scope rules
2022-08-14 05:03:55 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-08-14 05:04:33 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-08-14 05:05:29 +0200 <Bulby[m]> writing haskell makes me miss langs that have braces lol
2022-08-14 05:05:55 +0200 <energizer> like, is import the same as assigning here.name = there.name, or is there something else going on
2022-08-14 05:06:50 +0200 <c_wraith> there's something else going on, in that importing the same name unqualified from multiple modules isn't an error unless you try to use that name.
2022-08-14 05:07:21 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-08-14 05:07:23 +0200nilradical(~nilradica@user/naso) (Remote host closed the connection)
2022-08-14 05:07:32 +0200 <ski> energizer : if you do `import Collections' and `Collections' exports `OrderedDict', then `OrderedDict' is in scope inside `MyMod.hs', but is not exported from it. you could put `foo' in the export list of `MyMod', though
2022-08-14 05:07:44 +0200 <DigitalKiwi> i thought you can use braces
2022-08-14 05:07:48 +0200 <ski> Bulby[m] : you know you can use braces and semicolons in Haskell too, right ?
2022-08-14 05:07:53 +0200 <Bulby[m]> you can technically
2022-08-14 05:08:12 +0200nilradical(~nilradica@user/naso)
2022-08-14 05:08:16 +0200 <DigitalKiwi> iirc spj style uses them
2022-08-14 05:09:19 +0200 <Bulby[m]> > Haskell can be written using braces and semi-
2022-08-14 05:09:20 +0200 <Bulby[m]> colons, just like C.
2022-08-14 05:09:20 +0200 <Bulby[m]> lol
2022-08-14 05:09:21 +0200 <lambdabot> <hint>:1:46: error:
2022-08-14 05:09:21 +0200 <lambdabot> parse error (possibly incorrect indentation or mismatched brackets)
2022-08-14 05:09:24 +0200 <energizer> thanks c_wraith ski
2022-08-14 05:09:27 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-08-14 05:09:27 +0200 <Bulby[m]> > However, no one does.
2022-08-14 05:09:29 +0200 <lambdabot> <hint>:1:8: error: parse error on input ‘,’
2022-08-14 05:09:38 +0200 <Bulby[m]> oh
2022-08-14 05:14:24 +0200sympt(~sympt@user/sympt)
2022-08-14 05:16:51 +0200nate4(~nate@98.45.169.16)
2022-08-14 05:17:55 +0200 <Bulby[m]> it complains when I try to use a brace
2022-08-14 05:17:56 +0200 <Bulby[m]> oh
2022-08-14 05:17:56 +0200 <Bulby[m]> nvm
2022-08-14 05:18:12 +0200_xor(~xor@74.215.182.83) (Quit: WeeChat 3.0)
2022-08-14 05:19:13 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-08-14 05:20:32 +0200etoast(~exaltedto@user/exaltedtoast) (Quit: Tschüss)
2022-08-14 05:21:17 +0200etoast(~exaltedto@user/exaltedtoast)
2022-08-14 05:22:43 +0200 <kavvadias> well hello again, tried to use mapM_ and came up with something like this
2022-08-14 05:22:45 +0200 <kavvadias> lift . lift $ mapM_ setCursorPosition >>= putChar '@' aliens
2022-08-14 05:23:08 +0200 <kavvadias> it still dont work
2022-08-14 05:23:19 +0200 <kavvadias> Couldn't match expected type ‘Aliens -> a0 -> IO a1’
2022-08-14 05:23:20 +0200 <kavvadias>                   with actual type ‘IO ()’
2022-08-14 05:23:52 +0200 <kavvadias> would i have to lift mapM_ ?
2022-08-14 05:25:32 +0200etoast(~exaltedto@user/exaltedtoast) (Client Quit)
2022-08-14 05:28:55 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 252 seconds)
2022-08-14 05:35:03 +0200 <ski> kavvadias : you still should not use `$' like that
2022-08-14 05:35:20 +0200 <ski> (in my mind, you shouldn't use `$' at all, mostly)
2022-08-14 05:35:44 +0200 <ski> and you should pass two parameters to `mapM_'
2022-08-14 05:36:03 +0200 <ski> (did you check its type signature ?)
2022-08-14 05:37:02 +0200 <kavvadias> to be honest right now im kind of trying everything because my head is gone
2022-08-14 05:37:08 +0200 <kavvadias> mapM_ setCursorPosition aliens
2022-08-14 05:37:16 +0200 <ski> (you seem to be using `>>=' without no clear understanding what it's doing, or how it's meant to be called. perhaps you should stick with `do', for now ?)
2022-08-14 05:37:50 +0200 <ski> forM_ aliens \alien -> do
2022-08-14 05:37:56 +0200 <ski> setCursorPosition alien
2022-08-14 05:38:05 +0200 <ski> liftIO (putChar '@')
2022-08-14 05:38:42 +0200 <ski> well, you need `.. aliens $ \alien -> do ..', if you don't enable `BlockArguments'
2022-08-14 05:41:42 +0200kimjetwav(~user@2607:fea8:235e:b600:10e5:8f0a:fe7a:2725) (Quit: sigh, reboot time)
2022-08-14 05:41:45 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
2022-08-14 05:44:14 +0200 <kavvadias> instead of $ then use (), okay i was thinking that it was basically a substitute for it
2022-08-14 05:44:30 +0200 <Bulby[m]> old versions of minecraft use unaligned bytereads
2022-08-14 05:44:31 +0200 <Bulby[m]> why
2022-08-14 05:45:48 +0200 <kavvadias> still getting a type error
2022-08-14 05:45:49 +0200 <kavvadias> Couldn't match expected type ‘ReaderT Config (StateT Game IO) a0’
2022-08-14 05:45:49 +0200 <kavvadias>                   with actual type ‘Int -> IO ()’
2022-08-14 05:46:22 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net)
2022-08-14 05:47:59 +0200 <ski> kavvadias : for the most part, i'd be happy with `$' being purged (at least given `BlockArguments')
2022-08-14 05:48:30 +0200 <ski> kavvadias : and you forgot to provide the current code which is being flagged for that error
2022-08-14 05:48:53 +0200 <kavvadias> Couldn't match expected type ‘ReaderT Config (StateT Game IO) a0’
2022-08-14 05:48:53 +0200 <kavvadias>                   with actual type ‘Int -> IO ()’
2022-08-14 05:49:15 +0200 <kavvadias> oh wait, sorry
2022-08-14 05:49:33 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-08-14 05:49:41 +0200 <kavvadias> Probable cause: ‘setCursorPosition’ is applied to too few arguments
2022-08-14 05:49:42 +0200 <kavvadias>       In a stmt of a 'do' block: setCursorPosition alien
2022-08-14 05:49:42 +0200 <kavvadias>       In the expression:
2022-08-14 05:49:43 +0200 <kavvadias>         do setCursorPosition alien
2022-08-14 05:49:43 +0200 <kavvadias>            liftIO (putChar '@')
2022-08-14 05:49:44 +0200 <kavvadias>       In the second argument of ‘($)’, namely
2022-08-14 05:49:44 +0200 <kavvadias>         ‘\ alien
2022-08-14 05:49:45 +0200 <kavvadias>            -> do setCursorPosition alien
2022-08-14 05:49:46 +0200 <kavvadias>    |
2022-08-14 05:49:46 +0200 <kavvadias> 60 | setCursorPosition alien
2022-08-14 05:50:22 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-08-14 05:51:02 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds)
2022-08-14 05:51:59 +0200 <ski> well, what's the signature of `System.Console.ANSI.setCursorPosition' ? maybe it does want another argument ?
2022-08-14 05:52:19 +0200 <ski> (oh, and it probably also needs to be `liftIO'ed)
2022-08-14 05:54:27 +0200 <kavvadias> its Int -> Int -> IO ()
2022-08-14 05:54:52 +0200 <ski> there you go
2022-08-14 05:55:07 +0200etoast(~exaltedto@user/exaltedtoast)
2022-08-14 05:55:41 +0200kitty4(~kitty@096-039-147-043.res.spectrum.com) (Ping timeout: 252 seconds)
2022-08-14 05:55:42 +0200 <kavvadias> alien is a list of tuples tho
2022-08-14 05:55:55 +0200 <ski> so use `\(row,col) -> do setCursorPosition row col; ...' (or maybe the other way around, depending on how `setCursorPosition' wants it)
2022-08-14 05:55:58 +0200kitty4(~kitty@096-039-147-043.res.spectrum.com)
2022-08-14 05:56:08 +0200 <kavvadias> oh ok
2022-08-14 05:56:35 +0200 <ski> (and probably best to move the `liftIO' outside of the `forM_')
2022-08-14 05:56:56 +0200etoast(~exaltedto@user/exaltedtoast) (Client Quit)
2022-08-14 05:59:36 +0200 <kavvadias>  liftIO forM_ aliens \(row, col) -> do
2022-08-14 05:59:37 +0200 <kavvadias>     setCursorPosition row col
2022-08-14 05:59:37 +0200 <kavvadias>     putChar '@'
2022-08-14 05:59:57 +0200 <kavvadias> Couldn't match expected type ‘IO
2022-08-14 05:59:58 +0200 <kavvadias>                                       (((Int, Int) -> IO ()) -> ReaderT Config (StateT Game IO) a1)’
2022-08-14 05:59:58 +0200 <kavvadias>                   with actual type ‘t0 a0 -> (a0 -> m0 b0) -> m0 ()’
2022-08-14 05:59:59 +0200 <kavvadias>     • Probable cause: ‘forM_’ is applied to too few arguments
2022-08-14 05:59:59 +0200 <kavvadias>       In the first argument of ‘liftIO’, namely ‘forM_’
2022-08-14 06:00:00 +0200 <kavvadias>       In the expression: liftIO forM_ aliens
2022-08-14 06:00:00 +0200 <kavvadias>       In a stmt of a 'do' block:
2022-08-14 06:00:01 +0200 <kavvadias>         liftIO forM_ aliens
2022-08-14 06:00:01 +0200 <kavvadias>           $ \ (row, col)
2022-08-14 06:00:02 +0200 <kavvadias>               -> do setCursorPosition row col
2022-08-14 06:00:02 +0200 <kavvadias>                     putChar '@'
2022-08-14 06:00:03 +0200 <kavvadias>    |
2022-08-14 06:00:03 +0200 <kavvadias> 60 | liftIO forM_ aliens $ \(row, col) -> do
2022-08-14 06:00:04 +0200 <kavvadias>    | ^^^^^
2022-08-14 06:00:21 +0200 <kavvadias> ive put BLockArguments btw
2022-08-14 06:00:48 +0200etoast(~exaltedto@user/exaltedtoast)
2022-08-14 06:00:49 +0200 <kavvadias> oh i forgot the $ in there
2022-08-14 06:01:02 +0200 <kavvadias> oh no i didnt
2022-08-14 06:01:08 +0200 <kavvadias> :w
2022-08-14 06:01:58 +0200etoast(~exaltedto@user/exaltedtoast) (Client Quit)
2022-08-14 06:02:57 +0200 <ski> (liftIO . forM_ aliens) \(row,col) -> do ...
2022-08-14 06:03:04 +0200Typedfern(~Typedfern@202.red-83-37-35.dynamicip.rima-tde.net) (Read error: Connection reset by peer)
2022-08-14 06:03:04 +0200etoast(~exaltedto@user/exaltedtoast)
2022-08-14 06:03:09 +0200etoast(~exaltedto@user/exaltedtoast) (Client Quit)
2022-08-14 06:03:25 +0200etoast(~exaltedto@user/exaltedtoast)
2022-08-14 06:03:30 +0200 <ski> (or `liftIO (forM_ aliens \(row,col) -> do ...)')
2022-08-14 06:05:34 +0200 <DigitalKiwi> you forgot to use a pastebin is what you did
2022-08-14 06:06:29 +0200 <kavvadias> im forgetting how to function aswell so long im on this :)
2022-08-14 06:06:34 +0200etoast(~exaltedto@user/exaltedtoast) (Client Quit)
2022-08-14 06:06:47 +0200 <kavvadias> but yeah, sorry about that
2022-08-14 06:08:32 +0200Typedfern(~Typedfern@202.red-83-37-35.dynamicip.rima-tde.net)
2022-08-14 06:08:40 +0200etoast(~exaltedto@user/exaltedtoast)
2022-08-14 06:10:19 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2022-08-14 06:10:23 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-08-14 06:10:49 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-08-14 06:10:59 +0200 <Bulby[m]> k, I have a list of tuples that hold an index for items to be placed and a list of those items
2022-08-14 06:11:08 +0200 <Bulby[m]> is there a neat way of assembling the overall list
2022-08-14 06:11:40 +0200mvk(~mvk@2607:fea8:5ce3:8500::a1ec) (Ping timeout: 244 seconds)
2022-08-14 06:11:54 +0200 <Bulby[m]> it's fairly large
2022-08-14 06:12:13 +0200 <kavvadias> im still getting type errors https://pastebin.com/Z6JqBJDA
2022-08-14 06:13:48 +0200nattiestnate(~nate@180.243.14.16) (Quit: WeeChat 3.6)
2022-08-14 06:16:42 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds)
2022-08-14 06:16:52 +0200 <ski> kavvadias : insert `_getAliens' somewhere
2022-08-14 06:17:19 +0200 <ski> Bulby[m] : that's rather vague
2022-08-14 06:17:26 +0200 <Bulby[m]> true
2022-08-14 06:17:59 +0200 <Bulby[m]> trying to connect up this https://github.com/jmc2obj/j-mc-2-obj/blob/master/src/org/jmc/Chunk.java#L307 without using mutable data
2022-08-14 06:18:59 +0200 <Bulby[m]> i got to a `[(Int, [BlockData])]`
2022-08-14 06:20:15 +0200 <ski> if you have say input `[(2,"abc"),(8,"de")]', what output are you looking for ?
2022-08-14 06:20:30 +0200 <ski> (or maybe you'll be able to come up with a better example yourself)
2022-08-14 06:21:08 +0200 <Bulby[m]> with some default value `"_"` `"__abc___de"`
2022-08-14 06:21:29 +0200Jeanne-Kamikaze(~Jeanne-Ka@142.147.89.253) (Quit: Leaving)
2022-08-14 06:21:35 +0200luffy(~chenqisu1@183.217.201.23) (Ping timeout: 268 seconds)
2022-08-14 06:21:48 +0200 <ski> and in case of overlap ?
2022-08-14 06:22:13 +0200 <Bulby[m]> i'm not sure the data will allow that, but if it does i guess the later one wins
2022-08-14 06:22:24 +0200 <kavvadias> getting this type error https://pastebin.com/ggDW2i66
2022-08-14 06:22:34 +0200 <ski> and you have a fixed size you want ?
2022-08-14 06:22:43 +0200 <Bulby[m]> 4096
2022-08-14 06:22:45 +0200 <Bulby[m]> yes
2022-08-14 06:22:53 +0200 <Bulby[m]> for each segment
2022-08-14 06:22:55 +0200 <Bulby[m]> not overall
2022-08-14 06:23:26 +0200 <ski> kavvadias : no, don't replace `aliens' by `_getAliens'. *use* `_getAliens' to extract the `[Point]' from the `Aliens'
2022-08-14 06:24:13 +0200 <ski> @type (//) -- might be useful, in case you use `Array's
2022-08-14 06:24:15 +0200 <lambdabot> Ix i => Array i e -> [(i, e)] -> Array i e
2022-08-14 06:24:16 +0200etoast(~exaltedto@user/exaltedtoast) (Quit: Tschüss)
2022-08-14 06:24:32 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-14 06:24:48 +0200etoast(~exaltedto@user/exaltedtoast)
2022-08-14 06:26:06 +0200 <ski> > elems (listArray (0,9) (replicate 10 '_') // zip [2 ..] "abc" // zip [8 ..] "de")
2022-08-14 06:26:07 +0200 <lambdabot> "__abc___de"
2022-08-14 06:26:40 +0200 <Bulby[m]> what
2022-08-14 06:26:44 +0200 <ski> (well, better to just use `//' once)
2022-08-14 06:26:46 +0200 <Bulby[m]> that's odd
2022-08-14 06:27:24 +0200 <Bulby[m]> i feel like if this data has no defaults that implies that either 1. java is using nulls again or 2. the data is fully contiguous
2022-08-14 06:27:27 +0200 <Bulby[m]> i hope it's the former
2022-08-14 06:28:02 +0200skididn't look too closely at the Java
2022-08-14 06:28:03 +0200 <Bulby[m]> no
2022-08-14 06:28:05 +0200 <Bulby[m]> latter
2022-08-14 06:28:12 +0200myme1(~myme@2a01:799:d5a:cd00:e0d6:bd5d:e9e6:2667) (Ping timeout: 244 seconds)
2022-08-14 06:28:14 +0200 <Bulby[m]> but it's the former ☹️
2022-08-14 06:28:24 +0200 <ski> which is it ?
2022-08-14 06:28:27 +0200etoast(~exaltedto@user/exaltedtoast) (Client Quit)
2022-08-14 06:28:34 +0200 <Bulby[m]> that java is using nulls
2022-08-14 06:28:45 +0200 <Bulby[m]> i already made the thing storing it a list of maybe
2022-08-14 06:28:55 +0200 <Bulby[m]> so I can transform this into a maybe list and zip from there
2022-08-14 06:29:31 +0200myme1(~myme@2a01:799:d5a:cd00:24c9:1211:1023:461b)
2022-08-14 06:29:37 +0200king_gs(~Thunderbi@2806:103e:29:da7a:d5d4:589a:91e6:9b54)
2022-08-14 06:30:10 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-08-14 06:30:10 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-08-14 06:30:10 +0200wroathe(~wroathe@user/wroathe)
2022-08-14 06:30:27 +0200etoast(~exaltedto@user/exaltedtoast)
2022-08-14 06:32:25 +0200 <kavvadias> ski sorry but i really dont get it right now, my brain is a compost
2022-08-14 06:34:32 +0200nate4(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-08-14 06:34:48 +0200 <ski> kavvadias : currently, `aliens' is an `Aliens', not a `[Point]', so you can't pass it to `forM_'. either insert `_getAliens' in the definition of `aliens', or around the use of it
2022-08-14 06:35:07 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Ping timeout: 268 seconds)
2022-08-14 06:37:14 +0200etoast(~exaltedto@user/exaltedtoast) (Quit: Tschüss)
2022-08-14 06:37:34 +0200etoast(~exaltedto@user/exaltedtoast)
2022-08-14 06:39:24 +0200 <kavvadias> ski thank you so much for your help <3
2022-08-14 06:41:09 +0200etoast(~exaltedto@user/exaltedtoast) (Client Quit)
2022-08-14 06:48:04 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds)
2022-08-14 06:48:11 +0200cynomys(~cynomys@user/cynomys)
2022-08-14 06:48:22 +0200cynomys(~cynomys@user/cynomys) (Client Quit)
2022-08-14 06:48:50 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
2022-08-14 06:51:43 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2022-08-14 06:52:49 +0200Maxdamantus(~Maxdamant@user/maxdamantus) (Quit: brb)
2022-08-14 06:53:00 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2022-08-14 06:57:55 +0200Maxdamantus(~Maxdamant@user/maxdamantus)
2022-08-14 07:00:04 +0200etoast(~exaltedto@user/exaltedtoast)
2022-08-14 07:00:54 +0200nate4(~nate@98.45.169.16)
2022-08-14 07:04:08 +0200king_gs(~Thunderbi@2806:103e:29:da7a:d5d4:589a:91e6:9b54) (Ping timeout: 268 seconds)
2022-08-14 07:07:03 +0200 <Bulby[m]> https://github.com/jmc2obj/j-mc-2-obj/blob/master/src/org/jmc/Chunk.java#L399-L411
2022-08-14 07:07:04 +0200 <Bulby[m]> wtf
2022-08-14 07:12:03 +0200kavvadias(~kavvadias@2001:9e8:630d:e200:2032:f506:e11d:b38d) (Quit: Client closed)
2022-08-14 07:13:21 +0200nate4(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-08-14 07:19:08 +0200tomgus1_(~tomgus1@bcdc7f39.skybroadband.com)
2022-08-14 07:19:13 +0200tomgus1(~tomgus1@2a02:c7e:4229:d900:dea6:32ff:fe3d:d1a3) (Read error: Connection reset by peer)
2022-08-14 07:19:34 +0200tomgus1_tomgus1
2022-08-14 07:28:39 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-08-14 07:32:04 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net)
2022-08-14 07:34:34 +0200mbuf(~Shakthi@122.165.55.71)
2022-08-14 07:35:00 +0200Pickchea(~private@user/pickchea)
2022-08-14 07:37:54 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-08-14 07:38:23 +0200hgolden(~hgolden2@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection)
2022-08-14 07:41:07 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-08-14 07:41:10 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-14 07:41:43 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-08-14 07:42:11 +0200hgolden(~hgolden2@cpe-172-251-233-141.socal.res.rr.com)
2022-08-14 07:55:35 +0200zebrag(~chris@user/zebrag) (Remote host closed the connection)
2022-08-14 07:58:06 +0200obabo(~obabo@20014C4C1C5409000000000000001000.catv.pool.telekom.hu) (Quit: WeeChat 3.6)
2022-08-14 07:58:35 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-08-14 07:59:00 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-08-14 07:59:09 +0200gmg(~user@user/gehmehgeh)
2022-08-14 08:06:04 +0200adanwan_(~adanwan@gateway/tor-sasl/adanwan)
2022-08-14 08:07:28 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-08-14 08:07:37 +0200etoast(~exaltedto@user/exaltedtoast) (Quit: Tschüss)
2022-08-14 08:07:48 +0200etoast(~exaltedto@user/exaltedtoast)
2022-08-14 08:08:33 +0200acidjnk(~acidjnk@p200300d6e7137a57bcb77a9a2e56f2aa.dip0.t-ipconnect.de)
2022-08-14 08:09:01 +0200m1dnight(~christoph@78-22-0-121.access.telenet.be) (Quit: WeeChat 3.6)
2022-08-14 08:09:53 +0200etoast(~exaltedto@user/exaltedtoast) (Client Quit)
2022-08-14 08:10:03 +0200etoast(~exaltedto@user/exaltedtoast)
2022-08-14 08:10:43 +0200m1dnight(~christoph@78-22-0-121.access.telenet.be)
2022-08-14 08:11:32 +0200m1dnight(~christoph@78-22-0-121.access.telenet.be) (Client Quit)
2022-08-14 08:12:27 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
2022-08-14 08:13:39 +0200Sgeo(~Sgeo@user/sgeo)
2022-08-14 08:17:45 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2022-08-14 08:24:28 +0200coot(~coot@213.134.176.158)
2022-08-14 08:25:55 +0200gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de)
2022-08-14 08:26:35 +0200gaff(~gaff@49.207.204.135)
2022-08-14 08:26:40 +0200gaff(~gaff@49.207.204.135) (Client Quit)
2022-08-14 08:29:54 +0200adanwan_(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-08-14 08:30:10 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-08-14 08:39:55 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-08-14 08:45:14 +0200chomwitt(~chomwitt@2a02:587:dc15:5e00:4394:5e3a:258b:d8da)
2022-08-14 08:45:38 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-08-14 08:47:51 +0200nilradical(~nilradica@user/naso) (Remote host closed the connection)
2022-08-14 08:48:34 +0200king_gs(~Thunderbi@2806:103e:29:da7a:8e16:45ff:feeb:cfcf)
2022-08-14 08:48:46 +0200nilradical(~nilradica@user/naso)
2022-08-14 08:50:10 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-08-14 08:51:29 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2022-08-14 08:52:05 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-08-14 08:55:07 +0200kenran(~kenran@200116b82b3c10003fa4637885f3f4a2.dip.versatel-1u1.de)
2022-08-14 08:55:52 +0200kenran(~kenran@200116b82b3c10003fa4637885f3f4a2.dip.versatel-1u1.de) (Client Quit)
2022-08-14 08:59:13 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-14 09:00:09 +0200hgolden(~hgolden2@cpe-172-251-233-141.socal.res.rr.com) (Quit: Konversation terminated!)
2022-08-14 09:00:54 +0200gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2022-08-14 09:01:53 +0200gmg(~user@user/gehmehgeh)
2022-08-14 09:02:18 +0200hgolden(~hgolden2@cpe-172-251-233-141.socal.res.rr.com)
2022-08-14 09:04:47 +0200nilradical(~nilradica@user/naso) ()
2022-08-14 09:06:03 +0200zeenk(~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f)
2022-08-14 09:07:19 +0200jargon(~jargon@184.101.168.117) (Remote host closed the connection)
2022-08-14 09:09:09 +0200gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2022-08-14 09:09:45 +0200vysn(~vysn@user/vysn)
2022-08-14 09:11:11 +0200Tuplanolla(~Tuplanoll@91-159-69-12.elisa-laajakaista.fi)
2022-08-14 09:12:38 +0200gmg(~user@user/gehmehgeh)
2022-08-14 09:13:01 +0200king_gs(~Thunderbi@2806:103e:29:da7a:8e16:45ff:feeb:cfcf) (Ping timeout: 268 seconds)
2022-08-14 09:13:14 +0200coot(~coot@213.134.176.158) (Quit: coot)
2022-08-14 09:14:53 +0200ec(~ec@gateway/tor-sasl/ec) (Write error: Connection reset by peer)
2022-08-14 09:14:53 +0200gmg(~user@user/gehmehgeh) (Write error: Connection reset by peer)
2022-08-14 09:15:35 +0200gmg(~user@user/gehmehgeh)
2022-08-14 09:15:57 +0200ec(~ec@gateway/tor-sasl/ec)
2022-08-14 09:18:08 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-08-14 09:19:28 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-08-14 09:19:55 +0200vglfr(~vglfr@145.224.94.75) (Ping timeout: 252 seconds)
2022-08-14 09:21:17 +0200vglfr(~vglfr@145.224.94.75)
2022-08-14 09:25:25 +0200vglfr(~vglfr@145.224.94.75) (Ping timeout: 244 seconds)
2022-08-14 09:26:19 +0200vglfr(~vglfr@93.170.4.33)
2022-08-14 09:30:54 +0200sander(~sander@user/sander) (Ping timeout: 268 seconds)
2022-08-14 09:31:52 +0200hgolden(~hgolden2@cpe-172-251-233-141.socal.res.rr.com) (Quit: Konversation terminated!)
2022-08-14 09:34:53 +0200pagnol(~me@213-205-209-87.ftth.glasoperator.nl)
2022-08-14 09:34:57 +0200vglfr(~vglfr@93.170.4.33) (Ping timeout: 252 seconds)
2022-08-14 09:36:24 +0200vglfr(~vglfr@93.170.4.33)
2022-08-14 09:39:22 +0200sander(~sander@user/sander)
2022-08-14 09:45:25 +0200jargon(~jargon@184.101.168.117)
2022-08-14 09:46:18 +0200m1dnight(~christoph@78-22-0-121.access.telenet.be)
2022-08-14 09:46:54 +0200vglfr(~vglfr@93.170.4.33) (Ping timeout: 268 seconds)
2022-08-14 09:47:15 +0200vglfr(~vglfr@93.170.4.33)
2022-08-14 09:47:35 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-08-14 09:54:18 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
2022-08-14 09:57:52 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-08-14 09:58:17 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2022-08-14 09:58:18 +0200califax(~califax@user/califx) (Read error: Connection reset by peer)
2022-08-14 09:58:18 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-08-14 09:58:18 +0200ec(~ec@gateway/tor-sasl/ec) (Read error: Connection reset by peer)
2022-08-14 09:58:51 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-08-14 09:58:52 +0200Vajb(~Vajb@2001:999:70c:2b99:3e15:6929:5bc6:c014) (Read error: Connection reset by peer)
2022-08-14 09:58:54 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-08-14 09:58:57 +0200ec(~ec@gateway/tor-sasl/ec)
2022-08-14 09:59:35 +0200Vajb(~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi)
2022-08-14 09:59:39 +0200califax(~califax@user/califx)
2022-08-14 10:01:44 +0200vglfr(~vglfr@93.170.4.33) (Ping timeout: 268 seconds)
2022-08-14 10:04:09 +0200vglfr(~vglfr@93.170.4.33)
2022-08-14 10:04:20 +0200zxx7529(~Thunderbi@user/zxx7529)
2022-08-14 10:07:20 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds)
2022-08-14 10:07:32 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-08-14 10:09:15 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-08-14 10:10:31 +0200vglfr(~vglfr@93.170.4.33) (Ping timeout: 252 seconds)
2022-08-14 10:11:55 +0200vglfr(~vglfr@93.170.4.33)
2022-08-14 10:16:23 +0200vglfr(~vglfr@93.170.4.33) (Ping timeout: 252 seconds)
2022-08-14 10:16:48 +0200vglfr(~vglfr@93.170.4.33)
2022-08-14 10:18:17 +0200coot(~coot@213.134.176.158)
2022-08-14 10:23:26 +0200califax(~califax@user/califx) (Quit: ZNC 1.8.2 - https://znc.in)
2022-08-14 10:23:55 +0200califax(~califax@user/califx)
2022-08-14 10:27:32 +0200causal(~user@50.35.83.177)
2022-08-14 10:28:51 +0200bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 252 seconds)
2022-08-14 10:28:59 +0200vglfr(~vglfr@93.170.4.33) (Ping timeout: 268 seconds)
2022-08-14 10:29:48 +0200vglfr(~vglfr@93.170.4.33)
2022-08-14 10:30:05 +0200sander(~sander@user/sander) (Quit: So long! :))
2022-08-14 10:31:47 +0200zaquest(~notzaques@5.130.79.72) (Ping timeout: 252 seconds)
2022-08-14 10:34:29 +0200zaquest(~notzaques@5.130.79.72)
2022-08-14 10:37:20 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-14 10:37:35 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2022-08-14 10:39:19 +0200vglfr(~vglfr@93.170.4.33) (Ping timeout: 268 seconds)
2022-08-14 10:39:33 +0200vglfr(~vglfr@93.170.4.33)
2022-08-14 10:41:05 +0200nattiestnate(~nate@180.243.14.16)
2022-08-14 10:41:10 +0200sander(~sander@user/sander)
2022-08-14 10:43:18 +0200acidjnk(~acidjnk@p200300d6e7137a57bcb77a9a2e56f2aa.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2022-08-14 10:44:15 +0200vglfr(~vglfr@93.170.4.33) (Ping timeout: 268 seconds)
2022-08-14 10:44:46 +0200vglfr(~vglfr@145.224.94.75)
2022-08-14 10:45:40 +0200kenran(~kenran@200116b82b3c1000ed052833c39b3b7b.dip.versatel-1u1.de)
2022-08-14 10:45:57 +0200kenran(~kenran@200116b82b3c1000ed052833c39b3b7b.dip.versatel-1u1.de) (Client Quit)
2022-08-14 10:46:21 +0200luffy(~chenqisu1@183.217.201.23)
2022-08-14 10:48:10 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-14 10:52:53 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds)
2022-08-14 11:11:01 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-08-14 11:11:28 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 268 seconds)
2022-08-14 11:12:42 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-08-14 11:13:48 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2022-08-14 11:23:13 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
2022-08-14 11:27:52 +0200zxx7529(~Thunderbi@user/zxx7529) (Ping timeout: 244 seconds)
2022-08-14 11:30:26 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-08-14 11:38:17 +0200benin0(~benin@183.82.206.125)
2022-08-14 11:40:04 +0200nate4(~nate@98.45.169.16)
2022-08-14 11:41:49 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-08-14 11:44:45 +0200nate4(~nate@98.45.169.16) (Ping timeout: 252 seconds)
2022-08-14 11:47:06 +0200ddellaco1(~ddellacos@89.45.90.27)
2022-08-14 11:52:05 +0200ddellaco1(~ddellacos@89.45.90.27) (Ping timeout: 268 seconds)
2022-08-14 11:53:26 +0200ddellaco1(~ddellacos@89.45.90.118)
2022-08-14 11:54:06 +0200vysn(~vysn@user/vysn) (Ping timeout: 264 seconds)
2022-08-14 11:54:11 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-14 11:58:00 +0200yvan-sraka(~yvan-srak@105.67.7.32)
2022-08-14 11:59:05 +0200coot(~coot@213.134.176.158) (Quit: coot)
2022-08-14 11:59:34 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds)
2022-08-14 12:01:22 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-08-14 12:02:33 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-08-14 12:03:24 +0200ec(~ec@gateway/tor-sasl/ec)
2022-08-14 12:06:46 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-08-14 12:07:44 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-08-14 12:09:46 +0200img(~img@user/img)
2022-08-14 12:10:18 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds)
2022-08-14 12:14:44 +0200perdent(~perdent@124.188.233.11)
2022-08-14 12:15:40 +0200nilradical(~nilradica@user/naso)
2022-08-14 12:17:49 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-08-14 12:20:34 +0200martin02(~silas@141.84.69.76) (Ping timeout: 244 seconds)
2022-08-14 12:20:42 +0200img(~img@user/img)
2022-08-14 12:21:06 +0200Jonno_FTW(~come@user/jonno-ftw/x-0835346) (Ping timeout: 268 seconds)
2022-08-14 12:21:22 +0200MajorBiscuit(~MajorBisc@46-229-126.internethome.cytanet.com.cy)
2022-08-14 12:24:46 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-08-14 12:25:10 +0200Jonno_FTW(~come@api.carswap.me)
2022-08-14 12:25:10 +0200Jonno_FTW(~come@api.carswap.me) (Changing host)
2022-08-14 12:25:10 +0200Jonno_FTW(~come@user/jonno-ftw/x-0835346)
2022-08-14 12:26:15 +0200vglfr(~vglfr@145.224.94.75) (Ping timeout: 244 seconds)
2022-08-14 12:27:03 +0200Jonno_FTW(~come@user/jonno-ftw/x-0835346) (Remote host closed the connection)
2022-08-14 12:29:07 +0200Jonno_FTW(~come@user/jonno-ftw/x-0835346)
2022-08-14 12:30:58 +0200nattiestnate(~nate@180.243.14.16) (Quit: WeeChat 3.6)
2022-08-14 12:31:42 +0200ccntrq(~Thunderbi@172.209.94.92.rev.sfr.net)
2022-08-14 12:33:04 +0200nate4(~nate@98.45.169.16)
2022-08-14 12:34:19 +0200martin02(~silas@141.84.69.76)
2022-08-14 12:36:05 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-08-14 12:38:20 +0200nate4(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-08-14 12:43:16 +0200yvan-sraka(~yvan-srak@105.67.7.32) (Remote host closed the connection)
2022-08-14 12:53:59 +0200pt_owl(~noone@p200300e277470aa2231dde224d8a36df.dip0.t-ipconnect.de) (Remote host closed the connection)
2022-08-14 12:54:17 +0200pt_owl(~noone@p200300e277470a30a3f9c068e1d96a44.dip0.t-ipconnect.de)
2022-08-14 13:00:34 +0200coot(~coot@213.134.176.158)
2022-08-14 13:01:09 +0200MajorBiscuit(~MajorBisc@46-229-126.internethome.cytanet.com.cy) (Ping timeout: 268 seconds)
2022-08-14 13:01:51 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 268 seconds)
2022-08-14 13:10:46 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2022-08-14 13:10:54 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds)
2022-08-14 13:17:12 +0200m1dnight(~christoph@78-22-0-121.access.telenet.be) (Quit: WeeChat 3.6)
2022-08-14 13:17:13 +0200Jonno_FTW(~come@user/jonno-ftw/x-0835346) (Ping timeout: 268 seconds)
2022-08-14 13:17:38 +0200Jonno_FTW(~come@api.carswap.me)
2022-08-14 13:17:38 +0200Jonno_FTW(~come@api.carswap.me) (Changing host)
2022-08-14 13:17:38 +0200Jonno_FTW(~come@user/jonno-ftw/x-0835346)
2022-08-14 13:17:41 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-08-14 13:26:42 +0200zxx7529(~Thunderbi@user/zxx7529)
2022-08-14 13:29:04 +0200m1dnight(~christoph@78-22-0-121.access.telenet.be)
2022-08-14 13:29:13 +0200m1dnight(~christoph@78-22-0-121.access.telenet.be) (Client Quit)
2022-08-14 13:30:10 +0200ccntrq(~Thunderbi@172.209.94.92.rev.sfr.net) (Ping timeout: 268 seconds)
2022-08-14 13:32:36 +0200nilradical(~nilradica@user/naso) ()
2022-08-14 13:36:16 +0200 <carbolymer> can I distinguish on a type level between `a -> f b` and `a -> b -> f c` where `f` is a Functor? I feel that I don't because `(->) b` is a functor too...
2022-08-14 13:36:30 +0200 <carbolymer> s/don't/can't/
2022-08-14 13:38:04 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-14 13:39:37 +0200 <[exa]> carbolymer: if you'd want to substitute into `a -> f b` so that you get `x -> y -> g z`, you'd need to substitute `g z` for `b` if you'd instantiate `f` as functor `(->) y`... which would probably require another functor constraint there
2022-08-14 13:41:18 +0200 <[exa]> still I don't really think these two would unify very easily
2022-08-14 13:42:28 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds)
2022-08-14 13:44:31 +0200 <ski> @type let foo :: a -> f b; bar :: x -> y -> g z; (foo,bar) = undefined in [foo,bar]
2022-08-14 13:44:32 +0200 <lambdabot> forall k a y (g :: k -> *) (z :: k). [a -> y -> g z]
2022-08-14 13:45:14 +0200 <ski> carbolymer : you probably need to detail more how/where you're trying to distinguish
2022-08-14 13:47:14 +0200 <[exa]> oh wow it even unifies nicer with the actual Functor constraints
2022-08-14 13:47:31 +0200 <ski> hm ?
2022-08-14 13:47:58 +0200 <[exa]> @type let foo :: Functor f => a -> f b; bar :: Functor g => x -> y -> g z; (foo,bar) = undefined in [foo,bar]
2022-08-14 13:47:59 +0200 <lambdabot> Functor g => [a -> y -> g z]
2022-08-14 13:48:35 +0200 <ski> (what does the `Functor' constraints have to do with it ?)
2022-08-14 13:48:55 +0200 <ski> looks the same to me (except for some reason the `forall' was implicit now)
2022-08-14 13:49:10 +0200 <[exa]> well not much, but it was in the original question and I somehow thought it would get in the way
2022-08-14 13:49:27 +0200 <[exa]> cool.
2022-08-14 13:52:05 +0200vglfr(~vglfr@145.224.94.75)
2022-08-14 13:54:40 +0200instantaphex(~jb@c-73-171-252-84.hsd1.fl.comcast.net)
2022-08-14 13:55:22 +0200m1dnight(~christoph@78-22-0-121.access.telenet.be)
2022-08-14 13:55:35 +0200 <carbolymer> [exa]: yeah so that's kind-of my point, that I think it's impossible (?)
2022-08-14 13:55:36 +0200m1dnight(~christoph@78-22-0-121.access.telenet.be) (Client Quit)
2022-08-14 13:55:47 +0200 <carbolymer> ski: lemme produce minimal example of my problem
2022-08-14 13:55:58 +0200vysn(~vysn@user/vysn)
2022-08-14 13:57:43 +0200m1dnight(~christoph@78-22-0-121.access.telenet.be)
2022-08-14 13:59:44 +0200instantaphex(~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 268 seconds)
2022-08-14 14:00:50 +0200m1dnight(~christoph@78-22-0-121.access.telenet.be) (Client Quit)
2022-08-14 14:02:45 +0200yvan-sraka(~yvan-srak@105.67.7.32)
2022-08-14 14:03:42 +0200m1dnight(~christoph@78-22-0-121.access.telenet.be)
2022-08-14 14:05:53 +0200m1dnight(~christoph@78-22-0-121.access.telenet.be) (Client Quit)
2022-08-14 14:07:23 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-08-14 14:11:38 +0200m1dnight(~christoph@78-22-0-121.access.telenet.be)
2022-08-14 14:12:19 +0200ccntrq(~Thunderbi@172.209.94.92.rev.sfr.net)
2022-08-14 14:12:43 +0200 <carbolymer> ok, here's an example of my problem: https://bpa.st/GSVA - so basically, `r -> a -> m b` seems to capture `r -> a -> b -> m c` too and everything breaks
2022-08-14 14:12:48 +0200 <carbolymer> ski: ^
2022-08-14 14:13:27 +0200luffy(~chenqisu1@183.217.201.23) (Ping timeout: 268 seconds)
2022-08-14 14:13:36 +0200Vajb(~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-08-14 14:14:15 +0200m1dnight(~christoph@78-22-0-121.access.telenet.be) (Client Quit)
2022-08-14 14:14:54 +0200Vajb(~Vajb@2001:999:70c:2b99:3e15:6929:5bc6:c014)
2022-08-14 14:15:14 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-08-14 14:17:04 +0200m1dnight(~christoph@78-22-0-121.access.telenet.be)
2022-08-14 14:18:10 +0200m1dnight(~christoph@78-22-0-121.access.telenet.be) (Client Quit)
2022-08-14 14:19:55 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net)
2022-08-14 14:20:28 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-14 14:21:22 +0200 <ski> this looks confusing, to me
2022-08-14 14:21:29 +0200acidjnk(~acidjnk@p200300d6e7137a57bcb77a9a2e56f2aa.dip0.t-ipconnect.de)
2022-08-14 14:21:53 +0200m1dnight(~christoph@78-22-0-121.access.telenet.be)
2022-08-14 14:22:27 +0200gehmehgeh(~user@user/gehmehgeh)
2022-08-14 14:22:27 +0200gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2022-08-14 14:23:03 +0200m1dnight(~christoph@78-22-0-121.access.telenet.be) (Client Quit)
2022-08-14 14:23:21 +0200 <ski> i wonder if there's a reason why you don't just have `RdType2 (r -> a) = r' and `RetType2 (r -> m a) = m a' (or even `RetType2 (r -> a) = a')
2022-08-14 14:24:29 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds)
2022-08-14 14:26:00 +0200 <carbolymer> yeah, that RdType2 should be enough, but RetType2 ~ m a won't capture all cases for variable number of arguments
2022-08-14 14:26:09 +0200 <carbolymer> and I would like to have access to m in `m a`
2022-08-14 14:26:13 +0200 <carbolymer> to be able to `join` in the end
2022-08-14 14:28:29 +0200 <carbolymer> the problem is that:
2022-08-14 14:28:29 +0200 <carbolymer> `asks f1 :: MonadReader SomeEnv m, Functor f => m (Int -> String -> f ())`
2022-08-14 14:28:29 +0200 <carbolymer> and getting to f isn't easy
2022-08-14 14:30:28 +0200Batzy(~quassel@user/batzy) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-08-14 14:30:50 +0200Batzy(~quassel@user/batzy)
2022-08-14 14:31:00 +0200perdent(~perdent@124.188.233.11) (Quit: Client closed)
2022-08-14 14:31:19 +0200 <jackdk> is it `fmap . fmap . fmap`?
2022-08-14 14:32:49 +0200luffy(~chenqisu1@183.217.201.23)
2022-08-14 14:38:44 +0200luffy(~chenqisu1@183.217.201.23) (Ping timeout: 268 seconds)
2022-08-14 14:39:33 +0200jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 244 seconds)
2022-08-14 14:40:36 +0200kraftwerk28(~kraftwerk@178.62.210.83) (Quit: ZNC 1.8.2 - https://znc.in)
2022-08-14 14:44:07 +0200m1dnight(~christoph@78-22-0-121.access.telenet.be)
2022-08-14 14:49:45 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
2022-08-14 14:49:46 +0200kavvadias(~kavvadias@2001:9e8:630d:e200:c5c8:e88c:6eff:1a7e)
2022-08-14 14:50:29 +0200waldo(~waldo@user/waldo)
2022-08-14 14:51:04 +0200 <kavvadias> hello , ifm trying to use mapSecond function but i get variable not in scope error, do i have to import something?
2022-08-14 14:51:29 +0200gehmehgeh(~user@user/gehmehgeh) (Remote host closed the connection)
2022-08-14 14:52:12 +0200gehmehgeh(~user@user/gehmehgeh)
2022-08-14 14:52:55 +0200 <[exa]> kavvadias: you may search for libraries that would provide it with hoogle, but since it doesn't seem standard at all I'd suggest just copying the definition from somewhere
2022-08-14 14:53:25 +0200 <[exa]> such as here: https://hackage.haskell.org/package/haskell-gi-base-0.26.1/docs/src/Data.GI.Base.Utils.html#mapSec…
2022-08-14 14:54:40 +0200 <kavvadias> ok thank you
2022-08-14 14:55:23 +0200 <[exa]> yw :]
2022-08-14 14:56:23 +0200 <carbolymer> jackdk: yeah but no
2022-08-14 14:56:40 +0200pzq-alex(~pzq-alex@211-22-180-9.hinet-ip.hinet.net)
2022-08-14 14:56:55 +0200Typedfern(~Typedfern@202.red-83-37-35.dynamicip.rima-tde.net) (Remote host closed the connection)
2022-08-14 14:57:55 +0200Typedfern(~Typedfern@202.red-83-37-35.dynamicip.rima-tde.net)
2022-08-14 14:59:42 +0200mmhat(~mmh@p200300f1c732d6e8ee086bfffe095315.dip0.t-ipconnect.de)
2022-08-14 15:01:37 +0200hippoid(~idris@d53-64-120-188.nap.wideopenwest.com)
2022-08-14 15:05:15 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-14 15:06:40 +0200perdent(~perdent@124.188.233.11)
2022-08-14 15:08:26 +0200orgonau(~nikola@77-46-243-191.dynamic.isp.telekom.rs)
2022-08-14 15:09:43 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2022-08-14 15:13:54 +0200nilradical(~nilradica@user/naso)
2022-08-14 15:14:03 +0200 <qrpnxz> let's gooo https://hackage.haskell.org/package/base-4.17.0.0/changelog
2022-08-14 15:14:06 +0200 <qrpnxz> i think this just came out
2022-08-14 15:15:27 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-08-14 15:20:01 +0200hgolden(~hgolden2@cpe-172-251-233-141.socal.res.rr.com)
2022-08-14 15:20:22 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 244 seconds)
2022-08-14 15:27:20 +0200Milan(~Milan@46.245.109.131)
2022-08-14 15:27:45 +0200Milan(~Milan@46.245.109.131) (Client Quit)
2022-08-14 15:31:55 +0200coot(~coot@213.134.176.158) (Quit: coot)
2022-08-14 15:33:58 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-08-14 15:34:21 +0200 <kavvadias> hello, im trying to apply - 1 to the second of a list of tuples in inside a state monad and having some type errors
2022-08-14 15:34:22 +0200 <kavvadias> https://pastebin.com/CS0MR3Py
2022-08-14 15:34:47 +0200 <kavvadias> some help would be appreciated, because im losing it
2022-08-14 15:36:25 +0200odnes(~odnes@109-178-179-120.pat.ren.cosmote.net)
2022-08-14 15:37:56 +0200 <ski> kavvadias> :t (.=)
2022-08-14 15:38:03 +0200 <ski> `moveAl' is a `map'
2022-08-14 15:38:04 +0200hippoid(~idris@d53-64-120-188.nap.wideopenwest.com) (Quit: WeeChat 3.5)
2022-08-14 15:38:23 +0200 <ski> did you mean `noaliens [] = return ()' ?
2022-08-14 15:38:48 +0200 <ski> where is `aliens' coming from (and what's its type) ?
2022-08-14 15:38:57 +0200odnes(~odnes@109-178-179-120.pat.ren.cosmote.net) (Read error: Connection reset by peer)
2022-08-14 15:39:36 +0200odnes(~odnes@109-178-179-120.pat.ren.cosmote.net)
2022-08-14 15:39:44 +0200 <albet70> is there any simple article to introduce how to write a DSL or a simple language?
2022-08-14 15:39:55 +0200 <ski> you have an unreachable defining equation in `noaliens' .. i suspect the first defining equation should not be part of the definition of `noaliens' (`x' and `xs' are unused in it)
2022-08-14 15:41:15 +0200 <kavvadias> https://github.com/Astodialo/space_inv/blob/main/app/Main.hs
2022-08-14 15:41:32 +0200 <kavvadias> i wanted a map for the second item of the tupple basically
2022-08-14 15:42:45 +0200 <kavvadias> newtype Aliens = Aliens { _getAliens :: [Point] }
2022-08-14 15:42:56 +0200 <ski> @type (map . second) (subtract 1) :: [Point] -> [Point]
2022-08-14 15:42:58 +0200 <lambdabot> [Point] -> [Point]
2022-08-14 15:43:34 +0200 <ski> i know about `Aliens' .. i was asking about `aliens', in the definition of `moveAliens'
2022-08-14 15:43:55 +0200Typedfern(~Typedfern@202.red-83-37-35.dynamicip.rima-tde.net) (Remote host closed the connection)
2022-08-14 15:44:09 +0200 <kavvadias> ahhh its a lense
2022-08-14 15:44:20 +0200 <ski> ah, i just saw that myself, yes
2022-08-14 15:44:49 +0200Typedfern(~Typedfern@202.red-83-37-35.dynamicip.rima-tde.net)
2022-08-14 15:46:47 +0200 <ski> it looks more to me like you'd like to do `aliens .= noaliens (game # aliens . getAliens)', or somesuch
2022-08-14 15:47:07 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-08-14 15:47:19 +0200 <ski> hm, anyway, i don't think you want to use `do' in `noaliens' .. `:' seems more like what you wanted (?)
2022-08-14 15:47:21 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-08-14 15:47:30 +0200 <kavvadias> how would i use @type (map . second) (subtract 1) :: [Point] -> [Point] btw thats kinf of new to me
2022-08-14 15:47:35 +0200odnes_(~odnes@5-203-145-49.pat.nym.cosmote.net)
2022-08-14 15:48:41 +0200 <ski> oh, actually, the `_getAliens' field is already a list of `Point's (not a list of list of `Point's .. so either traverse the list in `moveAl', or in `noaliens' .. but not both (since you have just one list level, not two)
2022-08-14 15:48:59 +0200 <ski> )
2022-08-14 15:50:07 +0200juri_(~juri@84-19-175-179.pool.ovpn.com) (Ping timeout: 268 seconds)
2022-08-14 15:50:36 +0200odnes__(~odnes@109-178-147-112.pat.ren.cosmote.net)
2022-08-14 15:50:40 +0200 <ski> aliens .= Aliens (moveAl (game # aliens . getAliens)) -- try this (removing `naliens') ?
2022-08-14 15:50:44 +0200pt_owl(~noone@p200300e277470a30a3f9c068e1d96a44.dip0.t-ipconnect.de) (Quit: Leaving)
2022-08-14 15:50:53 +0200juri_(~juri@84-19-175-179.pool.ovpn.com)
2022-08-14 15:51:08 +0200 <ski> (also i just noticed i was misreading `naliens' as `noaliens' .. but it doesn't change what i said)
2022-08-14 15:51:21 +0200odnes(~odnes@109-178-179-120.pat.ren.cosmote.net) (Ping timeout: 268 seconds)
2022-08-14 15:51:58 +0200 <ski> moveAl xys = map (\(x,y) -> (x,y - 1)) xys
2022-08-14 15:52:06 +0200 <ski> moveAl = map (\(x,y) -> (x,y - 1)) -- shorter
2022-08-14 15:52:15 +0200odnes__(~odnes@109-178-147-112.pat.ren.cosmote.net) (Remote host closed the connection)
2022-08-14 15:52:35 +0200odnes__(~odnes@109-178-147-112.pat.ren.cosmote.net)
2022-08-14 15:52:40 +0200 <ski> moveAl = map (second (subtract 1)) -- more abstracted (possibly less readable)
2022-08-14 15:53:08 +0200 <ski> moveAl = (map . second) (subtract 1) -- slightly more abstracted
2022-08-14 15:53:28 +0200 <ski> if you don't like the lambda, you could name it
2022-08-14 15:53:43 +0200 <kavvadias> moveAliens :: (MonadState Game m) => m ()
2022-08-14 15:53:43 +0200 <kavvadias> moveAliens = do
2022-08-14 15:53:44 +0200 <kavvadias>   game <- get
2022-08-14 15:53:44 +0200 <kavvadias>   aliens .= Aliens (moveAl (game # aliens . getAliens))
2022-08-14 15:53:48 +0200 <ski> moveAl = map decrY
2022-08-14 15:53:50 +0200 <ski> where
2022-08-14 15:53:57 +0200 <ski> decrY (x,y) = (x,y - 1)
2022-08-14 15:54:05 +0200odnes_(~odnes@5-203-145-49.pat.nym.cosmote.net) (Ping timeout: 252 seconds)
2022-08-14 15:54:14 +0200 <kavvadias> i get an error on get now, couldnt match type Game
2022-08-14 15:54:14 +0200 <ski> kavvadias : does it pass the type-checker ?
2022-08-14 15:55:04 +0200 <ski> kavvadias : expecting which type ?
2022-08-14 15:55:36 +0200odnes__(~odnes@109-178-147-112.pat.ren.cosmote.net) (Client Quit)
2022-08-14 15:55:38 +0200 <kavvadias> https://pastebin.com/yD7P136H
2022-08-14 15:56:25 +0200orgonau(~nikola@77-46-243-191.dynamic.isp.telekom.rs) (Quit: leaving)
2022-08-14 15:59:02 +0200son0p(~ff@181.136.122.143)
2022-08-14 16:01:25 +0200dcoutts_(~duncan@host86-153-135-25.range86-153.btcentralplus.com) (Ping timeout: 252 seconds)
2022-08-14 16:01:52 +0200 <kavvadias> https://pastebin.com/CzMMwPpE this seems to work
2022-08-14 16:01:59 +0200 <kavvadias> ski thanks for the help agtain
2022-08-14 16:02:24 +0200 <ski> hm, i think i meant `^.' in place of `#'
2022-08-14 16:04:10 +0200 <ski> but i think you ought to be able to say `aliens . getAliens .= moveAl naliens' (or `aliens . getAliens .= moveAl (game ^. aliens . getAliens)', if i recalled correctly)
2022-08-14 16:05:36 +0200 <ski> or `aliens . getAliens %= moveAl' .. i think
2022-08-14 16:06:11 +0200 <ski> kavvadias : try any of those ?
2022-08-14 16:06:22 +0200 <kavvadias> give me a sec
2022-08-14 16:07:10 +0200nilradical(~nilradica@user/naso) (Remote host closed the connection)
2022-08-14 16:07:14 +0200 <ski> (the middle one wouldn't need `naliens'. the last one wouldn't need `game' either)
2022-08-14 16:07:56 +0200nilradical(~nilradica@user/naso)
2022-08-14 16:08:39 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2022-08-14 16:09:30 +0200 <ski> (`.=' is "set monadic state". `%=' is "update/modify monadic state" (with a function))
2022-08-14 16:09:47 +0200crazazy(~user@2001:1c00:831:4700:3db9:a2e6:d73e:3903)
2022-08-14 16:12:35 +0200 <kavvadias> aliens . getAliens %= moveAl
2022-08-14 16:12:46 +0200 <kavvadias> that one runs and thats really cool
2022-08-14 16:13:33 +0200 <ski> and the other two ?
2022-08-14 16:13:33 +0200nilradical(~nilradica@user/naso) (Ping timeout: 268 seconds)
2022-08-14 16:16:33 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-08-14 16:19:13 +0200pzq-alex(~pzq-alex@211-22-180-9.hinet-ip.hinet.net) (Quit: Client closed)
2022-08-14 16:19:51 +0200 <kavvadias> i have to be in a class i can let you know in a couple hours
2022-08-14 16:19:52 +0200kraftwerk28(~kraftwerk@178.62.210.83)
2022-08-14 16:20:13 +0200ski. o O ( class on a sunday )
2022-08-14 16:22:25 +0200 <kavvadias> yeah
2022-08-14 16:22:39 +0200 <kavvadias> the middle one works aswell
2022-08-14 16:22:49 +0200 <ski> good
2022-08-14 16:23:26 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-08-14 16:24:18 +0200 <kavvadias> first one works aswell
2022-08-14 16:25:08 +0200ski. o O ( those were short hours )
2022-08-14 16:25:25 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2022-08-14 16:25:33 +0200 <ski> btw, there's also `gets', when you just want a part of the state
2022-08-14 16:25:40 +0200 <ski> @type get
2022-08-14 16:25:42 +0200 <lambdabot> MonadState s m => m s
2022-08-14 16:25:42 +0200 <ski> @type gets
2022-08-14 16:25:44 +0200 <lambdabot> MonadState s m => (s -> a) -> m a
2022-08-14 16:26:12 +0200 <ski> (in your case, `naliens <- gets (_getAliens . _aliens)')
2022-08-14 16:26:38 +0200 <ski> (and similarly there's `asks' for `ask')
2022-08-14 16:27:32 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-08-14 16:28:35 +0200 <qrpnxz> upgrading GHC gave me a nice speed boost :)
2022-08-14 16:29:59 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net)
2022-08-14 16:31:11 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-14 16:31:18 +0200 <[exa]> albet70: haskell eDSLs are kinda implied by knowing how to write your own monad, then it should be moreless clear. By "simple language" you mean "a small interpreter" or so?
2022-08-14 16:34:15 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
2022-08-14 16:34:37 +0200nate4(~nate@98.45.169.16)
2022-08-14 16:35:31 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2022-08-14 16:36:31 +0200 <albet70> [exa] , yes
2022-08-14 16:36:58 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
2022-08-14 16:36:59 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
2022-08-14 16:37:19 +0200 <[exa]> albet70: there is "write yourself a scheme" somewhere on githubs, that's a pretty nice resource
2022-08-14 16:37:22 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-08-14 16:37:26 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2022-08-14 16:37:33 +0200 <albet70> ok
2022-08-14 16:37:50 +0200severen(~severen@202.36.179.72)
2022-08-14 16:38:17 +0200 <[exa]> o it has a second version here https://wespiser.com/writings/wyas/00_overview.html
2022-08-14 16:38:40 +0200 <[exa]> not sure about quality&quantity overload, but at least it links to the first one
2022-08-14 16:39:00 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-08-14 16:39:00 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-08-14 16:39:00 +0200wroathe(~wroathe@user/wroathe)
2022-08-14 16:39:10 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2022-08-14 16:40:06 +0200nate4(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-08-14 16:40:49 +0200 <albet70> what's the whole procedure? read, parse, tokenize, eval?
2022-08-14 16:41:40 +0200off^(~off@206.85.120.17) (Remote host closed the connection)
2022-08-14 16:42:06 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-08-14 16:42:50 +0200 <[exa]> 99% of the whole language implementation is 1] how to convert text into something interpretable (use a megaparsec tutorial) and 2] how to actually interpret it (in haskell you can get away with just StateT over IO in most cases, so a State tutorial will do) 3] resist the temptation and keep the language compact, to avoid a complexity explosion at some point that results in something that isn't finishable
2022-08-14 16:44:36 +0200 <[exa]> re procedure, tokenization usually goes before parsing but you can quite successfully do both at once with parsecs
2022-08-14 16:45:25 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-14 16:45:36 +0200 <[exa]> if you want a REPL, have a look at `haskeline` library, that one's magic
2022-08-14 16:46:55 +0200 <DigitalKiwi> i enjoyed the wespiser.com one when i did it
2022-08-14 16:47:30 +0200waldo(~waldo@user/waldo) (Quit: quit)
2022-08-14 16:47:53 +0200 <severen> Funny, I'm just lurking but that haskeline recommendation is quite helpful because I'm writing a lambda calculus interpreter atm
2022-08-14 16:48:19 +0200 <DigitalKiwi> https://twitter.com/ArchKiwi/status/1259203512766017542
2022-08-14 16:48:28 +0200 <severen> My megaparsec parser is nearly finished so I'm about to start thinking about the REPL/evaluation
2022-08-14 16:48:50 +0200 <[exa]> \o/
2022-08-14 16:49:50 +0200 <[exa]> `StateT TopLevelDefs (InputT IO)` and go :]
2022-08-14 16:52:55 +0200 <ski> for Scheme you'd probably also need `ContT' in there .. at least if you're implementing `call-with-current-continuation'
2022-08-14 16:53:53 +0200 <albet70> https://jsdw.me/posts/haskell-cont-monad/
2022-08-14 16:53:56 +0200 <Lears> Speaking of haskeline, did y'all know you can set 'editMode: Vi' in ~/.haskeline and get vi-style line editing in ghci? I really wish I'd discovered that fact about a decade earlier...
2022-08-14 16:54:18 +0200 <geekosaur> a decade earlier it was unimplemented
2022-08-14 16:54:28 +0200 <albet70> I saw this `goto' using fixed-point inside 'callCC' to implement a loop, which is not easy to understand
2022-08-14 16:54:34 +0200 <Lears> That might explain why I couldn't find it. <.<
2022-08-14 16:58:24 +0200 <ski> @hackage managed
2022-08-14 16:58:24 +0200 <lambdabot> https://hackage.haskell.org/package/managed
2022-08-14 16:58:33 +0200 <ski> albet70 : ^ might be interesting
2022-08-14 16:59:01 +0200lisbeths(uid135845@2a03:5180:f:2::2:12a5)
2022-08-14 16:59:33 +0200causal(~user@50.35.83.177) (Quit: WeeChat 3.6)
2022-08-14 17:02:59 +0200gehmehgehgmgm
2022-08-14 17:03:02 +0200gmgmgmg
2022-08-14 17:06:17 +0200pagnol(~me@213-205-209-87.ftth.glasoperator.nl) (Ping timeout: 244 seconds)
2022-08-14 17:07:16 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-08-14 17:12:45 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
2022-08-14 17:17:04 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2022-08-14 17:21:28 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-14 17:25:41 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-08-14 17:25:43 +0200 <kavvadias> well im back with more type problems https://pastebin.com/Q0CeXND3
2022-08-14 17:26:03 +0200 <kavvadias> trying to get a new tupple and put it in a list of tupples
2022-08-14 17:28:59 +0200 <ski> you need to use `gets' with `<-', not `let'
2022-08-14 17:32:32 +0200Pickchea(~private@user/pickchea)
2022-08-14 17:33:43 +0200 <kavvadias> oh okay, still have the same type error
2022-08-14 17:34:51 +0200 <kavvadias> https://pastebin.com/5HBJ7kZN
2022-08-14 17:36:55 +0200 <ski> kavvadias> :t moveSh
2022-08-14 17:37:21 +0200 <kavvadias> [Point] -> [Point]
2022-08-14 17:37:44 +0200 <qrpnxz> a byte has only 256 possible values. I've tried two ways now of getting GHC to just reuse the same 256 objects, but no, it really wants to allocate a bunch of useless memory. Oh well.
2022-08-14 17:38:21 +0200 <ski> kavvadias : use `++' in place of `:' ?
2022-08-14 17:39:21 +0200 <kavvadias> oh wow, 30 minutes well spent for me
2022-08-14 17:39:29 +0200 <kavvadias> thank you ski
2022-08-14 17:40:24 +0200 <ski> ccraft <- use (craft . getCraft)
2022-08-14 17:41:21 +0200 <ski> cshots <- use (shots . getShots)
2022-08-14 17:41:29 +0200 <ski> shots . getShots .= moveSh [ccraft] ++ cshots
2022-08-14 17:41:31 +0200 <ski> or
2022-08-14 17:41:32 +0200 <ski> ccraft <- use (craft . getCraft)
2022-08-14 17:41:49 +0200 <ski> shots . getShots %= (moveSh [ccraft] ++)
2022-08-14 17:42:59 +0200Kaiepi(~Kaiepi@142.68.249.28) (Ping timeout: 252 seconds)
2022-08-14 17:44:05 +0200 <ski> (oh, and you're already not using `game')
2022-08-14 17:45:22 +0200waldo(~waldo@user/waldo)
2022-08-14 17:45:27 +0200 <kavvadias> oh true
2022-08-14 17:48:47 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-08-14 17:52:01 +0200 <pavonia> Is there a package for huge integers with sparse bit occurences that implements Eq, Ord and Bits?
2022-08-14 17:53:05 +0200 <pavonia> Huge as in billions of bits, but only a few dozens of bits are sets/unset
2022-08-14 17:53:36 +0200Franciman(~Franciman@mx1.fracta.dev)
2022-08-14 17:54:19 +0200MoC(~moc@user/moc)
2022-08-14 17:54:51 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-14 17:55:47 +0200 <geekosaur> https://hackage.haskell.org/package/bitvec-1.1.3.0/docs/Data-Bit.html ?
2022-08-14 17:56:29 +0200 <geekosaur> there are also some bit-set packages but I doubt those have Bits instances
2022-08-14 17:56:58 +0200 <pavonia> This doesn't seem to support sparse bitsets
2022-08-14 17:57:03 +0200 <geekosaur> I strongly suspect "sparse occurrences" and "Bits instance" don't go together
2022-08-14 17:57:30 +0200MoC(~moc@user/moc) (Client Quit)
2022-08-14 17:57:41 +0200stef204(~stef204@user/stef204)
2022-08-14 17:57:55 +0200MajorBiscuit(~MajorBisc@46-229-126.internethome.cytanet.com.cy)
2022-08-14 17:58:32 +0200 <pavonia> What operation could not be implemented efficiently for such sets?
2022-08-14 17:58:57 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-08-14 17:58:58 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-08-14 17:58:58 +0200wroathe(~wroathe@user/wroathe)
2022-08-14 17:59:20 +0200 <int-e> one could start with data Bits = Pos IntSet | Neg IntSet
2022-08-14 17:59:24 +0200 <geekosaur> complement
2022-08-14 18:00:04 +0200 <pavonia> That would be O(1) by just setting an internal flag
2022-08-14 18:01:02 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-08-14 18:01:08 +0200 <pavonia> Also we can assume only operations are performed that lead to sparse bitsets again
2022-08-14 18:01:21 +0200 <int-e> Though if you actually want integers, big shifts will be problematic, since those produce long runs of zeros. So "sparse" would translate into "small number of alternations" rather than "small number of set bits, or small number of unset bits"
2022-08-14 18:04:16 +0200 <pavonia> Hhm, why would that be problematic? Shifting should only map the set of set/unset bits to new indices
2022-08-14 18:04:27 +0200 <geekosaur> right, int-e is seeing what I'm seeing. yes, you can make any given operation quick, but the more of that you do the more likely that intermediate results will have lots of set bits
2022-08-14 18:04:58 +0200 <geekosaur> or worse, lots of alternations
2022-08-14 18:06:42 +0200 <pavonia> I imaginge xor could be a bit tricky
2022-08-14 18:06:49 +0200 <pavonia> *imagine
2022-08-14 18:07:52 +0200 <geekosaur> as for shifts, consider you have a bigint with all bits set, then you shift it so now you have a large number of unset bits on one end
2022-08-14 18:08:43 +0200 <int-e> > let f n x = (x `shiftL` n) .|. x in printf "%x" . f 32 . f 16 . f 8 . f 4 . f 2 $ 1 :: String
2022-08-14 18:08:45 +0200 <lambdabot> "5555555555555555"
2022-08-14 18:09:00 +0200zebrag(~chris@user/zebrag)
2022-08-14 18:09:22 +0200 <int-e> (you can get a lot of alternations in just a few operations if you want to)
2022-08-14 18:10:21 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-08-14 18:11:42 +0200 <pavonia> But those are not sparse operations. I mean it would be okay if the operations become less efficient if you do operations that introduce a lot of flipped bits
2022-08-14 18:12:00 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-14 18:16:57 +0200acidjnk(~acidjnk@p200300d6e7137a57bcb77a9a2e56f2aa.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2022-08-14 18:18:00 +0200stef204(~stef204@user/stef204) (Quit: WeeChat 3.6)
2022-08-14 18:18:26 +0200coot(~coot@213.134.176.158)
2022-08-14 18:20:05 +0200jinsun__(~jinsun@user/jinsun)
2022-08-14 18:20:05 +0200jinsun(~jinsun@user/jinsun) (Killed (lithium.libera.chat (Nickname regained by services)))
2022-08-14 18:20:05 +0200jinsun__jinsun
2022-08-14 18:21:43 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 244 seconds)
2022-08-14 18:21:46 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-08-14 18:22:28 +0200tharmas(~nikola@77-46-243-191.dynamic.isp.telekom.rs)
2022-08-14 18:26:17 +0200coot(~coot@213.134.176.158) (Remote host closed the connection)
2022-08-14 18:27:20 +0200waldo(~waldo@user/waldo) (Quit: quit)
2022-08-14 18:28:39 +0200 <int-e> Here's something that kind of comes close... https://hackage.haskell.org/package/diet-0.1.0.0/docs/Data-Diet-Set-Lifted.html
2022-08-14 18:29:27 +0200 <int-e> ("interval tree" is a viable keyword here)
2022-08-14 18:30:37 +0200 <int-e> And what I mean by "comes close" is that it has reasonably efficient difference, from which you can create all boolean operations.
2022-08-14 18:31:10 +0200 <qrpnxz> Data.Text.Foreign.fromPtr oh yeah baby here we go
2022-08-14 18:39:10 +0200Kaiepi(~Kaiepi@142.68.249.28)
2022-08-14 18:40:09 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-08-14 18:47:24 +0200 <pavonia> int-e: thanks
2022-08-14 18:51:41 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 244 seconds)
2022-08-14 18:59:57 +0200mbuf(~Shakthi@122.165.55.71) (Quit: Leaving)
2022-08-14 19:01:21 +0200riverside(~riverside@213.205.241.175)
2022-08-14 19:02:21 +0200 <riverside> hey, was wondering if anyone had had any thoughts about this idea about language primatives for graphs - i was about to read into STG
2022-08-14 19:03:43 +0200 <riverside> i think i can basically hack it by using a type level symbol annotation to a datatype so that it can record not only positional data, but something like a unique object identifier (eg, third position in the list called "this list")
2022-08-14 19:04:08 +0200 <riverside> basically im saying i think the haskell type system is developed enough to support it *without* language primatives
2022-08-14 19:04:55 +0200 <riverside> and that it gives identifies this "this" identifier as a possible candidate for a language primative
2022-08-14 19:05:00 +0200 <riverside> over
2022-08-14 19:07:18 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-08-14 19:08:45 +0200 <riverside> perhaps someone could comment wrt the "this object" concept from OOP (which im not familiar with at all)
2022-08-14 19:08:50 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
2022-08-14 19:09:20 +0200Colere(~colere@about/linux/staff/sauvin) (Ping timeout: 268 seconds)
2022-08-14 19:09:41 +0200alexfmpe[m](~alexfmpem@2001:470:69fc:105::38ba)
2022-08-14 19:10:01 +0200Colere(~colere@about/linux/staff/sauvin)
2022-08-14 19:10:05 +0200 <riverside> i can recall edkmett had done some quite elaborate work in doing OOP style programming in haskell, though maybe its not even the same idea
2022-08-14 19:11:06 +0200 <c_wraith> there's nothing special about "this".
2022-08-14 19:11:25 +0200Furor(~colere@about/linux/staff/sauvin)
2022-08-14 19:11:34 +0200 <c_wraith> If you've ever used python, it sort of forces you to admit it.
2022-08-14 19:12:25 +0200 <c_wraith> In every other language, it's hiding the first parameter to the function call syntactically, then giving you access to it via a keyword.
2022-08-14 19:12:26 +0200 <riverside> i have unfortunately used python, but not enough to know what you mean. maybe java
2022-08-14 19:12:44 +0200 <c_wraith> In python, it doesn't hide the parameter - you need to list it explicitly
2022-08-14 19:13:22 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2022-08-14 19:14:15 +0200 <riverside> do you think it would make much difference if we could say "this" datatype when defining a recursive datatype?
2022-08-14 19:14:33 +0200 <riverside> without having to hack it by using a symbol annotation?
2022-08-14 19:14:51 +0200Colere(~colere@about/linux/staff/sauvin) (Ping timeout: 268 seconds)
2022-08-14 19:14:58 +0200 <c_wraith> I'm not aware of any such problems in the first place
2022-08-14 19:15:11 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-08-14 19:15:25 +0200 <riverside> i guess i dont have enough experience of using OOP languages to understand what "this" is actually used for, and what it brings to those languages
2022-08-14 19:16:07 +0200 <geekosaur> most of the time it's implicit. rarely you need to refer to the whole object instead of just a method or attribute, and then you need `this`
2022-08-14 19:16:47 +0200 <c_wraith> and there's literally *nothing* of theoretical interest. It's just a hidden function parameter.
2022-08-14 19:17:17 +0200 <c_wraith> like, that explains 100% of both semantics and implementation
2022-08-14 19:17:30 +0200tomboy64(~tomboy64@user/tomboy64) (Ping timeout: 255 seconds)
2022-08-14 19:18:38 +0200 <riverside> c_wraith. data ThisCyclicList (thisList :: symbol) (pos :: Nat) a where Empty :: ThisCyclicList thisList 0 a; Cons :: a -> ThisCyclicList thisList n a -> ThisCyclicList thisList (n+1) a; Cycle :: a -> ThisCyclicList thisList (i havent thought how this actually works) a -> ThisCyclicList thisList (etc.) a
2022-08-14 19:19:04 +0200 <severen> woah
2022-08-14 19:19:06 +0200 <c_wraith> I still don't understand what the problem is.
2022-08-14 19:19:40 +0200 <riverside> so you cant just add on "another (not "this")" list... since the cycle is supposed to refer to the same object
2022-08-14 19:20:18 +0200 <geekosaur> sure you can, you make it a parameter like in any other language
2022-08-14 19:20:25 +0200 <geekosaur> this may be clearer using gadt syntax
2022-08-14 19:20:59 +0200 <geekosaur> :t (:)
2022-08-14 19:21:01 +0200 <lambdabot> a -> [a] -> [a]
2022-08-14 19:21:07 +0200 <geekosaur> takes another list
2022-08-14 19:22:10 +0200 <riverside> which is to be precluded
2022-08-14 19:23:05 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-08-14 19:23:17 +0200 <riverside> i guess the point of having it as a primitive instead of using the symbol annotated version above, is that it saves the user having to think of unique names for all their values
2022-08-14 19:23:26 +0200 <riverside> like some kind of hash
2022-08-14 19:23:52 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-08-14 19:23:52 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-08-14 19:23:52 +0200wroathe(~wroathe@user/wroathe)
2022-08-14 19:23:56 +0200kavvadias(~kavvadias@2001:9e8:630d:e200:c5c8:e88c:6eff:1a7e) (Quit: Client closed)
2022-08-14 19:23:57 +0200 <riverside> "thats not a cycle, thats just any old list"
2022-08-14 19:24:00 +0200 <c_wraith> you seem to be conflating types and values
2022-08-14 19:24:07 +0200 <riverside> nope
2022-08-14 19:24:11 +0200crazazy(~user@2001:1c00:831:4700:3db9:a2e6:d73e:3903) (Ping timeout: 255 seconds)
2022-08-14 19:24:13 +0200 <[exa]> yes.
2022-08-14 19:24:48 +0200 <riverside> well you would provide it using @, but it is the construction of a value
2022-08-14 19:26:23 +0200 <geekosaur> if I can get at it using @ then I can get at it without
2022-08-14 19:26:26 +0200econo(uid147250@user/econo)
2022-08-14 19:26:37 +0200FurorColere
2022-08-14 19:26:39 +0200 <geekosaur> just use a seoarate case toi do the rest
2022-08-14 19:26:43 +0200 <riverside> a keyword like "object" instead of datatype, so that in the GADT syntax a "this" reference could be made, without the user having to provide an actual symobl, using @ during the construction of their list values
2022-08-14 19:27:42 +0200 <[exa]> riverside: you can get pretty close using literally just CPP or a tiny bit of templatehaskell
2022-08-14 19:27:59 +0200 <riverside> geekosuar: i guess you could use Proxy, but i prefer to use AllowAmbiguousTypes
2022-08-14 19:28:24 +0200 <geekosaur> what?
2022-08-14 19:28:30 +0200 <riverside> no.
2022-08-14 19:28:38 +0200 <riverside> im to go i suppose
2022-08-14 19:28:45 +0200 <riverside> adios
2022-08-14 19:28:54 +0200 <qrpnxz> anyone every use `Monoid` for default values? It's like applicative pure but for values haha.
2022-08-14 19:29:10 +0200 <ski> riverside : would `this' refer to a type, or to a value ? something else ?
2022-08-14 19:29:23 +0200 <geekosaur> it's fairly common to require Monoid and use mempty in a case where you need a default value, yes
2022-08-14 19:29:27 +0200 <qrpnxz> sometimes i need to pull a value out of no where, so i just stick a monoid constraint on there
2022-08-14 19:29:35 +0200 <qrpnxz> a neat
2022-08-14 19:29:44 +0200 <geekosaur> and much more principled than Data.Default
2022-08-14 19:29:53 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-14 19:30:17 +0200[exa]foresees `(<>) = error "sorry not that kind of monoid :')"`
2022-08-14 19:30:38 +0200 <ski> there was some blag i recently saw which talked about using lists of monoid elements, versus a monoid element
2022-08-14 19:30:41 +0200 <qrpnxz> using monoid remind me of Go a bit. In Go every type has a "zero" which is used like for example if i allocate a slice, it will be filled with the zero of that type. Monoids mempty is basically a types "zero" so i like using it for that kind of thing
2022-08-14 19:31:23 +0200 <ski> iirc Cryptol has a polymorphic `zero', belonging to every type .. but it has no empty types
2022-08-14 19:31:53 +0200 <[exa]> qrpnxz: in monoid the zero is meant relatively to the <>, a bit of abuse is okay but for production code please certainly go with Default
2022-08-14 19:32:15 +0200 <ski> (for functions, it's the constantly zero function. for arrays (of a given size), it's the zero-filled array. &c.)
2022-08-14 19:33:39 +0200 <qrpnxz> [exa]: an example use case to provide some context: I have a type that i want to parse that is a functor. Instead of defining an instance for (F ()) i wanna do Monoid m => (F m) that way it can be used more places instead having to replace the () with a maybe expensive (<$)
2022-08-14 19:34:01 +0200 <riverside> ok, a joke. "used to work as of gofur, go for this, go for that, etc."
2022-08-14 19:34:03 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-08-14 19:34:31 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-08-14 19:34:52 +0200 <qrpnxz> :)
2022-08-14 19:36:40 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net)
2022-08-14 19:37:43 +0200 <qrpnxz> well i guess a Default type class makes more sense in that use case if i think about it a bit
2022-08-14 19:40:38 +0200benin0(~benin@183.82.206.125) (Quit: The Lounge - https://thelounge.chat)
2022-08-14 19:41:03 +0200Pickchea(~private@user/pickchea) (Ping timeout: 252 seconds)
2022-08-14 19:41:17 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
2022-08-14 19:42:04 +0200 <qrpnxz> geekosaur: what are your personal gripes with Default?
2022-08-14 19:43:37 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2022-08-14 19:46:14 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2022-08-14 19:48:27 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-08-14 19:55:37 +0200vysn(~vysn@user/vysn) (Ping timeout: 268 seconds)
2022-08-14 19:56:26 +0200 <geekosaur> qrpnxz, https://github.com/xmonad/xmonad/commit/383ffb772e4a
2022-08-14 19:56:44 +0200 <geekosaur> you have no control over instances someone else picked behind your back
2022-08-14 19:57:01 +0200 <geekosaur> I can't even override it without forcing an overlapping instance
2022-08-14 19:58:56 +0200ianayl(~ian@cpef81d0fadc403-cmf81d0fadc400.sdns.net.rogers.com)
2022-08-14 20:02:31 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-14 20:03:55 +0200 <qrpnxz> i mean, what about a newtype? If i want a different monoid i have to newtype too
2022-08-14 20:05:05 +0200 <qrpnxz> and it seems in the spirit of default to have a default Default instance as well
2022-08-14 20:05:55 +0200 <geekosaur> sure, break 10 years' worth of configs because someone thought Default was a good idea
2022-08-14 20:06:46 +0200 <geekosaur> (I still think we never should have permitted it into the codebase but the other 3 admins like it 😞 )
2022-08-14 20:07:55 +0200 <Lears> The problem is that `def` is too polymorphic, even though there's little use for that polymorphism beyond saving names. When someone puts it in the wrong place they generally won't get a type error, just weird runtime behaviour with no clear source. You can't solve this with newtypes.
2022-08-14 20:09:08 +0200Midjak(~Midjak@82.66.147.146)
2022-08-14 20:09:11 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
2022-08-14 20:09:35 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net)
2022-08-14 20:09:43 +0200nate4(~nate@98.45.169.16)
2022-08-14 20:09:55 +0200 <qrpnxz> wym too polymorphic? def should work for any type i want, so i don't see how it could be any less poly than it is
2022-08-14 20:10:22 +0200Midjak(~Midjak@82.66.147.146) (Remote host closed the connection)
2022-08-14 20:11:09 +0200 <Lears> I mean what I already said; it turns type errors into runtime errors.
2022-08-14 20:11:11 +0200 <geekosaur> but you can't stop it from also working for any type you *don't* want
2022-08-14 20:11:11 +0200 <ski> i believe Lears is not talking about situations that you want, but situations that you don't want (but which happen anyway)
2022-08-14 20:11:13 +0200 <qrpnxz> For my use case i put above, the alternative would be to have the type class have another special snowflake method that accepts a default value, which seems insane
2022-08-14 20:11:19 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-08-14 20:11:21 +0200 <geekosaur> and producing garbage
2022-08-14 20:11:56 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2022-08-14 20:11:59 +0200Midjak(~Midjak@82.66.147.146)
2022-08-14 20:13:27 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds)
2022-08-14 20:13:27 +0200Lord_of_Life_Lord_of_Life
2022-08-14 20:14:19 +0200 <qrpnxz> i feel like that's more a problem with how Default was used than default itself. How come `def` can get you garbage, but `pure` cannot? both are picking up a default state, so it seems like what you could say about one you could say about the other.
2022-08-14 20:14:22 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-08-14 20:14:52 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
2022-08-14 20:15:08 +0200 <geekosaur> but that's how Default is *supposed* to be used: as a bomb waiting to go off on you
2022-08-14 20:15:21 +0200 <geekosaur> all those instances came from the standard Data.Default instances
2022-08-14 20:15:46 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net)
2022-08-14 20:15:52 +0200 <qrpnxz> to me the purpose of a default is of course a sane default. A benign valid value. A bomb default value would be `undefined`
2022-08-14 20:16:03 +0200 <geekosaur> and no, it is not viable that I am forced to newtype around Default producing garbage on me
2022-08-14 20:16:16 +0200 <geekosaur> but it is not always a sane default
2022-08-14 20:17:06 +0200 <Lears> pure is like mempty, they're principled because they actually *mean* something that's coherent across all instances. def is fundamentally ad hoc.
2022-08-14 20:17:09 +0200 <qrpnxz> so then the issue seems to lie more with the instances then
2022-08-14 20:17:32 +0200 <ski> @type pure
2022-08-14 20:17:33 +0200 <lambdabot> Applicative f => a -> f a
2022-08-14 20:17:58 +0200 <ski> `pure' is bound together with `(<*>)', and constrained by the neutral element laws
2022-08-14 20:18:04 +0200 <geekosaur> and I do not get to opt out of a default that is not sane
2022-08-14 20:18:09 +0200 <geekosaur> for my use
2022-08-14 20:18:14 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-08-14 20:18:26 +0200 <geekosaur> which is the real problem: there is no way to constrain Default by use case
2022-08-14 20:18:31 +0200 <ski> (and likewise for `empty' and `mappend'/`(<>)')
2022-08-14 20:19:05 +0200 <Lears> qrpnxz: Re your actual problem, rather than "adding another special snowflake method", the version that takes a default value as an argument can be the sole method, then versions taking () or mempty or def can be written outside for convenience.
2022-08-14 20:19:11 +0200 <qrpnxz> why not? Like if i need a default value to put in an array, the elements of the array are something in my problem domain, so the type is one of my problem domain. I can pick that type to be a thing with all the properties i want, including its default.
2022-08-14 20:19:31 +0200 <Lears> To my eye, that's easily the most sane approach.
2022-08-14 20:19:38 +0200 <geekosaur> sure, if you're happy to newtype all over the place because someone else picked a different default
2022-08-14 20:20:13 +0200 <ski> (s/empty/mempty/)
2022-08-14 20:20:26 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds)
2022-08-14 20:20:55 +0200aku_aku
2022-08-14 20:21:24 +0200 <qrpnxz> Lears: yeah that makes sense. But what to have for the canonical class instance? To me it makes sense to be the one with default constraint, and if you don't wanna mess with Default, then use the non class function that explicitly takes a value.
2022-08-14 20:21:48 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-08-14 20:21:52 +0200gdown(~gavin@h69-11-149-231.kndrid.broadband.dynamic.tds.net)
2022-08-14 20:22:57 +0200 <geekosaur> but I did take a value.
2022-08-14 20:23:12 +0200 <qrpnxz> geekosaur: if it were Monoid it be the same but a bit worse i think, because it could only be monoids and you still have to newtype to get a different mempty
2022-08-14 20:23:18 +0200 <geekosaur> someone decided to use `def` and the type system did not stop them
2022-08-14 20:23:51 +0200 <geekosaur> and I do not get to opt in only for `defaultConfig` and not for `CLong`
2022-08-14 20:24:32 +0200bob(~geranim0@modemcable062.79-202-24.mc.videotron.ca) (Ping timeout: 268 seconds)
2022-08-14 20:24:34 +0200geranim0(~geranim0@modemcable062.79-202-24.mc.videotron.ca) (Ping timeout: 268 seconds)
2022-08-14 20:25:00 +0200 <geekosaur> never mind, you clearly think it's fine because you didn't get screwed over by it, I did.
2022-08-14 20:25:28 +0200 <geekosaur> and it's on the victim to deal when that happens
2022-08-14 20:25:29 +0200zer0bitz(~zer0bitz@2001:2003:f748:2000:7d51:3be7:af35:67eb)
2022-08-14 20:25:29 +0200 <qrpnxz> I do appreciate your POV thanks. I def keep that in mind and not make users dependent on def
2022-08-14 20:25:39 +0200 <qrpnxz> *definitely lol
2022-08-14 20:26:23 +0200 <geekosaur> the point remains: `def` was not supposed to be used there. the type system did not prevent it because `def` has instances for practically everything
2022-08-14 20:27:02 +0200 <geekosaur> so I have to hack around misuses of it one way or another, either by newtypes or by detecting its fail and substituting something sane (which is what I ended up doing)
2022-08-14 20:27:09 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
2022-08-14 20:28:59 +0200aku(~aku@163.172.137.34) (Remote host closed the connection)
2022-08-14 20:29:33 +0200 <geekosaur> and I can't wrap every single type with a newtype to avoid `def` subverting the type system
2022-08-14 20:31:06 +0200 <geekosaur> (worse, the default there is sane only there. What if I want a different key sequence to be the default somewhere else? Can't even use an overlapping type for that.)
2022-08-14 20:31:36 +0200 <qrpnxz> Lears: reason being that the vast majority of instances will not need to accept a default value. It's a more special case to need a default value, so i rather get it from a constraint, and then have a side function that takes a default for that particular type.
2022-08-14 20:32:25 +0200 <qrpnxz> geekosaur: you'd create a different type in that case. Different behaviour, different type.
2022-08-14 20:32:39 +0200 <geekosaur> they are all key sequences.
2022-08-14 20:32:42 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net)
2022-08-14 20:32:47 +0200 <geekosaur> they can't be different types
2022-08-14 20:32:55 +0200 <qrpnxz> Though i think i see what you are getting at yeah. It's really the same type, just a different default for a different context.
2022-08-14 20:33:04 +0200 <geekosaur> the user is not doing something completely different to type that sequence
2022-08-14 20:33:08 +0200 <qrpnxz> in that case it makes more sense to accept a default than to use the constraints
2022-08-14 20:33:36 +0200kenran(~kenran@200116b82b3c100072f1c9de10c8d6d9.dip.versatel-1u1.de)
2022-08-14 20:33:47 +0200 <geekosaur> and even if I somehow admit that, there's the fact that NoSymbol is only a viable default in some contexts; it's not even valid in others
2022-08-14 20:34:47 +0200riverside(~riverside@213.205.241.175) (Remote host closed the connection)
2022-08-14 20:36:15 +0200 <qrpnxz> though in the situation you are describing, you are not even polymorphic on the type if i understand correctly, so really the function should just use the appropriate default, be it it happens to be `def` or another value, no?
2022-08-14 20:36:53 +0200 <geekosaur> that's what it's doing. but I have no control over the default and it is wrong as is
2022-08-14 20:36:59 +0200lisbeths(uid135845@2a03:5180:f:2::2:12a5) (Quit: Connection closed for inactivity)
2022-08-14 20:37:05 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
2022-08-14 20:37:06 +0200 <geekosaur> it's producing `const (0,0)`
2022-08-14 20:38:59 +0200 <geekosaur> it should be extracting the default modMask from the parameter and tupling it with `xK_b`, but I can't make it do that without an overlapping instance with the one that produces `const def`
2022-08-14 20:39:38 +0200 <geekosaur> which also means changing the default for the mask and key, even if viable, wouldn't prevent this overlap
2022-08-14 20:42:24 +0200aku(~aku@163.172.137.34)
2022-08-14 20:45:20 +0200 <geekosaur> we don't document that as accepting `def` but distrotube's been telling people to use it and the type system doesn't stop them because it found a set of instances that fit but produce garbage
2022-08-14 20:45:48 +0200ccntrq(~Thunderbi@172.209.94.92.rev.sfr.net) (Remote host closed the connection)
2022-08-14 20:47:46 +0200 <qrpnxz> hmm yeah, instances for non-unit tuples seem harmful. the one for function instance also hard to justify.
2022-08-14 20:50:18 +0200 <Bulby[m]> https://github.com/jmc2obj/j-mc-2-obj/blob/master/src/org/jmc/Chunk.java#L399-L411 nightmare code
2022-08-14 20:50:24 +0200 <Bulby[m]> probably fairly trivial lol
2022-08-14 20:51:00 +0200 <qrpnxz> is xmonad accepting many defaultable types from users? Why not just have it's own typeclass with better defaults? (heh)
2022-08-14 20:51:03 +0200 <qrpnxz> geekosaur:
2022-08-14 20:51:33 +0200aeka(~aeka@user/hiruji) (Ping timeout: 244 seconds)
2022-08-14 20:51:34 +0200aeka`(~aeka@2606:6080:1002:8:3285:30e:de43:8809)
2022-08-14 20:51:58 +0200aeka`aeka
2022-08-14 20:53:49 +0200 <qrpnxz> Bulby[m]: doesn't look particularly nightmare, though those linked lists make me raise an eyebrow
2022-08-14 20:54:27 +0200 <Bulby[m]> oh
2022-08-14 20:54:28 +0200 <Bulby[m]> wait
2022-08-14 20:54:42 +0200 <Bulby[m]> is it like multiple generators in a comprehensiion
2022-08-14 20:56:02 +0200 <Bulby[m]> yes
2022-08-14 20:56:56 +0200 <Bulby[m]> it looks like how they iterate it should generate in order
2022-08-14 20:56:57 +0200tomboy64(~tomboy64@user/tomboy64)
2022-08-14 20:57:03 +0200 <Bulby[m]> wait
2022-08-14 20:57:21 +0200 <Bulby[m]> will it?
2022-08-14 20:57:25 +0200 <geekosaur> I would be okay with our having our own `def` which only applied to various `defaultx` things, although I'd have to convince our other maintainers that it's a good idea. Sadly they're the ones that dragged Data.Default into it
2022-08-14 20:59:27 +0200 <qrpnxz> well, good luck :)
2022-08-14 21:00:42 +0200 <geekosaur> and yes, there are contribs that use it (XMonad.Prompt and XMonad.Layout.Decoration come to mind — and that one has its own time bomb because XMonad.Layout.ImageButtonDecoration passed Decoration's `def` will render incorrectly)
2022-08-14 21:01:13 +0200 <Bulby[m]> `(z/4)*4`
2022-08-14 21:01:16 +0200 <Bulby[m]> i don't even
2022-08-14 21:01:18 +0200 <geekosaur> defaults have a certain tendency to depend on context, and there's no way to make any form of Data.Default sensitive to context because that requires runtime awareness
2022-08-14 21:04:43 +0200talismanick(~talismani@2601:200:c100:3850::dd64)
2022-08-14 21:07:09 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net)
2022-08-14 21:07:15 +0200 <geekosaur> Bulby[m], that makes a certain sense iff z is integral
2022-08-14 21:07:33 +0200 <Bulby[m]> yeah it's an integral
2022-08-14 21:07:42 +0200 <geekosaur> although I don't recall off the top of my head whether it'll use integer division in that case
2022-08-14 21:07:55 +0200 <geekosaur> thereby dropping a remainder to give a multiple of 4
2022-08-14 21:11:42 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
2022-08-14 21:12:36 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net)
2022-08-14 21:12:40 +0200zxx7529(~Thunderbi@user/zxx7529) (Ping timeout: 268 seconds)
2022-08-14 21:12:41 +0200zeenk(~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f) (Quit: Konversation terminated!)
2022-08-14 21:14:03 +0200 <Bulby[m]> it truncates
2022-08-14 21:14:11 +0200 <Bulby[m]> `biome = tagBiomes.data[x/4 + (z/4)*4 + (y/4)*4*4];`
2022-08-14 21:14:26 +0200 <geekosaur> right, makes sense
2022-08-14 21:15:09 +0200 <geekosaur> and you might think z-(4-z%4) but that's the same number of divisions as the other and one more subtractionb
2022-08-14 21:15:14 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-08-14 21:15:54 +0200 <geekosaur> and possible considerations with respect to sign, although if used in an array context presumably that doesn't come up
2022-08-14 21:17:08 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds)
2022-08-14 21:17:54 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-08-14 21:34:54 +0200pagnol(~me@213-205-209-87.ftth.glasoperator.nl)
2022-08-14 21:35:14 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2022-08-14 21:38:21 +0200Jeanne-Kamikaze(~Jeanne-Ka@142.147.89.223)
2022-08-14 21:39:23 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-08-14 21:41:04 +0200mastarija(~mastarija@2a05:4f46:e03:6000:fe12:1d1c:1857:ccc4)
2022-08-14 21:41:51 +0200 <geekosaur> oh, and if the compiler's worth its salt it turns that into (z & 0xfffffffc) which would make you wtf even more if written out
2022-08-14 21:42:51 +0200 <geekosaur> or 0x7ffffffc if it's signed
2022-08-14 21:42:53 +0200biberu(~biberu@user/biberu) (Ping timeout: 268 seconds)
2022-08-14 21:43:33 +0200 <geekosaur> no, I guess it'd still be f instead of 7
2022-08-14 21:46:38 +0200mmhat(~mmh@p200300f1c732d6e8ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-08-14 21:47:01 +0200mmhat(~mmh@p200300f1c732d6e8ee086bfffe095315.dip0.t-ipconnect.de)
2022-08-14 21:52:15 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
2022-08-14 21:52:30 +0200 <Bulby[m]> invalid stored block lengths
2022-08-14 21:52:32 +0200 <Bulby[m]> amazing
2022-08-14 21:52:32 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-08-14 21:52:38 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-14 21:53:03 +0200kilolympus(~kilolympu@90.206.106.191)
2022-08-14 21:53:22 +0200adanwan_(~adanwan@gateway/tor-sasl/adanwan)
2022-08-14 21:53:40 +0200 <Bulby[m]> wait I'm using raw compression
2022-08-14 21:53:43 +0200 <Bulby[m]> why is it
2022-08-14 21:53:50 +0200 <Bulby[m]> why is it in the normal module
2022-08-14 21:54:02 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 268 seconds)
2022-08-14 21:54:36 +0200pavonia(~user@user/siracusa)
2022-08-14 21:54:42 +0200califax(~califax@user/califx) (Remote host closed the connection)
2022-08-14 21:55:11 +0200califax(~califax@user/califx)
2022-08-14 21:55:47 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-08-14 21:59:45 +0200ddellacosta(~ddellacos@89.45.90.144)
2022-08-14 22:02:30 +0200Pickchea(~private@user/pickchea)
2022-08-14 22:02:35 +0200ddellaco1(~ddellacos@89.45.90.118) (Ping timeout: 268 seconds)
2022-08-14 22:06:12 +0200 <Bulby[m]> the rfcs java docs and haskell docs link to are the same
2022-08-14 22:07:11 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-08-14 22:07:40 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-14 22:12:56 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-08-14 22:14:53 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-08-14 22:15:03 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 252 seconds)
2022-08-14 22:19:51 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
2022-08-14 22:20:08 +0200nate4(~nate@98.45.169.16) (Read error: Connection reset by peer)
2022-08-14 22:20:26 +0200nate4(~nate@98.45.169.16)
2022-08-14 22:24:25 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-14 22:26:43 +0200califax(~califax@user/califx) (Ping timeout: 268 seconds)
2022-08-14 22:27:13 +0200califax(~califax@user/califx)
2022-08-14 22:28:03 +0200acidjnk(~acidjnk@p200300d6e7137a1040029d0042753765.dip0.t-ipconnect.de)
2022-08-14 22:29:43 +0200nate4(~nate@98.45.169.16) (Ping timeout: 252 seconds)
2022-08-14 22:29:51 +0200bjobjo(~bjobjo@user/bjobjo) (Quit: leaving)
2022-08-14 22:34:38 +0200kenran(~kenran@200116b82b3c100072f1c9de10c8d6d9.dip.versatel-1u1.de) (Quit: WeeChat info:version)
2022-08-14 22:37:57 +0200bjobjo(~bjobjo@user/bjobjo)
2022-08-14 22:42:44 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2022-08-14 22:44:42 +0200jgeerds(~jgeerds@55d46bad.access.ecotel.net)
2022-08-14 22:56:56 +0200nate4(~nate@98.45.169.16)
2022-08-14 22:58:03 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2022-08-14 22:58:19 +0200severen(~severen@202.36.179.72) (Ping timeout: 252 seconds)
2022-08-14 23:00:09 +0200yvan-sraka(~yvan-srak@105.67.7.32) (Remote host closed the connection)
2022-08-14 23:01:20 +0200MajorBiscuit(~MajorBisc@46-229-126.internethome.cytanet.com.cy) (Quit: WeeChat 3.5)
2022-08-14 23:01:47 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-08-14 23:01:47 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-08-14 23:01:47 +0200wroathe(~wroathe@user/wroathe)
2022-08-14 23:01:53 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-08-14 23:01:54 +0200nate4(~nate@98.45.169.16) (Ping timeout: 264 seconds)
2022-08-14 23:03:02 +0200MajorBiscuit(~MajorBisc@46-229-126.internethome.cytanet.com.cy)
2022-08-14 23:04:56 +0200pagnol(~me@213-205-209-87.ftth.glasoperator.nl) (Ping timeout: 268 seconds)
2022-08-14 23:05:51 +0200justache(~justache@user/justache)
2022-08-14 23:07:16 +0200crazazy(~user@2001:1c00:831:4700:3db9:a2e6:d73e:3903)
2022-08-14 23:10:08 +0200ski. o O ( "* autrijus stares at type Eval x = forall r. ContT r (ReaderT x IO) (ReaderT x IO x) and feels very lost","<shapr> Didn't you write that code?","<autrijus> yeah. and it works","<autrijus> I just don't know what it means." )
2022-08-14 23:11:09 +0200Midjak(~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
2022-08-14 23:12:56 +0200 <geekosaur> nice to know thta happened even to audrey…
2022-08-14 23:13:51 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net)
2022-08-14 23:14:39 +0200geekosaurcan recognize the parts and how they fit together, but not what the result is supposed to do
2022-08-14 23:15:16 +0200 <hpc> @unmtl ContT r (ReaderT x IO) (ReaderT x IO x)
2022-08-14 23:15:16 +0200 <lambdabot> ((x -> IO x) -> x -> IO r) -> x -> IO r
2022-08-14 23:15:36 +0200 <monochrom> Ah two levels of ReaderT IO? :)
2022-08-14 23:15:44 +0200 <geekosaur> yeh
2022-08-14 23:15:58 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2022-08-14 23:16:36 +0200 <monochrom> Err no that's not the hard part.
2022-08-14 23:16:54 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2022-08-14 23:17:12 +0200 <geekosaur> right, that's the easy part since Reader's simple
2022-08-14 23:18:17 +0200kannon(~NK@192-184-132-215.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds)
2022-08-14 23:18:23 +0200 <ski> it looks maybe `fix'y, to me
2022-08-14 23:18:29 +0200 <monochrom> No, not 2 levels of ReaderT. Instead, ContT r (ReaderT x IO) Codomain. Oh but today we feel like returning a procedure that's of a ReaderT-x-IO nature.
2022-08-14 23:19:16 +0200 <monochrom> This is "just" M (N x) where M and N are monads.
2022-08-14 23:19:18 +0200crazazy(~user@2001:1c00:831:4700:3db9:a2e6:d73e:3903) (Ping timeout: 264 seconds)
2022-08-14 23:19:27 +0200 <ski> @unmtl StateT x (ContT r IO) (ReaderT x IO x)
2022-08-14 23:19:27 +0200 <lambdabot> x -> ((x -> IO x) -> x -> IO r) -> IO r
2022-08-14 23:19:53 +0200 <monochrom> OK, that still counts as 2 levels, but not the transformer stack kind of 2 levels.
2022-08-14 23:20:07 +0200 <monochrom> "Just" the functor composition kind.
2022-08-14 23:20:16 +0200Mr-Ski(~MrSki@134.101.170.4.dynamic-pppoe.dt.ipv4.wtnet.de)
2022-08-14 23:20:36 +0200etoast(~exaltedto@user/exaltedtoast) (Quit: Tschüss)
2022-08-14 23:20:47 +0200etoast(~exaltedto@user/exaltedtoast)
2022-08-14 23:26:33 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-08-14 23:26:38 +0200 <qrpnxz> hmm, i can't interpret an `effectful` Effect into an arbitrary monad, but `freer-simple` can't unliftio. Trade-offs!
2022-08-14 23:29:00 +0200yvan-sraka(~yvan-srak@105.67.7.32)
2022-08-14 23:30:16 +0200nate4(~nate@98.45.169.16)
2022-08-14 23:30:57 +0200 <qrpnxz> which means i can interpret a freer effect into an effectful effect lol. Then I can either interpret directly in freer, or interpret into effectful and then interpret again there.
2022-08-14 23:34:00 +0200ianayl(~ian@cpef81d0fadc403-cmf81d0fadc400.sdns.net.rogers.com) (Ping timeout: 268 seconds)
2022-08-14 23:34:23 +0200Pickchea(~private@user/pickchea) (Ping timeout: 255 seconds)
2022-08-14 23:34:28 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
2022-08-14 23:35:46 +0200nate4(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-08-14 23:40:51 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-14 23:43:23 +0200zer0bitz(~zer0bitz@2001:2003:f748:2000:7d51:3be7:af35:67eb) (Read error: Connection reset by peer)
2022-08-14 23:44:38 +0200zeenk(~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f)
2022-08-14 23:49:15 +0200nate4(~nate@98.45.169.16)
2022-08-14 23:49:53 +0200ddellacosta(~ddellacos@89.45.90.144) (Ping timeout: 268 seconds)
2022-08-14 23:51:18 +0200ddellacosta(~ddellacos@static-198-54-129-54.cust.tzulo.com)
2022-08-14 23:53:09 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-08-14 23:53:10 +0200Mr-Ski(~MrSki@134.101.170.4.dynamic-pppoe.dt.ipv4.wtnet.de) (Quit: The Lounge - https://thelounge.chat)
2022-08-14 23:57:34 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-08-14 23:59:10 +0200ddellacosta(~ddellacos@static-198-54-129-54.cust.tzulo.com) (Ping timeout: 268 seconds)