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.