Home freenode/#haskell: Logs Calendar

Logs on 2020-10-09 (freenode/#haskell)

00:00:01 × frank001 quits (~frank001@178.162.212.214) ()
00:00:11 <nshepperd1> you mean concurrent read/writes?
00:00:17 <dolio> Yeah.
00:00:23 <dminuoso> dolio: Heh, Im waiting for conal to appear and make some note about "IO monad is not even wrong because it has no denotation". :p
00:00:31 polyrain joins (~polyrain@2001:8003:e501:6901:d439:cec4:3811:73e4)
00:00:42 <dolio> Well, he'd be wrong about that.
00:01:13 <nshepperd1> huh, I'd expect sequential consistency in the absence of documentation saying there isn't sequential consistency
00:01:24 <dolio> It says there may not be.
00:01:29 <dminuoso> Your point about IORef is interesting, does GHC actually reorder them?
00:01:30 <dolio> That's how I know about it.
00:01:36 <dolio> No, the CPU does.
00:01:39 <dminuoso> Oh
00:02:05 × conal quits (~conal@66.115.157.46) (Client Quit)
00:02:08 <dminuoso> You mean `writeIORef f 1 >> writeIORef f 2` could leave me with `1`?
00:02:21 <dolio> No, it's more complicated than that.
00:02:35 × frdg quits (47b88ff9@pool-71-184-143-249.bstnma.fios.verizon.net) (Remote host closed the connection)
00:02:50 <maralorn> It's worse on ARM, right?
00:02:52 <dolio> That one would be pretty bad.
00:02:55 <monochrom> No. But funny things happen when one thread goes "write to x; read from y; write to y" and another thread is also playing with x and y.
00:03:06 <nshepperd1> https://hackage.haskell.org/package/base-4.14.0.0/docs/Data-IORef.html#g:2 ah
00:03:10 <dminuoso> Oh if its just that..
00:03:21 <dminuoso> I see
00:03:36 <dminuoso> That seems expected
00:03:53 <monochrom> CPU can look at 1st thread and say "looks like x and y are independent, I can change it to "read from y; write to y; write to x""
00:03:58 × emmanuel_erc quits (~user@2604:2000:1382:ce03:6c74:afa7:7b91:b469) (Remote host closed the connection)
00:04:02 <dolio> Anyhow, IO is an algebra, and the machine is the model, and does what it wants.
00:04:04 <nshepperd1> well i guess that's fine since you'll probably use tvar for concurrent stuff anyway
00:04:08 <dminuoso> monochrom: Yeah, but that's just memory
00:04:09 emmanuel_erc joins (~user@2604:2000:1382:ce03:ddc4:166d:60ea:ae29)
00:04:11 <dminuoso> Nothing fancy here
00:04:13 <monochrom> If the 2nd thread has assumptions about 1st thread's order, it's toasted.
00:04:15 conal joins (~conal@66.115.157.46)
00:04:32 <monochrom> I think the IORef doc has a better example than mine.
00:04:34 <nshepperd1> or use atomicModifyIORef if you're a masochist
00:04:44 <monochrom> And then starts rambling about memory barriers
00:05:09 <monochrom> Oh, two IORefs have to be involved, so atomicModifyIORef is beside the point.
00:06:28 <nshepperd1> except for the memory barrier rambling
00:06:31 <dminuoso> Haha, reminds me of C and how endless programmers use volatile thinking it helps with memory orderings.
00:06:35 ericsagnes joins (~ericsagne@2405:6580:0:5100:841d:b2f8:a54e:9827)
00:06:57 <dolio> Someone was saying that in here the other day.
00:06:57 <monochrom> https://downloads.haskell.org/~ghc/8.10.2/docs/html/libraries/base-4.14.1.0/Data-IORef.html#g:2
00:07:25 <dolio> I decided to go read the C specification, and it didn't say anything about how much a pointer dereference or assignment costs.
00:07:49 <nshepperd1> The c specification barely says anything
00:07:57 <monochrom> Well, "rambling" is my view, I have this very purist opinion that if you need memory barriers you're abusing mutable shared variables.
00:08:06 <dolio> It's pretty long for not saying anything.
00:08:29 <dminuoso> nshepperd1: It says quite a lot, just not the things you hope it says.
00:08:32 <c_wraith> It says lots of things that turn out to not be useful
00:08:49 <nshepperd1> perhaps the c specification should run for political office
00:08:52 <monochrom> I think setting out a grammar is useful.
00:09:14 × remexre quits (~nathan@207-153-38-50.fttp.usinternet.com) (Quit: WeeChat 2.9)
00:10:19 <dolio> Even the grammar parts are pretty amazing. Like, there could be a 'type too big' error.
00:10:20 <monochrom> The Haskell Report isn't all that better either.
00:10:21 × siloxid quits (~user@unaffiliated/siloxid) (Remote host closed the connection)
00:10:48 <dolio> No, I wanted to make sure the C one wasn't significantly better than the Haskell one, like was claimed.
00:11:23 <dolio> Like Haskell, most of what it talks about is 'what' and not 'how'.
00:12:47 × emmanuel_erc quits (~user@2604:2000:1382:ce03:ddc4:166d:60ea:ae29) (Ping timeout: 240 seconds)
00:13:15 <koz_> dolio: In many cases for the C Standard, that 'what' is followed by 'the fuck'.
00:13:19 <dolio> I had to read the '17 one, though, because the '18 one was like $100. Maybe it's much improved.
00:13:26 emmanuel_erc joins (~user@2604:2000:1382:ce03:ddc4:166d:60ea:ae29)
00:13:43 <koz_> (apologies if I broke any channel norms)
00:14:02 <monochrom> hehe
00:14:36 <dolio> I was surprised at how little was specified about the floating point numbers.
00:15:42 <koz_> dolio: Yeah, contrary to popular belief, the C standard requires IEEE 754 precisely nowhere.
00:15:49 <koz_> (C++ I believe does, or at least nowadays)
00:16:00 <dolio> Maybe ISO doesn't want to pay royalties.
00:16:04 <koz_> But then again, C doesn't even require integer representations to be 2s comp.
00:16:10 <koz_> (again, C++ does, as of recently)
00:16:48 <dolio> Yeah. I could see how to really play games with an implementation. You can use sign-and-magnitude with as many padding bits as you want, etc.
00:16:57 justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311)
00:17:33 <justsomeguy> If I want to define a default class method, do I put the term-level implementation of that method directly in the type class?
00:17:40 <koz_> Also, again contrary to popular belief, char doesn't have to be 8 bits.
00:17:50 <monochrom> That's too easy. Unless you use, like, a dynamically determined middle bit position for the sign bit.
00:17:54 <koz_> (it has to be at least 7, and nothing else can be smaller than it, but otherwise, go nuts)
00:18:11 <koz_> (there are legit computers for sale _today_ which have 9-bit chars)
00:18:11 <dolio> Yeah.
00:18:40 <koz_> justsomeguy: Yeah, it goes under the type signature in the class definition, as if you were just writing a normal function.
00:19:37 <koz_> Ultimate implementation trolling - x86_64, every type is 64 bits wide.
00:19:44 <justsomeguy> koz_: Hmm, ok. I'll try that out.
00:19:46 <koz_> (well, not _that_ ultimate)
00:19:50 <koz_> (but it'd be funny)
00:19:55 <dolio> 64bits is too fast.
00:20:19 <monochrom> GHC comes close to that. Every type is a multiple of 64 bits wide.
00:20:25 <koz_> Something something Atari Jaguar.
00:20:37 <monochrom> Err I guess not really "every".
00:20:42 Wolfy87 joins (~Wolfy87@s91904426.blix.com)
00:21:22 <monochrom> But for example Word8 is 64 bits for the data constructor, 64 bits for the number.
00:22:17 <koz_> WordNotReally8.
00:22:30 <maralorn> I love how this conversation has drifted from CT to processor behavior.
00:22:33 <{abby}> Word8, the "12" is silent
00:23:03 <koz_> Maybe it's actually short for 'WordMultipleOf8'?
00:23:23 <koz_> maralorn: This is how we roll.
00:23:46 <monochrom> Nah, the real explanation is really boring. Alignment-friendly.
00:24:01 × emmanuel_erc quits (~user@2604:2000:1382:ce03:ddc4:166d:60ea:ae29) (Ping timeout: 272 seconds)
00:24:08 <koz_> monochrom: Yeah, but I can dream!
00:24:51 <monochrom> Right? In popular C implementations, if you malloc(1) you expect alignment to ruin it and you're wasiting at least 7 bytes, too.
00:25:31 <koz_> Not if you have 64-bit char!
00:26:04 <monochrom> That's going to be interesting.
00:26:10 <koz_> UTF-64 lolol.
00:26:27 <monochrom> For, one thing the C standard does require very clearly, is "sizeof(char) = 1".
00:26:42 <koz_> Yes, but 1 can be whatever bit count you want.
00:26:49 <koz_> As long as it's at least 7.
00:27:35 <koz_> You are within your rights as an implementer to decide that sizeof(char) == sizeof(short int) == sizeof(int) == sizeof(long int) == sizeof(long long int)
00:27:47 <monochrom> Yeah, so it's interesting in blowing up the proportion of most people's expectations.
00:28:55 <koz_> I also believe, though I am unsure, that sizeof(float) == sizeof(double) is legal.
00:29:25 <spinnylights> i might be the voice against the choir here a bit but i think the relative vagueness of the c standard is reasonable :P c code needs to compile for a huge variety of different hardware with widely varying characteristics, and if the standard was too specific it would cut certain platforms out
00:29:41 <dolio> Yeah, the person a few days ago was lamenting the Haskell report saying "you should expect a reasonable graph reduction algorithm" or something. But the C spec is full of those kind of 'reasonable expectation' things that don't technically hold force.
00:29:47 <koz_> spinnylights: Yeah, but the POSIX standard is _much_ more restrictive and somehow nobody's died yet.
00:30:10 <koz_> Back the 80s it was an architectural wild west.
00:30:11 <spinnylights> yes but POSIX-compliant operating systems don't run on as wide a variety of hardware as any given c code
00:30:13 <koz_> Implementational too.
00:30:21 <koz_> Nowadays it's _way_ more convergent.
00:30:29 nineonine joins (~nineonine@216-19-190-182.dyn.novuscom.net)
00:30:52 <koz_> dolio: The only reasonable expectation one can have vis a vis C is that you're invoking UB.
00:31:08 <koz_> Since there's like, over 100 sources of UB, some of which are highly surprising and almost impossible to guard against.
00:31:28 <koz_> (I've been bitten by a few, and I do not see how you can possibly ensure you don't violate them in general)
00:31:34 <spinnylights> people write c to control factory equipment, small appliances, etc. etc.—if you look at the implementation for the specific hardware you're targeting it's generally much more precise about its behavior than the standard is
00:31:37 × psygate quits (~psygate@unaffiliated/psygate) (Ping timeout: 272 seconds)
00:32:04 <spinnylights> i think that's basically by design
00:32:40 <koz_> spinnylights: And I believe said design is absolutely bonkers. The way the standard defines 'portability' translates to 'compiler writers should have the easiest job defining conformant implementations'.
00:32:51 <koz_> Which I argue is literally not how _anyone_ else views 'portability'.
00:33:22 <dolio> I have no real beef with the C standard. But the context was a claim that the standard was/needed to be precise, not the implementation.
00:34:10 <dolio> I mean, the implementation needs to be precise, of course, but that that isn't good enough.
00:34:18 <spinnylights> i don't think portability is as high a priority for c as it is for c++, in the sense that you mean; a lot of the places where c is used, the alternative would be some assembly language, and it's being used for ease of programming, not portability
00:34:55 <spinnylights> c code like that might be portable over some specific class of hardware but it's not usually meant to even run on PCs
00:34:58 <koz_> spinnylights: Then what's the point of the standard?
00:35:18 <spinnylights> if you _do_ need to write portable c code, it's there for you
00:35:18 × nineonine quits (~nineonine@216-19-190-182.dyn.novuscom.net) (Ping timeout: 260 seconds)
00:35:31 <spinnylights> it's good to be able to know what's portable and what's implementation-specific
00:35:43 <spinnylights> plus, without it compiler writers wouldn't know what to do :P
00:35:51 <koz_> Which translates essentially to 'essentially nothing' and 'essentially everything'.
00:36:07 <koz_> And I _really_ question the last assertion, considering that most languages lack anything like a standard and their authors seem to be just fine.
00:36:13 shatriff joins (~vitaliish@78.111.190.16)
00:36:21 <koz_> Or certainly no worse than the authors of compilers for 'standardized' languages.
00:36:35 <spinnylights> well not literally nothing or everything :P i kind of wish that was the case, it might be easier to make a good FFI
00:36:58 <koz_> spinnylights: 'Almost nothing', much like 'almost everything' is almost useless as a claim of anything.
00:37:00 <dolio> I was surprised by the scheme 'proper tail recursion' spec, too.
00:37:12 <koz_> dolio: Yeah, unlike Common Lisp.
00:37:16 <dolio> It's more vague than I'd heard.
00:37:22 <spinnylights> those are not the same kinds of languages :P i doubt those languages are widely used in the embedded world
00:37:45 <monochrom> Ah, atomicModifyIORef includes memory barrier, I didn't notice that.
00:37:47 × xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 240 seconds)
00:37:52 <spinnylights> maybe you have a good counterexample but it would be surprising to me
00:37:53 <koz_> spinnylights: Perhaps, but being the _only_ option does not imply being the _best_ option. It's a grubby world nobody wants to grub around in.
00:38:15 <koz_> So there's no other options because nobody wants to write languages for that space, not because C is somehow good there.
00:38:18 <spinnylights> well sure :P i don't think c is too many people's favorite language in the world or anything, but the constraints on its design are really severe
00:39:08 <spinnylights> a language like c++ or rust could theoretically take its place but they require much bulkier, harder-to-implement compilers
00:39:38 <koz_> C++ does so because it's the clown car of proglangs and must include literally everything. Except garbage collection because it's badwrongfun somehow.
00:39:52 emmanuel_erc joins (~user@2604:2000:1382:ce03:ddc4:166d:60ea:ae29)
00:39:54 <spinnylights> writing a c compiler is relatively easy by comparison, which is nice if your language is meant to support a wide variety of esoteric hardware
00:39:59 ski . o O ( isn't the only element of an ordered singleton set the greatest (and the least) element ? )
00:40:20 <koz_> ski: Isn't every singleton set ordered? Like, vacuously?
00:40:44 <ski> there's only one order on it that you can impose, sure
00:40:55 <ski> (but `Set' is not the same category as `PO')
00:41:05 <spinnylights> and that's partially thanks to the permissive standard :P there's a reason for everything, even if it's not exactly utopian
00:41:31 <koz_> spinnylights: I question the merits of such a standard, if the outcome is 'it's easy to throw together something that may or may not do anything you may or may not expect'.
00:41:48 <koz_> I don't wanna have to play language lawyer when aiming for portability, and C _forces_ you to do this _even when you're not trying_.
00:42:07 <koz_> (again, I got bitten by UB, and portability wasn't even my tenth damned concern)
00:42:37 <koz_> There's no reason for the situation _other_ than an adoption drive (back in the 80s) and legacy (today).
00:43:45 <spinnylights> to be fair, i think claiming that the standard doesn't specify any behavior in particular is overstating your case a bit ;^^ i've written quite a bit of c and any time i've produced ub i've had only myself to blame :P i have yet to find a real compiler bug or anything
00:44:03 <spinnylights> perhaps, i think it's kind of hard to say one way or the other with something like that since the history is so complicated
00:44:20 <koz_> spinnylights: Glad that one of us is lucky like that. I'm not, because I find every bug in everything by breathing.
00:44:39 <koz_> (I'm not joking - I just found a bug in my Real Money Job's nix config by _running nix-build_)
00:44:48 <koz_> (this went unnoticed by everyone for _months_)
00:44:53 <koz_> (well, everyone _else_)
00:45:09 <koz_> And that's basically my life forever with everything.
00:45:11 <spinnylights> i'm not talking about software in general, to be fair :P i've never found a bug compiling c code with gcc
00:45:22 <koz_> spinnylights: Again, compared to me, you lead a charmed life.
00:45:36 <koz_> May you forever continue to be this fortunate.
00:45:48 <spinnylights> if you regularly find bugs in gcc then you're a great boon to the rest of us ^^
00:45:59 <koz_> spinnylights: Trust me, nobody thanks you for doing this kind of work.
00:46:17 <koz_> (believe me, the responses I've had from certain communities for daring to suggest that somehow I am not responsible personally for every bug I find...)
00:47:14 <koz_> But anyway, I'm _way_ off-topic, so to bring it back to Haskell: I recently realized that wai's Application is effectively ReaderT Request (ContT ResponseReceived IO) Response.
00:47:15 <spinnylights> well, if you're really confident, keep fighting the good fight ^^ if you can find the time to submit a patch they may be more receptive in some cases, also
00:47:58 <spinnylights> but yeah, that's true, this is far away from haskelland :P
00:48:06 <koz_> spinnylights: I do when I can, but a lot of the time, I can't really. I've found bugs in LibreOffice and Firefox - good luck trying to figure out how to fix _those_ unless you've been wrangling those codebases intimately for years.
00:48:13 <monochrom> @unmtl ReaderT Request (ContT ResponseReceived IO) Response
00:48:14 <lambdabot> Request -> (Response -> IO ResponseReceived) -> IO ResponseReceived
00:48:39 <spinnylights> i just patched a bug in firefox's audio backend last week ^^ it's possible
00:48:50 <monochrom> Hrm, what is that ContT doing there?
00:48:50 <spinnylights> sometimes the code's not as gnarly as you would think
00:49:05 <spinnylights> sorry, you're right about all this being off topic though
00:49:17 <koz_> spinnylights: 'Possible' is one thing. It is also 'possible' for me to write a GPGPU-based AV1 encoder, but the number of hours, days, or _months_ it would take me preclude this possibility from being realized.
00:49:26 <koz_> monochrom: Resource handling according to the docs.
00:49:31 <koz_> (no really)
00:50:04 falafel joins (~falafel@2605:e000:1527:d491:1ccf:5c8d:7928:e9cc)
00:50:25 <monochrom> I think I know that idiom, yeah.
00:50:56 <koz_> How would you ensure resource release a la bracket by way of ContT?
00:51:04 <monochrom> (after "resource handling")
00:51:07 <koz_> Like, if this is an idiom, it's one I've never seen.
00:51:35 <monochrom> It doesn't ensure more than bracket does, but it looks nicely syntactically.
00:52:07 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
00:52:52 <monochrom> Whereas you normally write "withFoo (\h1 -> withBar (\h2 -> ...))" and after 5 levels it is indenting too much to the right...
00:53:17 nineonine joins (~nineonine@216-19-190-182.dyn.novuscom.net)
00:54:12 <monochrom> do { h1 <- ContT (\k -> withFoo k); h2 <- ContT (\k -> withBar k); ... } looks more vertical, sequential, straightline.
00:54:59 <koz_> So what's the ContT-based translation of withFile, say?
00:55:21 <monochrom> withFoo k = withFile "filename" ReadMode k
00:55:44 <monochrom> withBar k = bracket acquire release k
00:56:10 elliott_ joins (~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
00:56:27 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
00:56:28 <monochrom> You just slap a ContT (the data constructor) wrapper around each one. And a runContT at some outer level.
00:57:36 <ski> @hackage managed -- koz_ ?
00:57:37 <lambdabot> https://hackage.haskell.org/package/managed -- koz_ ?
00:57:46 <monochrom> Also, this: http://blog.sigfpe.com/2011/10/quick-and-dirty-reinversion-of-control.html
00:58:07 <dolio> So this is an example of a monad where each action causes something in the listed order, and also something in the opposite of the listed order.
00:58:37 <ski> they should add `evalContT = flip runContT return' ..
00:58:45 <monochrom> I would count "in the opposite of the listed order" as "also sequential".
00:58:58 <monochrom> Not that I really want to get into that debate. :)
01:00:09 <monochrom> But an inspiration I drew from is this:
01:00:57 <monochrom> In eager evaluation, "(f . g . h) x" is evaluated in order of: x, h of that, g of that, f of that.
01:01:07 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
01:01:13 <monochrom> In lazy evaluation, in order of: f, g, h, x.
01:01:20 <monochrom> Which one is "the listed order"?
01:01:51 <monochrom> Instead, what I'm sure is that of the two linear orders, one of them happens. So it's sequential.
01:02:21 ski . o O ( speculative evaluation )
01:02:58 × raehik quits (~raehik@cpc96984-rdng25-2-0-cust109.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
01:04:00 <monochrom> Taking a step further, suppose in a very strong sense both orders happen together, for example Tardis.
01:04:10 <monochrom> I still say it's sequential.
01:04:34 <koz_> monochrom: Thanks - I will read those, but this is rather cool.
01:04:50 <monochrom> If you don't have a commutative law, then it is sequential, or perhaps you object to that commitment, OK not-not-sequential.
01:05:11 <ski> list monad is still sequential
01:05:24 <monochrom> And by the time you have an anti-commutative law, it's in every sense definitely sequential.
01:05:37 <ski> the interface is sequential
01:05:42 <dolio> I'm on record saying that only commutative things should be considered not sequential.
01:07:05 × Benzi-Junior quits (~BenziJuni@88-149-67-198.du.xdsl.is) (Ping timeout: 272 seconds)
01:07:26 × conal quits (~conal@66.115.157.46) (Quit: Computer has gone to sleep.)
01:09:29 × elliott_ quits (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 258 seconds)
01:09:38 Benzi-Junior joins (~BenziJuni@dsl-149-67-198.hive.is)
01:10:13 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
01:10:27 × aarvar quits (~foewfoiew@50.35.43.33) (Ping timeout: 240 seconds)
01:10:35 × Rudd0 quits (~Rudd0@185.189.115.98) (Ping timeout: 240 seconds)
01:11:23 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
01:11:35 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
01:12:48 conal joins (~conal@66.115.157.46)
01:13:04 snakemas1 joins (~snakemast@213.100.206.23)
01:13:49 × conal quits (~conal@66.115.157.46) (Client Quit)
01:13:58 hackage prairie 0.0.1.0 - A first class record field library https://hackage.haskell.org/package/prairie-0.0.1.0 (parsonsmatt)
01:17:47 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 260 seconds)
01:18:53 × Wuzzy quits (~Wuzzy@p5790e6f5.dip0.t-ipconnect.de) (Remote host closed the connection)
01:22:44 plutoniix joins (~q@175.176.222.7)
01:23:07 × redmynk quits (~redmynk@2804:1b2:180:5c13:a8b7:4418:5b7e:8baa) (Quit: Leaving)
01:30:02 conal joins (~conal@66.115.157.46)
01:32:26 nineonin_ joins (~nineonine@50.216.62.2)
01:32:27 xerox_ joins (~xerox@unaffiliated/xerox)
01:33:52 × quinn quits (~quinn@c-73-223-224-163.hsd1.ca.comcast.net) (Quit: ZNC 1.8.1 - https://znc.in)
01:35:09 quinn joins (~quinn@c-73-223-224-163.hsd1.ca.comcast.net)
01:35:42 × nineonine quits (~nineonine@216-19-190-182.dyn.novuscom.net) (Ping timeout: 272 seconds)
01:36:09 <monochrom> TIL: f (x :: forall a. a->a) = ... is also allowed under RankNTypes and ScopedTypeVariables
01:36:19 × m0rphism quits (~m0rphism@HSI-KBW-046-005-177-122.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 265 seconds)
01:36:23 <monochrom> f will get the rightful rank-2 type.
01:36:40 xsperry joins (~as@unaffiliated/xsperry)
01:37:30 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
01:41:47 × xff0x quits (~fox@2001:1a81:53a8:5900:18dc:5fd3:ab0c:ba1c) (Ping timeout: 260 seconds)
01:43:15 <dolio> That's what we did in ermine, except it wasn't optional.
01:43:26 xff0x joins (~fox@2001:1a81:53da:5200:18dc:5fd3:ab0c:ba1c)
01:43:28 <dolio> The signature for f did no good. :þ
01:57:45 Dungdv joins (abf4bce2@gateway/web/cgi-irc/kiwiirc.com/ip.171.244.188.226)
01:58:08 <spinnylights> i realize as long as i'm hanging out in this channel i mgiht as well ask :P i'm looking into using haskell for game development, and as far as i can tell aside from the sdl2 bindings (which seem quite nice) there's not much available in terms of libraries?
01:58:58 <spinnylights> at least in terms of like, actively-maintained stuff
01:59:09 <spinnylights> but maybe i'm missing something?
02:00:49 × acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 264 seconds)
02:02:15 <spinnylights> in theory this https://hackage.haskell.org/package/inline-c seems really handy—i wouldn't mind working on bindings in general but in this particular case it would be for a series of short, sketchy, fast-as-possible games, so spending a lot of time up front writing bindings would kind of undercut that
02:02:25 × conal quits (~conal@66.115.157.46) (Quit: Computer has gone to sleep.)
02:04:21 <spinnylights> in the abstract haskell seems like a nice language to use for that sort of project because programs can come together in it so fast :P but i'm kind of worried that the lack of library support will limit what i can realistically do without writing a lot of enginey code beforehand
02:04:58 <sm[m]> spinnylights: still here ?
02:05:12 <spinnylights> yaya, i just wrote that stuff :P
02:05:47 <sm[m]> cool. You're right, there's not a lot that's actively maintained. But there is quite a lot of libs and interested folks out there
02:06:10 <spinnylights> yeah, that's the impression i get—lots of blog posts, some old libraries here and there, etc.
02:06:23 <sm[m]> a.lot of good pieces exist but have not been tied together so you have to do that work
02:06:49 <sm[m]> I'm building a game with sdl right now, I think it's working out
02:07:27 <justsomeguy> How can I determine which type classes can be derived, and which cannot? Do I just have to know, or can I query them somehow?
02:07:35 <spinnylights> i tried to see if i could still use the chipmunk bindings but i think they would need some work before they'll compile under the latest ghc
02:07:53 <spinnylights> what sort of game is it? how much have you had to do yourself?
02:07:56 <dolio> justsomeguy: They're listed in the Haskell report, and GHC has some extras turned on by extensions.
02:08:01 <sm[m]> If you haven't seen, there are: a lot of games on hackage, a games page on the wiki, /r/haskell-game and #haskell-game
02:08:25 <spinnylights> oh there are games on hackage, that's cool, i didn't realize that
02:08:52 <sm[m]> spinnylights: yes, a lot and some even build with modern ghc
02:08:54 <dolio> There are also some extensions that let you derive almost anything in particular ways.
02:09:07 <spinnylights> yeah i should probably check out that channel—i've come across the wiki page and the reddit a bit
02:09:08 Jeanne-Kamikaze joins (~Jeanne-Ka@68.235.43.158)
02:09:17 <sm[m]> spinnylights: I'm making breakout, deliberately not using any framework
02:09:21 <spinnylights> anything you would particularly recommend? it would be awesome to have some examples
02:09:25 <spinnylights> nice i love breakout ^^
02:10:28 <spinnylights> yeah in theory you can do a lot with just plain sdl, it's mainly a matter of time :P the goal for this particular project would be to make a series of games spending 1 or maybe 2 days on each one
02:10:31 <dsal> justsomeguy: I often just assume I can't derive classes and write them, but I've found GHC's been able to do some pretty fantastic deriving at times. There's lots of magic when you're ready for it.
02:10:38 <dsal> Is there a particular class you want derived?
02:10:58 <sm[m]> monadius is great. Dino-rush. lambda-heights. Allure of the stars (also has its own chat room). For game engines, I maintain the oldest, and I would say possible still the most productive: FunGEn
02:11:17 <spinnylights> so i think for that to be realistic i would need to do some sort of simple engine writing beforehand—if i don't worry about the lack of an easy-available physics library it probably wouldn't be too bad
02:11:28 <spinnylights> awesome thanks, i'll definitely take a look
02:11:37 × theDon quits (~td@muedsl-82-207-238-010.citykom.de) (Ping timeout: 264 seconds)
02:11:52 <sm[m]> spinnylights: I was trying to make the simplest possible game a bunch of different ways. It turns out to be a big project for me but it's still fun
02:12:02 <justsomeguy> dsal: I can't think of a particular example right now; I was just reading about type classes in the textbook I'm learning from, and it piqued my interest.
02:12:18 <sm[m]> once you've done it once or twice I think it's waaaay faster
02:12:45 <dsal> justsomeguy: Very often, there's only one way to do it, so it makes sense that it can be derived.
02:12:57 <spinnylights> yeah i was planning to write a game or two beforehand just since i would end up putting together a lot of the components of a simple engine that way as i went
02:13:13 theDon joins (~td@94.134.91.7)
02:13:17 <sm[m]> I think using fungen would have been much faster
02:13:22 <spinnylights> i just don't want to spend too much time up front :P the goal of the project is partially to teach myself restraint ;^^
02:14:03 <spinnylights> i notice the fungen repo is a few years old now—you still keep it up and such?
02:14:23 <spinnylights> i like that it's glut-based, that's nice
02:14:46 <sm[m]> It's basically emergency fixes only and nobody ever used it but afaik still works great
02:14:59 <sm[m]> Very simple deps
02:15:16 × oisdk quits (~oisdk@2001:bb6:3329:d100:7807:4c86:5073:949e) (Quit: oisdk)
02:15:26 <spinnylights> if it still works that's all i really care about :P
02:15:26 <sm[m]> sm-breakout on github is my current WIP
02:15:43 <sm[m]> try the sample games
02:16:08 <spinnylights> yeah i'm checking out the hackage page rn
02:16:26 <spinnylights> "executable game spec" is definitely the dream :P
02:17:18 × urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna)
02:17:24 remexre joins (~remexre@x-160-94-179-160.acm.umn.edu)
02:17:25 × remexre quits (~remexre@x-160-94-179-160.acm.umn.edu) (Client Quit)
02:17:40 lagothrix is now known as Guest34111
02:17:40 × Guest34111 quits (~lagothrix@unaffiliated/lagothrix) (Killed (wilhelm.freenode.net (Nickname regained by services)))
02:17:46 <sm[m]> it trips me out how long ago this framework was made and how it's still the go to
02:17:49 lagothrix joins (~lagothrix@unaffiliated/lagothrix)
02:18:30 remexre joins (~remexre@x-160-94-179-160.acm.umn.edu)
02:19:33 <spinnylights> kinda makes sense in a way, if it has a lot of useful features
02:20:37 <spinnylights> building the examples rn
02:23:53 <spinnylights> v cool ^^ definitely a good proof-of-concept, i'm looking at the pong code and it's v short and readable
02:25:10 <spinnylights> it's too bad about audio though :/ i wonder how easily this https://hackage.haskell.org/package/csound-expression could be integrated...maybe i'll experiment a bit
02:25:10 <sm[m]> yep I appreciate it more after working with just sdl
02:25:22 <spinnylights> yeah it definitely has more game-specific stuff
02:26:04 <spinnylights> it's nice that you get collision detection, and it seems easier to work with graphics
02:26:14 <sm[m]> and the binaries will work on any machine I think - no need to install sdl separately
02:26:41 <spinnylights> yeah that's great as well, i've been thinking about that in the back of my head
02:26:55 <sm[m]> oh yeah. Isn't there a openAL lib ?
02:27:29 <sm[m]> elerea looks like an interesting new sound lib
02:27:55 <spinnylights> seems kind of uncommon to statically link sdl in c or c++ which can def make distribution a bit of a pain
02:28:10 sword865 joins (uid208942@gateway/web/irccloud.com/x-oofcgutvwgwgnuoj)
02:28:20 <spinnylights> oh i see, does seem interesting
02:29:16 <spinnylights> i know csound quite deeply so i automatically gravitate in that direction :P it does have the advantage that it can talk to a wide variety of backends (i like to have JACK support in linux which a lot of generic audio libs overlook)
02:29:24 × evanjs quits (~evanjs@075-129-188-019.res.spectrum.com) (Quit: ZNC 1.8.1 - https://znc.in)
02:30:10 <spinnylights> and if it could be made to talk to fungen it would provide a very easy means to add procedural sound to your game which is always cool
02:30:37 evanjs joins (~evanjs@075-129-188-019.res.spectrum.com)
02:31:05 <spinnylights> i know the csound community is rather fond of haskell but i haven't actually played around with the haskell-related stuff people have made so maybe this is a good time
02:31:09 <sm[m]> I don't there's any integration required, just use both ?
02:31:37 <sm[m]> but I haven't tried
02:31:38 <spinnylights> yeah hopefully it's that straightforward
02:31:49 <spinnylights> i _think_ that should be the case but yeah, i haven't tried yet
02:32:55 <spinnylights> the csound-expression lib seems to have a strong focus on live coding which is def promising for use in a game context
02:33:00 Saukk joins (~Saukk@2001:998:f1:3963:1c59:9bb5:b94c:2)
02:33:56 <spinnylights> whoa this library is really fancy 0_0 it even has a cabbage monad
02:34:02 <spinnylights> i should have looked at it sooner :P
02:35:32 × tmciver quits (~tmciver@cpe-172-101-40-226.maine.res.rr.com) (Ping timeout: 256 seconds)
02:36:14 <spinnylights> i'm going to see if i can modify the pong example to produce sound using csound-expression, i'll report back :P
02:36:47 <spinnylights> i guess maybe i should share my results in #haskell-game
02:37:34 tmciver joins (~tmciver@cpe-172-101-40-226.maine.res.rr.com)
02:39:14 × nullheroes quits (~danielvu@168.235.66.22) (Quit: WeeChat 2.9)
02:39:55 hololeap joins (~hololeap@unaffiliated/hololeap)
02:41:58 <sm[m]> spinnylights: live coding is a bit more of a project but I think some good things to look at are ghcid, Tidal package, and the new reloading system used by IHP
02:42:57 <spinnylights> oh yeah, i just mean that if it supports live coding it will probably be up to use in a game context
02:43:11 <spinnylights> in terms of lag etc.
02:43:34 <spinnylights> csound is pretty fast on its own so as long as the library doesn't introduce extra performance issues it should be fine
02:43:53 × polyrain quits (~polyrain@2001:8003:e501:6901:d439:cec4:3811:73e4) (Quit: My MacBook has gone to sleep. ZZZzzz…)
02:46:22 gnar^2 joins (~user@c-73-118-153-248.hsd1.wa.comcast.net)
02:46:27 × falafel quits (~falafel@2605:e000:1527:d491:1ccf:5c8d:7928:e9cc) (Ping timeout: 240 seconds)
02:46:33 × jedws quits (~jedws@121.209.161.98) (Quit: My MacBook has gone to sleep. ZZZzzz…)
02:49:47 × Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 240 seconds)
02:50:46 <koz_> A cabbage monad?
02:52:17 × ericsagnes quits (~ericsagne@2405:6580:0:5100:841d:b2f8:a54e:9827) (Quit: WeeChat 2.7.1)
02:52:48 ericsagnes joins (~ericsagne@2405:6580:0:5100:9d42:ed56:2b0:8ee0)
02:53:31 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
02:53:35 <sm[m]> don't you use vegetable monads ?
02:54:02 <koz_> sm[m]: I prefer fruit.
02:54:22 <Axman6> You can't call them that any more, we prefer differently-abled monads
02:54:24 koz_ . o O (instance Monad Tomato where)
02:54:32 <spinnylights> makes it easy to put the stems, leaves, etc. together
02:54:43 sand_dull joins (~theuser@104.140.53.43)
02:54:50 <spinnylights> v convenient
02:55:36 <spinnylights> unfortunately i seem to be stuck in some kind of extra-deps hell with stack :/ i'm still kind of new to it so maybe i'm not going about this the right way
02:56:00 <koz_> What's the specific extra-deps hell?
02:56:48 <spinnylights> csound-expression doesn't seem to be part of the package set for the resolver fungen uses, so i'm trying to specify the versions of the needed dependencies by hand, but it's a lot of trouble to figure out how to line everything up so there's no version conflicts :/
02:57:25 <spinnylights> i might be able to figure it out if i keep at it but it definitely seems like something an automated tool would be better at
02:57:51 × gnar^2 quits (~user@c-73-118-153-248.hsd1.wa.comcast.net) (Ping timeout: 256 seconds)
02:58:01 danso joins (~dan@107-190-41-58.cpe.teksavvy.com)
02:58:12 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
02:58:18 <koz_> Which resolver does fungen use?
02:58:19 nineonine joins (~nineonine@216-19-190-182.dyn.novuscom.net)
02:58:31 <koz_> Are neither of fungen and csound on Stackage?
02:59:09 <spinnylights> lts-6.12
02:59:13 falafel joins (~falafel@2605:e000:1527:d491:1ccf:5c8d:7928:e9cc)
02:59:26 <Axman6> that's... very old
02:59:58 × nineonin_ quits (~nineonine@50.216.62.2) (Ping timeout: 260 seconds)
03:00:01 × Wolfy87 quits (~Wolfy87@s91904426.blix.com) ()
03:00:07 <Axman6> has basically no chance of ever compiling on macOS, since older GHCs have issues with linker changes Apple made
03:00:11 <koz_> That's _hilariously_ ancient.
03:00:43 <koz_> It's like, GHC 7.10.3 I think?
03:01:16 <spinnylights> fungen itself builds and runs fine in my environment (arch linux) but yeah, i don't think the code has been updated in a long time
03:01:17 snakemas1 joins (~snakemast@213.100.206.23)
03:01:49 <spinnylights> i'm trying to use a version of csound-expression that's roughly contemporary with the fungen source but so far no luck :/
03:02:15 <koz_> fungen was last updated in 2016.
03:02:19 <koz_> I wouldn't hope for much.
03:02:23 <spinnylights> @sm[m] does fungen require lts-6.12 or can it build with something more recent?
03:02:23 <lambdabot> Unknown command, try @list
03:02:40 <spinnylights> er :P
03:03:28 × darjeeling_ quits (~darjeelin@115.215.43.235) (Ping timeout: 260 seconds)
03:04:15 × alp quits (~alp@2a01:e0a:58b:4920:ac57:f0c6:c76e:e7d6) (Ping timeout: 272 seconds)
03:05:37 <koz_> spinnylights: I'm trying with 8.10.2 right now.
03:05:40 <koz_> Seeing how I go.
03:05:41 × ulidtko quits (~ulidtko@193.111.48.79) (Read error: Connection reset by peer)
03:05:45 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 240 seconds)
03:05:48 ulidtko|k joins (~ulidtko@193.111.48.79)
03:06:55 <spinnylights> yeah i'm trying with 8.8.3...we'll see
03:07:56 <spinnylights> one of the dependencies for that old version of csound-expression would not build, but let's try with a more recent version
03:09:37 <koz_> Nah, 8.10.2 breaks due to MonadFail.
03:09:49 <Axman6> #MonadFailFail
03:10:11 <spinnylights> darn, csound-expression-5.3.3 and fungen have conflicting dependencies :/
03:10:29 <koz_> spinnylights: What conflicts?
03:10:33 <spinnylights> sm[m]: how hard do you think it would be to bring fungen up-to-date? :P is that overly ambitious?
03:10:35 <Axman6> --allow-newer-yolo
03:10:55 <koz_> spinnylights: There's a mission MonadFail instance required for 8.10.
03:11:00 <koz_> For 8.8, I'm about to find out.
03:12:18 <sm[m]> spinnylights: sorry was afk. I though my I updated it for maybe 8.6 in the git repo. It shouldn't be hard to update
03:13:12 <Axman6> https://matrix.hackage.haskell.org/#/package/FunGEn makes me sad
03:13:24 <spinnylights> ah well i got the build process to start again at least
03:14:04 <koz_> 8.8.4 works.
03:14:14 <koz_> (you need --allow-newer I think, but it works)
03:14:20 <koz_> Oh wait never mind.
03:14:23 <koz_> Same MonadFail issue.
03:14:30 <spinnylights> no worries, if it's easy that would be awesome—i'm happy to help/submit a patch too
03:15:06 <Axman6> MonadFail issues aren't hard to solve though
03:15:12 <koz_> spinnylights: Basically, you gotta add an instance of MonadFail for IOGame GameAttribute ObjectAttribute GameState TileAttribute
03:15:19 <koz_> That's the most obvious issue.
03:15:20 <sm[m]> I don't have time, even to review right now - travelling. Help welcome
03:15:59 <koz_> Also, the cabal file doesn't indicate Paths_FunGEn, but that's also easy to fix.
03:16:14 <spinnylights> okay i'll take a look
03:16:19 <spinnylights> yeah i just got there myself
03:16:28 darjeeling_ joins (~darjeelin@122.245.210.138)
03:16:38 polyrain joins (~polyrain@2001:8003:e501:6901:d439:cec4:3811:73e4)
03:16:46 <sm[m]> but at least it should be usable with lts-whateveritis
03:16:56 <spinnylights> csound builds okay—lots of warnings but it came together
03:17:23 <koz_> Is there even an LTS for 8.10.*?
03:17:25 <spinnylights> luckily at least so far the issue is in the worms example so at least that's pretty simple
03:17:39 <spinnylights> not yet i don't think
03:18:02 <sm[m]> it'll be obsolete soon :(
03:18:25 <sm[m]> but I guess it's not exactly stable yet
03:18:45 <sm[m]> (ghc 8.10)
03:19:06 <sm[m]> one of these statements must be wrong eh
03:19:12 <spinnylights> heh :P
03:20:49 <koz_> But yeah, sm[m] is right, this is an easyish fix.
03:21:10 <koz_> It's not like the kind of gore I had to involve myself with when I lifted my Real Job For Real Money codebase to 8.8.
03:21:15 <koz_> That was... *shudders*
03:21:52 jpcw1 joins (~jpcw@195.206.169.184)
03:23:13 <sm[m]> hehe wishful thinking on my part.. I last updated it to ghc 8.0
03:27:38 drbean joins (~drbean@TC210-63-209-62.static.apol.com.tw)
03:34:26 proofofme joins (~proofofme@184-96-74-65.hlrn.qwest.net)
03:38:09 <ski> @remember monochrom Any sufficiently insider joke is indistinguishable from sufficiently advanced knowledge.
03:38:10 <lambdabot> Done.
03:44:44 <spinnylights> ooh i think i got it ^^
03:45:15 <spinnylights> it was pretty simple in the end, yeah :P
03:46:22 <spinnylights> sm[m]: would you accept a pull request if i submitted one? it's like two lines of code :P
03:46:37 × falafel quits (~falafel@2605:e000:1527:d491:1ccf:5c8d:7928:e9cc) (Ping timeout: 260 seconds)
03:46:41 <spinnylights> trivial monadfail instance for iogame
03:51:45 × mirrorbird quits (~psutcliff@2a00:801:3f8:10df:3fb2:3ec3:6676:3873) (Ping timeout: 272 seconds)
03:52:11 <spinnylights> i'll just go ahead and put one together, it won't take long anyway
03:52:41 conal joins (~conal@64.71.133.70)
03:55:07 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
03:55:14 shafox joins (~shafox@106.51.234.111)
03:55:43 Tario joins (~Tario@201.192.165.173)
03:57:23 × Tario quits (~Tario@201.192.165.173) (Client Quit)
03:57:38 Tario joins (~Tario@201.192.165.173)
03:57:42 × Saukk quits (~Saukk@2001:998:f1:3963:1c59:9bb5:b94c:2) (Remote host closed the connection)
04:00:13 × zebrag quits (~inkbottle@aaubervilliers-654-1-112-132.w86-198.abo.wanadoo.fr) (Ping timeout: 264 seconds)
04:00:16 inkbottle joins (~inkbottle@aaubervilliers-654-1-114-176.w86-198.abo.wanadoo.fr)
04:01:20 Rudd0 joins (~Rudd0@185.189.115.108)
04:01:44 fresheyeball joins (~isaac@c-71-237-105-37.hsd1.co.comcast.net)
04:03:16 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
04:04:06 conal joins (~conal@64.71.133.70)
04:04:23 × conal quits (~conal@64.71.133.70) (Client Quit)
04:09:07 × Buntspecht quits (~user@unaffiliated/siracusa) (Quit: Bye!)
04:09:36 × Jeanne-Kamikaze quits (~Jeanne-Ka@68.235.43.158) (Ping timeout: 272 seconds)
04:09:59 × ddellacosta quits (~dd@86.106.121.168) (Ping timeout: 260 seconds)
04:11:23 × g-belmonte quits (~g-belmont@2804:14c:8786:9312:3638:eaf5:dc36:146d) (Quit: Leaving)
04:13:27 × polyphem quits (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Ping timeout: 260 seconds)
04:13:28 <sm[m]> spinnylights: sure! Think I can handle that :)
04:14:15 × dsf quits (~dsf@cpe-75-82-64-167.socal.res.rr.com) (Quit: Konversation terminated!)
04:14:37 × ericsagnes quits (~ericsagne@2405:6580:0:5100:9d42:ed56:2b0:8ee0) (Ping timeout: 260 seconds)
04:15:39 × Dungdv quits (abf4bce2@gateway/web/cgi-irc/kiwiirc.com/ip.171.244.188.226) (Quit: Connection closed)
04:23:21 HaskellYogi joins (~vivekrama@49.207.212.129)
04:24:39 Dungdv joins (abf4bce2@gateway/web/cgi-irc/kiwiirc.com/ip.171.244.188.226)
04:26:30 ericsagnes joins (~ericsagne@2405:6580:0:5100:841d:b2f8:a54e:9827)
04:30:47 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 240 seconds)
04:34:04 × GyroW quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
04:34:15 GyroW joins (~GyroW@d54C03E98.access.telenet.be)
04:34:15 × GyroW quits (~GyroW@d54C03E98.access.telenet.be) (Changing host)
04:34:15 GyroW joins (~GyroW@unaffiliated/gyrow)
04:35:46 day_ joins (~Unknown@unaffiliated/day)
04:36:45 falafel joins (~falafel@2605:e000:1527:d491:1ccf:5c8d:7928:e9cc)
04:36:47 × borne quits (~fritjof@200116b864a02a00739dc2dd650b1f65.dip.versatel-1u1.de) (Ping timeout: 240 seconds)
04:38:37 × Amras quits (~Amras@unaffiliated/amras0000) (Ping timeout: 272 seconds)
04:39:00 borne joins (~fritjof@200116b864025d00484afbeee9030254.dip.versatel-1u1.de)
04:39:08 × day quits (~Unknown@unaffiliated/day) (Ping timeout: 260 seconds)
04:39:08 day_ is now known as day
04:41:16 _vaibhavingale_ joins (~Adium@203.188.228.27)
04:42:39 × jneira quits (501e65ce@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.101.206) (Ping timeout: 260 seconds)
04:43:07 × jneira_ quits (~jneira@80.30.101.206) (Ping timeout: 240 seconds)
04:43:29 jneira_ joins (~jneira@79.red-37-10-144.dynamicip.rima-tde.net)
04:44:07 × borne quits (~fritjof@200116b864025d00484afbeee9030254.dip.versatel-1u1.de) (Ping timeout: 240 seconds)
04:48:08 Tario joins (~Tario@201.192.165.173)
04:56:07 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
04:58:20 × jneira_ quits (~jneira@79.red-37-10-144.dynamicip.rima-tde.net) (Ping timeout: 258 seconds)
04:59:27 GyroW_ joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
04:59:28 × GyroW_ quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
04:59:28 GyroW_ joins (~GyroW@unaffiliated/gyrow)
05:00:25 × GyroW quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 240 seconds)
05:01:16 <hololeap> so, a Traversal cannot be used as a lens, but the types make it seem like Traversals are a subset of Lenses
05:02:01 <hololeap> type Traversal s t a b = forall f. Applicative f => (a -> f b) -> s -> f t
05:02:02 × nados quits (~dan@107-190-41-58.cpe.teksavvy.com) (Quit: Leaving)
05:02:12 <hololeap> type Lens s t a b = forall f. Functor f => (a -> f b) -> s -> f t
05:03:11 <hololeap> since all Applicatives are also Functors, why does it say in the lens docs that a Traversal cannot be used as a Lens
05:04:14 <dolio> Functor f => Applicative f, so (Applicative f => T) < (Functor f => T)
05:05:07 × Dungdv quits (abf4bce2@gateway/web/cgi-irc/kiwiirc.com/ip.171.244.188.226) (Ping timeout: 240 seconds)
05:06:24 <dolio> Wait, I wrote some of that backwards, didn't I?
05:06:37 <hololeap> right, the set of Applicatives is a subset of the set of Functors
05:06:40 <dolio> Anyhow, the subtyping relationship flips on the left of an arrow.
05:07:00 <hololeap> so shouldn't the same be true for Traversals vs Lenses?
05:07:47 <hololeap> therefore, any Traversal is also a Lens?
05:07:53 <dibblego> it's the other way around
05:08:08 <dolio> Applicative is the subtype.
05:08:29 natechan joins (~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
05:09:13 <hololeap> any Applicative is also a Functor, therefore any Traversal should also be a Lens. what am i missing here?
05:09:27 <dibblego> any Applicative is also a Functor, therefore any Lens should also be a Traversal
05:09:57 <hololeap> but why?
05:10:03 <dolio> Lenses work for every Functor, so they also work for every Applicative.
05:10:11 <dibblego> because the types say so
05:10:31 <dibblego> the constraint is in contravariant position
05:10:33 <hololeap> oh, i get it now
05:11:15 <hololeap> that was a little tricky :)
05:12:05 <dibblego> Applicative f => f a -> b -- this function not only accepts any Applicative, but also any Functor
05:13:38 <hololeap> that's freaky. i never thought about the fact that constraints could be contravariant
05:13:48 <hololeap> although it makes total sense intuitively
05:15:47 × fresheyeball quits (~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Ping timeout: 240 seconds)
05:16:45 <hololeap> dolio: what is a subtyping relationship?
05:17:29 <dolio> A is a subtype of B if every A can be used when a B is required.
05:18:37 <hololeap> i reread the sentence, and you're saying that if it's used in the negative position, the relationship is reversed, aka contravariant
05:19:14 <dolio> Yes.
05:20:56 jedws joins (~jedws@121.209.161.98)
05:21:05 <hololeap> although, in these cases, the constraint is placed on a variable that appears in the negative and positive positions
05:21:17 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
05:22:18 × sand_dull quits (~theuser@104.140.53.43) (Ping timeout: 260 seconds)
05:23:56 <dolio> That part doesn't matter, because what's being subtyped is the type class, basically.
05:24:15 <dolio> You could think of it as the dictionaries being subtypes, if you want.
05:25:09 <hololeap> wait, what are these dictionaries you mentioned?
05:26:10 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
05:26:38 coot joins (~coot@37.30.49.218.nat.umts.dynamic.t-mobile.pl)
05:27:26 <dolio> A record that contains the methods and superclasses of the type class.
05:28:21 <dolio> For Functor, {fmap}, and for Applicative, {fmap, pure, (<*>)}, or something.
05:29:24 aqd joins (~aqd@87-92-145-87.rev.dnainternet.fi)
05:29:40 <spinnylights> sm[m]: submitted ^^ there were a few small config changes needed as well but it should only a take a moment to look over
05:30:08 <hololeap> you know, the more i think about it, the more i see the obviousness of the answer here. i'm not sure what made me think it would be otherwise >_>
05:30:45 alp joins (~alp@2a01:e0a:58b:4920:c189:de1b:78e1:7d82)
05:31:15 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:31:16 <dolio> Well, the fact that it's written `Functor f => Applicative f` probably doesn't help.
05:32:43 <hololeap> it's saying that Functor f is equal to or larger then Applicative :)
05:32:50 <dolio> It even made me give you the wrong answer at first.
05:36:15 × alp quits (~alp@2a01:e0a:58b:4920:c189:de1b:78e1:7d82) (Ping timeout: 272 seconds)
05:37:14 <proofofme> One more question: How do I process a type of `IO (Maybe [String])` line by line? For now, just to `print` it line by line. `print =<< allStrings` works, but it doesn't provide the line-by-line control
05:38:02 <Taneb> :t mapM_
05:38:16 <lambdabot> (Foldable t, Monad m) => (a -> m b) -> t a -> m ()
05:38:47 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
05:38:58 <Taneb> proofofme: if you make a function of type "Maybe [String] -> IO a" then you can use it with (=<<) like you're doing with print
05:39:22 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
05:40:20 dyeplexer joins (~lol@unaffiliated/terpin)
05:42:42 × falafel quits (~falafel@2605:e000:1527:d491:1ccf:5c8d:7928:e9cc) (Ping timeout: 260 seconds)
05:43:39 Guest40023 is now known as lep-delete
05:43:40 lep-delete is now known as Guest40023
05:43:42 Guest40023 is now known as lep-delete
05:44:53 × proofofme quits (~proofofme@184-96-74-65.hlrn.qwest.net) (Remote host closed the connection)
05:46:07 × xff0x quits (~fox@2001:1a81:53da:5200:18dc:5fd3:ab0c:ba1c) (Ping timeout: 240 seconds)
05:47:36 xff0x joins (~fox@2001:1a81:53da:5200:18dc:5fd3:ab0c:ba1c)
05:48:15 maroloccio joins (~marolocci@212.129.85.119)
05:49:17 × GyroW_ quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
05:49:35 GyroW joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
05:49:36 × GyroW quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
05:49:36 GyroW joins (~GyroW@unaffiliated/gyrow)
05:58:39 Dungdv joins (abf4bce2@gateway/web/cgi-irc/kiwiirc.com/ip.171.244.188.226)
06:00:01 × jpcw1 quits (~jpcw@195.206.169.184) ()
06:00:07 × solonarv quits (~solonarv@adijon-655-1-70-207.w90-13.abo.wanadoo.fr) (Ping timeout: 240 seconds)
06:00:24 <Axman6> :t mapM (mapM putStrLn)
06:00:27 <lambdabot> (Traversable t1, Traversable t2) => t1 (t2 String) -> IO (t1 (t2 ()))
06:00:44 <Axman6> :t mapM (mapM putStrLn) `asAppliedTo` (undefined :: Maybe [String])
06:00:46 <lambdabot> Maybe [String] -> IO (Maybe [()])
06:01:10 <Axman6> :t mapM_ (mapM_ putStrLn) `asAppliedTo` (undefined :: Maybe [String])
06:01:12 <lambdabot> Maybe [String] -> IO ()
06:02:37 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
06:03:06 danvet_ joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
06:03:24 snakemas1 joins (~snakemast@213.100.206.23)
06:04:17 × kori quits (~kori@arrowheads/kori) (Ping timeout: 260 seconds)
06:06:45 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
06:07:47 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 240 seconds)
06:12:15 toorevitimirp joins (~tooreviti@117.182.180.245)
06:19:27 hackage Z-Data 0.1.5.0 - Array, vector and text https://hackage.haskell.org/package/Z-Data-0.1.5.0 (winterland)
06:20:56 <hololeap> type Iso s t a b = forall p f. (Profunctor p, Functor f) => p a (f b) -> p s (f t)
06:21:21 <hololeap> could this not be simplified since Star f is already a profunctor?
06:21:44 <hololeap> type Iso s t a b = forall p. Profunctor p => p a b -> p s t
06:25:58 <hololeap> maybe this would conflict with Lens, etc being a subtype of Iso
06:26:08 <hololeap> that must be the reason
06:27:19 <Taneb> hololeap: yeah, that's the reason
06:27:29 <Taneb> We want to be able to compose a lens with an iso
06:27:33 snakemas1 joins (~snakemast@213.100.206.23)
06:27:38 chele joins (~chele@ip5b416ea2.dynamic.kabel-deutschland.de)
06:27:47 <Taneb> There's another style of lenses called "pure profunctor" lenses
06:28:12 × sfvm quits (~sfvm@37.228.215.148) (Quit: off to the basement, mixing up the medicine)
06:28:24 <Taneb> Which I think has type Lens s t a b = Strong p => p a b -> p s t
06:29:34 <hololeap> oh ok
06:29:45 xQc joins (b644f401@182.68.244.1)
06:29:53 <Taneb> lens doesn't use that because it means you can't define lenses while only depending on base
06:32:06 Ariakenom joins (~Ariakenom@193.254.193.1)
06:32:15 <hololeap> it's interesting to me that not all Profunctors are Categories, which means some Profunctors don't compose, i would assume
06:33:10 <Taneb> Yeah. The composition here uses the (->) in the middle
06:36:00 <hololeap> could Lenses be generalized to: Lens s t a b = forall cat p. (Category cat, Strong p) => p a b `cat` p s t
06:36:45 <Taneb> Hmm, sort of? But you get something different to a lens
06:37:00 <Taneb> Basically, you'll only be able to define ones that are "id"
06:38:32 <hololeap> (Monad m, Strong p) => Kleisli m (p a b) (p s t) -- could this be useful?
06:39:07 <Taneb> That doesn't give you anything that (->) doesn't, I think
06:39:43 <Taneb> Because the only way you can define one of those is essentially with arr somelens
06:40:17 × HaskellYogi quits (~vivekrama@49.207.212.129) (Remote host closed the connection)
06:41:07 <xQc> I was trying to define a list recursively. Can someone explain why these two approaches return different result? I think they are defined exactly the same https://pastebin.com/w7BTL1wn
06:41:13 HaskellYogi joins (~vivekrama@49.207.212.129)
06:41:21 <hololeap> the rabbit hole is deep here :p
06:43:05 × Dungdv quits (abf4bce2@gateway/web/cgi-irc/kiwiirc.com/ip.171.244.188.226) (Ping timeout: 240 seconds)
06:44:09 falafel joins (~falafel@2605:e000:1527:d491:1ccf:5c8d:7928:e9cc)
06:45:47 × HaskellYogi quits (~vivekrama@49.207.212.129) (Ping timeout: 240 seconds)
06:47:25 HaskellYogi joins (~vivekrama@49.207.212.129)
06:50:34 Dungdv joins (abf4bce2@gateway/web/cgi-irc/kiwiirc.com/ip.171.244.188.226)
06:51:48 × HaskellYogi quits (~vivekrama@49.207.212.129) (Ping timeout: 258 seconds)
06:52:00 <hololeap> myfibs = 1:1:1:2:(1+(0-1)+(2*2)):(1+(0-1)+(2*(1+(0-1)+(2*2)))):(1+(0-1)+(2*((1+(0-1)+(2*(1+(0-1)+(2*2))))))
06:52:07 <hololeap> ...
06:53:03 <olligobber> hololeap, parse error (possibly incorrect indentation or mismatched brackets)
06:53:10 × tzh quits (~tzh@2601:448:c500:5300::143b) (Quit: zzz)
06:53:42 <hololeap> the applicative instance of [] is a cartesian product
06:54:14 <olligobber> added an extra bracket and :[] and got [1,1,1,2,4,8,16]
06:54:18 <olligobber> "fibs"
06:54:25 × fr33domlover quits (~fr33domlo@fsf/member/fr33domlover) (Quit: fr33domlover)
06:54:50 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
06:54:55 fr33domlover joins (~fr33domlo@fsf/member/fr33domlover)
06:55:04 <hololeap> Applicative f => (a -> b -> c -> d) -> f a -> f b -> f c -> f d
06:55:24 × Sgeo quits (~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer)
06:55:56 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Remote host closed the connection)
06:56:09 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
06:56:13 <hololeap> for the list instance of Applicative, it will start with the first values of `f a` and `f b`, along with _every value_ of `f c`
06:56:25 <hololeap> if `f c` is infinite, you can imagine what happens
06:56:58 <xQc> oh. I think i get the error
06:57:08 <xQc> I guess I have to use the ZipList class?
06:57:44 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 265 seconds)
06:58:01 HaskellYogi joins (~vivekrama@49.207.212.129)
06:59:07 <hololeap> yeah, that might work
06:59:09 hololeap shrugs
06:59:17 × poljar quits (~poljar@93-139-70-179.adsl.net.t-com.hr) (Remote host closed the connection)
06:59:38 <hololeap> it seems like it would, with my brain's limited computing power
06:59:47 poljar joins (~poljar@93-139-70-179.adsl.net.t-com.hr)
07:02:45 × HaskellYogi quits (~vivekrama@49.207.212.129) (Ping timeout: 240 seconds)
07:04:00 Super_Feeling joins (~Super_Fee@103.108.4.50)
07:04:23 HaskellYogi joins (~vivekrama@49.207.212.129)
07:04:41 × Super_Feeling quits (~Super_Fee@103.108.4.50) (Client Quit)
07:05:16 berberman joins (~berberman@123.118.111.156)
07:08:27 × HaskellYogi quits (~vivekrama@49.207.212.129) (Ping timeout: 240 seconds)
07:08:50 alp joins (~alp@2a01:e0a:58b:4920:a1ed:32ca:ea5a:70c4)
07:09:02 dhouthoo joins (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be)
07:09:45 HaskellYogi joins (~vivekrama@49.207.212.129)
07:10:08 × berberman quits (~berberman@123.118.111.156) (Client Quit)
07:11:10 berberman joins (~berberman@2408:8207:2563:44a0::a44)
07:14:20 × HaskellYogi quits (~vivekrama@49.207.212.129) (Ping timeout: 256 seconds)
07:14:53 × jedws quits (~jedws@121.209.161.98) (Quit: My MacBook has gone to sleep. ZZZzzz…)
07:15:41 HaskellYogi joins (~vivekrama@49.207.212.129)
07:17:38 <dminuoso> 09:02:56 hololeap | [06:32:15] it's interesting to me that not all Profunctors are Categories, which means some Profunctors don't compose, i would assume
07:17:57 <dminuoso> Hi, out of curiosities, are not all profunctors composable via coends in bicategories?
07:18:10 jedws joins (~jedws@121.209.161.98)
07:18:56 vilpan joins (~0@mail.elitnet.lt)
07:19:42 snakemas1 joins (~snakemast@213.100.206.23)
07:20:00 × HaskellYogi quits (~vivekrama@49.207.212.129) (Ping timeout: 256 seconds)
07:23:06 random joins (~random@185.219.70.106)
07:23:25 <random> hey guys, does anyone know if you can generate a "create table" command with persistent
07:23:29 × berberman quits (~berberman@2408:8207:2563:44a0::a44) (Quit: ZNC 1.7.5 - https://znc.in)
07:23:34 <random> I know it's doable because the automatic migrations do it but I can't seem to find a way
07:24:08 berberman joins (~berberman@2408:8207:2563:44a0::a44)
07:27:30 × danso quits (~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer)
07:27:40 kaimi1 joins (~kaimi@185.244.214.216)
07:28:10 danso joins (~dan@107-190-41-58.cpe.teksavvy.com)
07:31:16 psygate joins (~psygate@unaffiliated/psygate)
07:31:17 fendor joins (~fendor@77.119.131.69.wireless.dyn.drei.com)
07:31:43 × psygate quits (~psygate@unaffiliated/psygate) (Client Quit)
07:32:16 Franciman joins (~francesco@host-95-247-31-62.retail.telecomitalia.it)
07:34:53 borne joins (~fritjof@200116b864025d00739dc2dd650b1f65.dip.versatel-1u1.de)
07:36:38 × jjhoo quits (jahakala@dsl-trebng21-58c19c-166.dhcp.inet.fi) (Ping timeout: 246 seconds)
07:38:31 John20 joins (~John@82.46.59.122)
07:40:27 p-core joins (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
07:41:07 × GyroW quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
07:41:21 GyroW joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
07:41:21 × GyroW quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
07:41:21 GyroW joins (~GyroW@unaffiliated/gyrow)
07:41:25 chaosmasttter joins (~chaosmast@p200300c4a70b4001c004325a2a510724.dip0.t-ipconnect.de)
07:42:04 × danso quits (~dan@107-190-41-58.cpe.teksavvy.com) (Quit: WeeChat 2.9)
07:43:01 × sagax quits (~sagax_nb@213.138.71.146) (Read error: Connection reset by peer)
07:43:48 × toorevitimirp quits (~tooreviti@117.182.180.245) (Ping timeout: 256 seconds)
07:44:05 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 240 seconds)
07:44:11 × ryansmccoy quits (~ryansmcco@193.37.254.27) (Ping timeout: 260 seconds)
07:44:23 ryansmccoy joins (~ryansmcco@156.96.151.132)
07:44:32 snakemas1 joins (~snakemast@213.100.206.23)
07:47:53 × remexre quits (~remexre@x-160-94-179-160.acm.umn.edu) (Quit: WeeChat 2.8)
07:48:02 remexre_ joins (~nathan@207-153-38-50.fttp.usinternet.com)
07:48:07 × falafel quits (~falafel@2605:e000:1527:d491:1ccf:5c8d:7928:e9cc) (Ping timeout: 260 seconds)
07:50:06 todda7 joins (~torstein@2a02:587:d2d:4f00:1158:6d78:eb7d:9777)
07:50:49 chele_ joins (~chele@ip5b416ea2.dynamic.kabel-deutschland.de)
07:51:24 × xQc quits (b644f401@182.68.244.1) (Remote host closed the connection)
07:53:31 × chele quits (~chele@ip5b416ea2.dynamic.kabel-deutschland.de) (Ping timeout: 258 seconds)
07:56:53 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Remote host closed the connection)
07:57:21 proofofme joins (~proofofme@184-96-74-65.hlrn.qwest.net)
07:57:22 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
07:57:42 HaskellYogi joins (~vivekrama@49.207.212.129)
08:00:18 Pasalmachow joins (~textual@2601:643:8000:a570:9513:b921:a468:618c)
08:00:25 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 258 seconds)
08:01:26 × vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
08:01:27 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
08:02:23 × HaskellYogi quits (~vivekrama@49.207.212.129) (Ping timeout: 260 seconds)
08:03:06 HaskellYogi joins (~vivekrama@49.207.212.129)
08:03:57 × GyroW quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
08:04:07 GyroW joins (~GyroW@d54C03E98.access.telenet.be)
08:04:08 × GyroW quits (~GyroW@d54C03E98.access.telenet.be) (Changing host)
08:04:08 GyroW joins (~GyroW@unaffiliated/gyrow)
08:04:17 kritzefitz joins (~kritzefit@2003:5b:203b:100:c23e:baff:feb8:8cdb)
08:06:49 × Pasalmachow quits (~textual@2601:643:8000:a570:9513:b921:a468:618c) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
08:07:42 Pasalmachow joins (~textual@2601:643:8000:a570:9513:b921:a468:618c)
08:08:20 × Pasalmachow quits (~textual@2601:643:8000:a570:9513:b921:a468:618c) (Client Quit)
08:08:32 × p-core quits (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Ping timeout: 260 seconds)
08:09:06 dansho joins (~dansho@ip68-108-167-185.lv.lv.cox.net)
08:10:45 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 240 seconds)
08:11:05 × HaskellYogi quits (~vivekrama@49.207.212.129) (Ping timeout: 240 seconds)
08:11:40 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
08:12:31 raichoo joins (~raichoo@213.240.178.58)
08:12:40 × dqd quits (id@wikipedia/dqd) (Ping timeout: 246 seconds)
08:12:51 vicfred joins (~vicfred@unaffiliated/vicfred)
08:13:15 HaskellYogi joins (~vivekrama@49.207.212.129)
08:14:39 × proofofme quits (~proofofme@184-96-74-65.hlrn.qwest.net) (Remote host closed the connection)
08:15:51 proofofme joins (~proofofme@184-96-74-65.hlrn.qwest.net)
08:16:08 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
08:17:36 × acowley quits (~acowley@c-68-83-22-43.hsd1.nj.comcast.net) (Read error: Connection reset by peer)
08:17:48 × HaskellYogi quits (~vivekrama@49.207.212.129) (Ping timeout: 256 seconds)
08:17:54 cpressey joins (~cpressey@79-72-202-104.dynamic.dsl.as9105.com)
08:18:08 × berberman quits (~berberman@2408:8207:2563:44a0::a44) (Quit: ZNC 1.7.5 - https://znc.in)
08:19:00 HaskellYogi joins (~vivekrama@49.207.212.129)
08:20:00 × jedws quits (~jedws@121.209.161.98) (Quit: My MacBook has gone to sleep. ZZZzzz…)
08:20:05 × proofofme quits (~proofofme@184-96-74-65.hlrn.qwest.net) (Ping timeout: 240 seconds)
08:20:05 dqd joins (id@wikipedia/dqd)
08:20:32 × justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) ()
08:21:34 proofofme joins (~proofofme@184-96-74-65.hlrn.qwest.net)
08:21:36 acowley joins (~acowley@c-68-83-22-43.hsd1.nj.comcast.net)
08:23:37 × HaskellYogi quits (~vivekrama@49.207.212.129) (Ping timeout: 264 seconds)
08:24:28 HaskellYogi joins (~vivekrama@49.207.212.129)
08:26:03 × drbean quits (~drbean@TC210-63-209-62.static.apol.com.tw) (Ping timeout: 260 seconds)
08:28:05 turion joins (~turion@ip1f10fe5a.dynamic.kabel-deutschland.de)
08:28:17 × turion quits (~turion@ip1f10fe5a.dynamic.kabel-deutschland.de) (Client Quit)
08:29:03 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
08:29:05 × HaskellYogi quits (~vivekrama@49.207.212.129) (Ping timeout: 265 seconds)
08:29:28 × maroloccio quits (~marolocci@212.129.85.119) (Ping timeout: 246 seconds)
08:30:24 HaskellYogi joins (~vivekrama@49.207.212.129)
08:32:05 snakemas1 joins (~snakemast@213.100.206.23)
08:32:49 worc3131 joins (~quassel@2a02:c7f:c026:9500:7d0b:65d0:38a4:4786)
08:32:58 o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
08:33:08 LKoen joins (~LKoen@81.255.219.130)
08:33:14 cosimone joins (~cosimone@2001:b07:ae5:db26:a16f:75:586:b3b0)
08:34:55 × HaskellYogi quits (~vivekrama@49.207.212.129) (Ping timeout: 258 seconds)
08:36:45 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
08:37:39 nyd joins (~lpy@unaffiliated/elysian)
08:37:59 berberman joins (~berberman@2408:8207:2569:5270:584e:a9ff:fe9b:d3fe)
08:38:14 HaskellYogi joins (~vivekrama@49.207.212.129)
08:38:59 × o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 256 seconds)
08:39:04 × vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
08:40:09 vicfred joins (~vicfred@unaffiliated/vicfred)
08:40:27 × cosimone quits (~cosimone@2001:b07:ae5:db26:a16f:75:586:b3b0) (Remote host closed the connection)
08:40:51 cosimone joins (~cosimone@2001:b07:ae5:db26:a16f:75:586:b3b0)
08:40:57 hackage uniqueness-periods-vector-common 0.5.0.0 - Generalization of the dobutokO-poetry-general package functionality https://hackage.haskell.org/package/uniqueness-periods-vector-common-0.5.0.0 (OleksandrZhabenko)
08:41:05 o1lo01ol_ joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
08:41:51 × berberman quits (~berberman@2408:8207:2569:5270:584e:a9ff:fe9b:d3fe) (Remote host closed the connection)
08:42:08 × cosimone quits (~cosimone@2001:b07:ae5:db26:a16f:75:586:b3b0) (Client Quit)
08:42:27 × xff0x quits (~fox@2001:1a81:53da:5200:18dc:5fd3:ab0c:ba1c) (Ping timeout: 240 seconds)
08:43:06 × worc3131 quits (~quassel@2a02:c7f:c026:9500:7d0b:65d0:38a4:4786) (Remote host closed the connection)
08:43:18 × howdoi quits (uid224@gateway/web/irccloud.com/x-matykgsofoxxiiee) (Quit: Connection closed for inactivity)
08:43:29 xff0x joins (~fox@2001:1a81:53da:5200:e942:2dc6:3612:ec91)
08:43:34 berberman joins (~berberman@2408:8207:2569:5270:584e:a9ff:fe9b:d3fe)
08:43:39 bliminse joins (~bliminse@host217-42-95-37.range217-42.btcentralplus.com)
08:43:47 × proofofme quits (~proofofme@184-96-74-65.hlrn.qwest.net) (Remote host closed the connection)
08:43:55 × verement quits (~anonymous@cpe-76-167-229-223.san.res.rr.com) (Quit: verement)
08:44:08 × HaskellYogi quits (~vivekrama@49.207.212.129) (Ping timeout: 260 seconds)
08:44:51 × berberman quits (~berberman@2408:8207:2569:5270:584e:a9ff:fe9b:d3fe) (Client Quit)
08:47:33 thc202 joins (~thc202@unaffiliated/thc202)
08:49:13 berberman joins (~berberman@2408:8207:2569:5270:584e:a9ff:fe9b:d3fe)
08:50:22 × berberman quits (~berberman@2408:8207:2569:5270:584e:a9ff:fe9b:d3fe) (Client Quit)
08:50:30 × o1lo01ol_ quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Read error: Connection reset by peer)
08:50:37 o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
08:50:44 berberman joins (~berberman@2408:8207:2569:5270:584e:a9ff:fe9b:d3fe)
08:50:57 hackage uniqueness-periods-vector-general 0.5.0.0 - Some kind of the optimization approach to data inner structure. https://hackage.haskell.org/package/uniqueness-periods-vector-general-0.5.0.0 (OleksandrZhabenko)
08:52:39 sagax joins (~sagax_nb@213.138.71.146)
08:57:13 HaskellYogi joins (~vivekrama@49.207.212.129)
08:57:14 × hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-fnhpronrbczootvp) (Quit: Connection closed for inactivity)
08:57:58 hackage uniqueness-periods-vector-properties 0.5.0.0 - Metrices for the maximum element for the uniqueness-periods-vector packages family. https://hackage.haskell.org/package/uniqueness-periods-vector-properties-0.5.0.0 (OleksandrZhabenko)
09:00:02 × kaimi1 quits (~kaimi@185.244.214.216) ()
09:01:22 × polyrain quits (~polyrain@2001:8003:e501:6901:d439:cec4:3811:73e4) (Quit: My MacBook has gone to sleep. ZZZzzz…)
09:01:27 jedws joins (~jedws@121.209.161.98)
09:02:19 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
09:04:03 DavSanchez[m] parts (davsanchez@gateway/shell/matrix.org/x-khetygqiqqqbmftv) ("Kicked by @appservice-irc:matrix.org : Idle for 30+ days")
09:04:06 sajith[m] parts (sajithmatr@gateway/shell/matrix.org/x-nztmgmuycmbqrvoe) ("Kicked by @appservice-irc:matrix.org : Idle for 30+ days")
09:04:14 itai33[m] parts (itai33matr@gateway/shell/matrix.org/x-cwbivzdyksbwtkzq) ("Kicked by @appservice-irc:matrix.org : Idle for 30+ days")
09:10:25 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
09:11:13 <xwvvvvwx> Hi, so I want to generate strings in quickcheck that never repeat themselves. I'm fuzzing a parser, and I need unique random names for identifiers.
09:11:18 <xwvvvvwx> Does anyone have any tips?
09:12:45 <Taneb> xwvvvvwx: can you use the arbitrary instance for Set? I think that would work if you only need a small number of names
09:13:25 polyrain joins (~polyrain@2001:8003:e501:6901:c889:b4c6:945c:a1ea)
09:13:47 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 240 seconds)
09:13:47 × o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 260 seconds)
09:13:55 × bliminse quits (~bliminse@host217-42-95-37.range217-42.btcentralplus.com) (Quit: leaving)
09:14:16 o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
09:14:27 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
09:14:54 bliminse joins (~bliminse@host217-42-95-37.range217-42.btcentralplus.com)
09:15:01 <xwvvvvwx> ohhhhhh clever
09:15:09 snakemas1 joins (~snakemast@213.100.206.23)
09:15:27 <xwvvvvwx> and then pull a random element from the set?
09:16:39 × todda7 quits (~torstein@2a02:587:d2d:4f00:1158:6d78:eb7d:9777) (Ping timeout: 272 seconds)
09:18:17 <xwvvvvwx> or no if I pull a random elemnent I might repeat myself
09:18:25 × o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 240 seconds)
09:18:27 hackage openapi3 3.0.0.1 - OpenAPI 3.0 data model https://hackage.haskell.org/package/openapi3-3.0.0.1 (maksbotan)
09:18:37 <xwvvvvwx> I need to have some counter to make sure I never pull the same element
09:18:42 <phadej> you cannot have "unique randoms" without carrying some state with you
09:19:01 × berberman quits (~berberman@2408:8207:2569:5270:584e:a9ff:fe9b:d3fe) (Quit: ZNC 1.7.5 - https://znc.in)
09:19:32 <dminuoso> xwvvvvwx: Just a hunch.. but you are not looking for `unbound`, are you? :>
09:20:16 <xwvvvvwx> https://hackage.haskell.org/package/unbound ?
09:20:19 <dminuoso> Yes.
09:20:33 <dminuoso> Oh wait, I missed the QuickCheck part. Nevermind me.
09:20:43 berberman joins (~berberman@2408:8207:2569:5270:584e:a9ff:fe9b:d3fe)
09:20:57 hackage servant-openapi3 2.0.0.1 - Generate a Swagger/OpenAPI/OAS 3.0 specification for your servant API. https://hackage.haskell.org/package/servant-openapi3-2.0.0.1 (maksbotan)
09:20:59 tw1sted1 joins (~tw1sted@184.75.221.3)
09:21:53 × berberman quits (~berberman@2408:8207:2569:5270:584e:a9ff:fe9b:d3fe) (Client Quit)
09:22:01 ubert joins (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
09:22:17 <xwvvvvwx> Can I do something with the state monad?
09:22:41 berberman joins (~berberman@2408:8207:2569:5270:584e:a9ff:fe9b:d3fe)
09:24:20 × jedws quits (~jedws@121.209.161.98) (Quit: My MacBook has gone to sleep. ZZZzzz…)
09:24:25 __monty__ joins (~toonn@unaffiliated/toonn)
09:24:57 ahmr88 joins (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
09:26:13 o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
09:26:45 × berberman quits (~berberman@2408:8207:2569:5270:584e:a9ff:fe9b:d3fe) (Client Quit)
09:27:00 berberman joins (~berberman@123.118.111.247)
09:27:51 <phadej> you can work with StateT something Gen yes
09:30:11 <phadej> But i'd rather rethink whether you really need unique random names
09:30:14 <phadej> to begin with
09:30:30 <carbolymer> I need to block thread indefinitely - `newEmptyMVar >>= takeMVar` - is it a good idea?
09:30:44 <phadej> that's something (uniqueness) which is hard to maintain in shrinking
09:31:22 <phadej> carbolymer: that might not work, as you might get a "BlockedIndefinitelyOnMVar" exception
09:31:43 <phadej> why you want to block indefinitely, that doesn't sound right
09:31:57 <phadej> surely there' something you can wait on
09:32:24 <carbolymer> phadej, we have weird app shutdown process implemented - all services are getting `cancel`-ed (from async)
09:32:36 × o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 272 seconds)
09:32:43 <carbolymer> phadej, so my idea is to catch AsyncCancelled and perform resources cleanup
09:33:24 <phadej> they [async'd threads] will do cleanup if you use `bracket`?
09:33:31 <phadej> ... to acquire them
09:33:34 <phadej> no need to catch anything
09:33:45 <carbolymer> phadej, I can't use bracket, because the cleanup has to be done a completely different place
09:34:03 kl1xto joins (~klixto@49.188.65.219)
09:34:14 <carbolymer> our app design is flawed :/
09:34:38 × kl1xto quits (~klixto@49.188.65.219) (Client Quit)
09:34:45 <carbolymer> phadej, so my idea is to `(newEmptyMVar >>= takeMVar) `catch` (\(_ :: AsyncCancelled) -> doCleanup)`
09:34:46 <phadej> anyway, you can have "this thread is completed" TVar for each thread, and wait until they become `True`
09:35:08 <dminuoso> carbolymer: How about, instead of throwing an async exception, you use an MVar?
09:35:21 <dminuoso> That way you can just take from an initially empty MVar, and if the other side wants to terminate, they just put to it?
09:35:26 <[exa]> async exception?!
09:35:39 <phadej> yes, what dminuoso proposes is better.
09:35:42 DavidEichmann joins (~david@43.240.198.146.dyn.plus.net)
09:35:45 <phadej> make something to wait upon, and wait on it.
09:36:17 <phadej> flawed current state is not a good reason to make it even worse :)
09:36:28 <carbolymer> dminuoso, that would work I guess, it would be a precedent though
09:36:49 <phadej> feels like there is no clear resource ownership
09:37:00 <carbolymer> yeah...
09:37:53 <[exa]> carbolymer: do the services somehow process "requests" or "data packages" or anything?
09:38:47 o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
09:39:09 <carbolymer> [exa], yes
09:40:07 <[exa]> the usual way is to either have a special request that says "all done, pls exit", or even better a shared exit flag (simple wrapped IORef will do) that the tiny services check regularly
09:43:21 <carbolymer> [exa], I agree, it's aka poison pill, If I were implmeenting the app from scratch, I would implement it that way, it's just it was done previously by canceling services
09:43:47 <carbolymer> and I wanted to fit in, without week-long refactoring ;)
09:43:57 hackage hasql-dynamic-statements 0.2.0.3 - Toolkit for constructing Hasql statements dynamically https://hackage.haskell.org/package/hasql-dynamic-statements-0.2.0.3 (NikitaVolkov)
09:44:43 <phadej> Haskell is the language to do refactorings
09:45:21 <phadej> very enjoyable if you are sure what's the end state should be, IMO.
09:45:25 <phadej> would rather do sooner than later.
09:45:32 <carbolymer> but when you can deliver business values, when all you do is refactoring? :)
09:45:44 <phadej> on mondays.
09:45:50 <carbolymer> on meetings ;-]
09:45:53 × ahmr88 quits (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection)
09:46:39 × polyrain quits (~polyrain@2001:8003:e501:6901:c889:b4c6:945c:a1ea) (Quit: My MacBook has gone to sleep. ZZZzzz…)
09:47:10 × berberman quits (~berberman@123.118.111.247) (Quit: ZNC 1.7.5 - https://znc.in)
09:47:31 berberman joins (~berberman@123.118.111.247)
09:47:38 × berberman quits (~berberman@123.118.111.247) (Remote host closed the connection)
09:47:42 m0rphism joins (~m0rphism@HSI-KBW-046-005-177-122.hsi8.kabel-badenwuerttemberg.de)
09:48:26 berberman joins (~berberman@2408:8207:2569:5270:584e:a9ff:fe9b:d3fe)
09:50:46 × o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection)
09:50:56 o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
09:52:14 × tw1sted1 quits (~tw1sted@184.75.221.3) (Ping timeout: 272 seconds)
09:53:19 jedws joins (~jedws@121.209.161.98)
09:57:12 <AWizzArd> Guys, what is your general strategy in Snap to „extract” request parameters? We may have route [ ("populate/:collection/:precision", populateHandler) ] and expect two variables, say an Int and String. I can call `getParam "collection"` to get a Maybe value. Same for precision. Only when both are available I want to handle the request, otherwise throw a client error.
09:57:20 <AWizzArd> Then I will also have to parse the incoming data and see if it is plausible. This may result in more Maybes or Eithers. This whole machinery needs to be repeated in every single handler.
09:57:26 <AWizzArd> Does Snap offer anything that allows me to do the core extraction, getting rid of Maybes/Eithers and such?
10:00:55 galagora joins (c5ed143c@197.237.20.60)
10:00:58 hackage mmsyn7s 0.9.1.0 - Shows a sorted list of the Ukrainian sounds representations that can be used by mmsyn7 series of programs https://hackage.haskell.org/package/mmsyn7s-0.9.1.0 (OleksandrZhabenko)
10:02:51 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
10:04:07 × snyp quits (~rksht@49.207.204.102) (Ping timeout: 240 seconds)
10:04:46 cr0ssw1nd joins (~crosswind@adsl-174.176.58.193.tellas.gr)
10:05:01 <cr0ssw1nd> hi folks
10:05:12 × jedws quits (~jedws@121.209.161.98) (Quit: My MacBook has gone to sleep. ZZZzzz…)
10:05:55 <AWizzArd> Hey cr0ssw1nd
10:07:26 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
10:07:57 × alp quits (~alp@2a01:e0a:58b:4920:a1ed:32ca:ea5a:70c4) (Ping timeout: 272 seconds)
10:08:28 hackage prettyprinter-graphviz 1.1.0.0 - A prettyprinter backend for graphviz https://hackage.haskell.org/package/prettyprinter-graphviz-1.1.0.0 (GeorgeThomas)
10:08:33 Tops2 joins (~Tobias@dyndsl-095-033-021-014.ewe-ip-backbone.de)
10:15:49 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 264 seconds)
10:16:41 × gienah quits (~mwright@gentoo/developer/gienah) (Remote host closed the connection)
10:18:58 hackage uniqueness-periods-vector-properties 0.5.1.0 - Metrices for the maximum element for the uniqueness-periods-vector packages family. https://hackage.haskell.org/package/uniqueness-periods-vector-properties-0.5.1.0 (OleksandrZhabenko)
10:19:27 × rprije quits (~rprije@203.214.95.251) (Ping timeout: 240 seconds)
10:19:58 hackage named-servant-server 0.1.0, named-servant-client 0.1.0 (KristofBastiaensen): https://qbin.io/arabia-sole-w4ye
10:26:57 hackage named-servant 0.1.1 - https://hackage.haskell.org/package/named-servant-0.1.1 (KristofBastiaensen)
10:27:19 ericholscher joins (~ericholsc@178.162.212.214)
10:27:58 hackage named-servant-server 0.1.1, named-servant-client 0.1.1 (KristofBastiaensen): https://qbin.io/cat-rpm-5a0f
10:29:30 alp joins (~alp@2a01:e0a:58b:4920:303d:a1e1:2db5:170e)
10:31:05 × jespada quits (~jespada@90.254.245.15) (Ping timeout: 240 seconds)
10:32:33 jespada joins (~jespada@90.254.245.15)
10:32:39 snakemas1 joins (~snakemast@213.100.206.23)
10:32:50 × ralejs quits (~ralejs@2620:10d:c093:400::5:a494) (Read error: Connection reset by peer)
10:33:14 ralejs joins (~ralejs@2620:10d:c093:400::5:a494)
10:34:28 hackage bytestring-tree-builder 0.2.7.5 - A very efficient ByteString builder implementation based on the binary tree https://hackage.haskell.org/package/bytestring-tree-builder-0.2.7.5 (NikitaVolkov)
10:36:06 kuribas joins (~user@ptr-25vy0iaj6vgftnb4emr.18120a2.ip6.access.telenet.be)
10:36:51 maroloccio joins (~marolocci@212.129.85.119)
10:37:57 hackage uniqueness-periods-vector-examples 0.11.0.0 - Usage examples for the uniqueness-periods-vector series of packages https://hackage.haskell.org/package/uniqueness-periods-vector-examples-0.11.0.0 (OleksandrZhabenko)
10:38:16 × shatriff quits (~vitaliish@78.111.190.16) (Ping timeout: 246 seconds)
10:41:32 <kuribas> why does hlint recommends (Just True = x) for fromMaybe False x
10:41:32 <kuribas> ?
10:41:58 <dminuoso> kuribas: Because its an opinionated tool
10:42:14 <kuribas> s/=/==
10:42:40 polyrain joins (~polyrain@2001:8003:e501:6901:c889:b4c6:945c:a1ea)
10:42:43 __ngua joins (~rory@2402:800:6379:81de:c01f:8864:9ffb:a477)
10:42:45 <dminuoso> If the author believes `A` is better than `B`, you have to ask the author why they think that.
10:42:50 × o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection)
10:43:08 <kuribas> well, sometimes I can see the point, even if I disagree.
10:43:08 <maerwald> which is why I don't understand why ppl use it in CI
10:43:12 <kuribas> here I don't even see the point
10:43:18 <dminuoso> It's weird when I see people using tools like `hlint` and then zealously following its recommendations, hoping it "improves your code"
10:43:31 <kuribas> maerwald: it doesn't make sense in CI at all.
10:43:41 <maerwald> Yet, ppl do that.
10:43:45 <dminuoso> You should modify and tweak hlint to tell you about things *you* want to know about
10:43:52 <maerwald> hintman makes sense, but not in CI
10:44:02 <kuribas> maerwald: unless it just shows the warnings, not stopping the build.
10:44:02 knupfer joins (~Thunderbi@i59F7FF25.versanet.de)
10:44:10 <dminuoso> Like, Im a big fan of stylish-haskell and similar tools, but only if you tweak them to apply the formatting you wanted *anyway*.
10:44:12 <kuribas> maerwald: even some ghc warnings I disagree with.
10:44:15 <maerwald> https://github.com/apps/hint-man
10:44:18 gienah joins (~mwright@gentoo/developer/gienah)
10:44:28 <dminuoso> kuribas: that's why GHC allows you to turn them on or off.
10:44:36 <dminuoso> If you dont agree with them, disable them.
10:44:37 <maerwald> kuribas: it does stop the build, so I have to argue every time and disable non-sensical warnings :)
10:44:48 o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
10:44:57 <dminuoso> Mostly, GHC has good defaults if you enable -Wall. Emphasis on mostly.
10:45:08 <maerwald> if those are comments in the PR, like hint-man does, it's fine
10:45:34 Rudd0^ joins (~Rudd0@185.189.115.98)
10:45:46 <dminuoso> Though in case of GHC, I wish we had a granular tool to disable particular warnings in code regions.
10:45:53 <dminuoso> That would solve the above issues.
10:46:47 <dminuoso> Especially orphan instances. :>
10:46:55 dminuoso wishes for {-# ADOPT #-}
10:47:58 × Rudd0 quits (~Rudd0@185.189.115.108) (Ping timeout: 272 seconds)
10:48:34 knupfer1 joins (~Thunderbi@200116b82c4c7d00a9c8a35dca5dba93.dip.versatel-1u1.de)
10:48:52 × knupfer1 quits (~Thunderbi@200116b82c4c7d00a9c8a35dca5dba93.dip.versatel-1u1.de) (Client Quit)
10:50:44 jchia__ joins (~jchia@45.32.62.73)
10:50:49 × cpressey quits (~cpressey@79-72-202-104.dynamic.dsl.as9105.com) (Quit: WeeChat 1.9.1)
10:50:58 × jchia__ quits (~jchia@45.32.62.73) (Client Quit)
10:51:18 × knupfer quits (~Thunderbi@i59F7FF25.versanet.de) (Ping timeout: 260 seconds)
10:51:48 jchia__ joins (~jchia@45.32.62.73)
10:51:57 × o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection)
10:52:03 × jchia__ quits (~jchia@45.32.62.73) (Client Quit)
10:52:03 <kuribas> maerwald: making some warnings errors I can understand, like totality checking.
10:52:25 <kuribas> maerwald: I would also disallow `head`, `(!)`, etc...
10:52:27 jchia__ joins (~jchia@45.32.62.73)
10:52:37 × jchia__ quits (~jchia@45.32.62.73) (Client Quit)
10:53:01 jchia__ joins (~jchia@58.32.35.239)
10:53:11 × jchia__ quits (~jchia@58.32.35.239) (Client Quit)
10:53:14 <kuribas> maerwald: I was bitten by partial functions in a small script I wrote. I was thinking it didn't matter for the small script, but the person using it was getting unhelpful errors.
10:53:25 knupfer joins (~Thunderbi@i59F7FF25.versanet.de)
10:53:31 jchia__ joins (~jchia@45.32.62.73)
10:53:45 × jchia__ quits (~jchia@45.32.62.73) (Client Quit)
10:53:55 Zetagon joins (~leo@c151-177-52-233.bredband.comhem.se)
10:53:58 <kuribas> the good thing is that finally my colleage could make his hands dirty on haskell :)
10:54:09 jchia__ joins (~jchia@58.32.35.239)
10:54:19 × jchia__ quits (~jchia@58.32.35.239) (Client Quit)
10:54:39 jchia__ joins (~jchia@58.32.35.239)
10:54:53 × jchia__ quits (~jchia@58.32.35.239) (Client Quit)
10:55:18 jchia__ joins (~jchia@45.32.62.73)
10:55:27 × jchia__ quits (~jchia@45.32.62.73) (Client Quit)
10:55:47 jchia__ joins (~jchia@58.32.35.239)
10:56:01 × jchia__ quits (~jchia@58.32.35.239) (Client Quit)
10:56:26 jchia__ joins (~jchia@58.32.35.239)
10:56:35 × jchia__ quits (~jchia@58.32.35.239) (Client Quit)
10:57:27 × xff0x quits (~fox@2001:1a81:53da:5200:e942:2dc6:3612:ec91) (Ping timeout: 240 seconds)
10:58:40 xff0x joins (~fox@2001:1a81:53da:5200:a463:747d:cc85:3e35)
10:59:47 × olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 240 seconds)
11:00:15 turion joins (~turion@ip1f10fe5a.dynamic.kabel-deutschland.de)
11:00:27 knupfer1 joins (~Thunderbi@200116b82c4c7d0028ffdd8de8181ed3.dip.versatel-1u1.de)
11:00:29 o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
11:00:29 × o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection)
11:00:32 o1lo01ol_ joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
11:01:27 hackage named-servant 0.2.0 - https://hackage.haskell.org/package/named-servant-0.2.0 (KristofBastiaensen)
11:02:25 × nihilazo quits (nihilazoma@gateway/shell/matrix.org/x-ynhyzeaxhyhpxjcx) (Quit: killed)
11:02:25 × johnnyboy[m] quits (gifumatrix@gateway/shell/matrix.org/x-sdbsmmdtbhtyarzx) (Quit: killed)
11:02:25 × SlackIntegration quits (slackbotma@gateway/shell/matrix.org/x-esxicxmpfxumgwpu) (Quit: killed)
11:02:25 × psydruid quits (psydruidma@gateway/shell/matrix.org/x-jnnvasqbzlbcdazz) (Quit: killed)
11:02:25 × maralorn quits (maralornma@gateway/shell/matrix.org/x-xcbwgmzbnjbofzkc) (Quit: killed)
11:02:25 × fgaz quits (fgazmatrix@gateway/shell/matrix.org/x-xkyvxxetlscnwafl) (Quit: killed)
11:02:25 × PotatoHatsue quits (berbermanp@gateway/shell/matrix.org/x-ltxkvqlzigmwjcmb) (Quit: killed)
11:02:25 × jtojnar quits (jtojnarmat@gateway/shell/matrix.org/x-sxfbmpglnidreblu) (Quit: killed)
11:02:25 × themsay[m] quits (themsaymat@gateway/shell/matrix.org/x-doisvmaprkvtlian) (Quit: killed)
11:02:25 × domenkozar[m] quits (domenkozar@NixOS/user/domenkozar) (Quit: killed)
11:02:26 × unclechu quits (unclechuma@gateway/shell/matrix.org/x-siyegrvxmbqkrarq) (Quit: killed)
11:02:26 × vaibhavsagar quits (vaibhavsag@gateway/shell/matrix.org/x-lbhwkudhrzavozue) (Quit: killed)
11:02:26 × theduke quits (thedukem1@gateway/shell/matrix.org/x-ywjhvhoswxgzllwc) (Quit: killed)
11:02:26 × siraben quits (sirabenmat@gateway/shell/matrix.org/x-ykymenvgfoixvnor) (Quit: killed)
11:02:26 × sm[m] quits (simonmicma@gateway/shell/matrix.org/x-smgmdfguunjmvhtb) (Quit: killed)
11:02:27 × drozdziak1 quits (drozdziak1@gateway/shell/matrix.org/x-aitoffbhswubbvqs) (Quit: killed)
11:02:27 × kadoban quits (kadobanmat@gateway/shell/matrix.org/x-hygrfqqyfjnsdlux) (Quit: killed)
11:02:27 × srid quits (sridmatrix@gateway/shell/matrix.org/x-xvfelxeqgrijfein) (Quit: killed)
11:02:27 × Noughtmare[m] quits (naughtmare@gateway/shell/matrix.org/x-pxgtffywirgpojke) (Quit: killed)
11:02:27 × bonvoyage[m] quits (bonvoyageu@gateway/shell/matrix.org/x-flypodpwywfnwhbp) (Quit: killed)
11:02:29 × CaptainFox[m] quits (onianimatr@gateway/shell/matrix.org/x-qldffscxaigohrqf) (Quit: killed)
11:02:29 × jkaye[m] quits (jkayematri@gateway/shell/matrix.org/x-sacwexxudjndlbhb) (Quit: killed)
11:02:30 × mikr[m] quits (mikrdavral@gateway/shell/matrix.org/x-ertglelnvdyfmpmz) (Quit: killed)
11:02:31 × JoelMcCracken[m] quits (joelmccrac@gateway/shell/matrix.org/x-iuizycevqaqwplpt) (Quit: killed)
11:02:31 × michaelpj quits (michaelpjm@gateway/shell/matrix.org/x-lalgvgrwwexhlata) (Quit: killed)
11:02:32 × materialfuture[m quits (materialfu@gateway/shell/matrix.org/x-natatakpvirpbwzh) (Quit: killed)
11:02:32 × alexfmpe quits (alexfmpema@gateway/shell/matrix.org/x-puoreeslprltamlk) (Quit: killed)
11:02:36 × dyniec[m] quits (dyniecmatr@gateway/shell/matrix.org/x-eqsqupnlptqjhopn) (Quit: killed)
11:02:36 × albestro[m] quits (albestroma@gateway/shell/matrix.org/x-jhifwvtorjzyapnj) (Quit: killed)
11:02:38 × jlv quits (jlvjustinl@gateway/shell/matrix.org/x-edyheupziglvmygt) (Quit: killed)
11:02:39 × hnOsmium0001[m] quits (hnosmium00@gateway/shell/matrix.org/x-asylavqwpoyheblp) (Quit: killed)
11:02:39 × pqwy[m] quits (pqwymatrix@gateway/shell/matrix.org/x-nxhnwnrcnkxvbjgw) (Quit: killed)
11:02:40 × mmynsted[m] quits (mmynstedtc@gateway/shell/matrix.org/x-weneqjetvglndztb) (Quit: killed)
11:02:40 × Ericson2314 quits (ericson231@gateway/shell/matrix.org/x-msawmwnrrupoyzdw) (Quit: killed)
11:02:42 × steve[m] quits (stevetrout@gateway/shell/matrix.org/x-giosogvjuwgmzgeq) (Quit: killed)
11:02:42 hackage lightstep-haskell 0.10.4 - LightStep OpenTracing client library https://hackage.haskell.org/package/lightstep-haskell-0.10.4 (DmitryIvanov)
11:02:42 hackage named-servant-server 0.2.0, named-servant-client 0.2.0 (KristofBastiaensen): https://qbin.io/sur-robots-p3us
11:02:42 × knupfer quits (~Thunderbi@i59F7FF25.versanet.de) (Ping timeout: 264 seconds)
11:02:43 × GuillaumeChrel[m quits (guillaumec@gateway/shell/matrix.org/x-kgpqbbuzoemsaame) (Quit: killed)
11:02:43 × ethercrow[m] quits (ethercrowm@gateway/shell/matrix.org/x-cngkbkqzfiyaehzq) (Quit: killed)
11:02:43 × gmind[m] quits (gmindmatri@gateway/shell/matrix.org/x-xxubemmtfzohlasf) (Quit: killed)
11:02:43 × sepp2k quits (sepp2kmatr@gateway/shell/matrix.org/x-lbhxftmcyljkcwmt) (Quit: killed)
11:02:45 × hsiktas[m] quits (hsiktasmat@gateway/shell/matrix.org/x-kynxvphdyxwicwmr) (Quit: killed)
11:02:45 × chreekat[m] quits (chreekatma@gateway/shell/matrix.org/x-lhpszfbfikwwpjcq) (Quit: killed)
11:02:45 × sureyeaah quits (shauryab98@gateway/shell/matrix.org/x-bexfvkzxvxsukjbn) (Quit: killed)
11:02:45 × rednaZ[m] quits (r3dnazmatr@gateway/shell/matrix.org/x-frefqrwfmvpulcxq) (Quit: killed)
11:02:46 × io_r_us[m] quits (commandlin@gateway/shell/matrix.org/x-hfbhrzjwkhpdkxmx) (Quit: killed)
11:02:46 × iinuwa quits (iinuwamatr@gateway/shell/matrix.org/x-ojhvzvdjehejmjyl) (Quit: killed)
11:02:46 × ciderpunx[m] quits (ciderpunxm@gateway/shell/matrix.org/x-eiqlaujdcrrjihof) (Quit: killed)
11:02:46 × betrion[m] quits (betrionmat@gateway/shell/matrix.org/x-jtuvgpaxjhagltpq) (Quit: killed)
11:02:49 × lambdaclan quits (lambdaclan@gateway/shell/matrix.org/x-nfskoikomeigrjig) (Quit: killed)
11:02:49 × alvinsj[m] quits (alvinsjmat@gateway/shell/matrix.org/x-mkainprhrhntgffj) (Quit: killed)
11:02:50 × jeffcasavant[m] quits (jeffcasava@gateway/shell/matrix.org/x-ksjiuklwciszscec) (Quit: killed)
11:02:50 × jiribenes1 quits (jbjiribene@gateway/shell/matrix.org/x-oeyhikodljyfssef) (Quit: killed)
11:02:50 × Fernando-Basso[m quits (fernando-b@gateway/shell/matrix.org/x-ukhpvkodxcjgraor) (Quit: killed)
11:02:50 knupfer1 is now known as knupfer
11:02:52 × tttom[m] quits (tttommatri@gateway/shell/matrix.org/x-tfjycddkqvetadxg) (Quit: killed)
11:02:52 × texasmynsted[m] quits (mmynstedko@gateway/shell/matrix.org/x-kjavtksplelfadkn) (Quit: killed)
11:02:52 × tsrt^ quits (tsrt@ip98-184-89-2.mc.at.cox.net) (Max SendQ exceeded)
11:03:48 tsrt^ joins (tsrt@ip98-184-89-2.mc.at.cox.net)
11:04:27 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
11:05:34 × lightandlight quits (sid135476@gateway/web/irccloud.com/x-hovjzoliueuictrg) (Ping timeout: 246 seconds)
11:05:59 × plutoniix quits (~q@175.176.222.7) (Quit: Leaving)
11:06:02 × maroloccio quits (~marolocci@212.129.85.119) (Quit: WeeChat 2.3)
11:06:16 lightandlight joins (sid135476@gateway/web/irccloud.com/x-esxphvmhpsuzltwt)
11:06:43 × tomboy64 quits (~tomboy64@gateway/tor-sasl/tomboy64) (Ping timeout: 240 seconds)
11:07:34 tomboy64 joins (~tomboy64@gateway/tor-sasl/tomboy64)
11:08:48 Sanchayan joins (~Sanchayan@2401:4900:3306:43b4:5db8:9096:94f4:9d42)
11:09:09 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
11:09:10 mmynsted[m] joins (mmynstedko@gateway/shell/matrix.org/x-vezacdswknregcsw)
11:10:56 × Sanchayan quits (~Sanchayan@2401:4900:3306:43b4:5db8:9096:94f4:9d42) (Client Quit)
11:12:28 hackage uniqueness-periods-vector-properties 0.5.2.0 - Metrices for the maximum element for the uniqueness-periods-vector packages family. https://hackage.haskell.org/package/uniqueness-periods-vector-properties-0.5.2.0 (OleksandrZhabenko)
11:13:22 × HaskellYogi quits (~vivekrama@49.207.212.129) (Remote host closed the connection)
11:13:57 jedws joins (~jedws@121.209.161.98)
11:14:18 HaskellYogi joins (~vivekrama@49.207.212.129)
11:15:47 × berberman quits (~berberman@2408:8207:2569:5270:584e:a9ff:fe9b:d3fe) (Ping timeout: 240 seconds)
11:16:41 berberman joins (~berberman@2408:8207:256a:1720:584e:a9ff:fe9b:d3fe)
11:17:37 × alp quits (~alp@2a01:e0a:58b:4920:303d:a1e1:2db5:170e) (Ping timeout: 272 seconds)
11:18:22 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 272 seconds)
11:19:13 × HaskellYogi quits (~vivekrama@49.207.212.129) (Ping timeout: 246 seconds)
11:19:21 × berberman quits (~berberman@2408:8207:256a:1720:584e:a9ff:fe9b:d3fe) (Client Quit)
11:19:46 berberman joins (~berberman@2408:8207:256a:1720:584e:a9ff:fe9b:d3fe)
11:20:09 × Dungdv quits (abf4bce2@gateway/web/cgi-irc/kiwiirc.com/ip.171.244.188.226) (Quit: Connection closed)
11:23:40 jtojnar joins (jtojnarmat@gateway/shell/matrix.org/x-usgrtgvgawipzskz)
11:23:40 hsiktas[m] joins (hsiktasmat@gateway/shell/matrix.org/x-mdsaohojuseguvva)
11:23:40 hnOsmium0001[m] joins (hnosmium00@gateway/shell/matrix.org/x-szmgbxfcnviaeywn)
11:23:40 SlackIntegration joins (slackbotma@gateway/shell/matrix.org/x-rxhzofxlqowyvoex)
11:23:40 vaibhavsagar joins (vaibhavsag@gateway/shell/matrix.org/x-dzrnwheyyrqqkaxx)
11:23:40 kadoban joins (kadobanmat@gateway/shell/matrix.org/x-hqzwblsefampavod)
11:23:40 nihilazo joins (nihilazoma@gateway/shell/matrix.org/x-afxdcasmpruwczpn)
11:23:40 bonvoyage[m] joins (bonvoyageu@gateway/shell/matrix.org/x-gwfeippcnxqufbie)
11:23:40 ThaEwat joins (thaewraptm@gateway/shell/matrix.org/x-hrgahnccdejedpjj)
11:23:40 avocado joins (renningmat@gateway/shell/matrix.org/x-lbeurhasvwcxrpwp)
11:23:40 jeffcasavant[m] joins (jeffcasava@gateway/shell/matrix.org/x-hjhltkjttsndhhkz)
11:23:41 lambdaclan joins (lambdaclan@gateway/shell/matrix.org/x-ohajfkfwbdgxlpmo)
11:23:41 sm[m] joins (simonmicma@gateway/shell/matrix.org/x-tneitzltqviyrfjn)
11:23:41 alvinsj[m] joins (alvinsjmat@gateway/shell/matrix.org/x-nwfftzrznvagqvns)
11:23:41 boistordu1 joins (boistordum@gateway/shell/matrix.org/x-uaffjwqaamebhlmi)
11:23:41 chreekat[m] joins (chreekatma@gateway/shell/matrix.org/x-kpqcqdtuspbqaepg)
11:23:41 shatriff joins (~vitaliish@178-133-212-10.mobile.vf-ua.net)
11:23:41 drozdziak1 joins (drozdziak1@gateway/shell/matrix.org/x-qbmoanboxydujdwb)
11:23:41 Ericson2314 joins (ericson231@gateway/shell/matrix.org/x-jqfqhltqwawefczw)
11:23:41 iinuwa joins (iinuwamatr@gateway/shell/matrix.org/x-jxlnqrgayqijmilv)
11:23:41 io_r_us[m] joins (commandlin@gateway/shell/matrix.org/x-xajpenbgtlsrahzn)
11:23:42 sureyeaah joins (shauryab98@gateway/shell/matrix.org/x-huvitbkiaeizvifg)
11:23:42 johnnyboy[m] joins (gifumatrix@gateway/shell/matrix.org/x-vahebxhkdkvauchy)
11:23:42 unclechu joins (unclechuma@gateway/shell/matrix.org/x-smvlsqqmverjjhyj)
11:23:42 Fernando-Basso[m joins (fernando-b@gateway/shell/matrix.org/x-ytyxcamjxrgxyfkl)
11:23:42 ethercrow[m] joins (ethercrowm@gateway/shell/matrix.org/x-zwklnxjxcmhjkoow)
11:23:42 rednaZ[m] joins (r3dnazmatr@gateway/shell/matrix.org/x-nzlaqkxqhijamdxj)
11:23:42 themsay[m] joins (themsaymat@gateway/shell/matrix.org/x-twnfzasmxscnzufy)
11:23:42 PotatoHatsue joins (berbermanp@gateway/shell/matrix.org/x-qjylcwexkmjwddia)
11:23:42 JoelMcCracken[m] joins (joelmccrac@gateway/shell/matrix.org/x-fgrnajlvcmfxorzc)
11:23:42 maralorn joins (maralornma@gateway/shell/matrix.org/x-awbsrvgnrvynarjf)
11:23:42 siraben joins (sirabenmat@gateway/shell/matrix.org/x-pjuezldzdrfckkhi)
11:23:42 pqwy[m] joins (pqwymatrix@gateway/shell/matrix.org/x-gsboooajgyollaro)
11:23:42 michaelpj joins (michaelpjm@gateway/shell/matrix.org/x-lwzxhlbrpraenxqc)
11:23:43 fgaz joins (fgazmatrix@gateway/shell/matrix.org/x-rlbcopwnlnlrszcb)
11:23:43 theduke joins (thedukem1@gateway/shell/matrix.org/x-uxfoavbkhrpjinhc)
11:23:43 lnxw37d4 joins (lnxw37d4ma@gateway/shell/matrix.org/x-yolujewggzqqhajb)
11:23:43 srid joins (sridmatrix@gateway/shell/matrix.org/x-bwagjvhebtsmrixk)
11:23:43 domenkozar[m] joins (domenkozar@NixOS/user/domenkozar)
11:23:43 psydruid joins (psydruidma@gateway/shell/matrix.org/x-jnwhbopqsvzftvuy)
11:23:46 materialfuture[m joins (materialfu@gateway/shell/matrix.org/x-ahudgacklhknadwx)
11:23:47 ciderpunx[m] joins (ciderpunxm@gateway/shell/matrix.org/x-emamieladdrukutt)
11:23:47 alexfmpe joins (alexfmpema@gateway/shell/matrix.org/x-ibothraqnolnyjqn)
11:23:47 jlv joins (jlvjustinl@gateway/shell/matrix.org/x-bxnvhwbzqxqophdz)
11:23:47 jiribenes1 joins (jbjiribene@gateway/shell/matrix.org/x-irvqkvgzltpjcfzd)
11:23:47 GuillaumeChrel[m joins (guillaumec@gateway/shell/matrix.org/x-irgukfuwtdkplfnf)
11:23:47 steve[m] joins (stevetrout@gateway/shell/matrix.org/x-nolzmrzxmohotgty)
11:23:47 sepp2k joins (sepp2kmatr@gateway/shell/matrix.org/x-uvkezxfeawylssgh)
11:23:47 CaptainFox[m] joins (onianimatr@gateway/shell/matrix.org/x-psgxuihgrttrwsoo)
11:23:48 albestro[m] joins (albestroma@gateway/shell/matrix.org/x-ceoaxwandmwefloq)
11:23:48 Noughtmare[m] joins (naughtmare@gateway/shell/matrix.org/x-hukludizhwnrxifz)
11:23:48 gmind[m] joins (gmindmatri@gateway/shell/matrix.org/x-azjcyqgyoflizrpj)
11:23:48 mmynsted[m]1 joins (mmynstedtc@gateway/shell/matrix.org/x-otbnrbbvnxztknls)
11:23:48 mikr[m] joins (mikrdavral@gateway/shell/matrix.org/x-kwgubaqxdcmojbtm)
11:23:49 tttom[m] joins (tttommatri@gateway/shell/matrix.org/x-envhcytnrwvreghj)
11:23:49 jkaye[m] joins (jkayematri@gateway/shell/matrix.org/x-dkdulepbdrwoghiq)
11:23:49 betrion[m] joins (betrionmat@gateway/shell/matrix.org/x-jxfdancklrdizijq)
11:23:50 dyniec[m] joins (dyniecmatr@gateway/shell/matrix.org/x-djxhqzczqzhwogcr)
11:24:29 × jedws quits (~jedws@121.209.161.98) (Quit: My MacBook has gone to sleep. ZZZzzz…)
11:26:08 × dansho quits (~dansho@ip68-108-167-185.lv.lv.cox.net) (Remote host closed the connection)
11:26:32 dansho joins (~dansho@ip68-108-167-185.lv.lv.cox.net)
11:27:09 × shatriff quits (~vitaliish@178-133-212-10.mobile.vf-ua.net) (Remote host closed the connection)
11:27:53 × polyrain quits (~polyrain@2001:8003:e501:6901:c889:b4c6:945c:a1ea) (Quit: My MacBook has gone to sleep. ZZZzzz…)
11:29:17 × LKoen quits (~LKoen@81.255.219.130) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
11:30:09 machinedgod joins (~machinedg@24.105.81.50)
11:30:27 × o1lo01ol_ quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 240 seconds)
11:30:47 vilpan parts (~0@mail.elitnet.lt) ()
11:32:12 <kuribas> since JSON decodes utf8, isn't it wrong for aeson to take ByteString, instead of Text?
11:32:42 <lyxia> aeson does the utf-8 decoding.
11:32:49 o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt)
11:32:52 <kuribas> lyxia: that's not my question
11:32:58 hackage lsp-test 0.11.0.7 - Functional test framework for LSP servers. https://hackage.haskell.org/package/lsp-test-0.11.0.7 (luke_)
11:33:06 <lyxia> what's wrong about it then
11:33:12 <kuribas> lyxia: not because it *does*, that it *should*.
11:33:39 <kuribas> lyxia: it's wrong because it does to much.
11:33:50 chele__ joins (~chele@ip5b416ea2.dynamic.kabel-deutschland.de)
11:33:57 acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
11:33:59 <dminuoso> kuribas: If you want something more customizable, consider waargonaut.
11:34:07 <dminuoso> That lets you use a custom parser.
11:34:08 crossw1nd joins (~crosswind@adsl-174.176.58.193.tellas.gr)
11:34:25 × jkaye[m] quits (jkayematri@gateway/shell/matrix.org/x-dkdulepbdrwoghiq) (*.net *.split)
11:34:25 × jiribenes1 quits (jbjiribene@gateway/shell/matrix.org/x-irvqkvgzltpjcfzd) (*.net *.split)
11:34:25 × kadoban quits (kadobanmat@gateway/shell/matrix.org/x-hqzwblsefampavod) (*.net *.split)
11:34:25 × hsiktas[m] quits (hsiktasmat@gateway/shell/matrix.org/x-mdsaohojuseguvva) (*.net *.split)
11:34:25 × nihilazo quits (nihilazoma@gateway/shell/matrix.org/x-afxdcasmpruwczpn) (*.net *.split)
11:34:25 × michaelpj quits (michaelpjm@gateway/shell/matrix.org/x-lwzxhlbrpraenxqc) (*.net *.split)
11:34:25 × __ngua quits (~rory@2402:800:6379:81de:c01f:8864:9ffb:a477) (*.net *.split)
11:34:25 × cr0ssw1nd quits (~crosswind@adsl-174.176.58.193.tellas.gr) (*.net *.split)
11:34:25 × ericholscher quits (~ericholsc@178.162.212.214) (*.net *.split)
11:34:25 × m0rphism quits (~m0rphism@HSI-KBW-046-005-177-122.hsi8.kabel-badenwuerttemberg.de) (*.net *.split)
11:34:25 × chele_ quits (~chele@ip5b416ea2.dynamic.kabel-deutschland.de) (*.net *.split)
11:34:25 × remexre_ quits (~nathan@207-153-38-50.fttp.usinternet.com) (*.net *.split)
11:34:25 × nyd quits (~lpy@unaffiliated/elysian) (*.net *.split)
11:34:25 × aqd quits (~aqd@87-92-145-87.rev.dnainternet.fi) (*.net *.split)
11:34:25 × day quits (~Unknown@unaffiliated/day) (*.net *.split)
11:34:25 × darjeeling_ quits (~darjeelin@122.245.210.138) (*.net *.split)
11:34:25 × lagothrix quits (~lagothrix@unaffiliated/lagothrix) (*.net *.split)
11:34:25 × theDon quits (~td@94.134.91.7) (*.net *.split)
11:34:25 × Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (*.net *.split)
11:34:25 × ixian quits (~mgold@terra.bitplane.org) (*.net *.split)
11:34:26 × martin02 quits (silas@hund.fs.lmu.de) (*.net *.split)
11:34:26 × giaco quits (~jack@2-238-151-49.ip244.fastwebnet.it) (*.net *.split)
11:34:26 × taktoa[c] quits (sid282096@gateway/web/irccloud.com/x-glimjsfxdcqvfuja) (*.net *.split)
11:34:26 × CindyLinz quits (~cindy_utf@112.121.78.20) (*.net *.split)
11:34:26 × dsal quits (sid13060@gateway/web/irccloud.com/x-kjyjumpbtqbmmaod) (*.net *.split)
11:34:26 × spinnylights quits (~zoe@pool-100-6-142-89.pitbpa.fios.verizon.net) (*.net *.split)
11:34:26 × arahael quits (~arahael@203.194.43.207) (*.net *.split)
11:34:26 × pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (*.net *.split)
11:34:26 × ezzieyguywuf quits (~Unknown@unaffiliated/ezzieyguywuf) (*.net *.split)
11:34:26 × joshmeredith quits (sid387798@gateway/web/irccloud.com/x-lhhtwrcyukiolswv) (*.net *.split)
11:34:26 × pong quits (chiya@2406:3003:2077:2341::babe) (*.net *.split)
11:34:26 × coeus quits (~coeus@p200300d02724ef00d20f0ecf5ac74df4.dip0.t-ipconnect.de) (*.net *.split)
11:34:26 × nopf quits (~frosch@static.179.17.76.144.clients.your-server.de) (*.net *.split)
11:34:26 × M2tias quits (m2@seri.fi) (*.net *.split)
11:34:36 day joins (~Unknown@unaffiliated/day)
11:34:36 ixian joins (~mgold@2002:4a74:ba78:1701:0:ff:fe78:6269)
11:34:37 taktoa[c] joins (sid282096@gateway/web/irccloud.com/x-nuycfigarigggsbg)
11:34:40 <kuribas> dminuoso: that's a different issue :)
11:34:42 dsal joins (sid13060@gateway/web/irccloud.com/x-kthuquovdrjebyop)
11:34:48 Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
11:34:49 Buntspecht joins (~user@unaffiliated/siracusa)
11:34:50 darjeeling_ joins (~darjeelin@122.245.210.138)
11:34:52 nyd joins (~lpy@unaffiliated/elysian)
11:34:53 lagothrix joins (~lagothrix@unaffiliated/lagothrix)
11:34:53 spinnylights joins (~zoe@pool-100-6-142-89.pitbpa.fios.verizon.net)
11:34:54 m0rphism joins (~m0rphism@HSI-KBW-046-005-177-122.hsi8.kabel-badenwuerttemberg.de)
11:34:56 remexre_ joins (~nathan@207-153-38-50.fttp.usinternet.com)
11:34:57 martin02 joins (silas@hund.fs.lmu.de)
11:35:05 jiribenes1 joins (jbjiribene@gateway/shell/matrix.org/x-hlzxlgqhzheuoshi)
11:35:20 giaco joins (~jack@2-238-151-49.ip244.fastwebnet.it)
11:35:32 <kuribas> lyxia: Aeson is meant to do text encoding/decoding, so it should have to mess with bytestring encodings.
11:35:54 <dminuoso> kuribas: You probably get better performance if you dont roundtrip through text.
11:36:00 kadoban joins (kadobanmat@gateway/shell/matrix.org/x-vbpdmawecokvypon)
11:36:07 <lyxia> that seems to be a pretty arbitrary requirement
11:36:12 nihilazo joins (nihilazoma@gateway/shell/matrix.org/x-gmshkgiyniprfgmk)
11:36:12 michaelpj joins (michaelpjm@gateway/shell/matrix.org/x-qaoqeszlpidmiidi)
11:36:32 hsiktas[m] joins (hsiktasmat@gateway/shell/matrix.org/x-pxllgyrlikkrbict)
11:36:37 × chaosmasttter quits (~chaosmast@p200300c4a70b4001c004325a2a510724.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
11:36:39 <dminuoso> Also, if you require Text, then you're *still* forced into a particular decoder, namely those provided by text.
11:37:04 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 246 seconds)
11:37:23 <kuribas> dminuoso: there are different encoders for Text.
11:37:31 <dminuoso> And ontop, that puts additional burden on the programmer, since you yourself have to explicitly use decodeUtf8, since Utf16/32 is invalid for JSON.
11:37:38 <dminuoso> (Outside closed systems)
11:37:57 <kuribas> lyxia: for example, I may want to generate a json string into Text.
11:38:07 × Zetagon quits (~leo@c151-177-52-233.bredband.comhem.se) (Ping timeout: 246 seconds)
11:38:19 <kuribas> ByteString and Text shouldn't be interchangeable
11:38:25 <phadej> It's not about having either, yes, aeson should have an option to generate Text directly too
11:38:48 <phadej> but due mentioned performance reasons, one have to pick one, and ByteString is "better" choice
11:39:20 <phadej> bold claim: make stack support backpack (or go away), then there could be backpacked Aeson for either bytestrings or text
11:39:52 <dminuoso> phadej: An even bolder claim, before we use backpack, can we have a functional documentation for it first? :p
11:39:52 <phadej> i.e. lets rather not choose either, but make library support everything (but without performance penalties)
11:40:11 <kuribas> phadej: that would be a better option of course... Is aeson really that optimized on speed?
11:40:11 jkaye[m] joins (jkayematri@gateway/shell/matrix.org/session)
11:40:11 aqd joins (~aqd@87-92-145-87.rev.dnainternet.fi)
11:40:11 theDon joins (~td@94.134.91.7)
11:40:11 CindyLinz joins (~cindy_utf@112.121.78.20)
11:40:11 arahael joins (~arahael@203.194.43.207)
11:40:11 pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net)
11:40:11 ezzieyguywuf joins (~Unknown@unaffiliated/ezzieyguywuf)
11:40:11 joshmeredith joins (sid387798@gateway/web/irccloud.com/x-lhhtwrcyukiolswv)
11:40:11 pong joins (chiya@2406:3003:2077:2341::babe)
11:40:11 coeus joins (~coeus@p200300d02724ef00d20f0ecf5ac74df4.dip0.t-ipconnect.de)
11:40:11 nopf joins (~frosch@static.179.17.76.144.clients.your-server.de)
11:40:11 M2tias joins (m2@seri.fi)
11:40:12 × jkaye[m] quits (jkayematri@gateway/shell/matrix.org/session) (Changing host)
11:40:12 jkaye[m] joins (jkayematri@gateway/shell/matrix.org/x-qpddmqzxjujexbdo)
11:40:16 <phadej> kuribas: it is
11:40:59 <phadej> the addition of toEncoding was purely motivated by performance considerations
11:41:05 hekkaidekapus] joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
11:41:25 <phadej> otherwise you (can quite easily in fact) use toJSON + Value -> Text function
11:41:39 carlomagno1 joins (~cararell@inet-hqmc01-o.oracle.com)
11:42:07 <phadej> writing Text -> Value parser is in fact also ok and possible, I guess someone just need to do the legwork there
11:42:23 <phadej> (as parsing side of aeson always goes through `Value`)
11:42:32 <kuribas> I thought Text was still quite performant
11:42:39 Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas)
11:42:54 <kuribas> was aeson made pre-Text?
11:43:03 × hekkaidekapus[ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
11:43:05 HaskellYogi joins (~vivekrama@49.207.212.129)
11:43:13 × carlomagno quits (~cararell@inet-hqmc02-o.oracle.com) (Ping timeout: 260 seconds)
11:43:45 × chele__ quits (~chele@ip5b416ea2.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
11:44:27 snakemas1 joins (~snakemast@213.100.206.23)
11:45:20 <phadej> text is performant when you already have it
11:45:35 × spinnylights quits (~zoe@pool-100-6-142-89.pitbpa.fios.verizon.net) (Quit: WeeChat 2.9)
11:45:36 <phadej> for parsing, in fact it isn't as you have to decode backing UTF16 on the fly
11:46:10 × marek quits (~mmahut@209.250.249.245) (Ping timeout: 246 seconds)
11:46:11 <phadej> Vector Word32 would be more performant (i.e. UTF32 encoding), if you can afford having 4bytes per character
11:48:11 cpressey joins (~cpressey@79-72-202-104.dynamic.dsl.as9105.com)
11:48:21 marek joins (~mmahut@209.250.249.245)
11:48:52 <phadej> in fact, `text` is weird compromise nowadays, utf16 isn't really space efficient, nor is fixed-width (i.e. as performant as it can get)
11:49:28 <phadej> but then there are reasons why its internal encoding isn't changed
11:50:37 <kuribas> if the internals aren't leaky, we could change to utf8
11:51:25 × galagora quits (c5ed143c@197.237.20.60) (Remote host closed the connection)
11:52:43 <phadej> https://github.com/text-utf8/META/issues/1
11:53:01 <phadej> "we" doesn't work
11:53:31 <phadej> people burnout climbing this kind of hills
11:54:01 <dminuoso> Presumably the main issue is that those people have day jobs, hobby projects, maintainer positions for dozens of other projects..
11:54:19 <dminuoso> So if you have a personal life and still want to get text-utf8 done, it's gonna be hard.
11:54:42 <phadej> yes, these kind of issues should be someones dayjob
11:56:30 <phadej> Though, honestly, I don't think that driving these kind of big-scale changes through is a nice job
11:58:03 <phadej> and IMHO that team should be at least of size three
11:58:16 <phadej> so it's not any single person's job either
11:58:55 <__skn> CX
11:59:17 × acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 260 seconds)
11:59:27 <phadej> because these kind of libraries should be associated with a single person
11:59:55 mmohammadi981266 joins (~mmohammad@5.238.185.98)
12:04:08 jedws joins (~jedws@121.209.161.98)
12:05:08 <dminuoso> *shouldn't
12:06:37 R8128 joins (~R8128@77-170-72-55.fixed.kpn.net)
12:08:34 × jedws quits (~jedws@121.209.161.98) (Ping timeout: 246 seconds)
12:10:14 × mmohammadi981266 quits (~mmohammad@5.238.185.98) (Quit: I quit (╯°□°)╯︵ ┻━┻)
12:11:07 <Cheery> I wrote a tool that fetches a og:title/og:description from the website and dumps it along the link.
12:11:37 <Cheery> Now I'd need a tool that can get in bunch of text, and produce a short summary from it.
12:11:50 × dansho quits (~dansho@ip68-108-167-185.lv.lv.cox.net) (Quit: Leaving)
12:12:45 acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
12:13:09 alp joins (~alp@2a01:e0a:58b:4920:d4ea:6c81:73c8:e91a)
12:13:33 mmohammadi981266 joins (~mmohammad@5.238.185.98)
12:14:57 <Cheery> Yay.. there's a linux tool for that. :)
12:15:31 ClaudiusMaximus joins (~claude@198.123.199.146.dyn.plus.net)
12:15:31 × ClaudiusMaximus quits (~claude@198.123.199.146.dyn.plus.net) (Changing host)
12:15:31 ClaudiusMaximus joins (~claude@unaffiliated/claudiusmaximus)
12:16:27 catchme joins (uid355354@gateway/web/irccloud.com/x-lkuruwxjciobmoti)
12:16:49 × mmohammadi981266 quits (~mmohammad@5.238.185.98) (Client Quit)
12:18:46 <phadej> dminuoso: yes, thanks for correction :)
12:19:13 mmohammadi981266 joins (~mmohammad@5.238.185.98)
12:19:23 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 260 seconds)
12:20:32 snakemas1 joins (~snakemast@213.100.206.23)
12:24:48 Nahra joins (~Nahra@unaffiliated/nahra)
12:25:03 × gxt quits (~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds)
12:25:10 geekosaur joins (82659a05@host154-005.vpn.uakron.edu)
12:25:41 × John20 quits (~John@82.46.59.122) (Ping timeout: 258 seconds)
12:26:01 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 264 seconds)
12:26:34 snakemas1 joins (~snakemast@213.100.206.23)
12:26:46 × turion quits (~turion@ip1f10fe5a.dynamic.kabel-deutschland.de) (Ping timeout: 246 seconds)
12:28:32 gxt joins (~gxt@gateway/tor-sasl/gxt)
12:28:43 iyyel joins (~iyyel@52d3ced1.dynamic-ip.k-net.dk)
12:29:18 × lemmih quits (~lemmih@218.186.157.57) (Ping timeout: 272 seconds)
12:32:28 Tario joins (~Tario@201.192.165.173)
12:33:26 chaosmasttter joins (~chaosmast@p200300c4a70b4001c004325a2a510724.dip0.t-ipconnect.de)
12:34:32 × knupfer quits (~Thunderbi@200116b82c4c7d0028ffdd8de8181ed3.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
12:34:36 × iyyel quits (~iyyel@52d3ced1.dynamic-ip.k-net.dk) (Quit: WeeChat 2.9)
12:34:53 Codaraxis_ joins (~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
12:34:59 <Cheery> Ok.. the summarizers seem to not work too well.
12:34:59 raehik joins (~raehik@cpc96984-rdng25-2-0-cust109.15-3.cable.virginm.net)
12:35:09 <Cheery> So the stuff I get is probably the best I can get.
12:35:46 <Cheery> there's this crazy python-written kit, but it's even harder to use than all the rest.
12:36:00 lemmih joins (~lemmih@2406:3003:2072:44:a0ec:19b9:a607:ec5)
12:37:02 × Codaraxis quits (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Ping timeout: 265 seconds)
12:38:15 knupfer1 joins (~Thunderbi@i59F7FF25.versanet.de)
12:39:33 polyrain joins (~polyrain@2001:8003:e501:6901:c889:b4c6:945c:a1ea)
12:40:05 × darjeeling_ quits (~darjeelin@122.245.210.138) (Ping timeout: 240 seconds)
12:40:38 knupfer1 is now known as knupfer
12:42:39 darjeeling_ joins (~darjeelin@122.245.210.138)
12:42:43 × Nahra quits (~Nahra@unaffiliated/nahra) (Ping timeout: 260 seconds)
12:43:16 × polyrain quits (~polyrain@2001:8003:e501:6901:c889:b4c6:945c:a1ea) (Client Quit)
12:43:25 × random quits (~random@185.219.70.106) (Remote host closed the connection)
12:44:30 × wz1000 quits (~wz1000@static.11.113.47.78.clients.your-server.de) (Ping timeout: 272 seconds)
12:48:55 Nahra joins (~Nahra@unaffiliated/nahra)
12:49:19 × Nahra quits (~Nahra@unaffiliated/nahra) (Client Quit)
12:49:46 wz1000 joins (~wz1000@static.11.113.47.78.clients.your-server.de)
12:50:37 titusg joins (~user@192.173.128.35)
12:51:20 <titusg> hi, how do I tell ghc about cabal 3.2 packages?
12:51:56 <geekosaur> ideally you use a cabal project instead of ghc directly
12:51:58 turion joins (~turion@ip1f10fe5a.dynamic.kabel-deutschland.de)
12:52:15 <dcoutts> titusg: e.g. cabal repl will start ghci in your project
12:52:17 <titusg> this is in order to use xmonad
12:52:25 × quazimod1 quits (~quazimodo@27-33-123-50.tpgi.com.au) (Ping timeout: 264 seconds)
12:52:30 × turion quits (~turion@ip1f10fe5a.dynamic.kabel-deutschland.de) (Client Quit)
12:52:57 <geekosaur> use "cabal v2-install --lib" outside of a project, then
12:53:21 <geekosaur> that said, there are build scripts that can use cabal to rebuild xmonad
12:53:28 <dminuoso> titusg: For xmonad you need to use a custom build script
12:53:54 quazimodo joins (~quazimodo@45.67.96.217)
12:55:38 Nahra joins (~Nahra@unaffiliated/nahra)
12:55:55 Velociraptor1 joins (~Velocirap@s91904426.blix.com)
12:56:42 × Nahra quits (~Nahra@unaffiliated/nahra) (Client Quit)
12:56:43 × cpressey quits (~cpressey@79-72-202-104.dynamic.dsl.as9105.com) (Ping timeout: 260 seconds)
13:01:28 John20 joins (~John@82.46.59.122)
13:02:25 Nahra joins (~Nahra@unaffiliated/nahra)
13:05:50 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
13:06:52 gnar^2 joins (~user@c-73-118-153-248.hsd1.wa.comcast.net)
13:07:04 urodna joins (~urodna@unaffiliated/urodna)
13:07:32 cpressey joins (~cpressey@88.144.68.224)
13:10:28 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
13:10:46 mcmoor joins (727ce828@114.124.232.40)
13:11:56 × alp quits (~alp@2a01:e0a:58b:4920:d4ea:6c81:73c8:e91a) (Remote host closed the connection)
13:12:11 × tomboy64 quits (~tomboy64@gateway/tor-sasl/tomboy64) (Remote host closed the connection)
13:12:22 × gnar^2 quits (~user@c-73-118-153-248.hsd1.wa.comcast.net) (Ping timeout: 272 seconds)
13:12:30 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
13:12:38 × berberman quits (~berberman@2408:8207:256a:1720:584e:a9ff:fe9b:d3fe) (Changing host)
13:12:38 berberman joins (~berberman@unaffiliated/berberman)
13:12:55 tomboy64 joins (~tomboy64@gateway/tor-sasl/tomboy64)
13:13:06 oisdk joins (~oisdk@2001:bb6:3329:d100:7807:4c86:5073:949e)
13:14:03 × titusg quits (~user@192.173.128.35) (Quit: ERC (IRC client for Emacs 26.3))
13:14:19 <crossw1nd> what should I install on linux server over SSH in order to random random haskell binary?
13:14:22 <crossw1nd> just ghc?
13:14:35 <crossw1nd> *to run random haskell binary
13:15:30 <[exa]> what kind of linux is that?
13:15:49 <[exa]> generally ghc compiles the haskell source to a normal binary that you should be able to run just as any other language's binary
13:16:42 × vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
13:16:51 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
13:17:06 <crossw1nd> debian I guess
13:17:11 <crossw1nd> apt is present
13:17:26 jedws joins (~jedws@121.209.161.98)
13:17:33 <crossw1nd> [exa] but I mean usually it isn't statically compiled?
13:17:38 × quazimodo quits (~quazimodo@45.67.96.217) (Ping timeout: 256 seconds)
13:17:43 <crossw1nd> I need to have haskell runtime at least
13:17:50 <maerwald> crossw1nd: you need libgmp
13:17:59 <crossw1nd> or is GC bundled into a binary already?
13:17:59 × berberman quits (~berberman@unaffiliated/berberman) (Quit: ZNC 1.7.5 - https://znc.in)
13:18:21 berberman joins (~berberman@unaffiliated/berberman)
13:19:00 <geekosaur> the runtime should be statically linked into the executable usually
13:19:01 × jedws quits (~jedws@121.209.161.98) (Client Quit)
13:19:20 quazimodo joins (~quazimodo@45.67.96.217)
13:19:47 <maerwald> you need at least libgmp and possibly other libraries
13:20:14 <maerwald> just check the binary with lddtree
13:20:17 <kuribas> is there a way to force servant-client to always emit a =true for boolean flags?
13:20:30 <kuribas> it seems it sometimes emits flag=true, and sometimes just flag
13:22:09 × boistordu1 quits (boistordum@gateway/shell/matrix.org/x-uaffjwqaamebhlmi) (Quit: Idle for 30+ days)
13:24:03 <crossw1nd> geekosaur, ooh, I guess it was different 5 years ago
13:24:25 <crossw1nd> maerwald, thanks, trying to figure out how to do it in ubuntu :)
13:24:33 <crossw1nd> there are several libgmp
13:24:45 <crossw1nd> lddtree is awesome idea
13:25:31 <geekosaur> it depends on the platform, but dynamic by default has mostly gone away iirc
13:25:56 <crossw1nd> that's nice
13:26:01 <geekosaur> OS libs are linked dynamic but ghc's own or generated libs should normally be static
13:26:09 × xerox_ quits (~xerox@unaffiliated/xerox) (Quit: leaving)
13:26:14 × nineonine quits (~nineonine@216-19-190-182.dyn.novuscom.net) (Remote host closed the connection)
13:26:38 <geekosaur> (arch links dynamic by default, and breaks a bunch of stuff thereby, but that's another story)
13:27:36 avocado parts (renningmat@gateway/shell/matrix.org/x-lbeurhasvwcxrpwp) ("Kicked by @appservice-irc:matrix.org : Idle for 30+ days")
13:27:48 <mcmoor> Hello, I have this snippet of red-black-tree implementation https://repl.it/repls/DisastrousClientsideDataset#main.hs
13:28:07 <mcmoor> My main question is, why does redden success to be compiled?
13:28:40 <mcmoor> I thought that Valid class only allows Red Black Black or Black Red/Black Red/Black
13:29:26 × kritzefitz quits (~kritzefit@2003:5b:203b:100:c23e:baff:feb8:8cdb) (Remote host closed the connection)
13:31:04 todda7 joins (~torstein@athedsl-4367507.home.otenet.gr)
13:32:14 <crossw1nd> libicuuc.so.65 => not found
13:32:14 <crossw1nd> libicui18n.so.65 => not found
13:32:14 <crossw1nd> libicudata.so.65 => not found
13:32:20 <crossw1nd> omg can't find it on ubuntu
13:32:49 <crossw1nd> is it some common lib for haskell?
13:32:56 <crossw1nd> or very specific
13:33:15 <geekosaur> it's part of the ICU package
13:33:25 <geekosaur> which is a common package, not Haskell specific
13:34:24 <crossw1nd> but this particular so can be found only in CentOS and Fedora
13:34:27 <crossw1nd> according to pkgs.org
13:34:51 <crossw1nd> (+ alt, openmandriva and slackware)
13:35:07 <crossw1nd> ah I get it
13:35:09 <crossw1nd> of course
13:35:09 <geekosaur> on ubuntu it's libicu60 package
13:35:13 <crossw1nd> becaues I compiled in on fedora
13:35:30 <crossw1nd> but I need to recompile it on debian then?
13:35:41 <crossw1nd> then can be not easy in current circumstances..
13:36:23 <crossw1nd> yeah, libicu60 is installed
13:37:03 <crossw1nd> docker to the rescue
13:37:20 <geekosaur> oh, fedora had 6.5 I guess
13:38:50 alp joins (~alp@2a01:e0a:58b:4920:f183:394b:8c77:4cf5)
13:39:34 nineonine joins (~nineonine@216.81.48.202)
13:40:27 Sanchayan joins (~Sanchayan@136.185.164.171)
13:42:02 <maerwald> crossw1nd: are you planning to redistribute the binary to multiple users?
13:42:08 × todda7 quits (~torstein@athedsl-4367507.home.otenet.gr) (Ping timeout: 272 seconds)
13:42:47 <crossw1nd> maerwald, no, it's one-time job
13:43:02 <crossw1nd> it's just quicker than to fix all warning or find how those guys enabled -Werror :D
13:43:20 <crossw1nd> the setup is pretty complicated with multiple docker kubernetes etc
13:43:34 rihards_ joins (~rihards@vpnlv.tilde.com)
13:43:54 <crossw1nd> so this is my savious, I guess
13:43:55 <crossw1nd> docker run --net=host --rm -it -v /root:/host -it fedora:32 /bin/bash
13:44:28 <crossw1nd> or I can recompile there, but I don't want to install haskell there
13:45:36 todda7 joins (~torstein@athedsl-4367507.home.otenet.gr)
13:46:58 aarvar joins (~foewfoiew@50.35.43.33)
13:47:24 oldsk00l_ joins (~znc@ec2-18-130-254-135.eu-west-2.compute.amazonaws.com)
13:48:29 × oldsk00l quits (~znc@ec2-18-130-254-135.eu-west-2.compute.amazonaws.com) (Ping timeout: 258 seconds)
13:52:45 × ulidtko|k quits (~ulidtko@193.111.48.79) (Ping timeout: 240 seconds)
13:52:57 kori joins (~kori@arrowheads/kori)
13:53:24 AlterEgo- joins (~ladew@124-198-158-163.dynamic.caiway.nl)
13:53:27 × Velociraptor1 quits (~Velocirap@s91904426.blix.com) (Remote host closed the connection)
13:55:30 × Nahra quits (~Nahra@unaffiliated/nahra) (Quit: leaving)
13:55:49 Nahra joins (~Nahra@unaffiliated/nahra)
13:56:14 shatriff joins (~vitaliish@78.111.190.16)
13:56:26 jessu joins (~jessu@unaffiliated/jessu)
13:56:56 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:8027:67:300d:f48)
13:59:00 miconda1 joins (~miconda@s91904426.blix.com)
14:02:08 <crossw1nd> yeah it worked
14:04:14 × geekosaur quits (82659a05@host154-005.vpn.uakron.edu) (Ping timeout: 245 seconds)
14:05:32 × ralejs quits (~ralejs@2620:10d:c093:400::5:a494) (Read error: Connection reset by peer)
14:05:44 ralejs joins (~ralejs@2620:10d:c093:400::5:a494)
14:06:23 cosimone_ joins (~cosimone@93-47-228-249.ip115.fastwebnet.it)
14:06:37 ddellacosta joins (~dd@86.106.121.168)
14:07:29 polyphem joins (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
14:10:16 × Nahra quits (~Nahra@unaffiliated/nahra) (Quit: leaving)
14:11:29 cosimone joins (~cosimone@93-47-228-249.ip115.fastwebnet.it)
14:11:59 × cosimone_ quits (~cosimone@93-47-228-249.ip115.fastwebnet.it) (Ping timeout: 260 seconds)
14:11:59 fendor_ joins (~fendor@91.141.0.104.wireless.dyn.drei.com)
14:12:33 × John20 quits (~John@82.46.59.122) (Ping timeout: 260 seconds)
14:13:26 Lycurgus joins (~niemand@98.4.96.130)
14:13:27 mcc joins (~pbodev1@5-15-16-231.residential.rdsnet.ro)
14:13:58 hackage Z-Data 0.1.6.0 - Array, vector and text https://hackage.haskell.org/package/Z-Data-0.1.6.0 (winterland)
14:14:33 × fendor quits (~fendor@77.119.131.69.wireless.dyn.drei.com) (Ping timeout: 258 seconds)
14:15:36 oldsk00l joins (~znc@ec2-18-130-254-135.eu-west-2.compute.amazonaws.com)
14:15:36 × aqd quits (~aqd@87-92-145-87.rev.dnainternet.fi) (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:16:31 <kuribas> ah I found it: makeClientRequest can rewrite the requests
14:16:31 × ralejs quits (~ralejs@2620:10d:c093:400::5:a494) (Read error: Connection reset by peer)
14:16:56 ulidtko|k joins (~ulidtko@193.111.48.79)
14:17:00 ralejs joins (~ralejs@2620:10d:c093:400::5:a494)
14:17:57 × ralejs quits (~ralejs@2620:10d:c093:400::5:a494) (Read error: Connection reset by peer)
14:18:11 × oldsk00l_ quits (~znc@ec2-18-130-254-135.eu-west-2.compute.amazonaws.com) (Ping timeout: 240 seconds)
14:18:19 ralejs joins (~ralejs@2620:10d:c093:400::5:a494)
14:18:21 geekosaur joins (82659a05@host154-005.vpn.uakron.edu)
14:19:32 × Sanchayan quits (~Sanchayan@136.185.164.171) (Quit: leaving)
14:20:02 st8less joins (~st8less@2603:a060:11fd:0:9c66:9b18:c21:60c)
14:22:54 × bitmapper quits (uid464869@gateway/web/irccloud.com/x-jxsyyeiuxmytinai) (Quit: Connection closed for inactivity)
14:23:31 × shatriff quits (~vitaliish@78.111.190.16) (Read error: Connection reset by peer)
14:25:51 shatriff joins (~vitaliish@78.111.190.16)
14:28:38 × alp quits (~alp@2a01:e0a:58b:4920:f183:394b:8c77:4cf5) (Read error: Connection reset by peer)
14:28:44 conal joins (~conal@64.71.133.70)
14:28:58 alp joins (~alp@2a01:e0a:58b:4920:f183:394b:8c77:4cf5)
14:29:23 nados joins (~dan@107-190-41-58.cpe.teksavvy.com)
14:30:00 × ubert quits (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Remote host closed the connection)
14:30:56 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
14:31:33 alp_ joins (~alp@2a01:e0a:58b:4920:f183:394b:8c77:4cf5)
14:33:48 spew joins (uid195861@gateway/web/irccloud.com/x-bxhjiqhornabfyxm)
14:35:13 × alp quits (~alp@2a01:e0a:58b:4920:f183:394b:8c77:4cf5) (Ping timeout: 272 seconds)
14:37:56 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
14:38:41 Tops21 joins (~Tobias@dyndsl-095-033-021-014.ewe-ip-backbone.de)
14:39:14 × jessu quits (~jessu@unaffiliated/jessu) (Quit: Leaving)
14:42:04 × Tops2 quits (~Tobias@dyndsl-095-033-021-014.ewe-ip-backbone.de) (Ping timeout: 256 seconds)
14:42:05 Amras joins (~Amras@unaffiliated/amras0000)
14:43:41 × o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection)
14:45:11 × Lycurgus quits (~niemand@98.4.96.130) (Quit: Exeunt)
14:45:33 × alp_ quits (~alp@2a01:e0a:58b:4920:f183:394b:8c77:4cf5) (Remote host closed the connection)
14:45:58 alp_ joins (~alp@2a01:e0a:58b:4920:f183:394b:8c77:4cf5)
14:46:00 gnar^2 joins (~user@c-73-118-153-248.hsd1.wa.comcast.net)
14:49:45 × taurux quits (~taurux@net-188-152-69-171.cust.dsl.teletu.it) (Ping timeout: 240 seconds)
14:50:16 × gnar^2 quits (~user@c-73-118-153-248.hsd1.wa.comcast.net) (Ping timeout: 246 seconds)
14:50:33 × shatriff quits (~vitaliish@78.111.190.16) (Read error: Connection reset by peer)
14:51:21 shatriff joins (~vitaliish@78.111.190.16)
14:51:50 Pasalmachow joins (~textual@2601:643:8000:a570:9513:b921:a468:618c)
14:52:42 × Franciman quits (~francesco@host-95-247-31-62.retail.telecomitalia.it) (Quit: Leaving)
14:53:00 Franciman joins (~francesco@host-95-247-31-62.retail.telecomitalia.it)
14:53:02 × machinedgod quits (~machinedg@24.105.81.50) (Quit: leaving)
14:53:09 × Franciman quits (~francesco@host-95-247-31-62.retail.telecomitalia.it) (Remote host closed the connection)
14:53:31 × mcmoor quits (727ce828@114.124.232.40) (Remote host closed the connection)
14:53:58 taurux joins (~taurux@net-188-152-69-171.cust.vodafonedsl.it)
14:54:14 machinedgod joins (~machinedg@24.105.81.50)
14:56:48 <maralorn> I‘d like some opinions about hackage. I have written a tool, which might benefit a large number of users and a few have already voiced interest. It is a workaround that should actually be fixed upstream in nix (which is written in C++), which will take years, if it ever happens. But still my tool is kinda temporary. Should I release it to hackage anyways? https://github.com/maralorn/nix-output-monitor/issues/2
14:57:22 vicfred joins (~vicfred@unaffiliated/vicfred)
14:57:48 <geekosaur> you can deprecate it later if it ever does get fixed upstream
14:57:59 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
14:58:44 × justache quits (~justache@unaffiliated/justache) (Remote host closed the connection)
15:00:02 × miconda1 quits (~miconda@s91904426.blix.com) ()
15:00:04 justache joins (~justache@unaffiliated/justache)
15:02:05 mirrorbird joins (~psutcliff@2a00:801:429:5ea0:80af:2bca:f885:1bb9)
15:02:05 × gxt quits (~gxt@gateway/tor-sasl/gxt) (Remote host closed the connection)
15:02:51 gxt joins (~gxt@gateway/tor-sasl/gxt)
15:03:11 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:8027:67:300d:f48) (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:03:36 × quazimodo quits (~quazimodo@45.67.96.217) (Ping timeout: 256 seconds)
15:03:46 × machinedgod quits (~machinedg@24.105.81.50) (Quit: leaving)
15:04:28 × todda7 quits (~torstein@athedsl-4367507.home.otenet.gr) (Ping timeout: 260 seconds)
15:04:59 machinedgod joins (~machinedg@24.105.81.50)
15:05:10 quazimodo joins (~quazimodo@45.67.96.217)
15:05:10 × Pasalmachow quits (~textual@2601:643:8000:a570:9513:b921:a468:618c) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
15:05:14 <maralorn> So that wouldn‘t count as spaming hackage?
15:05:57 <geekosaur> maybe if they were planning to fix it in a week or so, it might count as spamming. but I suspect not even then
15:06:34 <kuribas> it's not like there is a quality garantee on hackage
15:07:13 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
15:07:53 × sword865 quits (uid208942@gateway/web/irccloud.com/x-oofcgutvwgwgnuoj) (Quit: Connection closed for inactivity)
15:09:35 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:8027:67:300d:f48)
15:09:41 jollygood2 joins (~bc8165ab@217.29.117.252)
15:10:02 Pasalmachow joins (~textual@2601:643:8000:a570:9513:b921:a468:618c)
15:10:29 × geekosaur quits (82659a05@host154-005.vpn.uakron.edu) (Ping timeout: 245 seconds)
15:11:25 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
15:11:35 × Pasalmachow quits (~textual@2601:643:8000:a570:9513:b921:a468:618c) (Client Quit)
15:14:13 Pasalmachow joins (~textual@2601:643:8000:a570:9513:b921:a468:618c)
15:15:08 Sgeo joins (~Sgeo@ool-18b982ad.dyn.optonline.net)
15:15:45 xerox_ joins (~xerox@unaffiliated/xerox)
15:17:29 × kuribas quits (~user@ptr-25vy0iaj6vgftnb4emr.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
15:17:57 gnar^2 joins (~user@c-73-118-153-248.hsd1.wa.comcast.net)
15:18:04 × cosimone quits (~cosimone@93-47-228-249.ip115.fastwebnet.it) (Quit: cosimone)
15:19:11 × Pasalmachow quits (~textual@2601:643:8000:a570:9513:b921:a468:618c) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
15:19:39 × raehik quits (~raehik@cpc96984-rdng25-2-0-cust109.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
15:19:52 cosimone joins (~cosimone@93-47-228-249.ip115.fastwebnet.it)
15:20:05 × hyiltiz quits (~quassel@unaffiliated/hyiltiz) (Ping timeout: 240 seconds)
15:20:23 jjhoo joins (~jahakala@dsl-trebng21-58c19c-43.dhcp.inet.fi)
15:20:41 Pasalmachow joins (~textual@2601:643:8000:a570:9513:b921:a468:618c)
15:21:18 raehik joins (~raehik@cpc96984-rdng25-2-0-cust109.15-3.cable.virginm.net)
15:23:47 son0p joins (~son0p@181.136.122.143)
15:29:03 × chaosmasttter quits (~chaosmast@p200300c4a70b4001c004325a2a510724.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
15:29:49 × CitizenSnips quits (~CitizenSn@irc.refl.club) (Quit: ZNC 1.8.1 - https://znc.in)
15:30:27 hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-pqpthentcvdfsjfm)
15:31:10 CitizenSnips joins (~CitizenSn@irc.refl.club)
15:31:26 Ariakenom_ joins (~Ariakenom@h-155-4-221-50.NA.cust.bahnhof.se)
15:31:42 × ryansmccoy quits (~ryansmcco@156.96.151.132) (Ping timeout: 272 seconds)
15:32:26 × Pasalmachow quits (~textual@2601:643:8000:a570:9513:b921:a468:618c) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
15:32:40 ryansmccoy joins (~ryansmcco@156.96.151.132)
15:33:29 × xff0x quits (~fox@2001:1a81:53da:5200:a463:747d:cc85:3e35) (Ping timeout: 272 seconds)
15:33:46 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
15:34:08 John20 joins (~John@82.46.59.122)
15:35:20 × jjhoo quits (~jahakala@dsl-trebng21-58c19c-43.dhcp.inet.fi) (Ping timeout: 246 seconds)
15:35:50 Pasalmachow joins (~textual@2601:643:8000:a570:9513:b921:a468:618c)
15:36:06 xff0x joins (~fox@2001:1a81:53da:5200:a463:747d:cc85:3e35)
15:36:16 sedeki joins (~textual@unaffiliated/sedeki)
15:36:23 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:8027:67:300d:f48) (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:37:05 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
15:38:47 <maerwald> hackage isn't collaboration point, it's a publishing platform
15:40:34 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
15:40:34 <phadej> https://hackage.haskell.org/upload
15:40:36 <phadej> Because each package added to the main package index has a cost of operation and maintenance associated to it, your package should strive to provide value for the community by being intended to be useful to others.
15:40:48 <phadej> is your tool useful to others in current state?
15:40:55 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:ad71:da11:4be:c8fb)
15:41:01 geekosaur joins (82659a05@host154-005.vpn.uakron.edu)
15:41:58 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:ad71:da11:4be:c8fb) (Client Quit)
15:42:03 <phadej> if it is, and you aim to maintain it (which entails giving your package a meaningful synopsis/description as well as ensuring your package is installable by helping with providing accurate meta-data.) then putting it on Hackage is fine
15:42:09 sedeki parts (~textual@unaffiliated/sedeki) ("Textual IRC Client: www.textualapp.com")
15:44:11 <phadej> otoh, if it's usable only to nix people, maybe less binding way is just to make github releases and make people install it from there
15:44:59 <phadej> it's nix tool, and nix makes it easy to install from github, so why to go through Hackage at all
15:45:20 <maerwald> especially when all your deps need to be on hackage too
15:45:50 <maerwald> fork, fire and forget is easier with github release
15:46:28 <phadej> well, https://matrix.hackage.haskell.org/#/package/nix-derivation
15:46:34 <phadej> IMO that is not really maintained
15:46:48 <phadej> and I think this is even more common with nix-oriented libraries than stack ones
15:46:58 <AWizzArd> Is there possibly a `check` function like this in Haskell? check val f err = if f val then Right val else Left err
15:47:08 jjhoo joins (jahakala@dsl-trebng21-b048b5-171.dhcp.inet.fi)
15:47:22 <phadej> their maintainers don't care about non-nix(pkgs) installation methods
15:47:49 × jjhoo quits (jahakala@dsl-trebng21-b048b5-171.dhcp.inet.fi) (Client Quit)
15:47:59 jjhoo joins (jahakala@dsl-trebng21-b048b5-171.dhcp.inet.fi)
15:48:48 <phadej> AWizzArd: you have just written one :)
15:48:49 <ski> @hoogle (a -> Bool) -> e -> a -> Either e a
15:48:51 <lambdabot> No results found
15:48:56 <phadej> but, no, I don't think there is such.
15:49:05 <phadej> better to write your `f` to return Either to begin with
15:49:12 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:4547:b7c6:8761:29ce)
15:49:24 <ski> (also wrong parameter order, most likely)
15:49:47 ahmr88 joins (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net)
15:49:55 <phadej> compare
15:49:57 <phadej> :t Data.List.NonEmpty.nonEmpty
15:49:58 <lambdabot> [a] -> Maybe (GHC.Base.NonEmpty a)
15:49:59 <phadej> and
15:50:04 <phadej> :t null :: [a] -> Bool
15:50:06 <lambdabot> [a] -> Bool
15:50:36 <phadej> https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/
15:51:24 <ski> @where boolean-blindness
15:51:24 <lambdabot> http://existentialtype.wordpress.com/2011/03/15/boolean-blindness/
15:53:55 solonarv joins (~solonarv@adijon-655-1-70-207.w90-13.abo.wanadoo.fr)
15:55:38 kers joins (~kers@178.162.212.214)
15:55:51 <Ariakenom_> slightly reminiscent of
15:55:54 <Ariakenom_> :t guard
15:55:56 <lambdabot> Alternative f => Bool -> f ()
15:56:00 × jonathanx quits (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
15:56:31 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:4547:b7c6:8761:29ce) (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:56:43 × borne quits (~fritjof@200116b864025d00739dc2dd650b1f65.dip.versatel-1u1.de) (Quit: WeeChat 2.9)
15:56:59 <phadej> guard is nice in Maybe
15:57:25 <phadej> but with Either MyError it's too rough :)
15:57:38 <Ariakenom_> ye :(
15:57:42 <ski> @type \p e a -> a <$ unless (p a) (throwError e)
15:57:44 <lambdabot> MonadError e f => (t -> Bool) -> e -> t -> f t
15:57:55 × gnar^2 quits (~user@c-73-118-153-248.hsd1.wa.comcast.net) (Ping timeout: 260 seconds)
16:00:38 × HaskellYogi quits (~vivekrama@49.207.212.129) (Remote host closed the connection)
16:00:56 <phadej> that looks almost like perl (which has postfix conditionals :)
16:01:22 × crossw1nd quits (~crosswind@adsl-174.176.58.193.tellas.gr) (Ping timeout: 260 seconds)
16:01:51 Zetagon joins (~leo@c151-177-52-233.bredband.comhem.se)
16:02:02 × cpressey quits (~cpressey@88.144.68.224) (Quit: WeeChat 1.9.1)
16:02:53 × ahmr88 quits (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection)
16:03:45 verement joins (~anonymous@cpe-76-167-229-223.san.res.rr.com)
16:04:26 × raichoo quits (~raichoo@213.240.178.58) (Quit: Lost terminal)
16:04:55 × raehik quits (~raehik@cpc96984-rdng25-2-0-cust109.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
16:05:20 raehik joins (~raehik@cpc96984-rdng25-2-0-cust109.15-3.cable.virginm.net)
16:06:00 HaskellYogi joins (~vivekrama@49.207.212.129)
16:06:09 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:a50e:6765:3d1c:f1d6)
16:10:25 × HaskellYogi quits (~vivekrama@49.207.212.129) (Ping timeout: 246 seconds)
16:15:09 × jespada quits (~jespada@90.254.245.15) (Quit: Leaving)
16:16:05 × catchme quits (uid355354@gateway/web/irccloud.com/x-lkuruwxjciobmoti) (Quit: Connection closed for inactivity)
16:18:28 × dhouthoo quits (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9)
16:21:05 <maerwald> phadej: everything should be installed through nix anyway :p
16:22:00 × Pasalmachow quits (~textual@2601:643:8000:a570:9513:b921:a468:618c) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
16:26:55 Pasalmachow joins (~textual@2601:643:8000:a570:9513:b921:a468:618c)
16:30:26 gnar^2 joins (~user@c-73-118-153-248.hsd1.wa.comcast.net)
16:31:28 roconnor joins (~roconnor@host-45-78-205-7.dyn.295.ca)
16:31:42 × Pasalmachow quits (~textual@2601:643:8000:a570:9513:b921:a468:618c) (Client Quit)
16:34:17 × oisdk quits (~oisdk@2001:bb6:3329:d100:7807:4c86:5073:949e) (Quit: oisdk)
16:34:45 × gnar^2 quits (~user@c-73-118-153-248.hsd1.wa.comcast.net) (Ping timeout: 240 seconds)
16:34:51 × nados quits (~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer)
16:34:56 avdb joins (~avdb@ip-62-235-188-165.dsl.scarlet.be)
16:35:33 nados joins (~dan@107-190-41-58.cpe.teksavvy.com)
16:36:19 × geekosaur quits (82659a05@host154-005.vpn.uakron.edu) (Ping timeout: 245 seconds)
16:36:47 ebsen joins (~ebsene@64-33-113-59-dynamic.midco.net)
16:37:40 × ebsen quits (~ebsene@64-33-113-59-dynamic.midco.net) (Client Quit)
16:38:43 × mirrorbird quits (~psutcliff@2a00:801:429:5ea0:80af:2bca:f885:1bb9) (Ping timeout: 272 seconds)
16:38:53 DataComputist joins (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
16:44:25 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Remote host closed the connection)
16:44:58 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
16:46:46 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:a50e:6765:3d1c:f1d6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:48:32 LKoen joins (~LKoen@81.255.219.130)
16:50:02 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
16:50:28 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:c588:f17e:f3e:2fb3)
16:52:23 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 260 seconds)
16:53:23 × taurux quits (~taurux@net-188-152-69-171.cust.vodafonedsl.it) (Ping timeout: 240 seconds)
16:53:23 kritzefitz joins (~kritzefit@200116b80fda0d0086f540e7cd0422d3.dip.versatel-1u1.de)
16:53:28 × kritzefitz quits (~kritzefit@200116b80fda0d0086f540e7cd0422d3.dip.versatel-1u1.de) (Client Quit)
16:54:24 taurux joins (~taurux@net-188-152-69-171.cust.dsl.teletu.it)
16:54:53 gnar^2 joins (~user@c-73-118-153-248.hsd1.wa.comcast.net)
16:54:56 × abrar quits (~abrar@static-108-30-103-121.nycmny.fios.verizon.net) (Quit: WeeChat 2.7.1)
16:55:49 × alp_ quits (~alp@2a01:e0a:58b:4920:f183:394b:8c77:4cf5) (Ping timeout: 272 seconds)
16:58:30 GyroW_ joins (~GyroW@d54c03e98.access.telenet.be)
16:58:30 × GyroW_ quits (~GyroW@d54c03e98.access.telenet.be) (Changing host)
16:58:30 GyroW_ joins (~GyroW@unaffiliated/gyrow)
16:59:23 × GyroW quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 260 seconds)
16:59:48 Jeanne-Kamikaze joins (~Jeanne-Ka@68.235.43.142)
17:01:00 × John20 quits (~John@82.46.59.122) (Ping timeout: 272 seconds)
17:02:31 mirrorbird joins (~psutcliff@m83-185-82-223.cust.tele2.se)
17:06:15 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
17:06:24 cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
17:10:27 × murphy_ quits (~murphy_@2604:2000:1281:8a9e:5b6c:ced:3586:ca8c) (Quit: WeeChat 2.9)
17:11:25 fendor_ is now known as fendor
17:12:36 × R8128 quits (~R8128@77-170-72-55.fixed.kpn.net) (Quit: R8128)
17:13:49 alp_ joins (~alp@2a01:e0a:58b:4920:a813:2213:43c8:3e1b)
17:18:03 evade joins (~evade@2001:b07:a15:ec0c:91a9:d55f:dffd:96e)
17:20:00 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
17:22:03 × ChaiTRex quits (~ChaiTRex@gateway/tor-sasl/chaitrex) (Ping timeout: 240 seconds)
17:22:53 × evade quits (~evade@2001:b07:a15:ec0c:91a9:d55f:dffd:96e) (Client Quit)
17:23:48 mdunnio joins (~mdunnio@208.59.170.5)
17:24:29 ChaiTRex joins (~ChaiTRex@gateway/tor-sasl/chaitrex)
17:24:38 × mirrorbird quits (~psutcliff@m83-185-82-223.cust.tele2.se) (Ping timeout: 256 seconds)
17:25:51 snakemas1 joins (~snakemast@213.100.206.23)
17:25:56 geekosaur joins (82659a05@host154-005.vpn.uakron.edu)
17:26:15 oisdk joins (~oisdk@2001:bb6:3329:d100:d4b4:3667:7218:633)
17:28:51 × mdunnio quits (~mdunnio@208.59.170.5) (Read error: Connection reset by peer)
17:28:52 × avdb quits (~avdb@ip-62-235-188-165.dsl.scarlet.be) (Quit: WeeChat 2.9)
17:29:26 mdunnio joins (~mdunnio@208.59.170.5)
17:33:27 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
17:34:08 galagora- joins (~ao@197.237.20.60)
17:41:03 × LKoen quits (~LKoen@81.255.219.130) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
17:43:18 <dwts> hi all, when a comparison returns GT, LT, or EQ, is it safe to assume that in reality the "real" values of them are numbers?
17:43:33 <tomsmeding> dwts: the real values of what exactly
17:43:37 <tomsmeding> GT/LT/EQ ?
17:43:39 <dwts> yes
17:44:01 <dwts> I have trouble understanding what is the benefit of returning these instead of numbers
17:44:16 <tomsmeding> https://hackage.haskell.org/package/base-4.14.0.0/docs/Data-Ord.html#t:Ordering
17:44:25 <tomsmeding> it's just 'data Ordering = LT | EQ | GT'
17:44:48 <dsal> dwts: Why would you want a number there?
17:44:49 <tomsmeding> though you can use fromEnum on them to get 0,1,2 if you should wish :p
17:45:53 <tomsmeding> re:benefit: more type safety
17:46:33 <tomsmeding> a number you can potentially confuse with something else that produces a number
17:46:34 todda7 joins (~torstein@athedsl-4367507.home.otenet.gr)
17:46:34 <dwts> dsal: I don't *want* a number, I'm trying to visualize in my mind what haskell is doing underneath and why the ordering is implemented that way
17:46:39 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
17:46:51 <dwts> ah, I see
17:46:57 <tomsmeding> well deep down in the implementation details, Ordering really boils down to just a byte
17:47:00 <tomsmeding> that's 0, 1 or 2
17:47:10 <tomsmeding> because that's how haskell compiles down sum types like these
17:47:20 <tomsmeding> but the programmer need not think about that :)
17:47:46 <dsal> Similar to how Bool is False and True. You *can* convert those to numbers and some languages do that and it's massively error prone.
17:48:22 × st8less quits (~st8less@2603:a060:11fd:0:9c66:9b18:c21:60c) (Ping timeout: 260 seconds)
17:48:27 <dwts> do these LT/EQ/GT have a special name like True/False have Boolean?
17:48:40 <Uniaika> hmm, not that I know of
17:48:43 <tomsmeding> data Bool = False | True
17:48:46 <Uniaika> they're just values of an ADT
17:48:49 <tomsmeding> data Ordering = LT | EQ | GT
17:48:51 <dsal> Ordering?
17:48:56 <dwts> ok
17:49:33 <dwts> I think I'm good for now, thank you all
17:49:37 <dsal> Similarly, Boolean is often a really bad abstraction.
17:50:05 <dwts> dsal: not sure why, but I have no reason not to believe you :)
17:50:07 <dsal> I had an awful time understanding some of my own code that I modeled a bit from a protocol specification as a Boolean before I changed it to my own sum type and suddenly could read my own code.
17:50:14 <dsal> boolean blindness is a terrible thing
17:50:20 <tomsmeding> now we're (indirectly) talking about performance anyway: is there a faster way to read lots of Double's from a file than the following: sum . map (read @Double) . words <$> readFile "doubles.txt"
17:50:30 <tomsmeding> because that's horribly slow
17:50:59 <ski> @where boolean-blindness
17:51:00 <lambdabot> http://existentialtype.wordpress.com/2011/03/15/boolean-blindness/
17:51:02 avdb joins (~avdb@ip-62-235-188-165.dsl.scarlet.be)
17:51:03 <dsal> Is read that slow?
17:51:08 <tomsmeding> apparently?
17:51:45 <dsal> You could probably make a faster parser if you don't need all of the things that a Double parser could parse.
17:52:36 <ski> > sortBy (comparing length <> compare) (words "The quick brown fox jumps over the lazy dog") -- dwts, with a separate `Ordering' data type, we can do this "primarily sort by length, secondarily by ordinary lexicographic word ordering")
17:52:39 <lambdabot> ["The","dog","fox","the","lazy","over","brown","jumps","quick"]
17:52:43 <tomsmeding> from some rudimentary timing the 'read' part indeed takes the longest time
17:53:28 hackage rebase 1.10.0.1 - A more progressive alternative to the "base" package https://hackage.haskell.org/package/rebase-1.10.0.1 (NikitaVolkov)
17:53:29 <tomsmeding> dwts: ski's example is a thing because we can define <> to do something special on Ordering that it does not do on plain numbers
17:53:38 <dwts> ski: I was actually reading a book with a sortBy example and came to the definition of LT/EQ/GT
17:54:03 <dwts> this looks really powerful and confusing at the same time
17:54:14 × shafox quits (~shafox@106.51.234.111) (Remote host closed the connection)
17:54:20 <tomsmeding> dsal: I could try that, but 'length . words' already takes longer than C++ takes to parse the entire thing into an std::vector<double>
17:54:28 hackage rerebase 1.10.0.1 - Reexports from "base" with a bunch of other standard libraries https://hackage.haskell.org/package/rerebase-1.10.0.1 (NikitaVolkov)
17:54:34 <tomsmeding> dwts: welcome to haskell :p
17:54:42 <ski> @where monoids
17:54:43 <lambdabot> comment on "Monoids? In my programming language?" by Cale in 2008 (or 2009 ?) at <http://www.reddit.com/r/programming/comments/7cf4r/monoids_in_my_programming_language/c06adnx> about a use of `
17:54:43 <lambdabot> instance Monoid a => Monoid (rho -> a)'
17:54:46 <ski> dwts ^
17:55:24 <dsal> dwts: At a higher level, discussing meaning makes it a lot easier to reason about things than discussing implementation.
17:55:59 <dwts> tomsmeding: thanks :P Coming from a scheme background some things are similar but others seem so different
17:56:19 <dwts> dsal: I see your point
17:56:20 <dsal> You never have to read the manual to remember what a compare function returns and how the integer value maps to maybe -1, 0, 1, or maybe just some negative or positive value, or 0, 1, 2, or how you might be able to combine comparisons by renormalizing them, etc...
17:56:54 <dsal> The Ordering semigroup is really a secondary benefit. Primarily, you get to talk about what you mean instead of going back and forth to machine speak constantly.
17:58:10 <dwts> hmmm
17:58:15 <dwts> there's a lot to digest here
17:58:16 <dwts> lol
17:58:39 <tomsmeding> dwts: sidenote: "semigroup" means that definition of <>
17:58:49 <tomsmeding> nothing more :p
17:58:50 <dwts> ah
17:59:51 <dsal> Well, what happens is when you start talking about what you mean, you get to make a lot of things common that you wouldn't have been able to see the commonality in before.
18:00:01 × kers quits (~kers@178.162.212.214) ()
18:00:08 emmanuel` joins (~user@2604:2000:1382:ce03:4ce1:f2da:89aa:1919)
18:01:47 × darjeeling_ quits (~darjeelin@122.245.210.138) (Ping timeout: 240 seconds)
18:02:12 <galagora-> Has anyone ever used Silica, the lens library?
18:02:36 × dyeplexer quits (~lol@unaffiliated/terpin) (Remote host closed the connection)
18:03:32 × emmanuel_erc quits (~user@2604:2000:1382:ce03:ddc4:166d:60ea:ae29) (Ping timeout: 260 seconds)
18:04:37 × AlterEgo- quits (~ladew@124-198-158-163.dynamic.caiway.nl) (Read error: Connection reset by peer)
18:05:30 darjeeling_ joins (~darjeelin@122.245.210.138)
18:06:42 × gnar^2 quits (~user@c-73-118-153-248.hsd1.wa.comcast.net) (Remote host closed the connection)
18:06:43 × jrqc quits (~rofl@96.78.87.197) (Ping timeout: 260 seconds)
18:07:20 AlterEgo- joins (~ladew@124-198-158-163.dynamic.caiway.nl)
18:07:35 jrqc joins (~rofl@96.78.87.197)
18:07:49 <dsal> galagora-: I just heard about it a around 5 minutes ago. Is it working out for you?
18:08:05 × todda7 quits (~torstein@athedsl-4367507.home.otenet.gr) (Ping timeout: 240 seconds)
18:08:16 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
18:08:17 × DataComputist quits (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...)
18:08:46 wroathe joins (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
18:09:47 <tomsmeding> dsal: the same pipeline but then with Int instead of Double is only slightly faster (on a file that only contains integers, of course)
18:09:56 <tomsmeding> so a custom Double parser is unlikely to make things better
18:10:34 howdoi joins (uid224@gateway/web/irccloud.com/x-nyfmrtbjovrebhnn)
18:10:45 GyroW joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
18:10:45 × GyroW quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
18:10:45 GyroW joins (~GyroW@unaffiliated/gyrow)
18:10:49 <dsal> I tend to reach for megaparsec early, but I also don't parse for performance much.
18:11:00 <geekosaur> depends. Read itself has a decent amount of overhead
18:11:21 <tomsmeding> @hoogle ByteString -> (Double, ByteString)
18:11:22 <lambdabot> Algebra.RealRing splitFraction :: (C a, C b) => a -> (b, a)
18:11:22 <lambdabot> NumericPrelude splitFraction :: (C a, C b) => a -> (b, a)
18:11:22 <lambdabot> NumericPrelude.Numeric splitFraction :: (C a, C b) => a -> (b, a)
18:11:25 × GyroW_ quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 240 seconds)
18:11:29 <tomsmeding> now if that would've existed :p
18:11:56 <tomsmeding> @hoogle ByteString -> Maybe (Double, ByteString)
18:11:57 <lambdabot> Data.ByteString.Lex.Integral readDecimal :: Integral a => ByteString -> Maybe (a, ByteString)
18:11:57 <lambdabot> Data.ByteString.Lex.Integral readHexadecimal :: Integral a => ByteString -> Maybe (a, ByteString)
18:11:57 <lambdabot> Data.ByteString.Lex.Integral readOctal :: Integral a => ByteString -> Maybe (a, ByteString)
18:12:05 <tomsmeding> there we go, let's try that
18:14:30 × ClaudiusMaximus quits (~claude@unaffiliated/claudiusmaximus) (Quit: ->)
18:14:58 <ski> @type ((listToMaybe .) . evalStateT . (>>= \ns -> do "" <- StateT lex; return ns) . many . StateT) (reads :: ReadS Double)
18:15:00 <lambdabot> String -> Maybe [Double]
18:17:58 × Ariakenom quits (~Ariakenom@193.254.193.1) (Ping timeout: 258 seconds)
18:19:12 <tomsmeding> ski: that's ~60% slower than my simple read pipeline
18:19:37 <tomsmeding> and my read pipeline additionally has the advantage of not using the list monad in an obscure manner :p
18:20:11 <tomsmeding> (on my machine)
18:21:16 × cosimone quits (~cosimone@93-47-228-249.ip115.fastwebnet.it) (Quit: cosimone)
18:21:51 cosimone joins (~cosimone@2001:b07:ae5:db26:fe52:4567:a4e4:fc3a)
18:21:56 ButterflyOfFire joins (~Butterfly@185.163.110.116)
18:22:13 × nyd quits (~lpy@unaffiliated/elysian) (Ping timeout: 260 seconds)
18:22:37 × GyroW quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
18:22:47 GyroW joins (~GyroW@d54c03e98.access.telenet.be)
18:22:48 × GyroW quits (~GyroW@d54c03e98.access.telenet.be) (Changing host)
18:22:48 GyroW joins (~GyroW@unaffiliated/gyrow)
18:23:53 <tomsmeding> ski: though I'm curious how you came up with that monstrosity :p
18:24:44 Guest18 joins (4f7755cb@gateway/web/cgi-irc/kiwiirc.com/ip.79.119.85.203)
18:24:54 <tomsmeding> ah the bytestring way seems _significantly_ faster
18:25:09 <tomsmeding> (as expected, in hindsight)
18:25:23 <Guest18> Hello, I have a question regarding unbalanced binary search trees in haskell
18:25:31 ashbreeze joins (~mark@72-161-255-112.dyn.centurytel.net)
18:25:42 <ski> dwts : you could compare with <https://srfi.schemers.org/srfi-67/srfi-67.html#node_sec_4.5>
18:25:48 <Athas> Roughly, when you have a monad transformer stack, is it more efficient to have an Error/Except monad innermost, or an error monad transformer outermost?
18:25:54 <Athas> Or does it depend on the specifics?
18:26:08 <ski> tomsmeding : hm, i thought it was fairly straightforward
18:27:00 bifunc2 joins (bifunc2@gateway/vpn/protonvpn/bifunc2)
18:27:01 <ski> "my read pipeline additionally has the advantage of not using the list monad in an obscure manner" -- is that an advantage ? ;p
18:27:20 <tomsmeding> questionably :
18:27:20 <ski> (but i don't really think it's that obscure ..)
18:27:21 <tomsmeding> * :p
18:27:31 <tomsmeding> but apart from how obscure your pipeline is or not
18:27:37 × _ashbreeze_ quits (~mark@184-157-33-36.dyn.centurytel.net) (Ping timeout: 246 seconds)
18:27:39 <tomsmeding> why did you think it would be faster than my simple read pipeline?
18:28:09 <bifunc2> If unsigned integers are serialized in big endian, order is preserved. (smaller number gets a smaller bytestring)
18:28:09 <bifunc2> Is there any such way to serialize signed integers, Doubles, and Floats?
18:28:30 raym joins (~ray@115.187.50.175)
18:29:05 tomsmeding has no idea regarding Athas' question, pass to another willing answerer
18:29:40 <Guest18> I made a small type that is a binary search tree and some functions for it, like insert, delete, etc. All is well so far, except for the function that returns the node depth for a given value. for example, if a node has a value of '3' and is 2 levels down from the root, it should return 'Just 2'. If the value searched for isn't in the tree, it
18:29:40 <Guest18> returns nothing. I have a working example, but it isn't that good. Can anybody provide me with a better implementation or at least some advice?
18:29:47 <dolio> Innermost vs. outermost might not have the same semantics.
18:30:25 mirrorbird joins (~psutcliff@m83-185-82-223.cust.tele2.se)
18:30:54 × geekosaur quits (82659a05@host154-005.vpn.uakron.edu) (Ping timeout: 245 seconds)
18:31:16 <tomsmeding> bifunc2: in the standard IEEE floating point format, positive doubles and floats already sort correctly
18:31:27 <tomsmeding> negative ones sort above positive ones
18:31:30 <ski> @quote Dr._Seuss
18:31:30 <lambdabot> Dr._Seuss says: `type Parser a = String -> [(a,String)]' -- "A Parser for Things / is a function from Strings / to Lists of Pairs / of Things and Strings!" -- <https://willamette.edu/~fruehr/haskell/
18:31:30 <lambdabot> seuss.html>
18:31:43 <tomsmeding> the same holds for signed integers in 2's complement, when you write them in big endian order
18:31:54 <bifunc2> tomsmeding, wow, that's mind-blowing, thanks!
18:32:01 <Guest18> The code here: https://pastebin.pl/view/9ea923e2
18:32:04 <Cale> Guest18: Seems like something that perhaps the Monad instance for Maybe could help to make clean
18:32:05 × Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Ping timeout: 246 seconds)
18:32:07 <tomsmeding> bifunc2: about the signed integers, or about the floats?
18:32:36 <Guest18> Cale: I don't know how to use monads yet
18:32:38 <Cale> Guest18: one sec... that's just taking a moment to load here
18:32:54 <bifunc2> tomsmeding, I'm more interested in the floats. For positive Doubles and Floats, will the "store" package preserve the order on a little endian machine?
18:32:57 <tomsmeding> for the floats, you can see that by noting that if 0 < A < B, then either A has a smaller exponent than B, or it has the same exponent and a smaller mantissa
18:33:11 <tomsmeding> ignoring the sign bit of course
18:33:13 <Cale> Guest18: does it load for you?
18:33:24 <Cale> Not sure if I'm just having an issue locally...
18:33:26 <Guest18> Cale: Slowly, but yeah
18:33:31 <Guest18> It took a while
18:33:53 <tomsmeding> bifunc2: I have no idea what the 'store' package does, but that claim about the IEEE format only holds for big-endian order
18:34:02 <Cale> Maybe try dpaste.com?
18:34:31 <tomsmeding> ski: it's unfortunate that that quote splits over lines halfway through a URL
18:34:46 <Guest18> Cale: https://dpaste.com/GX8QSKDLD
18:34:52 <Cale> thanks
18:35:56 chaosmasttter joins (~chaosmast@p200300c4a70b4001c004325a2a510724.dip0.t-ipconnect.de)
18:36:00 <bifunc2> tomsmeding okay. https://hackage.haskell.org/package/store always uses machine endianness. so i'm out of luck there with the order on most machines nowadays.
18:36:01 <bifunc2> However I can use cereal https://hackage.haskell.org/package/cereal-0.5.8.1/docs/Data-Serialize-IEEE754.html which can encode floats in big-endian
18:36:03 <Cale> That code looks fairly reasonable to me actually
18:36:11 <bifunc2> are there any alternatives to cereal that are faster nowadays?
18:36:12 <Cale> You might want to use compare x root
18:36:13 <Guest18> Oh, yeah, I should mention that i used to do a lookup first, to ensure that if the element isn't there, i return nothign
18:36:46 <Cale> Oh, right, depthGo isn't returning Nothing, somehow
18:36:57 <Guest18> but it seemed to me that it would be too slow and maybe there is a better way, but i couldn't find it
18:37:02 <Guest18> that's why i came here
18:37:13 <tomsmeding> bifunc2: not well-versed enough in the library ecosystem to answer that question, unfortunately
18:37:39 <Guest18> for small trees, it's fine, but doing a lookup on big trees before searching for the depth once again, does add unnecesarry computation
18:37:39 <Cale> Guest18: I would guess that you want depthGo _ EmptyTree acc = Nothing
18:38:15 <monochrom> and the x==root case, = Just acc
18:38:19 <Cale> yeah
18:38:20 <bifunc2> tomsmeding, np, thanks for the other info!
18:38:32 <monochrom> So generally the whole depthGo does Maybe, too.
18:38:37 <Cale> and then take the Maybe stuff out of depth
18:38:39 <Guest18> so modify the depthGo to return Maybe b as well
18:38:49 <Cale> (it'll produce Maybe only because depthGo does)
18:38:50 <Cale> yeah
18:38:52 <Guest18> Yeah, actually that makes sense
18:38:57 <ski> tomsmeding : hm, i didn't really had in mind that it would be. i just wondered how to express it, with `reads'
18:39:04 <Guest18> i don't know why i didnt see that
18:39:14 <ski> tomsmeding : hm, i don't recall it used to break line, quite that early
18:39:25 <monochrom> depth should be "depth x tree = depthGo x tree 0" very simply, no more no less.
18:39:33 <tomsmeding> ski: ah I see
18:39:43 <Guest18> I am programming in haskell for one week so my code can be sketchy sometimes
18:39:44 <monochrom> For example there is no point "depth" cares about empty trees.
18:40:02 <Cale> also, you can do: depthGo x (Node root left right) acc = case compare x root of EQ -> ...; LT -> ...; GT -> ...
18:40:05 <Guest18> i see, yeah
18:40:15 <monochrom> Well in this case I'm just using the DRY principle.
18:40:18 <Cale> Which will only compute the comparison once, and match on the result
18:40:30 × _deepfire quits (~user@80.92.100.69) (Remote host closed the connection)
18:40:53 × alp_ quits (~alp@2a01:e0a:58b:4920:a813:2213:43c8:3e1b) (Remote host closed the connection)
18:41:18 alp_ joins (~alp@2a01:e0a:58b:4920:b989:9831:f361:9cf)
18:41:25 × ryansmccoy quits (~ryansmcco@156.96.151.132) (Ping timeout: 240 seconds)
18:42:09 ryansmccoy joins (~ryansmcco@193.37.254.27)
18:42:43 <ski> Guest18 : instead of using an accumulator, it would be possible to do the addition "after the recursive call"
18:43:12 × thc202 quits (~thc202@unaffiliated/thc202) (Ping timeout: 260 seconds)
18:43:14 <Guest18> ski: isn't the accumulator letting the compiler use tail call optimization?
18:43:25 <monochrom> That turns out to be much uglier in this case. And don't even get me started on efficiency.
18:43:53 <ski> Guest18 : yes, that might be preferrable (at least if you'd be using say `Int' or `Integer' ..) .. but then you should make sure to force the accumulator, as you go
18:44:13 <monochrom> Because you then have to say "if the recursion gives you Nothing, nothing to add" and "if the recursion gives you Just n, now it's Just (n+1)"
18:44:23 <ski> Guest18 : but ignoring such performance considerations, a non-accumulating version can often be more readable
18:44:31 <ski> yea, there's that
18:45:17 <ski> Guest18 : depending, it's commonly preferable to not be tail-recursive
18:45:23 <monochrom> For computing tree height or tree size, yes I would do "1 + height left + height right".
18:45:52 <monochrom> In fact for height and size, tail recursion is the much uglier one.
18:45:58 <ski> (but in this case, you're just computing a single number, so there's not much point to that, here)
18:46:05 <monochrom> Also throughout, my "ugly" includes both ugly and hard to follow.
18:46:10 <dolio> monochrom: Not only that, it's easier to not be better than an accumulator with that. :)
18:46:18 <monochrom> because they are caused by complications
18:46:18 <dolio> An unforced accumulator, that is.
18:47:00 <ski> (i suppose an alternative here would be CPS ..)
18:47:23 <monochrom> Oh CPS is the most unreadable of them all haha
18:47:52 <ski> hm, i think it could be more readable than doing `case's
18:48:14 <Guest18> https://dpaste.com/DRF3G9AA6 -- any other suggestions?
18:48:17 <ski> (as long as one's familiar with CPS, of course)
18:48:46 <ski> Guest18 : your `Show' instance is incorrect
18:49:22 <monochrom> <CPS> Mirror mirror, who's the most unreadable of them all? <Mirror> You, in all Haskell Land. <CPS> But I mean universally, not just Haskell Land. <Mirror> Then it's your step daughter, CPS+trampolining, she's is Javascript Forest now.
18:49:23 geekosaur joins (82659a05@host154-005.vpn.uakron.edu)
18:49:44 <Guest18> ski: how so? it works fine for me
18:50:02 <ski> Guest18 : it doesn't output valid Haskell source
18:50:17 <dolio> monochrom: That's why you need delimited continuations, to make it perfectly clear.
18:50:47 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
18:50:59 <monochrom> <CPS> I'm going to give reactive node.js thingy to Javascript Forest to poison them all!
18:51:06 Ariakenom__ joins (~Ariakenom@h-155-4-221-50.NA.cust.bahnhof.se)
18:51:11 nyd joins (~lpy@unaffiliated/elysian)
18:51:21 <Guest18> ski: why should it? I just wanted a more readable version, so i can debug easily
18:51:23 <ski> Guest18 : if you want to do custom pretty-printing, then please don't use `Show' for that. (`Show' instances are meant to work together. your instance, when combined with other `Show' instances, will produce a mixture of Haskell and non-Haskell code). please define a separate function, say `displayTree'
18:51:39 <Guest18> ski: oh, okay
18:51:52 <Guest18> That actually makes sense
18:52:19 <geekosaur> also Show and Read are designed to work together such that the output of a valid Show instance can be passed to `read'
18:52:51 <ski> Haskell will automatically combine instances like this, e.g. if you were to display a list of type `[BST (BST a)]'
18:52:58 <ski> yes, that too
18:53:00 <tomsmeding> monochrom: :D
18:53:08 <Guest18> I also have a flatten, insert, search and fromList functions and want to add some more. I'm really digging how easy it is to make these kind of stuff in Haskell
18:54:25 × Ariakenom_ quits (~Ariakenom@h-155-4-221-50.NA.cust.bahnhof.se) (Ping timeout: 240 seconds)
18:55:20 Pasalmachow joins (~textual@2601:643:8000:a570:9513:b921:a468:618c)
18:55:23 × vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
18:56:03 × Pasalmachow quits (~textual@2601:643:8000:a570:9513:b921:a468:618c) (Client Quit)
18:56:18 <ski> Guest18 : there are cases when one may want to make a hand-written `Show' (and `Read') instance. e.g. when the implementation can't manage to derive one for you. or when you're making an abstract data type, and don't want to expose your implementation, but rather display a value in terms of the exported operations
18:57:24 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
18:59:43 <Guest18> yeah, this was more for the educational value than naything else
19:00:06 Sososasa joins (~textual@2601:643:8000:a570:9513:b921:a468:618c)
19:00:35 <Guest18> follow up question
19:01:21 <dwts> Which haskell book would you guys suggest for someone new to haskell but not new to programming? I've started "Get programming with Haskell" but I'm not very happy with it
19:02:17 <Guest18> say i have the following line of code: `[depth x tree | x <- flatten tree]`. How do i sum up these depths? Since they are wrapped in a Just, I can't just use `sum` on the list
19:02:20 × gxt quits (~gxt@gateway/tor-sasl/gxt) (Remote host closed the connection)
19:02:51 <Cale> dwts: Graham Hutton's Programming in Haskell seems pretty good
19:03:01 <dwts> To help you understand what I don't like: 1) it doesn't explain how to indent code 2) it doesn't explain how to read function definitions
19:03:09 <dwts> Cale: thank you sir
19:03:12 GyroW_ joins (~GyroW@d54c03e98.access.telenet.be)
19:03:12 × GyroW_ quits (~GyroW@d54c03e98.access.telenet.be) (Changing host)
19:03:12 GyroW_ joins (~GyroW@unaffiliated/gyrow)
19:03:15 gxt joins (~gxt@gateway/tor-sasl/gxt)
19:03:17 <Cale> Guest18: What do you want to do if there's a Nothing?
19:03:36 berberman_ joins (~berberman@unaffiliated/berberman)
19:03:40 <Cale> Guest18: Oh, of course there won't be
19:03:47 × berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 240 seconds)
19:04:26 × GyroW quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 256 seconds)
19:04:55 <Cale> Guest18: One cute way is to write [d | x <- flatten tree, Just d <- [depth x tree]]
19:05:30 <Cale> But it seems a bit expensive to be doing it like this
19:05:35 <Guest18> Cale: yeah, there will never be nothing
19:06:17 vicfred joins (~vicfred@unaffiliated/vicfred)
19:06:29 <monochrom> <pun>Just cause to use fromJust? >:) </pun>
19:06:34 <Cale> You're going to end up paying the price to look up every element of the tree, when ideally you'd do none of that work
19:07:47 <monochrom> More realistically, how about directly write a function that computes the list of all depths of all internal nodes?
19:08:13 <monochrom> Or even, a tree of the same shape but keys are replaced by depths; then use flatten.
19:08:22 <Cale> yeah
19:08:24 cr0ssw1nd joins (~crosswind@adsl-174.176.58.193.tellas.gr)
19:08:51 <Cale> avoid all the order comparisons
19:08:58 <Guest18> monochrom: i like the first idea, seems pretty efficient
19:08:58 <ski> monochrom : Just because
19:09:54 <Guest18> so using fromJust is expensive?
19:10:18 <koz_> Guest18: It's not expensive, it's just error-prone, and you wanna avoid it if possible.
19:10:19 <ski> no, repeatedly traverersing down the tree, for every element in it, is
19:10:20 <geekosaur> no, Just a bad idea
19:10:22 <monochrom> No. It's just unsatisfactory.
19:10:23 <koz_> And in this case, it's 100% possible.
19:10:41 crossw1nd joins (~crosswind@188.73.195.239)
19:11:30 × whiteline quits (~whiteline@unaffiliated/whiteline) (Remote host closed the connection)
19:11:47 whiteline joins (~whiteline@unaffiliated/whiteline)
19:11:55 <Guest18> Well, it's not error prone, because i am guaranteed that depth will never return Nothing in my list comprehension
19:12:07 <Guest18> but i see why it isn't efficient
19:12:20 <dsal> dwts: I really like haskellbook.com -- it's easier if you pretend that you're new to programming
19:12:59 <Guest18> I am going to get back to you with a better solution
19:13:19 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:c588:f17e:f3e:2fb3) (Quit: My MacBook has gone to sleep. ZZZzzz…)
19:13:26 <Cale> Guest18: It's often error prone in that while your code might satisfy the precondition to not have fromJust crash when you write the fromJust, future changes to the code often result in fromJust being applied to Nothing, and they're a total pain to deal with
19:13:26 × cr0ssw1nd quits (~crosswind@adsl-174.176.58.193.tellas.gr) (Ping timeout: 256 seconds)
19:13:38 <Cale> > fromJust Nothing
19:13:41 <lambdabot> *Exception: Maybe.fromJust: Nothing
19:13:44 <Cale> ^^ this is all you get at runtime
19:13:54 <Cale> Note the lack of a source location to help you
19:14:06 <Cale> I would actually usually prefer to write (\(Just x) -> x)
19:14:10 <Cale> just because...
19:14:18 <Cale> > (\(Just x) -> x) Nothing
19:14:20 <lambdabot> *Exception: <interactive>:3:2-15: Non-exhaustive patterns in lambda
19:14:37 <Cale> ^^ that will include the file and line number of the lambda which failed to match
19:14:50 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:744e:3fd6:7740:f62b)
19:14:56 <Guest18> Although, I must say, I was getting errors non-stop when i started with haskell, but now, i kinda get some things and i start to understand where the ghc has a problem and know how to fix it. It is really satisfying to write haskell :))
19:15:23 <Guest18> Cale: I see, good to know! Thanks!
19:15:32 <Cale> Yeah, generally the type system makes refactors a lot more manageable -- you learn to rely on the errors that the compiler is going to give you
19:15:52 <Cale> You can just change something and let the compiler figure out most of the consequences
19:15:58 <ski> dsal : i suspect they didn't want to pretend that. (especially since they come from Scheme)
19:16:42 <dsal> Yeah, scheme might be a more gentle approach vector.
19:16:58 <Guest18> Cale: yees, i so love it. I dread working with normal, idiomatic C# now, I much favor using functional constructs in it now
19:17:40 <Guest18> One of these days, I am gonna suggest to my boss to maybe let me work in F#
19:18:15 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
19:19:04 × ashbreeze quits (~mark@72-161-255-112.dyn.centurytel.net) (Ping timeout: 272 seconds)
19:19:05 <Guest18> I heard F# is pretty good actually, what do you think?
19:19:43 _ashbreeze_ joins (~mark@72-161-255-112.dyn.centurytel.net)
19:20:41 <koz_> As far as I am aware, F# is basically .NET's Scala.
19:20:59 <dsal> Isn't F# ocaml?
19:21:20 <dsal> I don't know much about microsoft.
19:21:25 <dolio> It's more like ocaml than scala, I think.
19:21:26 <Guest18> dsal: that's what i heard, and seeing it, yeah, it is very similar to ocaml
19:21:39 <koz_> dolio: Yeah, that's a fair call.
19:22:27 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
19:22:36 <dolio> It's missing a lot of ML stuff, though.
19:22:58 <dolio> Or maybe not a lot, but what it's missing is significant.
19:23:04 <Guest18> like what?
19:23:11 <dolio> The module system.
19:23:49 <Guest18> it does have modules though
19:24:32 <dolio> It doesn't have ML style modules.
19:25:26 <aldum> anyone know about F*?
19:26:01 <aldum> allegedly it's an even more advanced functional lang from MS, but there's not much out there about it
19:26:14 <Guest18> never heard of it
19:26:17 <monochrom> Oh, if you already have a Scheme background, then "a gentle introduction to haskell" ought to do.
19:26:22 GyroW joins (~GyroW@d54C03E98.access.telenet.be)
19:26:22 × GyroW quits (~GyroW@d54C03E98.access.telenet.be) (Changing host)
19:26:22 GyroW joins (~GyroW@unaffiliated/gyrow)
19:27:49 × GyroW_ quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 264 seconds)
19:29:27 <dminuoso> It's very gentle.
19:29:31 <dminuoso> The name isn't totally misleading.
19:29:39 <monochrom> \∩/ "In the rest of the paper we will often say “more polymorphic than” instead of the more precise but clumsier “at least as polymorphic as”." I have always wanted to do that.
19:29:42 dminuoso stops with the tongue-in-cheek
19:30:05 ashbreeze joins (~mark@72-161-253-2.dyn.centurytel.net)
19:30:18 <monochrom> It is gentle if you're OK with Scheme or ML or ...
19:30:21 wroathe_ joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
19:30:30 <dminuoso> It's still not, really.
19:31:27 <dminuoso> I'd say the type system, lack-of-IO-purity and lazyness make for a pretty wild experience, even from Scheme.
19:31:27 × chenshen quits (~chenshen@2620:10d:c090:400::5:7709) (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
19:32:01 × wroathe quits (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
19:32:07 × bifunc2 quits (bifunc2@gateway/vpn/protonvpn/bifunc2) (Quit: -)
19:32:35 <dminuoso> The gentle introduction is just a very brief rush over Haskell that works well enough for someone who comes from say Idris.
19:32:52 <dminuoso> It doesn't teach the language at all
19:32:56 <dolio> I read it after learning Scheme.
19:33:03 × _ashbreeze_ quits (~mark@72-161-255-112.dyn.centurytel.net) (Ping timeout: 260 seconds)
19:33:06 <monochrom> It worked very well for me, and Idris didn't exist when it worked for me.
19:33:42 <dsal> I played with haskell for years and even had some useful not-completely-trivial programs, but it wasn't until I suspended prior knowledge that understanding got a lot easier.
19:34:49 <dminuoso> monochrom: Says the professor in comp sci.
19:34:51 <dminuoso> ;)
19:34:54 <monochrom> nor Agda. Coq existed but I wasn't patient with it, I gave up after a few simple propositions.
19:35:10 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye)
19:35:36 <monochrom> For the type system you could point towards me having done ML before I ran into Haskell.
19:36:01 <monochrom> But how the hell did I grok ML's type system in the first place, after only Scheme and Pascal?
19:36:14 <monochrom> Well I guess I also met Ada.
19:36:32 <dolio> I didn't do ML first.
19:36:35 <monochrom> and C++ templates
19:37:48 <ski> monochrom : with Ada generics ?
19:38:02 <monochrom> My feeling is that, eg, Hutton's and Bird's are only more wordy, and more examples, than the gentle introduction. But not gentler.
19:38:06 <monochrom> Yeah
19:38:25 × darjeeling_ quits (~darjeelin@122.245.210.138) (Ping timeout: 240 seconds)
19:39:15 <monochrom> Those books feel gentler because the wordy fillers forces you to spend 500 pages of time over what could be said in 10 pages such is in the gentle introduction.
19:39:45 × jollygood2 quits (~bc8165ab@217.29.117.252) (Ping timeout: 240 seconds)
19:40:02 <monochrom> This means if you consume the gentle introduction at the slow rate of, like, one afternoon per paragraph, then it's gentle.
19:40:09 <monochrom> And I think I did exactly that.
19:40:41 darjeeling_ joins (~darjeelin@122.245.210.138)
19:40:47 <dminuoso> I think its highly situational
19:40:54 <dwts> dsal: let me check that - thanks
19:41:33 <dolio> If you already know how to write scheme programs, it seems like enough to start messing around.
19:41:44 <dolio> It won't teach you everthing about every situation, obviously.
19:41:47 × geekosaur quits (82659a05@host154-005.vpn.uakron.edu) (Remote host closed the connection)
19:43:19 <dsal> dwts: When I started learning Haskell for real, I had production code in c, c++, objective c, ocaml, java, scheme, perl, tcl, erlang, ruby, r, and probably something else I forgot. Tossing another language on seemed like no big deal.
19:43:49 <dsal> Haskell isn't hard fundamentally. People build a lot of seemingly complex things in Haskell, but that's because it's easy. :)
19:44:48 leungbk joins (~user@2605:e000:1315:706:ec37:30e1:3998:1459)
19:44:52 <dsal> I realized I never had any production Eiffel. I built a postgres replication system in it, but clearly I never made anything I thought was useful enough.
19:46:11 <dwts> dsal: I can't yet have an opinion if it's hard or not, but I need to get a better understanding on the function definitions (and how to read them e.g. when reading the haskell docs). Functional programming is not new to me as I've played with scheme before, but I tend to find the parentheses much more readable (so far)
19:46:56 × taurux quits (~taurux@net-188-152-69-171.cust.dsl.teletu.it) (Ping timeout: 272 seconds)
19:47:31 <dsal> Heh. Yeah. I used to write a lot of (small) scheme. It was fine. ocaml was a bigger step for me. But I went from "Haskell is really hard and only for elite snobs" to finding it the easiest language to work in for almost anything I want to do.
19:47:41 taurux joins (~taurux@net-93-144-148-150.cust.dsl.teletu.it)
19:48:04 <dolio> Maybe the problem is that I was content messing around with homework exercises in Haskell, but it seems like a lot of people only want to 'mess around' if it involves a ton of web junk or something.
19:48:16 <dwts> I wish I'll reach that stage, so far it manages to make me feel like a complete idiot :)
19:48:35 <dsal> Yeah, that's why I like the approach of suspending knowledge and watching it all unfold.
19:48:53 <dolio> And all the web junk in Haskell is fancy.
19:48:55 <dwts> the irc community doesn't seem snob at all btw, lots of interesting conversations in here
19:48:55 elliott_ joins (~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
19:48:57 <dsal> Much of the really cool magic goes away when you become a magician, but then you can still get more done more eaisly.
19:49:21 <dsal> Haskell folks really like Haskell and want everyone to feel the same joy.
19:49:44 <ski> dwts : yea, often it seems newbies goes way overboard with `$' .. i much prefer seeing the brackets, much of the time. using `.' is fine, though
19:50:14 <dsal> If I have a lot of $ in code, it's because I'm shell scripting incrementally in Haskell.
19:50:36 <dwts> ski: I guess the haskell people tried a lot to avoid the parens. You can clearly see that in the funciton definitions
19:51:05 <dminuoso> Question, why exactly do we have no parens for function application?
19:51:08 <monochrom> What dolio said is true of me too. Also generally not just web junk, but overall any "real" "application".
19:51:18 <dsal> dminuoso: You can if you want, but why do you want?
19:51:26 <ski> dminuoso : curried style ?
19:51:33 <ghoulguy> dminuoso: with functions all taking a single argument it probably gets pretty noisy to do it with them
19:51:34 <dwts> I thought hat you can use parens?
19:51:37 <ski> possibly goes back to ISWIM, at least ?
19:51:57 <dwts> s/hat/that
19:52:04 <nshepperd1> too many parentheses spoil the curry
19:52:10 <monochrom> Me, I believe in "stronger foundation before higher ambition". More need to mess around with "toys" to more deeply understand what's really going on, before it's meaningful to try a useful project.
19:52:29 <dolio> Logicians were already avoiding parentheses when Church was around.
19:52:45 <dsal> > subtract (7) (5)
19:52:46 <ski> yea, combinatory logic
19:52:47 <lambdabot> -2
19:52:48 <dminuoso> Im just wondering whether someone knows what the reason was
19:52:58 <dminuoso> Id say the immediate reason was that Miranda was that way I guess
19:53:06 <ski> Church did curried stylw
19:53:27 <ski> yea
19:53:30 <dminuoso> But, perhaps the origins of parens-less function application are just lambda calculus?
19:53:35 <dwts> I assume the lambda bot is written in haskell too?
19:53:39 <ski> yes
19:53:41 <dwts> nice
19:53:47 <monochrom> If you point at Miranda then you still have the question "so why did they do it this way?"
19:53:51 <dminuoso> Right. :)
19:53:52 × Sososasa quits (~textual@2601:643:8000:a570:9513:b921:a468:618c) (Quit: Textual IRC Client: www.textualapp.com)
19:53:56 <ski> @version
19:53:56 <lambdabot> lambdabot 5.3.0.1
19:53:57 <lambdabot> git clone https://github.com/lambdabot/lambdabot
19:54:02 <dminuoso> My instinct says it was from lambda calculus.
19:54:16 <monochrom> But really you look at eg Landin's papers "f(x)(y)(z)(t)" after a while you would invent "f x y z" too.
19:54:26 <ski> monochrom : the "why ?"s never end :)
19:54:33 <dsal> It also kind of overloads the meaning of ()
19:54:42 <ski> math, yes
19:54:47 × wz1000 quits (~wz1000@static.11.113.47.78.clients.your-server.de) (Ping timeout: 240 seconds)
19:54:49 <ski> (heavily)
19:54:54 <monochrom> Disgust is the mother of syntax invention. :)
19:55:01 <dminuoso> Well, I was hoping for someone to just have a citation ready "XYZ explained the decision in publication ABC"
19:55:03 <dminuoso> :p
19:55:12 <dminuoso> monochrom: Disgust is sometimes also the child of it.
19:55:24 <dwts> 22:54 < monochrom> Disgust is the mother of syntax invention. :)
19:55:25 × elliott_ quits (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
19:55:28 <dwts> that quote is gold ^
19:55:42 <ski> there's `@remember', if you think it's memorable enough
19:55:53 <dolio> Back in the 30s and such they were doing `∃ x . P` to avoid the parentheses in `(∃x)(P)` and such. :)
19:56:09 isovector1 joins (~isovector@172.103.216.166)
19:56:13 <dminuoso> dolio: hold on, what did the spaces add exactly there?
19:56:24 <dminuoso> `∃x.P` seems clear as well
19:56:24 <dolio> The spaces aren't important. The dot is.
19:56:27 <dminuoso> Ah
19:56:29 <ski> before ⌜(∀x)Px⌝ it was ⌜(x)Px⌝
19:56:38 <dolio> Dot is kind of like $. Low-precedence.
19:56:42 <monochrom> dolio, then I'm really disappointed that many 1960s logic textbooks still go "(∃x)(P)"
19:56:44 <ski> @help remember
19:56:45 <lambdabot> remember <nick> <quote>: Remember that <nick> said <quote>.
19:57:03 <dminuoso> See, the one thing mathematical publications is missing, is fixity declarations of these notations.
19:57:05 <dwts> ah, I see
19:57:29 <ski> the brackets in ⌜(x)Px⌝ comes from the "rounded dent" in Frege's two-dimensional notation for graphical formulae
19:57:32 <dwts> thanks ski
19:57:39 <dolio> Also you write `P ⊃. Q ⊃ R` to avoid `P ⊃ (Q ⊃ R)`
19:58:02 <ski> yes, there should be a language that picks up the dot notation, instead of brackets
19:58:03 <monochrom> Yikes.
19:58:04 <dolio> Because making it associate one way wasn't a thing yet.
19:58:08 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
19:58:27 <monochrom> Well there is now a language that picks up the $ notation. It's called Haskell. :)
19:58:47 × isovector1 quits (~isovector@172.103.216.166) (Client Quit)
19:59:01 <ski> it annoyes me when people write `foo $ bar $ ...' or `blah (f $ ...)'
19:59:18 <ski> usually the code is clearer, reinserting the brackets
19:59:45 <dminuoso> my rule of thumb is, ($) is for non-BlockArguments code and liftIO/lift :p
20:00:11 <ski> yea, `lift $ ...',`liftIO $ ...',`return $ ...',`pure $ ...' can be okay
20:01:09 <ski> (but if `...' is just a simple expression (on a single line), with no brackets, i'd usually replace the `$' by brackets, anyway)
20:01:43 <dsal> $ is for the last thing in a chain of .
20:01:56 <Cale> I'm perfectly happy writing stuff like liftIO . forM blah $ \x -> ...
20:02:16 <dolio> Yeah, putting a $ at the end of a composition is what I usually do.
20:02:25 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
20:04:28 nshepperd1 can't stop thinking about that idea of abusing BlockArguments to substitute indentation for parentheses
20:04:36 <Cale> P ⊃: Q ⊃. R ⊃ S for P ⊃ (Q ⊃ (R ⊃ S))
20:04:42 <dolio> nshepperd1: Yeah, can't say I'm a fan of that.
20:04:42 <Cale> moar dots
20:05:00 <Cale> That'll be a 50 dkp minus for parens
20:05:04 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
20:05:07 <dolio> Cale: You're not thinking creatively enough.
20:05:10 <dminuoso> nshepperd1: can you elaborate?
20:05:40 <ski> nshepperd1 : yea, i'll need to think about that
20:05:40 <dolio> P ⊃ Q .⊃. P ⊃ R
20:06:17 <ski> that's ⌜(P ⊃ Q) ⊃ (P ⊃ R)⌝
20:06:28 <dolio> Yeah, obviously. :)
20:06:49 <dwts> dsal: I'll probably get the book you suggested
20:07:05 × coot quits (~coot@37.30.49.218.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds)
20:07:11 <Cale> The periods are literal pauses in speech
20:07:13 <dwts> looks promising
20:07:16 <Cale> haha
20:07:28 <ski> but then the periods were also used for conjunction, at the same time
20:07:44 <Cale> If you were speaking "P implies Q ... implies ... P implies R", people would know where you wanted the parens
20:07:50 <dsal> dwts: I've found the slow path the fastest way to get there.
20:07:55 <dolio> You can put them on any connective.
20:08:27 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
20:08:34 <dwts> dsal: what do you define as slow path here?
20:09:00 rprije joins (~rprije@203.214.95.251)
20:09:19 <dolio> I was looking at Church's simple type theory recently, and one of his core things is 'A' which stands for ∨.
20:09:22 conal joins (~conal@64.71.133.70)
20:09:50 <dsal> dwts: That book starts with really basic fundamentals that kind of seem obvious, but walks you through layers in a fairly slow, but deliberate way, building on things until, instead of running around asking people to explain what a Monad is, you find yourself wanting a solution to a problem and realize that the name of that solution is Monad (or whatever part you're on).
20:10:01 <ski> Cale : some math teacher got a bit confused, at one point, when i used indentation rather than brackets, for indicating precedence
20:10:30 <ski> hm, for "Alternative" or something like that, dolio ?
20:10:37 <dsal> dwts: e.g., instead of just throwing cool magic things at you, it shows you how function application works. And then you build on that. By the time you get to magic, there's no magic left.
20:10:46 <dolio> I have no idea. I guess that makes more sense.
20:10:48 chenshen joins (~chenshen@2620:10d:c090:400::5:1bbd)
20:10:57 <dwts> dsal: that sounds encouraging. No that I don't enjoy to other people more knowledgable than me, but the best way to learn is by reading/experimenting on your own
20:11:02 <dsal> dwts: vs. trying to take a concept you know and "translate" it to Haskell and then maybe stuff in an advanced concept.
20:11:15 <Cale> dolio: 'A' for "or"?
20:11:22 <dsal> To be fair, I did a lot of this in parallel with solving problems I had.
20:11:27 <dwts> yeah, that is very common (trying to translate from other langs)
20:11:35 <dolio> Cale: Yeah. Then p∧q = ¬(¬p∨¬q).
20:11:57 <dwts> dsal: it's hard to stay 100% on a book's exercises/examples
20:12:05 <ski> hm, Frege had conjunction, negation, universal, as primitives
20:12:05 <dwts> as you try new things, new ideas pop up usualy
20:12:07 <dwts> usually*
20:12:14 <ski> hmm
20:12:20 <dsal> Yeah, exercises are often too narrow to really understand what they're doing.
20:12:23 <ski> or was it implication, rather than conjunction ?
20:12:24 <dwts> so you want to try them while you learn that new language
20:12:49 <dwts> in any case, I need to go offline, long day tomorrow
20:12:55 <dsal> I really enjoy doing Advent of Code in Haskell. Lots of applied knowledge.
20:12:56 <ski> ah, it was implication
20:13:00 <dwts> thank you all for your help
20:13:02 <dwts> cheers
20:13:03 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
20:13:11 <dwts> dsal: note taken
20:13:11 <no-n> dsal, what book?
20:13:11 <ski> have fun, dwts !
20:13:30 <ski> @where HPFFP
20:13:31 <lambdabot> "Haskell Programming: from first principles - Pure functional programming without fear or frustration" by Chistopher Allen (bitemyapp),Julie Moronuki at <http://haskellbook.com/>,#haskell-beginners
20:14:22 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
20:14:57 <no-n> oh, ok. that one is still on my reading list :p
20:15:36 × knupfer quits (~Thunderbi@i59F7FF25.versanet.de) (Quit: knupfer)
20:15:37 knupfer1 joins (~Thunderbi@200116b82c4c7d00e0839dc4feebae4b.dip.versatel-1u1.de)
20:16:04 <nshepperd> dminuoso: i forget exactly how the person i saw using it had things laid out, but like this https://zlkj.in:8778/uploads/33f4737ce81a95c4/lisp.hs
20:16:07 × knupfer1 quits (~Thunderbi@200116b82c4c7d00e0839dc4feebae4b.dip.versatel-1u1.de) (Client Quit)
20:16:15 knupfer joins (~Thunderbi@200116b82c4c7d006558355e534b95a9.dip.versatel-1u1.de)
20:16:17 × knupfer quits (~Thunderbi@200116b82c4c7d006558355e534b95a9.dip.versatel-1u1.de) (Client Quit)
20:16:26 knupfer joins (~Thunderbi@200116b82c4c7d00cc4c311526e4b875.dip.versatel-1u1.de)
20:16:49 <dminuoso> Cunning.
20:17:17 <ski> nshepperd1 : reminds me of <https://srfi.schemers.org/srfi-49/srfi-49.html>
20:17:23 × avdb quits (~avdb@ip-62-235-188-165.dsl.scarlet.be) (Ping timeout: 260 seconds)
20:17:25 <dminuoso> % :t (do 'c')
20:17:25 <yahb> dminuoso: Char
20:17:27 <dminuoso> Wow fancy.
20:17:32 <nshepperd> or like this https://zlkj.in:8778/uploads/9e74cf0ad48d0794/lisp.hs
20:17:33 <dminuoso> What does do even do. :<
20:17:37 <ski> GHC generalization
20:17:40 <ski> @undo do x
20:17:41 <lambdabot> x
20:17:44 <nshepperd> endless possibilities xD
20:17:51 <shapr> that's wild
20:18:11 <dminuoso> I think Ill just sneak some (do work) bits into my code
20:18:20 <dminuoso> Just to confuse future generations
20:18:40 <dminuoso> (do work) `and` fix error
20:18:45 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
20:18:56 × nyd quits (~lpy@unaffiliated/elysian) (Quit: nyd)
20:19:18 cr0ssw1nd joins (~crosswind@adsl-174.176.58.193.tellas.gr)
20:21:07 × crossw1nd quits (~crosswind@188.73.195.239) (Ping timeout: 260 seconds)
20:22:54 <ski> > do let in [do () | let,do let {}; not otherwise,case () of]
20:22:56 <lambdabot> []
20:23:40 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
20:23:56 <nshepperd> % do it
20:23:56 <yahb> nshepperd: 1
20:24:46 <Cheery> I came from python2 to code haskell stuff, now to get a autosummarizer I'm still installing python3, tensorflow, torch, transformers, then have pipeline download gig-large models to summarize articles for me.
20:25:13 elliott_ joins (~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
20:26:04 <nshepperd> i wish you luck in your impossible quest
20:26:53 stevenxl joins (uid133530@gateway/web/irccloud.com/x-lycvhaiijjxatwhk)
20:27:37 <dminuoso> ski: that's not bad
20:28:42 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
20:28:52 <Cheery> I was going to make a python deprecation alliance, now I got to write a footnote "summarized with tensorflow&pals"
20:30:12 Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
20:30:22 × motherfsck quits (~motherfsc@unaffiliated/motherfsck) (Read error: Connection reset by peer)
20:30:28 <bsima> if I do random.getrandbits(128) in python, what is the equivalent in Haskell?
20:30:58 hackage uniqueness-periods-vector-properties 0.5.3.0 - Metrices for the maximum element for the uniqueness-periods-vector packages family. https://hackage.haskell.org/package/uniqueness-periods-vector-properties-0.5.3.0 (OleksandrZhabenko)
20:31:05 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 240 seconds)
20:31:18 _ashbreeze_ joins (~mark@72-161-51-13.dyn.centurytel.net)
20:32:26 × mmohammadi981266 quits (~mmohammad@5.238.185.98) (Quit: I quit (╯°□°)╯︵ ┻━┻)
20:32:31 × ashbreeze quits (~mark@72-161-253-2.dyn.centurytel.net) (Ping timeout: 258 seconds)
20:32:37 <dminuoso> bsima: You could use the hackage package `random`
20:32:54 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:744e:3fd6:7740:f62b) (Quit: My MacBook has gone to sleep. ZZZzzz…)
20:33:00 <dminuoso> `genShortByteString 16 g` for a suitable RandomGen g
20:33:07 <dminuoso> Or maybe some other variants, depends a bit on your usecase
20:33:13 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds)
20:33:35 <Cheery> are there well-defined ways to seed it?
20:34:00 <Cheery> because you could use genWord64 twice.
20:34:10 <dminuoso> Sure
20:34:20 <dminuoso> I mean it depends really on what you want the random data for.
20:35:11 brisbin joins (~patrick@pool-173-49-158-4.phlapa.fios.verizon.net)
20:35:30 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:744e:3fd6:7740:f62b)
20:36:03 <nshepperd> % do id or do Just do not do otherwise
20:36:03 <yahb> nshepperd: False
20:36:06 <Cheery> Hm.. yeah, you seem to be able to do plenty of tricks with that stuff.
20:36:19 <dsal> I agree with yahb on tha tone.
20:38:32 × leungbk quits (~user@2605:e000:1315:706:ec37:30e1:3998:1459) (Remote host closed the connection)
20:38:52 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
20:39:52 × zaquest quits (~notzaques@5.128.210.178) (Quit: Leaving)
20:40:30 <dminuoso> % Just do fix error
20:40:31 <yahb> dminuoso: ; <interactive>:1:6: error:; Unexpected do block in function application:; do fix error; You could write it with parentheses; Or perhaps you meant to enable BlockArguments?
20:40:38 <dminuoso> Gah! Im fighting with someone here.
20:40:43 <dminuoso> % :set -XBlockArguments
20:40:43 <yahb> dminuoso:
20:40:45 <dminuoso> % Just do fix error
20:40:51 <yahb> dminuoso: Just "*** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: ***
20:40:53 <dminuoso> Someone keeps turning the above extension off.
20:41:18 rekahsoft joins (~rekahsoft@fitz10681.telemetry.esentire.com)
20:42:49 × raym quits (~ray@115.187.50.175) (Remote host closed the connection)
20:43:01 pera joins (~pera@unaffiliated/pera)
20:43:25 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds)
20:43:26 <bsima> dminuoso: i see, my version of random is 1.1, all the good stuff is in 1.2
20:44:36 <dminuoso> bsima: What do you need the random data for?
20:45:12 <bsima> i just need a uid
20:45:40 <bsima> maybe i'll use the uuid package instead, i don't think i have a constraint for 128=-bits specifically
20:46:00 bitmapper joins (uid464869@gateway/web/irccloud.com/x-cqfrvvppmmqjnkgv)
20:46:14 <dsal> I like the uuid package on occasion.
20:46:21 <dminuoso> Fun fact
20:46:32 <dminuoso> There's an entry in procfs that generates uuids: `/proc/sys/kernel/random/uuid`
20:47:15 <bsima> cool, unfortunately i'm on mac at the moment
20:48:07 <dminuoso> bsima: Random Word64
20:48:17 <phadej> % Just do fix error
20:48:18 <yahb> phadej: ; <interactive>:1:6: error:; Unexpected do block in function application:; do fix error; You could write it with parentheses; Or perhaps you meant to enable BlockArguments?
20:48:21 <phadej> :(
20:48:28 <dminuoso> % :set -XBlockArguments
20:48:28 <yahb> dminuoso:
20:48:32 <phadej> % Just do fix error
20:48:37 <yahb> phadej: Just "*** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: ***
20:48:39 <phadej> % Just do it
20:48:40 <yahb> phadej: ; <interactive>:1:6: error:; Unexpected do block in function application:; do it; You could write it with parentheses; Or perhaps you meant to enable BlockArguments?
20:48:45 <phadej> what
20:48:48 <phadej> % :set -xBlockArguments
20:48:48 <yahb> phadej: Some flags have not been recognized: -xBlockArguments
20:48:48 <dminuoso> Someone keeps flipping it off
20:48:52 ashbreeze joins (~mark@72-161-51-13.dyn.centurytel.net)
20:48:52 <phadej> % :set -XBlockArguments
20:48:53 <yahb> phadej:
20:48:55 <phadej> % Just do it
20:48:56 <yahb> phadej: Just ()
20:48:58 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
20:49:00 <phadej> % Just do fix error
20:49:05 <yahb> phadej: Just "*** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: ***
20:49:11 <phadej> % :set -XBlockArguments
20:49:12 <yahb> phadej:
20:49:14 <phadej> % Just do it
20:49:14 <yahb> phadej: Just ()
20:49:16 <int-e> Uhm
20:49:22 <phadej> I guess it flips on exception
20:49:26 <int-e> doesn't yahb answer privmsgs?
20:49:36 <dminuoso> int-e: No it does not. It only answers in #haskell
20:49:38 <dminuoso> Clearly.
20:49:42 <dminuoso> Otherwise we'd be using queries.
20:50:03 <int-e> Well that's weird, because it works for me :-P
20:50:32 <monochrom> Some kind of selection bias. (OK I know I know, you were joking. :) )
20:50:35 <dsal> Yeah, I usually have private dialogues with yahb and lambdabot.
20:50:58 <dminuoso> oleg does not simply have a private chat with yahb.
20:51:05 × _ashbreeze_ quits (~mark@72-161-51-13.dyn.centurytel.net) (Ping timeout: 240 seconds)
20:51:06 <phadej> let's try again
20:51:13 <phadej> % :set -XBlockArguments
20:51:13 <yahb> phadej:
20:51:20 <phadej> % error "foo"
20:51:20 <yahb> phadej: *** Exception: foo; CallStack (from HasCallStack):; error, called at <interactive>:5:1 in interactive:Ghci6
20:51:25 <phadej> % Just do it
20:51:26 <yahb> phadej: Just 1
20:51:34 <dminuoso> phadej: Oh I have an idea.
20:51:36 <phadej> someone is playing with it concurrently!
20:51:40 <phadej> % Just do it
20:51:40 <yahb> phadej: Just (Just 1)
20:51:41 <dminuoso> Maybe, `fix error` hangs yahb
20:51:51 <dminuoso> so it gets killed off, and that resets the flags
20:51:53 <phadej> because that `1` could come from just somewhere
20:51:56 <phadej> % Just do it
20:51:56 <yahb> phadej: Just (Just (Just 1))
20:52:11 <dminuoso> % fix error
20:52:17 <yahb> dminuoso: "*** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Exception: *** Excep
20:52:18 <dminuoso> % Just do it
20:52:19 <yahb> dminuoso: ; <interactive>:1:6: error:; Unexpected do block in function application:; do it; You could write it with parentheses; Or perhaps you meant to enable BlockArguments?
20:52:27 <monochrom> Ah, yeah.
20:52:29 <dminuoso> Yeah, I think it's that `fix error` hangs yahb.
20:53:08 <monochrom> It's an infinite loop printing that infinite string. Gets timed out and killed. The watchdog starts a new one.
20:53:25 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
20:54:01 <monochrom> As a corollary, if you want a reset, just use :quit to tell it to quit, the watchdog will start a new one too.
20:55:38 × elliott_ quits (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
20:58:53 remexre_ is now known as remexre
20:59:07 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
20:59:16 elliott_ joins (~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
20:59:23 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:744e:3fd6:7740:f62b) (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:00:02 × ButterflyOfFire quits (~Butterfly@185.163.110.116) ()
21:00:24 × knupfer quits (~Thunderbi@200116b82c4c7d00cc4c311526e4b875.dip.versatel-1u1.de) (Quit: knupfer)
21:00:32 knupfer joins (~Thunderbi@200116b82c4c7d00ac20288f9f283cdb.dip.versatel-1u1.de)
21:01:06 × _vaibhavingale_ quits (~Adium@203.188.228.27) (Quit: Leaving.)
21:01:19 snakemas1 joins (~snakemast@213.100.206.23)
21:01:55 × elliott_ quits (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Client Quit)
21:02:53 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:ac:b25b:cce8:9c5a)
21:02:54 conal joins (~conal@64.71.133.70)
21:02:54 <ghoulguy> Good dog
21:03:56 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
21:06:07 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:ac:b25b:cce8:9c5a) (Client Quit)
21:06:57 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 265 seconds)
21:07:03 elliott_ joins (~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
21:08:31 × Zetagon quits (~leo@c151-177-52-233.bredband.comhem.se) (Remote host closed the connection)
21:09:14 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
21:09:18 timotayj joins (~timotayj@188.214.15.156)
21:10:28 snakemas1 joins (~snakemast@213.100.206.23)
21:10:34 × chaosmasttter quits (~chaosmast@p200300c4a70b4001c004325a2a510724.dip0.t-ipconnect.de) (Quit: WeeChat 2.9)
21:10:42 × vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
21:11:22 nbloomf joins (~nbloomf@2600:1700:83e0:1f40:ac:b25b:cce8:9c5a)
21:11:33 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
21:11:49 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
21:11:58 vicfred joins (~vicfred@unaffiliated/vicfred)
21:12:51 <Cheery> wee.. these guys haven't solved what to do if the text is longer than what the program is meant to process.
21:15:10 timotayj is now known as TJChem
21:15:45 GyroW_ joins (~GyroW@d54c03e98.access.telenet.be)
21:15:45 × GyroW_ quits (~GyroW@d54c03e98.access.telenet.be) (Changing host)
21:15:45 GyroW_ joins (~GyroW@unaffiliated/gyrow)
21:15:48 <Cheery> it's interesting though.. should the summarizer run twice on the content? Or should there be sentiment analysis that identifies non-important parts of the text first?
21:16:25 × GyroW quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 240 seconds)
21:16:25 × vicfred quits (~vicfred@unaffiliated/vicfred) (Client Quit)
21:17:13 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 260 seconds)
21:17:22 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 258 seconds)
21:18:08 × ryansmccoy quits (~ryansmcco@193.37.254.27) (Ping timeout: 258 seconds)
21:18:31 ryansmccoy joins (~ryansmcco@193.37.254.27)
21:19:51 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
21:21:25 × mirrorbird quits (~psutcliff@m83-185-82-223.cust.tele2.se) (Quit: Leaving)
21:23:43 snakemas1 joins (~snakemast@213.100.206.23)
21:24:04 vicfred joins (~vicfred@unaffiliated/vicfred)
21:24:24 fantasticsid joins (~user@2601:641:8000:4f00:58ae:cf75:1df1:eeff)
21:25:23 × ryansmccoy quits (~ryansmcco@193.37.254.27) (Ping timeout: 260 seconds)
21:26:21 ryansmccoy joins (~ryansmcco@193.37.254.27)
21:27:45 × wroathe_ quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
21:28:17 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
21:28:58 × Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
21:29:33 <nshepperd> first summarize the first half, then summarize the second half, then summarize the two summaries
21:30:31 × nbloomf quits (~nbloomf@2600:1700:83e0:1f40:ac:b25b:cce8:9c5a) (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:30:59 × machinedgod quits (~machinedg@24.105.81.50) (Remote host closed the connection)
21:31:09 <monochrom> That doesn't bode well when each half establishes context for the other half.
21:31:59 machinedgod joins (~machinedg@24.105.81.50)
21:32:11 <monochrom> Or rather, e.g., the last sentence of the first half is useful when summarizing the second half.
21:32:58 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 260 seconds)
21:33:22 <monochrom> And so I propose a sliding window scheme. For every i, summarize from byte i to byte i+N, where N is the input length limit of the summerizer algorithm.
21:33:31 <sshine> I'm writing a Megaparsec parser for an AST made recursive with Data.Fix. before Data.Fix I would write e.g.: InfixL (Mul <$ symbol "*") -- with Mul :: Expr -> Expr -> Expr. but with Data.Fix, I need to replace 'Mul' with '\a b -> Fix (Mul a b)'. is there a convenient way to overcome that?
21:33:56 <monochrom> Then perhaps summarize the concatenation of those outputs. And perhaps one more level above that, as necessary.
21:34:43 <ghoulguy> sshine: When you're using Fix it's not uncommon to then name the constructors wrapped in fix
21:34:53 <ghoulguy> mul x y = Fix (Mul x y)
21:35:02 brandly joins (~brandly@c-73-68-15-46.hsd1.ma.comcast.net)
21:35:24 <sshine> ghoulguy, as part of the module where the AST lives in?
21:35:40 <sshine> that certainly makes my tests look nicer.
21:35:59 <ghoulguy> or even with pattern synonyms to do that
21:36:08 <ghoulguy> yeah, close to the AST definition makes sense
21:36:09 <monochrom> It certain makes good sense for a module to provide convenience for its user and use cases.
21:36:23 Sososasa joins (~textual@2601:643:8000:a570:9513:b921:a468:618c)
21:36:29 <sshine> I sense TH opportunity, and I sense that maybe recursion-schemes did something here.
21:36:34 <ski> sshine : you could define pattern synonyms
21:36:45 <monochrom> Now, if you also find that when writing pattern matching, "f (Fix (Mul a b)) = ..." is very tiresome...
21:36:57 <ski> what monochrom was about to say
21:37:09 <monochrom> then what ski said. Pattern synonyms solves both problems. Two birds in one stone.
21:37:10 <ghoulguy> You're going to find using Fix is tiresome in general
21:37:13 <sshine> I don't actually pattern match much on the Fix thingy because of all the convenience combinators.
21:37:29 <sshine> ghoulguy, oh, thanks for the heads up.
21:37:51 <monochrom> And as well, it's desired to define the pattern synonyms in the AST module and export them, so users benefit.
21:37:52 <sshine> I was wanting to save lines doing passes. :)
21:38:11 <monochrom> s/desired/desirable/
21:38:48 <monochrom> pattern synonym = smart constructors and deconstructors
21:39:00 <monochrom> well, bidirection pattern synonym
21:39:02 <sshine> right.
21:39:18 <sshine> I've tried pattern synonyms. seems neat.
21:40:47 × elliott_ quits (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
21:42:53 × ryansmccoy quits (~ryansmcco@193.37.254.27) (Ping timeout: 260 seconds)
21:42:53 × ystael quits (~ystael@209.6.50.55) (Ping timeout: 260 seconds)
21:43:10 ryansmccoy joins (~ryansmcco@193.37.254.27)
21:43:57 hackage wolf 0.3.48 - Amazon Simple Workflow Service Wrapper. https://hackage.haskell.org/package/wolf-0.3.48 (markfine)
21:44:44 × cpape` quits (~user@static.180.18.203.116.clients.your-server.de) (Quit: ERC (IRC client for Emacs 26.3))
21:44:52 <sshine> ghoulguy, so you wouldn't pick data-fix/recursion-schemes for an AST at some point in the near future?
21:45:07 × fantasticsid quits (~user@2601:641:8000:4f00:58ae:cf75:1df1:eeff) (Ping timeout: 240 seconds)
21:46:09 cpape joins (~user@static.180.18.203.116.clients.your-server.de)
21:46:57 × knupfer quits (~Thunderbi@200116b82c4c7d00ac20288f9f283cdb.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
21:47:39 tambow44 joins (~tambow44@163.47.239.202)
21:47:44 <monochrom> I am not ghoulguy, but I found recursion schemes ineffective in cost-benefit. For all its extra Fix annoyance, it saves you, what, from writing an easy-to-write catamorphism?
21:48:03 tambow44 parts (~tambow44@163.47.239.202) ()
21:48:06 <dsal> I kind of wish I knew what recursion schemes was.
21:48:44 × nshepperd quits (~nshepperd@pool-96-239-61-124.nycmny.fios.verizon.net) (Quit: bye)
21:48:54 <monochrom> Instead, I find "data types a la carte" much more worthwhile, if you plan an extensible AST and interpreter etc.
21:49:26 <ski> i still would like to be able to turn `splitPrefix' into a pattern synonym ..
21:49:54 <dminuoso> dsal: The motivation is actually quite simple.
21:50:07 <dminuoso> % foldr (+) 0 [1..10] -- dsal
21:50:07 <yahb> dminuoso: 55
21:50:09 <monochrom> There are even many free monads that I would rather hand-write than use the free monad library. Unless I want that library's feature of making things efficient.
21:50:27 <dminuoso> dsal: Do you see, how foldr lets us hide the recursion, instead we can just sort of talk about (+) and 0 here.
21:50:40 <dminuoso> Recursion schemes is about exploring such ideas. :)
21:50:46 <dminuoso> (Very handwavingly)
21:50:54 <ski> (perhaps with a focus on "exploring")
21:51:12 <dsal> I get it at that level, but the last time I looked at it, it required a lot of commitment to get started.
21:51:13 × ziman quits (~ziman@c25-5.condornet.sk) (Ping timeout: 264 seconds)
21:51:36 Wuzzy joins (~Wuzzy@p5790e6f5.dip0.t-ipconnect.de)
21:52:37 ziman joins (~ziman@c25-5.condornet.sk)
21:52:48 <dsal> A single word of documentation would be pretty great. Some are documented, but there's stuff like `gzygo :: (Recursive t, Comonad w) => (Base t b -> b) -> (forall c. Base t (w c) -> w (Base t c)) -> (Base t (EnvT b w a) -> a) -> t -> a`
21:53:57 larsan1 joins (~larsan@178.239.168.171)
21:54:00 <dsal> This is the most haskell section header I've ever seen on a web page, though: Zygohistomorphic prepromorphisms
21:54:17 zhenchaoli joins (~user@2601:641:8000:4f00:58ae:cf75:1df1:eeff)
21:54:59 × TMA quits (tma@twin.jikos.cz) (Ping timeout: 240 seconds)
21:55:00 <topos> what's so hard about a zygohistomorphic prepromorphism? it's just a zygomorphic histo that's also prepromorphic
21:55:36 <dminuoso> @remember topos what's so hard about a zygohistomorphic prepromorphism? it's just a zygomorphic histo that's also prepromorphic
21:55:37 <lambdabot> I will remember.
21:55:44 <topos> LOL
21:56:45 <ski> monochrom : at first i read "hand-wave"
21:57:42 <monochrom> @quote olsner zygohistomorphic
21:57:43 <lambdabot> olsner says: nah, SkyNet is just a zygohistomorphic prepromorphism, nothing fancy
21:58:38 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
21:59:27 hackage cut-the-crap 2.0.0 - Cuts out uninteresting parts of videos by detecting silences. https://hackage.haskell.org/package/cut-the-crap-2.0.0 (Jappie)
21:59:53 × Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
22:01:11 <phadej> reminds me of
22:01:13 <phadej> The full chemical name of the human canonical form of titin, which starts methionyl... and ends ...isoleucine, contains 189,819 letters
22:01:29 <monochrom> eek
22:01:55 <dsal> phadej: Please use a pastebin.
22:02:02 <monochrom> haha
22:02:48 <phadej> FWIW, the pieces of that protein are quite simple in separation ;)
22:02:54 thir joins (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de)
22:03:18 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
22:03:45 <hpc> jeez, it might as well be DNA at that point
22:04:34 snakemas1 joins (~snakemast@213.100.206.23)
22:05:00 <phadej> Titin is a giant protein, greater than 1 µm in length,
22:05:48 <phadej> dna does encode how to make one :)
22:07:07 × thir quits (~thir@p200300f27f02580060eb7dde324e54c8.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
22:07:21 × helaoban quits (~carloholl@2603:3024:1704:300::8401) (Quit: WeeChat 2.9)
22:08:32 × xff0x quits (~fox@2001:1a81:53da:5200:a463:747d:cc85:3e35) (Ping timeout: 260 seconds)
22:09:08 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 260 seconds)
22:09:27 <dsal> I think I may have gone from mocking recursion-schemes to consider applying it to something.
22:09:31 × Sososasa quits (~textual@2601:643:8000:a570:9513:b921:a468:618c) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
22:09:35 × galagora- quits (~ao@197.237.20.60) (Remote host closed the connection)
22:10:20 xff0x joins (~fox@2001:1a81:53fe:cd00:31b6:6e9a:3cee:6489)
22:11:58 shafox joins (~shafox@106.51.234.111)
22:13:13 <monochrom> "First you ignore it. Then you laugh at it. Then it wins"? >:)
22:13:25 × brandly quits (~brandly@c-73-68-15-46.hsd1.ma.comcast.net) (Ping timeout: 264 seconds)
22:15:57 × alexelcu quits (~alexelcu@142.93.180.198) (Quit: ZNC 1.8.2 - https://znc.in)
22:16:48 alexelcu joins (~alexelcu@142.93.180.198)
22:17:38 Katarushisu6 joins (~Katarushi@cpc149712-finc20-2-0-cust535.4-2.cable.virginm.net)
22:17:45 × ryansmccoy quits (~ryansmcco@193.37.254.27) (Ping timeout: 240 seconds)
22:18:02 ryansmccoy joins (~ryansmcco@68.235.48.108)
22:18:07 × pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 240 seconds)
22:18:40 × mcc quits (~pbodev1@5-15-16-231.residential.rdsnet.ro) (Quit: Nettalk6 - www.ntalk.de)
22:18:48 × Katarushisu quits (~Katarushi@cpc149712-finc20-2-0-cust535.4-2.cable.virginm.net) (Ping timeout: 256 seconds)
22:18:49 Katarushisu6 is now known as Katarushisu
22:21:25 <dsal> I thought I used fixM or something like that once, but I can't find it.
22:23:06 × __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving)
22:23:28 pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net)
22:26:25 × alp_ quits (~alp@2a01:e0a:58b:4920:b989:9831:f361:9cf) (Ping timeout: 272 seconds)
22:30:34 leungbk joins (~user@2605:e000:1315:706:26ff:1608:dcbb:bfdf)
22:31:49 djellemah joins (~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54)
22:34:54 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
22:35:28 alp_ joins (~alp@2a01:e0a:58b:4920:3c2d:d48c:8093:50d4)
22:36:38 × stevenxl quits (uid133530@gateway/web/irccloud.com/x-lycvhaiijjxatwhk) (Quit: Connection closed for inactivity)
22:36:49 × shatriff quits (~vitaliish@78.111.190.16) (Read error: Connection reset by peer)
22:38:56 shatriff joins (~vitaliish@78.111.190.16)
22:39:23 × cosimone quits (~cosimone@2001:b07:ae5:db26:fe52:4567:a4e4:fc3a) (Quit: cosimone)
22:41:17 cosimone joins (~cosimone@93-47-228-249.ip115.fastwebnet.it)
22:41:26 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
22:43:03 hyiltiz joins (~quassel@unaffiliated/hyiltiz)
22:43:56 <dsal> WEren't we having this conversation earlier? https://twitter.com/elonmusk/status/1314666526297923585
22:43:58 jdgr joins (601c428b@gateway/web/cgi-irc/kiwiirc.com/ip.96.28.66.139)
22:44:28 snakemas1 joins (~snakemast@213.100.206.23)
22:44:45 × GyroW_ quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 240 seconds)
22:45:21 GyroW joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
22:45:21 × GyroW quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
22:45:21 GyroW joins (~GyroW@unaffiliated/gyrow)
22:45:45 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
22:45:59 × shafox quits (~shafox@106.51.234.111) (Remote host closed the connection)
22:46:06 conal joins (~conal@64.71.133.70)
22:47:15 Icewing joins (~Icewing@unaffiliated/icewing)
22:47:42 × fendor quits (~fendor@91.141.0.104.wireless.dyn.drei.com) (Remote host closed the connection)
22:48:45 GyroW_ joins (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
22:48:45 × GyroW_ quits (~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
22:48:45 GyroW_ joins (~GyroW@unaffiliated/gyrow)
22:49:24 × snakemas1 quits (~snakemast@213.100.206.23) (Ping timeout: 256 seconds)
22:49:42 <Guest18> Can I pattern match with `case ... of ...`?
22:49:58 <dsal> I don't exactly understand what you're asking, but yes.
22:50:29 × GyroW quits (~GyroW@unaffiliated/gyrow) (Ping timeout: 272 seconds)
22:50:45 <dsal> > case odd 3 of True -> "yes"; False -> "no"
22:50:49 <lambdabot> "yes"
22:51:27 <Guest18> that's all i needed to know, thank you
22:51:29 <dsal> > case pure 3 of Just 3 -> "yes"; _ -> "no"
22:51:32 <lambdabot> "yes"
22:51:44 × mdunnio quits (~mdunnio@208.59.170.5) (Remote host closed the connection)
22:52:03 <Guest18> was looking into ways of making my code a bit prettier and readable, as i'm not entirely happy with it
22:52:32 <Guest18> it's the code for deleting a value from a binary search tree
22:53:01 × xff0x quits (~fox@2001:1a81:53fe:cd00:31b6:6e9a:3cee:6489) (Ping timeout: 272 seconds)
22:53:22 <dsal> I don't use case all that much. It's not obvious I'd fit it into something like that. What's your code look like currently?
22:54:05 <Guest18> https://dpaste.com/D2N9HH7UH
22:54:22 <Guest18> I included only the relevant parts, i have more
22:54:32 xff0x joins (~fox@2001:1a81:520e:b00:31b6:6e9a:3cee:6489)
22:55:09 × cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
22:55:26 <dsal> I'd just use a guard instead of that case.
22:55:35 <Guest18> deleteOn seems to me like it could use a little refactoring
22:56:08 <Guest18> so would i, but in this case, i only compare once
22:56:42 mdunnio joins (~mdunnio@208.59.170.5)
22:56:56 <dsal> Sure, it's clear enough.
22:57:22 <Guest18> any other suggestions? how would you do it?
22:58:17 <dsal> I tend not to use let like you're doing in deleteOn. where is a bit nicer there, I think.
22:58:23 <dsal> Also, have you considered making your BST Foldable?
22:58:47 <dsal> `foldr1 min (flatten right)` is basically `minimum right`
22:58:49 <Guest18> Yes, I did, but I do not posses the knowledge to know how to do it
22:59:13 <Guest18> I know what the typeclass is, i don't know how to make it an instance of Foldable though
22:59:37 <monochrom> Foldable is going to be a distraction at this stage.
22:59:44 <Guest18> yeah, actually where would be nicer, thank you
22:59:59 × xff0x quits (~fox@2001:1a81:520e:b00:31b6:6e9a:3cee:6489) (Ping timeout: 272 seconds)
23:00:37 <dsal> Well, I guess in any case, `foldr1 min` is `minimum` -- both are partial.
23:01:59 <monochrom> "deleteBST nextSuccesor left" sounds like simply "left".
23:02:01 × mdunnio quits (~mdunnio@208.59.170.5) (Ping timeout: 264 seconds)
23:02:30 <monochrom> "foldr1 min (flatten right)" sounds like "head (flatten right)"
23:03:49 × rayer quits (path@gateway/shell/xshellz/x-wnmzeedxnwlaimsy) (Ping timeout: 264 seconds)
23:03:49 <monochrom> in the context of binary search trees, that is
23:03:56 <Guest18> i understand the latter, but the former seems weird
23:03:58 × ulidtko|k quits (~ulidtko@193.111.48.79) (Ping timeout: 260 seconds)
23:04:34 <Guest18> if i said simply left, how would i delete the extra node left there? I would have duplicates in the tree
23:04:38 <monochrom> The successor is from the right subtree only, so there is no need to modify the left subtree?
23:04:52 rayer joins (path@gateway/shell/xshellz/x-xigijdelvsqhpmpl)
23:04:58 <Guest18> Oh
23:05:08 <Guest18> Yeah, that makes sense
23:06:35 <Guest18> Yeah, since flatten traverses the tree in order, the resulting list is sorted, so the minimum is the head, i didn't think of that
23:06:38 <dsal> Oh, `deleteOn` is slightly misleading. I didn't actually read it. heh. If you're not using `x` it'd be clearer to not name it.
23:07:31 <monochrom> Nice. In that case get rid of the parameter altogether.
23:07:38 <Guest18> actually, it is never used, so why bother taking as a parameter
23:07:40 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
23:08:04 xff0x joins (~fox@2001:1a81:5216:ad00:31b6:6e9a:3cee:6489)
23:10:21 <Guest18> https://dpaste.com/3PXJGRMV8 -- new version
23:10:30 aaaaaa joins (~ArthurStr@host-91-90-11-13.soborka.net)
23:10:31 <Guest18> I am actually quite happy with this
23:12:08 <Guest18> It feels good to actually make something useful with a new language you just started learning
23:13:10 <Guest18> any ideas for projects that i can do with haskell?
23:13:37 × GyroW_ quits (~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
23:13:47 GyroW joins (~GyroW@d54C03E98.access.telenet.be)
23:13:48 × GyroW quits (~GyroW@d54C03E98.access.telenet.be) (Changing host)
23:13:48 GyroW joins (~GyroW@unaffiliated/gyrow)
23:14:53 <Guest18> I was thinking of making a small shell with haskell, like a restricted version of bash - only the basic commands
23:21:15 <Guest18> I reckon you don't dig the idea?
23:21:30 × TJChem quits (~timotayj@188.214.15.156) (Quit: Lost terminal)
23:21:59 <Clint> i think it's a great idea
23:24:32 × raehik quits (~raehik@cpc96984-rdng25-2-0-cust109.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
23:25:19 × zhenchaoli quits (~user@2601:641:8000:4f00:58ae:cf75:1df1:eeff) (Ping timeout: 272 seconds)
23:26:57 hackage web-plugins 0.3.0 - dynamic plugin system for web applications https://hackage.haskell.org/package/web-plugins-0.3.0 (JeremyShaw)
23:27:17 × Forkk_ quits (forkk@2600:3c00::f03c:91ff:fe84:de4d) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
23:27:27 <Guest18> Awesome! I will get around to it soon. I still have more to learn about IO, and it does seem pretty scary
23:27:44 zaquest joins (~notzaques@5.128.210.178)
23:27:46 × nineonine quits (~nineonine@216.81.48.202) (Remote host closed the connection)
23:28:58 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
23:29:11 Forkk joins (forkk@2600:3c00::f03c:91ff:fe84:de4d)
23:29:42 × Ariakenom__ quits (~Ariakenom@h-155-4-221-50.NA.cust.bahnhof.se) (Read error: Connection reset by peer)
23:30:08 × jdgr quits (601c428b@gateway/web/cgi-irc/kiwiirc.com/ip.96.28.66.139) (Ping timeout: 256 seconds)
23:30:45 × DavidEichmann quits (~david@43.240.198.146.dyn.plus.net) (Ping timeout: 240 seconds)
23:30:59 × son0p quits (~son0p@181.136.122.143) (Remote host closed the connection)
23:32:26 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
23:32:57 hackage citeproc 0.1 - Generates citations and bibliography from CSL styles. https://hackage.haskell.org/package/citeproc-0.1 (JohnMacFarlane)
23:33:05 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
23:34:02 × m0rphism quits (~m0rphism@HSI-KBW-046-005-177-122.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 260 seconds)
23:34:03 mdunnio joins (~mdunnio@208.59.170.5)
23:35:13 <ski> Guest18 : `deleteOn' could be called `merge' ?
23:37:08 <ski> redundant brackets in `flatten'
23:38:33 <ski> i might define a `splitMin' operation, that both gives the minimum, and the remaining tree
23:39:02 <Guest18> ski: I mean, I don't really see how it merges stuff any more than the other functions, and I wanted to emphasize that it has a connection with deleteBST, same way I did with `depth` and `depthGo` earlier. It seemed appropiate, because it deletes the root on that subtree
23:39:22 × mdunnio quits (~mdunnio@208.59.170.5) (Ping timeout: 272 seconds)
23:39:33 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
23:39:59 nineonine joins (~nineonine@216-19-190-182.dyn.novuscom.net)
23:40:06 <Guest18> how would i implement splitMin?
23:42:07 × djellemah quits (~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54) (Ping timeout: 240 seconds)
23:43:04 <dsal> Guest18: one way to emphasize that connection is to stick it in a where clause where it's used. :)
23:43:22 <ski> the minimum element is always in the left-most leaf
23:43:48 aaaaaa parts (~ArthurStr@host-91-90-11-13.soborka.net) ()
23:44:11 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
23:44:17 <ski> Guest18 : your `deleteOn' takes two trees (and an element that's always ignored), and combines them into a single tree
23:44:34 × nineonine quits (~nineonine@216-19-190-182.dyn.novuscom.net) (Ping timeout: 258 seconds)
23:44:36 <Guest18> dsal: but it was too big for a where clause, wasn't it?
23:44:43 <ski> (ah, sorry, in your last paste version, you didn't pass it the element)
23:45:07 × xff0x quits (~fox@2001:1a81:5216:ad00:31b6:6e9a:3cee:6489) (Ping timeout: 240 seconds)
23:45:12 × pera quits (~pera@unaffiliated/pera) (Quit: leaving)
23:45:18 <bliminse> Guest18: unrelated to current query, but before on project suggestion, I liked what you said but you may wanna try a more specific one first to learn IO and other bits
23:45:36 <dsal> Guest18: too big? It's never too big! :)
23:45:40 <bliminse> you could try something like parsing git log results and constructing a tree
23:45:54 <ski> if you wanted `deleteOn' to be an implementation detail of `deleteBST', you could define `deleteOn' inside a `where' attached to `deleteBST'
23:46:13 × danvet_ quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
23:46:14 <bliminse> i.e., if you have any git repo run git log --pretty="tformat:%h{%aI{%an{%d{%s" | column -t -s '{' and save that to file
23:46:17 jedws joins (~jedws@121.209.161.98)
23:46:24 <ski> but merging two `BST's sounds like it could be an independently interesting operation
23:46:45 <ski> (ah, i see dsal was talking about the same thing)
23:47:05 Lycurgus joins (~niemand@98.4.96.130)
23:47:07 <bliminse> then you can pick up skills on reading/parsing, building a tree, optionally doing some folding on the tree to gather stats (e.g., number of commits per year/month), then write stats to a file
23:47:09 <Guest18> bliminse: this is good stuff, what else do you got?
23:47:31 <bliminse> so you pick up read, parse, folds/unfolds, writing, and who knows what else xD
23:48:08 <Guest18> ski: I didn't know `where` can fit function definitions longer than a line
23:49:23 <Guest18> Although it does make sense now that i think about it, otherwise i couldn't have made this module, as it uses a where in the beginning
23:49:38 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
23:50:17 × leungbk quits (~user@2605:e000:1315:706:26ff:1608:dcbb:bfdf) (Remote host closed the connection)
23:51:20 <ski> Guest18 : ah. now you know :)
23:51:32 <ski> you can, of course, also put type signatures in there
23:52:50 <Guest18> So you're saying make deleteOn to be merge, that takes 2 BSTs and merges them, and i can apply the deleteBST to the left subtree before giving it to merge, and then construct a minSplit function and define it in a where clause in deleteBST, that will return the minimum of the right subtree, aka head (flatten right)
23:53:00 <Guest18> am i undersanding this correctly?
23:53:07 × conal quits (~conal@64.71.133.70) (Ping timeout: 240 seconds)
23:53:45 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
23:54:29 × nados quits (~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer)
23:55:03 nados joins (~dan@107-190-41-58.cpe.teksavvy.com)
23:55:15 <ski> why apply `deleteBST' ?
23:55:44 <ski> `minSplit' would not be defined locally, since it could well be a common operation a user could want to do
23:56:19 <ski> and your `deleteOn'/`merge' could be defined, in terms of `minSplit'
23:56:35 <ski> (instead of using `flatten' and `deleteBST')
23:56:39 snakemas1 joins (~snakemast@213.100.206.23)
23:58:11 × perrier-jouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Ping timeout: 240 seconds)
23:58:39 <Guest18> I am sorry, but I don't see how this would eliminate deleteBST from being called in `merge`
23:58:49 <Guest18> I still need it
23:59:16 xff0x joins (~fox@2001:1a81:5233:da00:49ff:f70d:c215:5652)
23:59:35 <Guest18> I am also really really tired, it's 3 AM here

All times are in UTC on 2020-10-09.