Home liberachat/#haskell: Logs Calendar

Logs on 2023-01-25 (liberachat/#haskell)

00:00:02 <unit73e> we need I mean
00:00:11 <unit73e> like mathematics
00:00:33 <dsal> I've got into arguments with people I'm happy I no longer work with about how things like `MonadIO` are really bad because it's *possible* to make `liftIO` do something unexpected.
00:01:01 <unit73e> so the code of conduct didn't work
00:01:05 <unit73e> eh
00:01:27 <dsal> You seem to be expressing unhappiness with something you don't understand well.
00:01:53 <unit73e> it's not actually unhappiness, it's more of a pebble in the shoe, I don't care really that much
00:02:03 <unit73e> more of an observation
00:02:24 <dsal> OK. Your commentary on your observations suggest you don't understand what you're observing.
00:02:33 <dsal> People can disagree on ideas that's just fine.
00:02:37 <unit73e> perhaps, I never managed such large projects
00:03:17 <unit73e> still, I would be stubborn to not have it, until I was proven wrong
00:03:35 <dsal> I don't dislike that person because he doesn't like `MonadIO`. I don't like him *and* he doesn't like `MonadIO`. And his argument was kind of bad, but he decided nobody else's opinions mattered and everyone had to do whatever he believed on every topic even when someone could demonstrate it was in violation with his own principles.
00:04:49 <unit73e> well that's why voting or hierarchies were created. it's not that easy to solve these management problems.
00:05:22 <monochrom> No no no, that is why unfriending was invented. >:)
00:05:50 <dsal> Heh. Yeah. Now I work with reasonable people. I disagree with work folks all the time, but nobody is unreasonable.
00:06:01 <monochrom> Or alternatively but equivalently /ignore, /part, /quit
00:06:48 jmdaemon joins (~jmdaemon@user/jmdaemon)
00:07:53 <dsal> One thing that's come up recently at work is a function `:: A -> A` for a sum type that is represented in a different system that might be lagging behind, so they need some kind of backwards compatibility. Some folks think the best way to do this is to have a `case` over every input type explicitly. So there are these giant swaths of code that are just `x -> x` with more moving parts because it gives some feeling of safety.
00:08:15 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
00:08:36 <dsal> Except like, I'm not familiar with the lagging system. I don't know what to put there. So I just replaced all those things with `x -> x`.
00:09:33 <unit73e> so they rather have more code just to feel safe?
00:09:38 <dsal> Now, it *did* break a thing, but it broke the same way it would've broken if I put `MyNewThing -> MyNewThing` like all the others in the file. Since the two types are theoretically different they either need to be different types or you need a test of what's actually downstream.
00:10:30 <dsal> Yeah. Because when I add a new `A` constructor, I have to go touch that and maybe I have to know that instead of doing what all the rest of the code in that area does, I need to like, figure out who knows about downstream effects and get that person involved and make a guess as to what an equivalent value might be in the short term to make the other system happy.
00:10:58 merijn joins (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
00:11:14 <unit73e> you know, it's not that weird, but I always see the same problems, over and over again in software engineering, no matter the framework or programming language, and guys who want to do the good old thing just because that's always why we did it is one of those, even when proven to be flawed
00:11:16 <dsal> It makes sense in an `:: A -> B` type scenario. Or even in `:: A -> A` where there's a sort of "dual" value.
00:12:08 <unit73e> and then I come up with "you know, that would be easier in haskell" and the answer is "here comes the haskell salesman"
00:12:31 <dsal> My work is all Haskell, so it's usually "you know, that would be easier with lens"
00:13:05 <unit73e> I avoid lens
00:13:18 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
00:13:33 <dsal> Lots of people avoid lens. And then write a ton of code to do trivial things.
00:14:09 <geekosaur> if I wanted to write Perl, I'd write Perl
00:14:31 <unit73e> I just don't need lens most of the time, but I guess this is still a debate in haskell world
00:14:38 <unit73e> it's relatively recent
00:15:30 <dsal> You can do weird things with lens, of course, but I was just showing a coworker around a bit of code he's starting to work on which includes a test that validates some stuff found in a deeply nested set of a field in a non empty list of a type-specific field of non empty list of a sum type (which speciifes the previous type-specific field) of non empty lists of lists of nonempty lists.
00:16:17 <dsal> It's just something like `x ^.. a . folded . b . folded . _whatever . folded . someThing . folded . someField` -- writing that out by hand is possible, but… tedious to write and much harder to read.
00:17:26 <dsal> There were more fields than that, but the thing that made it complicated isn't the lens, it's this complicated data structure that I had to build out. So if the reader doesn't understand something, it's not lens' fault. :)
00:18:30 <dsal> (this particular test was "the set of all `someField` values in this data structure is the thing we expect")
00:19:47 × Tuplanolla quits (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.)
00:19:53 <unit73e> lens do make some code simpler imo, I just didn't need much yet
00:20:06 <unit73e> btw perl is in my top worst programming languages of all times I've ever used
00:20:10 <dsal> Some of it's only mildly gimmicky. Today I had a `modify' (\s -> s { field = something })` which could just be `field .= something`
00:20:30 <dsal> I had a codebase with, literally, millions of lines of code in the 90s. I've used up all my perl.
00:23:36 <jackdk> dsal: `setOf (template . someField)`?
00:24:37 <jackdk> aside: I think lens' operators are carefully chosen to create a beautiful and compact visual language that would be much worse if it was only offered as wordy function names
00:26:35 <dsal> Yeah, I'm not using `setOf`, but I could there. I'm not even aware of all of the `Of` functions. heh
00:28:54 <jackdk> Neither was I - I had to go digging around to find module `Data.Set.Lens`. I was more pointing at `template` and friends, which was very useful when I had to do deep traversals and rewrites of complex structures.
00:31:03 <dsal> Ohh. Yeah, I didn't do anything plated here.
00:32:25 × mei quits (~mei@user/mei) (Remote host closed the connection)
00:33:02 <mauke> unit73e: your opinion is wrong, of course, but what do you think are the worst aspects of perl?
00:33:15 × td_ quits (~td@i53870917.versanet.de) (Ping timeout: 255 seconds)
00:34:27 <unit73e> mauke, it's too cryptic. hard to read. I had trouble figuring out my own code written in perl. you can say yeah you didn't code simple and documented good enough, but it's hard to do that in perl.
00:34:45 mei joins (~mei@user/mei)
00:34:54 <unit73e> not that I have that much experience in perl mind you
00:35:05 td_ joins (~td@i53870917.versanet.de)
00:35:13 <unit73e> so take my wrong opinion with a grain of salt
00:36:21 <mauke> oh, by that metric Haskell is absolutely abysmal
00:36:25 <dsal> No instance `Data.Data.Data` – heh
00:36:34 <unit73e> that's the funny thing, I have zero trouble reading haskell
00:36:43 <unit73e> I have a harder time reading java
00:36:43 <c_wraith> daa
00:36:55 <c_wraith> oops, sorry. failure to operate my keyboard
00:37:31 <unit73e> much harder time reading java... and then I ask my minions to write javadoc and they only get why after trying to read their own code...
00:38:08 mizlan joins (~mizlan@131.179.76.137)
00:41:35 <dsal> Yeah, I can't read java anymore.
00:41:40 × Lears quits (~Leary]@user/Leary/x-0910699) (Remote host closed the connection)
00:42:23 [Leary] joins (~Leary]@user/Leary/x-0910699)
00:42:52 <geekosaur> I've been writing and reading Perl since the first public release. I've seen some pretty abysmal Perl code, true
00:43:31 × Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz)
00:44:11 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 246 seconds)
00:45:14 × merijn quits (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds)
00:45:31 <mauke> the thing is, I have no trouble "reading" Perl on a basic level, statement by statement, expression by expression
00:46:22 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
00:46:22 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
00:46:22 wroathe joins (~wroathe@user/wroathe)
00:46:44 × jmorris quits (uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
00:47:17 <mauke> the point where I may have problems is figuring out the bigger picture of what the code is doing
00:47:29 <mauke> but that's not really language dependent
00:48:21 × wombat8756 quits (~wombat875@2600:4041:5bea:f800:da64:71f6:cfa2:558) (Quit: WeeChat 3.6)
00:48:37 <apache2> sometimes perl programmers document their perl, then it's not so bad.
00:48:47 <mauke> that's why "you can say yeah you didn't code simple and documented good enough" is so unexpected to me
00:49:22 <mauke> I don't need documentation at the single statement level; that's not helpful
00:49:29 <apache2> I think the scalar reference stuff is hard to get used to
00:49:42 <apache2> but that's because I'm not used to it anymore, I used to be able to follow pretty well.
00:50:07 <mauke> eh, that part should be obvious to any C programmer :-)
00:51:58 <unit73e> experience does make a lot of difference. in haskell I can easily understand what I wrote or others wrote because it's usually short code. java is too verbose. perl to me is very cryptic and I feel like I would have to get used to it (it's easy to learn though).
00:52:24 <unit73e> and javascript I facepalm more than code
00:52:45 <apache2> mauke: sure, PHP is also easy if you're a C programmer and you go internalize the Zen engine thing
00:53:10 <mauke> I would disagree with that
00:54:00 <unit73e> python is my prefered I don't care if it's good code or not language
00:54:51 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 252 seconds)
00:55:20 <mauke> my point is that Perl's data model is based on how C does data structures
00:55:27 <mauke> it has nothing to do with implementation details
00:55:35 <apache2> so is PHP's?
00:55:42 <apache2> they just took the scenic route
00:55:51 <apache2> it's all expressible in C
00:56:16 <mauke> I don't think it is expressible in C, short of writing a custom interpreter
00:56:20 fanatichd joins (fanatichd@cpc76960-warw17-2-0-cust137.3-2.cable.virginm.net)
00:58:10 <apache2> I just think the combination of pointer types and heteregenous container types and dynamic typing makes for a confusing experience, especially if you're not fluent to the point where you've memorized all the weird symbols
00:58:25 jmdaemon joins (~jmdaemon@user/jmdaemon)
00:58:51 × Guest75 quits (~Guest75@178.141.149.12) (Quit: Client closed)
00:59:10 <mauke> PHP lets you put (dynamic) arrays in arrays, it treats arrays as value types (so copying an array of arrays makes recursive copies of everything), and it considers "arrays" to be finite maps that can be indexed by strings
00:59:15 <mauke> none of that is a C thing
00:59:16 × fanatichd quits (fanatichd@cpc76960-warw17-2-0-cust137.3-2.cable.virginm.net) (K-Lined)
00:59:49 <apache2> it also makes it harder to see what's going on when you don't have a clear overview of which parameters (or how many, even) a function takes
01:00:37 <apache2> all of which you can arguable emulate in C, it's just not what good C looks like
01:00:42 Guest75 joins (~Guest75@178.141.149.12)
01:00:47 <apache2> arguably*
01:02:23 <apache2> mauke: heh yeah, php arrays are a thing of beauty. the "last in, last out" iteration order thing is also pretty amusing
01:02:47 <mauke> on the other hand, consider ideas like: data structures are built out of pointers. (de)referencing is an explicit operation. there is no such thing as an "array value" (use a pointer instead).
01:03:03 <mauke> pointers are first-class values
01:03:17 <mauke> these are things that Perl and C have in common
01:03:24 × mizlan quits (~mizlan@131.179.76.137) (Ping timeout: 260 seconds)
01:04:32 <apache2> named function parameters would have gone a long way
01:05:00 <geekosaur> hashes emulate them fairly well though
01:05:08 <mauke> do you mean stuff like sub foo($x, $y, $z) { ... }?
01:05:18 <mauke> i.e. formal parameter lists?
01:05:33 <geekosaur> unless you mean that
01:08:50 <mauke> because I've been using those in perl for 10 years
01:12:04 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:13:12 <yushyin> i used to use a more fancy variant of parameter lists with the help of a module, written by mauke ;)
01:13:13 barzo joins (~hd@31.223.41.44)
01:16:22 <mauke> :-D
01:18:12 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:18:56 mizlan joins (~mizlan@2607:f010:2e9:21:d18b:842e:d3ec:9398)
01:20:07 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 252 seconds)
01:22:53 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
01:28:13 × xff0x_ quits (~xff0x@2405:6580:b080:900:ece5:bb89:923a:51c8) (Ping timeout: 252 seconds)
01:36:54 × zeenk quits (~zeenk@2a02:2f04:a014:8700::7fe) (Quit: Konversation terminated!)
01:39:15 jmdaemon joins (~jmdaemon@user/jmdaemon)
01:44:48 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Quit: ZNC 1.8.2 - https://znc.in)
01:49:59 × son0p quits (~ff@181.136.122.143) (Ping timeout: 246 seconds)
01:52:27 × mizlan quits (~mizlan@2607:f010:2e9:21:d18b:842e:d3ec:9398) (Ping timeout: 255 seconds)
02:00:54 × finsternis quits (~X@23.226.237.192) (Read error: Connection reset by peer)
02:07:55 × mei quits (~mei@user/mei) (Ping timeout: 260 seconds)
02:11:56 mei joins (~mei@user/mei)
02:14:40 mizlan joins (~mizlan@2607:f010:2a7:1005:f921:fb99:8d3a:9d1)
02:14:41 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
02:15:44 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds)
02:24:59 <apache2> mauke: oh, yeah, that is exactly what I meant
02:25:13 <apache2> :o learn something every day
02:33:32 × mizlan quits (~mizlan@2607:f010:2a7:1005:f921:fb99:8d3a:9d1) (Quit: mizlan)
02:43:39 merijn joins (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
02:44:35 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 264 seconds)
02:48:25 razetime joins (~Thunderbi@117.193.1.37)
02:48:27 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
02:49:58 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
02:55:35 × mcglk quits (~mcglk@2601:600:9f7f:e300:4cfa:364e:e1e4:69ad) (Quit: (zzz))
02:55:41 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
03:05:54 mcglk joins (~mcglk@2601:600:9f7f:e300:4cfa:364e:e1e4:69ad)
03:06:19 × unit73e quits (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) (Ping timeout: 248 seconds)
03:08:26 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5dd6:a35b:a6fd:3837)
03:11:10 × mcglk quits (~mcglk@2601:600:9f7f:e300:4cfa:364e:e1e4:69ad) (Quit: (zzz))
03:15:22 mcglk joins (~mcglk@2601:600:9f7f:e300:4cfa:364e:e1e4:69ad)
03:15:23 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 248 seconds)
03:15:38 hueso joins (~root@user/hueso)
03:16:10 × merijn quits (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds)
03:16:45 <mauke> apache2: yeah, those have been available (albeit as "experimental") since 5.20 and as a normal feature since 5.36.
03:18:18 harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
03:25:56 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
03:28:31 bilegeek joins (~bilegeek@2600:1008:b018:3e3e:3230:f753:2573:58ce)
03:28:45 × mcglk quits (~mcglk@2601:600:9f7f:e300:4cfa:364e:e1e4:69ad) (Quit: (zzz))
03:30:05 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
03:34:45 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 256 seconds)
03:45:48 × Guest75 quits (~Guest75@178.141.149.12) (Ping timeout: 260 seconds)
03:47:54 × td_ quits (~td@i53870917.versanet.de) (Ping timeout: 260 seconds)
03:48:38 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds)
03:49:14 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Read error: Connection reset by peer)
03:49:24 td_ joins (~td@i53870930.versanet.de)
03:50:26 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
03:51:23 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
03:54:40 × razetime quits (~Thunderbi@117.193.1.37) (Ping timeout: 252 seconds)
03:56:17 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
03:57:18 azimut joins (~azimut@gateway/tor-sasl/azimut)
04:02:54 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
04:03:22 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
04:03:46 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
04:08:19 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 260 seconds)
04:10:21 × oldfashionedcow quits (~Rahul_San@user/oldfashionedcow) (Quit: WeeChat 3.8)
04:13:20 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
04:13:52 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
04:16:40 × mikoto-chan quits (~mikoto-ch@2001:999:784:4cb8:d8e9:51ca:a70:b0e5) (Quit: WeeChat 3.6)
04:18:43 × jero98772 quits (~jero98772@2800:484:1d80:d8ce:3490:26c5:1782:da8c) (Remote host closed the connection)
04:24:02 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
04:30:29 mcglk joins (~mcglk@2601:600:9f7f:e300:9190:e0f8:c28e:3eed)
04:38:04 × heartburn quits (~gass@2a00:d880:3:1::b1e4:b241) (Ping timeout: 252 seconds)
04:39:08 razetime joins (~Thunderbi@117.193.1.37)
04:40:58 heartburn joins (~gass@2a00:d880:3:1::b1e4:b241)
04:49:47 × harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
04:54:16 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
04:58:36 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 252 seconds)
05:01:31 jmdaemon joins (~jmdaemon@user/jmdaemon)
05:03:23 elevenkb joins (~elevenkb@105.184.125.233)
05:05:52 Guest75 joins (~Guest75@178.141.149.12)
05:09:57 × thegeekinside quits (~thegeekin@189.180.66.244) (Ping timeout: 256 seconds)
05:13:43 merijn joins (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
05:17:24 ddellacosta joins (~ddellacos@143.244.47.100)
05:23:29 jinsun__ joins (~jinsun@user/jinsun)
05:23:29 jinsun is now known as Guest5124
05:23:29 jinsun__ is now known as jinsun
05:26:15 × Guest5124 quits (~jinsun@user/jinsun) (Ping timeout: 260 seconds)
05:26:16 × Vajb quits (~Vajb@2001:999:78d:d7:457c:7773:573e:6903) (Read error: Connection reset by peer)
05:26:31 × CiaoSen quits (~Jura@p200300c9572d4e002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
05:27:37 Vajb joins (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi)
05:28:38 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
05:32:54 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 260 seconds)
05:45:53 × merijn quits (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds)
05:47:35 merijn joins (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
05:53:39 × merijn quits (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
05:58:14 × Vajb quits (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer)
05:59:46 Vajb joins (~Vajb@2001:999:78d:d7:457c:7773:573e:6903)
06:00:22 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
06:04:36 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 252 seconds)
06:11:55 × johnw_ quits (~johnw@2600:1700:cf00:db0:ed68:6ce8:98a1:2c83) (Quit: ZNC - http://znc.in)
06:12:18 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
06:20:05 × Guest75 quits (~Guest75@178.141.149.12) (Quit: Client closed)
06:21:46 Guest75 joins (~Guest75@178.141.149.12)
06:25:20 × bilegeek quits (~bilegeek@2600:1008:b018:3e3e:3230:f753:2573:58ce) (Quit: Leaving)
06:26:27 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
06:28:27 × perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Ping timeout: 248 seconds)
06:29:41 perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
06:32:09 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:33:51 mechap2 joins (~mechap@user/mechap)
06:34:57 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 256 seconds)
06:36:35 × mechap1 quits (~mechap@user/mechap) (Ping timeout: 246 seconds)
06:37:31 × mcglk quits (~mcglk@2601:600:9f7f:e300:9190:e0f8:c28e:3eed) (Ping timeout: 260 seconds)
06:39:16 mcglk joins (~mcglk@2601:600:9f7f:e300:c97:c704:43b8:7bc7)
06:43:25 mcglk_ joins (~mcglk@2601:600:9f7f:e300:997b:556a:42cb:8050)
06:47:07 × mcglk quits (~mcglk@2601:600:9f7f:e300:c97:c704:43b8:7bc7) (Ping timeout: 248 seconds)
06:49:03 × haritz quits (~hrtz@user/haritz) (Ping timeout: 265 seconds)
07:10:45 zeenk joins (~zeenk@2a02:2f04:a014:8700::7fe)
07:11:03 lortabac joins (~lortabac@2a01:e0a:541:b8f0:2283:b41:5476:a828)
07:12:20 × sloorush quits (~sloorush@52.187.184.81) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
07:16:42 sloorush joins (~sloorush@52.187.184.81)
07:18:38 × shriekingnoise quits (~shrieking@186.137.175.87) (Ping timeout: 246 seconds)
07:23:12 × mei quits (~mei@user/mei) (Ping timeout: 255 seconds)
07:25:15 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:1128:5091:e8f3:b17a) (Read error: Connection reset by peer)
07:28:40 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:33:29 opticblast joins (~Thunderbi@secure-165.caltech.edu)
07:41:39 × califax quits (~califax@user/califx) (Remote host closed the connection)
07:44:53 × Vajb quits (~Vajb@2001:999:78d:d7:457c:7773:573e:6903) (Ping timeout: 246 seconds)
07:45:03 califax joins (~califax@user/califx)
07:45:20 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds)
07:45:52 × sloorush quits (~sloorush@52.187.184.81) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
07:46:15 × carbolymer quits (~carbolyme@dropacid.net) (Remote host closed the connection)
07:46:40 sloorush joins (~sloorush@52.187.184.81)
07:47:30 carbolymer joins (~carbolyme@dropacid.net)
07:47:37 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
07:50:05 Vajb joins (~Vajb@2001:999:585:8d90:8bc4:5564:7d08:18a)
07:52:06 merijn joins (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
07:53:32 × sloorush quits (~sloorush@52.187.184.81) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
07:53:52 sloorush joins (~sloorush@52.187.184.81)
08:00:05 mc47 joins (~mc47@xmonad/TheMC47)
08:00:43 mei joins (~mei@user/mei)
08:13:27 mmhat joins (~mmh@p200300f1c7123c88ee086bfffe095315.dip0.t-ipconnect.de)
08:18:08 × ubert quits (~Thunderbi@p548c9ce5.dip0.t-ipconnect.de) (Quit: ubert)
08:18:23 ubert joins (~Thunderbi@p200300ecdf264eae508459a626a67f13.dip0.t-ipconnect.de)
08:20:35 Guest3777 joins (~Guest37@110.235.233.57)
08:22:37 × mmhat quits (~mmh@p200300f1c7123c88ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.8)
08:24:12 freeside joins (~mengwong@122.11.214.172)
08:24:15 Guest3777 is now known as Enigmage
08:26:00 × Enigmage quits (~Guest37@110.235.233.57) (Quit: Client closed)
08:28:46 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:29:35 × anthezium quits (~ted@75.164.81.158) (Ping timeout: 264 seconds)
08:35:59 fserucas joins (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
08:36:11 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
08:42:18 acidjnk_new joins (~acidjnk@p200300d6e715c41591073076158b9e8c.dip0.t-ipconnect.de)
08:43:46 nschoe joins (~q@141.101.51.197)
08:46:02 anthezium joins (~ted@97-120-70-39.ptld.qwest.net)
08:48:42 elevenkb63 joins (~elevenkb@105.184.125.233)
08:48:53 × elevenkb63 quits (~elevenkb@105.184.125.233) (Write error: Broken pipe)
08:49:38 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5dd6:a35b:a6fd:3837) (Remote host closed the connection)
08:49:43 Major_Biscuit joins (~MajorBisc@145.15.244.234)
08:57:31 × Vajb quits (~Vajb@2001:999:585:8d90:8bc4:5564:7d08:18a) (Ping timeout: 260 seconds)
08:58:14 × jonathanx quits (~jonathan@h-178-174-176-109.a357.priv.bahnhof.se) (Ping timeout: 260 seconds)
08:59:13 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:2283:b41:5476:a828) (Quit: WeeChat 2.8)
08:59:30 × carbolymer quits (~carbolyme@dropacid.net) (Quit: No Ping reply in 180 seconds.)
08:59:49 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
09:00:05 michalz joins (~michalz@185.246.207.200)
09:00:10 Vajb joins (~Vajb@2001:999:505:948d:ba9e:dbca:9a0a:eac6)
09:01:12 carbolymer joins (~carbolyme@dropacid.net)
09:04:17 × ft quits (~ft@p4fc2a257.dip0.t-ipconnect.de) (Quit: leaving)
09:04:18 Kuttenbrunzer joins (~Kuttenbru@2a02:8108:8b80:1d48::f617)
09:07:54 boxscape_ joins (~boxscape_@213.52.37.155)
09:08:03 × Major_Biscuit quits (~MajorBisc@145.15.244.234) (Ping timeout: 255 seconds)
09:10:25 <Inst__> gah
09:10:29 <Inst__> i had this code working last night
09:10:34 Inst__ is now known as Inst
09:11:31 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds)
09:11:52 sammelweis joins (~quassel@mobile-166-170-23-171.mycingular.net)
09:13:07 × waleee quits (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Ping timeout: 252 seconds)
09:17:06 coot joins (~coot@213.134.171.3)
09:22:13 avicenzi joins (~avicenzi@2a00:ca8:a1f:b004::c32)
09:47:40 × freeside quits (~mengwong@122.11.214.172) (Read error: Connection reset by peer)
09:48:05 × acidjnk_new quits (~acidjnk@p200300d6e715c41591073076158b9e8c.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
09:48:56 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
09:50:06 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5dd6:a35b:a6fd:3837)
09:50:12 kenran joins (~user@user/kenran)
09:50:38 lortabac joins (~lortabac@2a01:e0a:541:b8f0:2283:b41:5476:a828)
09:51:45 freeside joins (~mengwong@122.11.214.172)
09:52:55 × razetime quits (~Thunderbi@117.193.1.37) (Remote host closed the connection)
09:53:53 acidjnk_new joins (~acidjnk@p200300d6e715c415694b102f8bcbc4be.dip0.t-ipconnect.de)
09:54:35 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5dd6:a35b:a6fd:3837) (Ping timeout: 260 seconds)
10:00:10 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
10:00:18 × elevenkb quits (~elevenkb@105.184.125.233) (Ping timeout: 260 seconds)
10:03:17 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
10:05:55 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds)
10:18:23 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
10:19:28 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
10:20:02 turlando joins (~turlando@user/turlando)
10:24:34 ubert1 joins (~Thunderbi@2a02:8109:abc0:6434:dc1d:737c:6633:78c1)
10:27:50 × the_proffesor quits (~theproffe@user/theproffesor) (Ping timeout: 260 seconds)
10:27:52 theproffesor joins (~theproffe@user/theproffesor)
10:32:44 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds)
10:34:04 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
10:36:38 chele joins (~chele@user/chele)
10:37:02 × sammelweis quits (~quassel@mobile-166-170-23-171.mycingular.net) (Ping timeout: 246 seconds)
10:37:25 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
10:38:06 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
10:41:25 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
10:44:05 × fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Ping timeout: 246 seconds)
10:51:06 × troydm quits (~troydm@user/troydm) (Ping timeout: 255 seconds)
10:56:46 elevenkb joins (~elevenkb@105.184.125.233)
10:58:10 gurkenglas joins (~gurkengla@dynamic-046-114-177-155.46.114.pool.telefonica.de)
10:58:24 × elevenkb quits (~elevenkb@105.184.125.233) (Client Quit)
11:00:23 × turlando quits (~turlando@user/turlando) (Read error: Connection reset by peer)
11:00:52 fserucas joins (~fserucas@2001:8a0:6d00:2500:4717:7619:c4e9:3aa2)
11:01:39 × gurkenglas quits (~gurkengla@dynamic-046-114-177-155.46.114.pool.telefonica.de) (*.net *.split)
11:01:51 gurkenglas joins (~gurkengla@dynamic-046-114-177-155.46.114.pool.telefonica.de)
11:02:03 × gurkenglas quits (~gurkengla@dynamic-046-114-177-155.46.114.pool.telefonica.de) (Max SendQ exceeded)
11:03:09 gurkenglas joins (~gurkengla@dynamic-046-114-177-155.46.114.pool.telefonica.de)
11:05:36 × michalz quits (~michalz@185.246.207.200) (Read error: Connection reset by peer)
11:05:54 michalz joins (~michalz@185.246.207.193)
11:06:05 × boxscape_ quits (~boxscape_@213.52.37.155) (Ping timeout: 246 seconds)
11:06:41 xff0x joins (~xff0x@2405:6580:b080:900:871a:e40b:4f89:8da5)
11:08:11 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
11:08:24 jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
11:12:10 oldfashionedcow joins (~Rahul_San@user/oldfashionedcow)
11:12:22 turlando joins (~turlando@user/turlando)
11:16:22 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
11:17:17 × turlando quits (~turlando@user/turlando) ()
11:17:31 × merijn quits (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
11:17:34 CiaoSen joins (~Jura@p200300c9572d4e002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
11:20:22 turlando joins (~turlando@user/turlando)
11:22:58 Tomx joins (~Tomx@88-119-11-136.static.zebra.lt)
11:26:13 × cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds)
11:27:55 × CiaoSen quits (~Jura@p200300c9572d4e002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
11:27:55 × nschoe quits (~q@141.101.51.197) (Ping timeout: 260 seconds)
11:31:04 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 260 seconds)
11:32:33 × Tomx quits (~Tomx@88-119-11-136.static.zebra.lt) (Quit: Client closed)
11:33:10 teo joins (~teo@user/teo)
11:34:42 × opticblast quits (~Thunderbi@secure-165.caltech.edu) (Quit: opticblast)
11:34:54 opticblast joins (~Thunderbi@secure-165.caltech.edu)
11:39:00 × freeside quits (~mengwong@122.11.214.172) (Read error: Connection reset by peer)
11:45:29 × acidjnk_new quits (~acidjnk@p200300d6e715c415694b102f8bcbc4be.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
11:45:53 merijn joins (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
11:45:54 cheater joins (~Username@user/cheater)
11:57:41 × mei quits (~mei@user/mei) (Quit: mei)
11:59:36 boxscape_ joins (~boxscape_@213.52.37.155)
12:02:23 CiaoSen joins (~Jura@p200300c9572d4e002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
12:05:26 × Kuttenbrunzer quits (~Kuttenbru@2a02:8108:8b80:1d48::f617) (Quit: Where is it)
12:08:14 mc47 joins (~mc47@xmonad/TheMC47)
12:14:09 freeside joins (~mengwong@103.252.202.170)
12:18:39 × merijn quits (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
12:19:38 × CiaoSen quits (~Jura@p200300c9572d4e002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
12:20:48 × _mokee_ quits (~mokee@37.228.215.106) (Remote host closed the connection)
12:25:04 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
12:25:51 pja_ is now known as pja
12:28:34 mei joins (~mei@user/mei)
12:37:23 × kenran quits (~user@user/kenran) (Remote host closed the connection)
12:45:11 × gurkenglas quits (~gurkengla@dynamic-046-114-177-155.46.114.pool.telefonica.de) (Ping timeout: 264 seconds)
12:45:24 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
12:48:11 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds)
12:48:23 pragma- joins (~chaos@user/pragmatic-chaos)
12:49:03 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
12:53:00 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
13:05:04 × pragma- quits (~chaos@user/pragmatic-chaos) (Quit: Bye!)
13:05:06 × coot quits (~coot@213.134.171.3) (Quit: coot)
13:05:36 pragma- joins (~chaos@user/pragmatic-chaos)
13:07:48 acidjnk_new joins (~acidjnk@p200300d6e715c415694b102f8bcbc4be.dip0.t-ipconnect.de)
13:10:52 segfaultfizzbuzz joins (~segfaultf@172.58.122.111)
13:13:36 rustisafungus joins (~segfaultf@108.211.201.53)
13:14:56 × segfaultfizzbuzz quits (~segfaultf@172.58.122.111) (Ping timeout: 246 seconds)
13:17:01 nschoe joins (~q@141.101.51.197)
13:17:23 gurkenglas joins (~gurkengla@dynamic-046-114-177-155.46.114.pool.telefonica.de)
13:22:42 thyriaen joins (~thyriaen@2a01:aea0:dd4:4fa4:6245:cbff:fe9f:48b1)
13:23:52 × nschoe quits (~q@141.101.51.197) (Quit: Switching off)
13:25:11 haritz joins (~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220)
13:25:11 × haritz quits (~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) (Changing host)
13:25:11 haritz joins (~hrtz@user/haritz)
13:29:16 Philonous_ is now known as Philonous
13:30:31 × gurkenglas quits (~gurkengla@dynamic-046-114-177-155.46.114.pool.telefonica.de) (Ping timeout: 252 seconds)
13:40:12 kuttenbrunzer joins (~kuttenbru@2a02:8108:8b80:1d48:e8b7:ebaf:ed8d:6e4b)
13:40:30 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
13:41:11 use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:4828:8948:882f:20e0)
13:46:03 Shaeto joins (~Shaeto@94.25.234.173)
13:48:07 × rustisafungus quits (~segfaultf@108.211.201.53) (Ping timeout: 252 seconds)
13:48:52 razetime joins (~Thunderbi@117.193.1.37)
13:51:25 nschoe joins (~q@141.101.51.197)
13:52:53 shon joins (~shon@gateway/tor-sasl/shon)
13:53:53 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
13:56:31 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
13:59:43 cheater_ joins (~Username@user/cheater)
14:00:23 × cheater quits (~Username@user/cheater) (Ping timeout: 246 seconds)
14:00:29 cheater_ is now known as cheater
14:01:32 × razetime quits (~Thunderbi@117.193.1.37) (Quit: See You Space Cowboy)
14:01:55 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 260 seconds)
14:02:22 × acidjnk_new quits (~acidjnk@p200300d6e715c415694b102f8bcbc4be.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
14:02:37 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
14:06:36 CiaoSen joins (~Jura@p200300c9572d4e002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
14:06:49 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 252 seconds)
14:09:51 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
14:10:11 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
14:12:51 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
14:14:15 merijn joins (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
14:15:12 thegeekinside joins (~thegeekin@189.180.66.244)
14:15:33 shriekingnoise joins (~shrieking@186.137.175.87)
14:16:40 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 268 seconds)
14:17:07 akegalj joins (~akegalj@89-164-101-255.dsl.iskon.hr)
14:20:06 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
14:20:44 × CiaoSen quits (~Jura@p200300c9572d4e002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
14:21:12 CiaoSen joins (~Jura@p200300c9572d4e002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
14:25:17 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
14:25:31 <eldritchcookie[4> is there a library similar to sympy for haskell?
14:30:39 troydm joins (~troydm@user/troydm)
14:32:07 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 252 seconds)
14:33:49 <boxscape_> I suspect you'll find some proofs of concept but nothing nearly as fully featured as sympy
14:35:37 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
14:39:19 <raehik> to use the index of a constructor in some generics code, it seems I must thread it through `l:+:r` instances such that `l` returns its "total" index (after the rightmost element in its sum tree), then increment for `r`. is there a way around this? it feels clunky/slow
14:40:00 <raehik> I looked at how the binary serializing pkg does things, and it seems to take a different approach using GHC's guarantee of decently-balanced sum trees (? I think anyway)
14:40:26 <raehik> but in my case I need the actual index. do I have to do all the counting manually
14:40:46 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:2283:b41:5476:a828) (Quit: WeeChat 2.8)
14:47:39 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
14:48:37 × merijn quits (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds)
14:52:00 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
14:53:04 acidjnk_new joins (~acidjnk@p200300d6e715c415694b102f8bcbc4be.dip0.t-ipconnect.de)
14:54:33 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5dd6:a35b:a6fd:3837)
14:59:03 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5dd6:a35b:a6fd:3837) (Ping timeout: 255 seconds)
14:59:04 kurbus joins (~kurbus@user/kurbus)
15:07:16 <raehik> glguy_, does the generic deriving in cereal (and adapted by binary) work based on the assumption that GHC balances its generic sums & products rep?
15:13:25 × kuttenbrunzer quits (~kuttenbru@2a02:8108:8b80:1d48:e8b7:ebaf:ed8d:6e4b) (Quit: Leaving)
15:15:29 zer0bitz_ joins (~zer0bitz@196.244.192.58)
15:18:53 × Luj quits (~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb) (Quit: The Lounge - https://thelounge.chat)
15:19:19 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Remote host closed the connection)
15:19:41 × zer0bitz quits (~zer0bitz@2001:2003:f443:d600:a4e6:fd8f:f654:94ad) (Ping timeout: 256 seconds)
15:20:21 Luj joins (~Luj@2a01:e0a:5f9:9681:a800:fa55:60bb:e167)
15:22:56 beteigeuze joins (~Thunderbi@bl14-81-220.dsl.telepac.pt)
15:25:32 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
15:26:27 L29Ah joins (~L29Ah@wikipedia/L29Ah)
15:33:17 jmdaemon joins (~jmdaemon@user/jmdaemon)
15:34:14 Sgeo joins (~Sgeo@user/sgeo)
15:35:48 × Luj quits (~Luj@2a01:e0a:5f9:9681:a800:fa55:60bb:e167) (Quit: The Lounge - https://thelounge.chat)
15:36:46 Luj joins (~Luj@2a01:e0a:5f9:9681:a800:fa55:60bb:e167)
15:44:35 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds)
15:48:25 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
15:48:34 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
15:52:42 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
15:53:25 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
15:54:53 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
15:57:13 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 252 seconds)
15:57:15 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Remote host closed the connection)
15:57:40 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
15:57:47 bontaq joins (~user@ool-45779fe5.dyn.optonline.net)
15:59:39 × jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 268 seconds)
16:00:12 coot joins (~coot@213.134.171.3)
16:00:45 jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
16:02:48 trev_ joins (~trev@109-252-35-99.nat.spd-mgts.ru)
16:06:05 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
16:06:57 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
16:09:13 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
16:10:14 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds)
16:11:15 ec joins (~ec@gateway/tor-sasl/ec)
16:11:45 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5dd6:a35b:a6fd:3837)
16:12:12 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
16:15:41 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 268 seconds)
16:21:41 ames joins (~amelia@offtopia/offtopian/amelia)
16:22:31 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5dd6:a35b:a6fd:3837) (Remote host closed the connection)
16:28:47 × acidjnk_new quits (~acidjnk@p200300d6e715c415694b102f8bcbc4be.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
16:31:33 freeside joins (~mengwong@103.252.202.170)
16:31:55 dunj3 joins (~dunj3@kingdread.de)
16:35:15 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
16:35:38 × oldfashionedcow quits (~Rahul_San@user/oldfashionedcow) (Quit: WeeChat 3.8)
16:40:12 jero98772 joins (~jero98772@2800:484:1d80:d8ce:3490:26c5:1782:da8c)
16:40:23 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds)
16:40:44 × hpc quits (~juzz@ip98-169-35-163.dc.dc.cox.net) (Ping timeout: 255 seconds)
16:42:24 hpc joins (~juzz@ip98-169-35-163.dc.dc.cox.net)
16:42:33 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection)
16:43:06 razetime joins (~Thunderbi@117.193.1.37)
16:43:15 L29Ah joins (~L29Ah@wikipedia/L29Ah)
16:44:40 × CiaoSen quits (~Jura@p200300c9572d4e002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
16:46:59 × hpc quits (~juzz@ip98-169-35-163.dc.dc.cox.net) (Ping timeout: 264 seconds)
16:51:35 <lyxia> raehik: it shouldn't be slow if inlining works
16:52:57 × boxscape_ quits (~boxscape_@213.52.37.155) (Ping timeout: 252 seconds)
16:53:01 <lyxia> as for making the code less awkward, you can compute the index in a separate pass, and then just pass it down in the main pass
16:53:22 <lyxia> or use generics-sop which relies on more high-level combinators
16:53:49 hpc joins (~juzz@ip98-169-35-163.dc.dc.cox.net)
16:59:51 johnw joins (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
17:02:38 <raehik> lyxia: that's true. I'm curious how the resulting code would really look (still GHC core-averse)
17:02:48 × ubert1 quits (~Thunderbi@2a02:8109:abc0:6434:dc1d:737c:6633:78c1) (Quit: ubert1)
17:04:26 <raehik> and I think you're right I could probably add another function in the generic deriver class for index. that also feels easier for GHC to optimize
17:07:47 × kurbus quits (~kurbus@user/kurbus) (Quit: Client closed)
17:15:02 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds)
17:16:21 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
17:17:12 <Jadesheit[m]> when I have a class definition like class Foo a where I can have functions like foo :: forall b. a b but how can I scope this forall to be on the class instead?
17:17:37 <Jadesheit[m]> Specifically I want to fix t a on the class scope so I can use a in functions
17:17:50 <Jadesheit[m]> * when I have a class definition like class Foo t where I can have functions like foo :: forall b. t b but how can I scope this forall to be on the class instead?
17:18:01 <Jadesheit[m]> * when I have a class definition like class Foo t where I can have functions like foo :: forall a. t a but how can I scope this forall to be on the class instead?
17:18:54 <Jadesheit[m]> (I might be using wrong terms here)
17:20:07 <geekosaur> aren't class-scoped tyvars already visible that way?
17:20:18 kurbus joins (~kurbus@user/kurbus)
17:20:31 <Jadesheit[m]> how would that work?
17:20:33 azimut joins (~azimut@gateway/tor-sasl/azimut)
17:20:43 × chele quits (~chele@user/chele) (Remote host closed the connection)
17:20:50 <geekosaur> hm, might need `ScopedTypeVariables` and explicit `forall` for them to be visible within definitions, though
17:21:10 <Jadesheit[m]> I want to write `instance Foo (Bar a)` where both the `Bar` and the `a` are independently "visible" in the class
17:21:32 <geekosaur> Jadesheit[m], a class-scoped type variable would be pretty useless if methods couldn't use it directly
17:21:56 × jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
17:21:58 <geekosaur> % :info fmap
17:21:58 <yahb2> type Functor :: (* -> *) -> Constraint ; class Functor f where ; fmap :: (a -> b) -> f a -> f b ; ... ; -- Defined in ‘GHC.Base’
17:22:02 <Jadesheit[m]> how does it work on the syntax level?
17:22:31 <geekosaur> should just work
17:22:33 <Jadesheit[m]> yeah but here the a and b are local to the method right
17:22:43 <tomsmeding> and f is class-global, yes
17:22:54 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Ping timeout: 268 seconds)
17:23:01 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5dd6:a35b:a6fd:3837)
17:23:20 <Jadesheit[m]> I want the a to be class-global too
17:23:21 <Jadesheit[m]> * I want the a to be class-global too in my specific case
17:23:23 <Jadesheit[m]> I think
17:23:39 <geekosaur> if it';s named in the class header then it should be
17:24:11 × avicenzi quits (~avicenzi@2a00:ca8:a1f:b004::c32) (Ping timeout: 264 seconds)
17:25:04 <Jadesheit[m]> but how would you do that
17:25:12 <geekosaur> as I said earlierm it;d be useless if it weren't
17:25:17 <Jadesheit[m]> class Foo (Bar a) where
17:25:20 <Jadesheit[m]> does that work?
17:25:25 <tomsmeding> then 'a' will be visible
17:25:26 <geekosaur> why do you think you need to do something special?
17:25:27 <geekosaur> \
17:25:53 <geekosaur> classes would be useless if they didn't already work that way
17:26:28 use-value1 joins (~Thunderbi@2a00:23c6:8a03:2f01:6c1e:f171:b1ec:34de)
17:26:42 <Jadesheit[m]> it doesn't work if the inner one is a type variable as well
17:26:50 <Jadesheit[m]> class Foo (a b) where
17:27:06 jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
17:27:34 <tomsmeding> wait that is nonsense anyhow
17:27:41 <tomsmeding> don't you mean 'instance Foo (a b) where'?
17:28:08 <tomsmeding> a class declaration always looks like 'class Foo a b c d where', the a/b/c/d cannot be anything but type variables
17:28:17 <tomsmeding> (well, technically they can also have kind signatures, but let's not get into that)
17:28:21 × remedan quits (~remedan@ip-89-177-74-251.bb.vodafone.cz) (Quit: Bye!)
17:28:26 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5dd6:a35b:a6fd:3837) (Ping timeout: 252 seconds)
17:28:31 <Jadesheit[m]> that's what I'm trying
17:28:53 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:4828:8948:882f:20e0) (Ping timeout: 256 seconds)
17:28:53 use-value1 is now known as use-value
17:29:09 <Jadesheit[m]> I know kind signature stuff a little
17:29:11 <Jadesheit[m]> but I want the specific kind to be scoped to the class
17:29:32 × barzo quits (~hd@31.223.41.44) (Ping timeout: 252 seconds)
17:29:56 <tomsmeding> Jadesheit[m]: do you want something like 'class Foo (a :: Type -> Type) where'?
17:30:05 Jadesheit[m] sent a hs code block: https://libera.ems.host/_matrix/media/v3/download/libera.chat/ecf3505f3cec2a71a66c3cb62a2fc4f13a7a8dd3
17:30:06 <Jadesheit[m]> `
17:30:24 <tomsmeding> that's impossible
17:30:35 <Jadesheit[m]> tomsmeding: yes but with the specific kind fixed and scoped to the class
17:30:38 <Jadesheit[m]> I know+
17:30:43 <tomsmeding> this is unrelated to kinds
17:30:47 econo joins (uid147250@user/econo)
17:30:51 <Jadesheit[m]> tomsmeding: hm ok
17:31:01 <tomsmeding> what's the purpose?
17:31:14 <tomsmeding> there is a workaround I can think of, but it's ugly, and there might be an X-Y problem here
17:31:58 × nschoe quits (~q@141.101.51.197) (Quit: Switching off)
17:32:02 <Jadesheit[m]> I want to have a general class for a Tree... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/118d932ff39bc767e2efc2286ab83219cb0d436d>)
17:32:27 merijn joins (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
17:32:38 <Jadesheit[m]> might just be stupid lmao
17:32:54 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5dd6:a35b:a6fd:3837)
17:32:55 <Jadesheit[m]> s/data/value/
17:33:48 <tomsmeding> Jadesheit[m]: make it just this: class Tree t a where { data :: a ; children :: [t a] }
17:34:08 <Jadesheit[m]> ohhhhhhhhhhhhhh
17:34:20 <tomsmeding> works
17:35:39 <c_wraith> uh... that definition is sketchy
17:35:56 <c_wraith> I mean, you can make it work with -XTypeApplications
17:36:01 <tomsmeding> fair point
17:36:08 <c_wraith> but it's really awkward to not have data depend on t
17:36:20 <tomsmeding> class Tree t a where { data :: t a -> a ; children :: t a -> [t a] }
17:36:26 <tomsmeding> this was probably the intent
17:36:32 <tomsmeding> though actually
17:36:34 <c_wraith> ah, true. that works better
17:36:37 × razetime quits (~Thunderbi@117.193.1.37) (Remote host closed the connection)
17:36:41 <tomsmeding> class Tree t a where { data :: t -> a ; children :: t -> [t] }
17:36:47 <tomsmeding> no reason to force 'a' to be a parameter of 't'
17:37:01 <c_wraith> eh, that goes back to needing TypeApplications
17:37:12 <tomsmeding> class Tree t a | t -> a
17:37:13 Jadesheit[m] uploaded an image: (119KiB) < https://libera.ems.host/_matrix/media/v3/download/matrix.org/vzztGaekuHBTFKPWXtIDhkCu/image.png >
17:37:14 <Jadesheit[m]> hm
17:37:20 <c_wraith> But even before that, my big question is "why is this a class?"
17:37:28 <tomsmeding> Jadesheit[m]: yeah that's what c_wraith spotted
17:38:02 acidjnk_new joins (~acidjnk@p200300d6e715c4378995b0b991253537.dip0.t-ipconnect.de)
17:40:30 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
17:41:05 azimut joins (~azimut@gateway/tor-sasl/azimut)
17:42:24 × sm quits (~sm@plaintextaccounting/sm) (Excess Flood)
17:42:47 sm joins (~sm@plaintextaccounting/sm)
17:43:07 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
17:43:18 <tomsmeding> Jadesheit[m]: another option: class HasValues t a where value :: t -> a ; class HasChildren t where children :: t -> [t]
17:44:09 <geekosaur> I'm with c_wraith though: are you sure this isn't handled better by a `data`?
17:44:23 <geekosaur> This isn't an OOP language
17:47:08 <Jadesheit[m]> The idea was to write functions that act on this "general" tree
17:48:16 <c_wraith> The best questions to start with when you are thinking about creating a class are: 1) How many different instances am I going to have? 2) What kind of code will I be writing that treats all of those instances the same?
17:48:25 <Jadesheit[m]> otherwise you'd need to have conversion methods from and to other tree types
17:49:06 infinity0_ joins (~infinity0@pwned.gg)
17:49:07 × infinity0 quits (~infinity0@pwned.gg) (Killed (mercury.libera.chat (Nickname regained by services)))
17:49:07 infinity0_ is now known as infinity0
17:54:25 cheater_ joins (~Username@user/cheater)
17:57:20 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
17:57:26 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
17:57:31 cheater_ is now known as cheater
17:57:35 × teo quits (~teo@user/teo) (Ping timeout: 260 seconds)
17:57:47 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds)
17:58:03 × fserucas quits (~fserucas@2001:8a0:6d00:2500:4717:7619:c4e9:3aa2) (Remote host closed the connection)
17:58:21 fserucas joins (~fserucas@2001:8a0:6d00:2500:4717:7619:c4e9:3aa2)
18:00:23 azimut joins (~azimut@gateway/tor-sasl/azimut)
18:01:09 × fserucas quits (~fserucas@2001:8a0:6d00:2500:4717:7619:c4e9:3aa2) (Remote host closed the connection)
18:01:27 fserucas joins (~fserucas@2001:8a0:6d00:2500:4717:7619:c4e9:3aa2)
18:01:50 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
18:05:19 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
18:06:25 <freeside> I need a bit of intuition, please. Why does [1,2] <|> [3] ==> [1,2,3] and not [1,2]?
18:06:35 × fserucas quits (~fserucas@2001:8a0:6d00:2500:4717:7619:c4e9:3aa2) (Ping timeout: 248 seconds)
18:07:46 <[exa]> freeside: the list functor/alternative/monad instances kinda represent "all possible results of a computation"
18:08:20 <freeside> I was expecting [] <|> [3] to be analogous to Nothing <|> Just 3
18:08:28 <[exa]> so if you have a computation with all possible results [1,2] and another with all possible results [3], all possible results of either one are literally [1,2,3]
18:09:11 <[exa]> > (Nothing <|> Just 3, [] <|> [3])
18:09:13 <lambdabot> (Just 3,[3])
18:09:39 <freeside> > (Just 1 <|> Just 2, [1] <|> [2])
18:09:41 <lambdabot> (Just 1,[1,2])
18:09:44 × coot quits (~coot@213.134.171.3) (Quit: coot)
18:10:11 <[exa]> yeah, there's the difference, Just can only store 1 result and the semantics is that it's the "leftmost" one
18:10:12 <freeside> is there some idiom which is semantically closer to a "if not null x then x else y"
18:10:34 <[exa]> :t fromJust
18:10:36 <lambdabot> Maybe a -> a
18:10:36 <freeside> i seem to be asking for Perl's // operator lol
18:10:50 <[exa]> oh no that one just explodes on Nothing
18:11:21 <[exa]> > (fromMaybe 3 Nothing, fromMaybe 3 (Just 5))
18:11:23 <lambdabot> (3,5)
18:11:27 <[exa]> that's the one.
18:11:33 <geekosaur> > (First [1,2] <|> First [3])
18:11:35 <lambdabot> error:
18:11:35 <lambdabot> • Couldn't match expected type ‘Maybe a’ with actual type ‘[a0]’
18:11:35 <lambdabot> • In the first argument of ‘First’, namely ‘[1, 2]’
18:11:41 <geekosaur> hm
18:11:57 <geekosaur> thought First was general for monoids
18:13:29 <[exa]> `First a` is a semigroup on itself, without requiring Semigroup a, right?
18:14:44 × opticblast quits (~Thunderbi@secure-165.caltech.edu) (Ping timeout: 260 seconds)
18:14:47 × Shaeto quits (~Shaeto@94.25.234.173) (Quit: WeeChat 3.8)
18:14:56 <[exa]> freeside: btw it's pretty common to just `head` that list after the computation is done and get whatever first option that gets through :D
18:15:23 Tuplanolla joins (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi)
18:16:00 <geekosaur> I think they want [1.2], not 1
18:16:13 <geekosaur> er, [1,2]
18:17:30 <freeside> yeah, i want to return all of the lhs if it's not null
18:17:37 × acidjnk_new quits (~acidjnk@p200300d6e715c4378995b0b991253537.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
18:18:09 remedan joins (~remedan@ip-89-177-74-251.bb.vodafone.cz)
18:18:55 <freeside> not seeing anything in Foldable, but boy, Control.Bool has some wacky stuff up its sleeve
18:19:46 <geekosaur> > [[1,2]] <|> [[3]]
18:19:48 <lambdabot> [[1,2],[3]]
18:19:52 × infinity0 quits (~infinity0@pwned.gg) (Remote host closed the connection)
18:19:55 <monochrom> Control.Bool and Data.Machine :)
18:20:58 × shon quits (~shon@gateway/tor-sasl/shon) (Quit: WeeChat 3.8)
18:24:03 infinity0 joins (~infinity0@pwned.gg)
18:26:32 <freeside> call me crazy, but i have just defined x <|||> y = if not (null x) then x else y :: Foldable t => t a -> t a -> t a
18:27:03 <freeside> I would have done <||> but that was taken by Text.Parser.Permutation
18:28:33 <monochrom> This is related to Prolog's cut. :)
18:29:08 <freeside> oh dear, it is.
18:29:18 <freeside> how naf of me
18:29:48 <monochrom> It is also worth considering to: newtype CutList a = CutList [a], write its Alternative instance to do <|||>
18:30:31 <freeside> (brief moment of existential panic wondering if i should go look at how Curry thinks about this)
18:31:08 × tv quits (~tv@user/tv) (Quit: derp)
18:31:35 tv joins (~tv@user/tv)
18:33:53 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5dd6:a35b:a6fd:3837) (Remote host closed the connection)
18:34:25 acidjnk_new joins (~acidjnk@p200300d6e715c4378952c6d8f1083787.dip0.t-ipconnect.de)
18:35:31 × \yrlnry quits (~yrlnry@2600:4040:738e:5400:b8c6:a4da:9f09:51fa) (Remote host closed the connection)
18:36:18 yrlnry joins (~yrlnry@2600:4040:738e:5400:85d2:5b54:72c6:ed3e)
18:39:28 <Jadesheit[m]> can't wait for the ultimate `<||||>`
18:40:41 <geekosaur> will https://hackage.haskell.org/package/xmonad-contrib-0.17.1/docs/XMonad-Layout-LayoutCombinators.html#v:-42--42--42--124--124--42--42--42--42- do?
18:42:21 <monochrom> Haha that's great ascii art to convey what the operators do geometrically
18:43:56 × infinity0 quits (~infinity0@pwned.gg) (Remote host closed the connection)
18:44:26 × hrberg quits (~quassel@171.79-160-161.customer.lyse.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
18:44:48 finsternis joins (~X@23.226.237.192)
18:46:04 infinity0 joins (~infinity0@pwned.gg)
18:47:34 hrberg joins (~quassel@171.79-160-161.customer.lyse.net)
18:51:11 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 264 seconds)
18:52:29 freeside joins (~mengwong@103.252.202.170)
18:53:22 × Inst quits (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) (Ping timeout: 252 seconds)
18:57:15 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 268 seconds)
18:58:15 freeside joins (~mengwong@103.252.202.170)
18:59:01 × trev_ quits (~trev@109-252-35-99.nat.spd-mgts.ru) (Remote host closed the connection)
19:02:07 ft joins (~ft@p4fc2a257.dip0.t-ipconnect.de)
19:02:26 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
19:04:32 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 246 seconds)
19:09:29 × akegalj quits (~akegalj@89-164-101-255.dsl.iskon.hr) (Quit: leaving)
19:09:36 opticblast joins (~Thunderbi@secure-165.caltech.edu)
19:14:05 freeside joins (~mengwong@103.252.202.170)
19:21:11 Inst joins (~Inst@2601:6c4:4081:54f0:dc48:1108:b41f:ce7b)
19:23:31 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
19:23:35 jinsun__ joins (~jinsun@user/jinsun)
19:23:35 × jinsun quits (~jinsun@user/jinsun) (Killed (osmium.libera.chat (Nickname regained by services)))
19:23:35 jinsun__ is now known as jinsun
19:31:41 seriously_ joins (~seriously@2001:1c06:2715:c200:1800:e7f0:57e2:d1cf)
19:34:22 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5dd6:a35b:a6fd:3837)
19:35:15 jespada_ joins (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net)
19:35:37 × jespada quits (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Ping timeout: 265 seconds)
19:38:41 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5dd6:a35b:a6fd:3837) (Ping timeout: 252 seconds)
19:38:58 × Xeroine quits (~Xeroine@user/xeroine) (Ping timeout: 252 seconds)
19:39:17 Xeroine joins (~Xeroine@user/xeroine)
19:40:27 <seriously_> Hey everyone... I'm really stuck on Excercise 1 here on yorgey-hw11, applicatives: https://www.cis.upenn.edu/~cis1940/spring13/hw/11-applicative2.pdf. We wrote an instance of Applicative (and functor) for the Parser type. Basically by understanding is that using <$> and <*>, we can write the "control structure" of a complex parser composed of low
19:40:28 <seriously_> level parsers like primitive parsers. So for example if you want to parse a string that you know will always be in the format 'firstname,lastname' and you want to parse it into a data type (Person = Person String String) then you can define a 'complex' parser (p = Person <$> parseLetters <*> parsePipe <*> parseLetters. The "control structure" being
19:40:28 <seriously_> the order in which the parsers appear composed with the apply functions.
19:42:05 <seriously_> control structure of parser p: parse letters up to non-letter -> parse out non-letter -> parse letters up to non-letter
19:42:12 unit73e joins (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36)
19:43:42 <monochrom> zeroOrMore and oneOrMore are each recursive. In fact, you can leverage much code reuse by making them mutually recursive to each other.
19:44:19 <seriously_> Now excercise 1 here is telling me to define a control structure which continuously runs a given parser until it fails. I don't know how I can do that... I think i can possibly use the repeat function somehow?
19:44:21 <monochrom> They will also need <|>. I forgot whether they need empty.
19:44:32 × kurbus quits (~kurbus@user/kurbus) (Quit: Client closed)
19:44:34 <monochrom> repeat will not help.
19:44:57 beteigeuze1 joins (~Thunderbi@bl14-81-220.dsl.telepac.pt)
19:45:01 × beteigeuze quits (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Read error: Connection reset by peer)
19:45:01 beteigeuze1 is now known as beteigeuze
19:46:17 kurbus joins (~kurbus@user/kurbus)
19:46:50 <seriously_> I might be understanding this inccorectly but the assignment says I cant use  details of the Parser type; only the applicative methods provided on the instance of Parser. So I take this to mean I shouldnt use the runParser command or the Parser constructor... is that right?
19:47:09 <seriously_> Applicative instance of Parser*
19:47:12 <monochrom> When you finally have a solution, it will look like this English description: `oneOrMore p` runs p, and then --- now that we have done p once, we just need to run p zero or more times! `zeroOrMore p` just means attempting p one or more times, but in case that fails, it's OK, just use <|> to say we have a plan B, which is pure [].
19:47:30 <monochrom> Right, no runParser.
19:48:23 <monochrom> The solution is also a two-liner (one for each) and extremely short.
19:48:47 <seriously_> Thanks for the hints let me see if something clicks
19:52:15 × mechap2 quits (~mechap@user/mechap) (Ping timeout: 252 seconds)
19:54:09 mechap2 joins (~mechap@user/mechap)
19:56:39 × mechap2 quits (~mechap@user/mechap) (Client Quit)
19:57:08 mechap joins (~mechap@user/mechap)
20:00:34 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
20:02:07 × telser quits (~quassel@user/telser) (Ping timeout: 252 seconds)
20:03:16 telser joins (~quassel@user/telser)
20:05:27 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
20:09:34 gmg joins (~user@user/gehmehgeh)
20:13:47 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 256 seconds)
20:15:00 freeside joins (~mengwong@103.252.202.170)
20:15:03 pavonia joins (~user@user/siracusa)
20:18:11 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds)
20:19:23 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 252 seconds)
20:22:54 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
20:24:44 × acidjnk_new quits (~acidjnk@p200300d6e715c4378952c6d8f1083787.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
20:27:04 mechap parts (~mechap@user/mechap) (WeeChat 3.8)
20:32:19 freeside joins (~mengwong@103.252.202.170)
20:32:24 × telser quits (~quassel@user/telser) (Ping timeout: 260 seconds)
20:32:28 telser_ joins (~quassel@user/telser)
20:32:33 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
20:33:33 × zeenk quits (~zeenk@2a02:2f04:a014:8700::7fe) (Quit: Konversation terminated!)
20:34:30 acidjnk_new joins (~acidjnk@p200300d6e715c4379da7c174e15005ed.dip0.t-ipconnect.de)
20:37:04 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 260 seconds)
20:38:14 × kurbus quits (~kurbus@user/kurbus) (Quit: Client closed)
20:42:26 stiell joins (~stiell@gateway/tor-sasl/stiell)
20:42:57 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
20:46:05 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds)
20:47:40 <unit73e> one question, because I'm very lazy to try. is emacs better than neovim in haskell nowadays or same thing if you use plugins?
20:47:48 <unit73e> spoiler alert I use neovim
20:50:06 <unit73e> I tried vscode for a while but eh... nah... it just doesn't feel right
20:51:13 <geekosaur> I've largely switched to vscode for Haskell editing at this point
20:51:33 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
20:51:39 <geekosaur> otherwise I use *vim for quick stuff and emacs for more involved / long term stuff
20:52:45 × nehsou^ quits (~nehsou@c-24-30-76-89.hsd1.ga.comcast.net) (Remote host closed the connection)
20:53:23 <unit73e> thanks, I actually might try vscode again despite saying that. the setup was easy. emacs maybe, I always preferred neovim, but I heard good things of emacs.
20:53:37 <unit73e> the recent versions at least
20:54:16 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
20:54:18 <ddellacosta> I don't know much about neovim but I use emacs with evil-mode with Haskell. It's pretty good. I feel like it has been hard to get everything around Haskell Language Server configured in a way that suits me, but that could be as much about my idiosyncratic emacs configuration as anything else. I found that vscode was WAY easier to set up and have things working in out of the gate, but I just cannot
20:54:20 <ddellacosta> move around in it as efficiently as with emacs
20:54:22 <geekosaur> emacs is fairly idiosyncratic. I use it because I've been using it since the mid-1980s
20:54:59 × yrlnry quits (~yrlnry@2600:4040:738e:5400:85d2:5b54:72c6:ed3e) (Remote host closed the connection)
20:55:35 <monochrom> I like emacs so emacs is always better to me.
20:55:43 <geekosaur> and I have yet to adapt to the extended functionality of vim/neovim; I still use it like 1980s vi
20:55:57 <monochrom> or rather I've spent too much time in emacs, sunk cost policy, too old to learn another editor or IDE.
20:56:11 <unit73e> lua scripts easily beat vimscripts, that's for sure
20:56:16 × merijn quits (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
20:56:20 <monochrom> If you like neovim (or more pessimistically sunk too much cost in it) then it is always better.
20:57:01 <unit73e> so vscode is still the go to editor if you don't want to waste much time or for newbies
20:57:12 <monochrom> If you like your Toyota car then you don't switch to Tesla just because it has a better game console. >:)
20:57:12 <unit73e> for any programming language actually
20:58:09 <monochrom> "If you like your Myspace account then you don't switch to Facebook just because more people use it >:)"
20:58:12 <unit73e> well if you smash your toyota it's not that big of a deal. there's one advantage :p
20:58:17 <geekosaur> probably. neither neovim nor emacs is easily configured for language server support, in particular, although the editing modes that come with neovim and emacs are decent out of the box
20:59:07 jonathanx_ joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
21:00:01 <ddellacosta> I have been thinking about this a lot, and I think it's not _just_ sunk cost, although I wouldn't deny that's a big chunk of it for me--it's also a different paradigm that I don't think vscode can replicate. In emacs it feels like the fundamental abstraction of moving around buffers is the same regardless of the context--whether editing a file, in dired, using magit, etc.--I am just bouncing in
21:00:03 <ddellacosta> and out of the minibuffer and moving data in and out of buffers, like searching on the command-line which dumps its results in a buffer which I can then directly open up files from based on the search results, etc...all using evil, it's super fast. I don't know how I'd get anything like that with vscode, not that I'm saying it's not possible
21:00:09 <ddellacosta> sorry I wrote a blog post
21:00:59 <unit73e> more of a tweet
21:01:01 <[Leary]> @tell freeside Consider something like `(<|>) `on` nonEmpty` or `getAlt . foldMap (Alt . nonEmpty)`. They have the advantage that they "parse" rather than "validate".
21:01:01 <lambdabot> Consider it noted.
21:01:44 × pragma- quits (~chaos@user/pragmatic-chaos) (Quit: Bye!)
21:01:52 <unit73e> but thanks, it did answer my question.
21:02:00 <ddellacosta> awesome
21:03:07 × cheater quits (~Username@user/cheater) (Ping timeout: 248 seconds)
21:03:11 × jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 260 seconds)
21:03:43 <[exa]> ddellacosta: emacs is a unix, just on buffers and commands instead of files and shell
21:03:57 × seriously_ quits (~seriously@2001:1c06:2715:c200:1800:e7f0:57e2:d1cf) (Quit: Client closed)
21:04:21 freeside joins (~mengwong@103.252.202.170)
21:04:24 <ddellacosta> [exa]: never thought of it like that! Sounds like an old emacs trope I was just ignorant of...
21:05:10 dysfigured is now known as dfg
21:05:19 × dfg quits (dfg@dfg.rocks) (Changing host)
21:05:19 dfg joins (dfg@user/dfg)
21:07:39 jinsun is now known as Guest3805
21:07:39 jinsun__ joins (~jinsun@user/jinsun)
21:07:39 × Guest3805 quits (~jinsun@user/jinsun) (Killed (molybdenum.libera.chat (Nickname regained by services)))
21:07:39 jinsun__ is now known as jinsun
21:08:43 cheater joins (~Username@user/cheater)
21:09:13 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 268 seconds)
21:09:46 × acidjnk_new quits (~acidjnk@p200300d6e715c4379da7c174e15005ed.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
21:10:16 yrlnry joins (~yrlnry@2600:4040:738e:5400:85d2:5b54:72c6:ed3e)
21:21:57 merijn joins (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
21:24:04 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
21:28:59 × jonathanx_ quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
21:29:24 jonathanx_ joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
21:30:26 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Remote host closed the connection)
21:30:50 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
21:30:58 × johnw quits (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in)
21:31:43 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:33:59 × beteigeuze quits (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Read error: Connection reset by peer)
21:34:06 beteigeuze1 joins (~Thunderbi@bl14-81-220.dsl.telepac.pt)
21:34:59 × jonathanx_ quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
21:35:44 jonathanx_ joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
21:36:23 beteigeuze1 is now known as beteigeuze
21:38:00 freeside joins (~mengwong@103.252.202.170)
21:41:53 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
21:42:18 CiaoSen joins (~Jura@p200300c9572d4e002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
21:42:23 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 248 seconds)
21:43:20 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
21:48:52 johnw joins (~johnw@2600:1700:cf00:db0:e8e7:7b37:a447:4fc6)
21:52:25 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
21:54:10 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
21:55:23 × merijn quits (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 248 seconds)
21:55:59 freeside joins (~mengwong@103.252.202.170)
22:01:31 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 260 seconds)
22:03:29 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds)
22:03:54 × thyriaen quits (~thyriaen@2a01:aea0:dd4:4fa4:6245:cbff:fe9f:48b1) (Remote host closed the connection)
22:10:03 × Me-me quits (~me-me@2602:ff16:3:0:1:dc:beef:d00d) (Remote host closed the connection)
22:11:24 Me-me joins (~me-me@2602:ff16:3:0:1:dc:beef:d00d)
22:14:09 EvanR_ is now known as EvanR
22:17:29 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
22:17:37 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
22:17:46 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5dd6:a35b:a6fd:3837)
22:20:18 stiell joins (~stiell@gateway/tor-sasl/stiell)
22:25:31 × ubert quits (~Thunderbi@p200300ecdf264eae508459a626a67f13.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
22:25:48 ubert joins (~Thunderbi@p200300ecdf264e7816f08ea68d9bd4cc.dip0.t-ipconnect.de)
22:29:23 freeside joins (~mengwong@103.252.202.170)
22:33:35 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 248 seconds)
22:37:15 pragma- joins (~chaos@user/pragmatic-chaos)
22:38:23 × unit73e quits (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) (Ping timeout: 260 seconds)
22:40:36 ub joins (~Thunderbi@p548c9ce5.dip0.t-ipconnect.de)
22:41:04 × ubert quits (~Thunderbi@p200300ecdf264e7816f08ea68d9bd4cc.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
22:41:04 ub is now known as ubert
22:43:01 habib joins (~habib@78-110-166-168.as42831.net)
22:46:11 × turlando quits (~turlando@user/turlando) (Read error: Connection reset by peer)
22:48:14 turlando joins (~turlando@user/turlando)
22:49:42 freeside joins (~mengwong@103.252.202.170)
22:57:01 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
22:58:19 × pavonia quits (~user@user/siracusa) (Read error: Connection reset by peer)
22:59:26 × ddellacosta quits (~ddellacos@143.244.47.100) (Ping timeout: 246 seconds)
23:01:36 pavonia joins (~user@user/siracusa)
23:03:31 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
23:05:55 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
23:06:55 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
23:10:29 × jonathanx_ quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
23:10:47 jonathanx_ joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
23:11:40 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
23:16:42 merijn joins (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
23:20:03 × Guest75 quits (~Guest75@178.141.149.12) (Ping timeout: 260 seconds)
23:30:08 × sayola quits (~sayola@ipservice-092-213-087-211.092.213.pools.vodafone-ip.de) (Read error: Connection reset by peer)
23:30:45 sayola joins (~sayola@ipservice-092-213-087-211.092.213.pools.vodafone-ip.de)
23:32:03 × AlexZenon quits (~alzenon@178.34.160.228) (Ping timeout: 255 seconds)
23:32:41 × Alex_test quits (~al_test@178.34.160.228) (Ping timeout: 256 seconds)
23:35:34 × burakcank quits (burakcank@has.arrived.and.is.ready-to.party) (Killed (NickServ (GHOST command used by burakcank_!B438@free.znc.bg)))
23:35:51 burakcan- joins (burakcank@has.arrived.and.is.ready-to.party)
23:36:30 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 260 seconds)
23:37:36 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
23:39:31 Alex_test joins (~al_test@178.34.160.228)
23:40:05 AlexZenon joins (~alzenon@178.34.160.228)
23:40:19 acidjnk joins (~acidjnk@p200300d6e715c43759e8b04853fbd72e.dip0.t-ipconnect.de)
23:41:29 × jonathanx_ quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
23:41:47 jonathanx_ joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
23:43:18 × jinsun quits (~jinsun@user/jinsun) (Read error: Connection reset by peer)
23:43:34 jinsun joins (~jinsun@user/jinsun)
23:45:34 × mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
23:45:45 × drewolson quits (~drewolson@user/drewolson) (Remote host closed the connection)
23:45:49 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
23:45:57 drewolson joins (~drewolson@user/drewolson)
23:46:54 × ario quits (~ario@159.65.220.102) (Ping timeout: 255 seconds)
23:46:59 × Me-me quits (~me-me@2602:ff16:3:0:1:dc:beef:d00d) (Ping timeout: 260 seconds)
23:47:02 ario joins (~ario@159.65.220.102)
23:49:45 Me-me joins (~me-me@2602:ff16:3:0:1:dc:beef:d00d)
23:51:23 × merijn quits (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds)
23:51:24 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 268 seconds)
23:56:59 × jonathanx_ quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
23:58:23 jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)

All times are in UTC on 2023-01-25.