2023/01/15

2023-01-15 00:00:14 +0100 <monochrom> It's ISO Latin 1 for the full 0-255 range.
2023-01-15 00:00:18 +0100mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a)
2023-01-15 00:00:34 +0100 <EvanR> ok then
2023-01-15 00:01:04 +0100 <monochrom> But you can go up one level and claim that choosing ISO Latin 1 was arbitrary. :)
2023-01-15 00:01:36 +0100 <EvanR> oops, regardless that's not ascii
2023-01-15 00:02:04 +0100 <EvanR> chopping off the accent marks and stuff you may be saved
2023-01-15 00:02:25 +0100mechap(~mechap@user/mechap) (Quit: WeeChat 3.8)
2023-01-15 00:02:59 +0100biberu(~biberu@user/biberu)
2023-01-15 00:03:04 +0100 <voidzero> this book has many weird things going on
2023-01-15 00:03:29 +0100 <voidzero> for example -- imageFile <- BC.readFile fileName ; glitched <- return imageFile -- why not let glitched = imageFile?
2023-01-15 00:04:00 +0100 <EvanR> ... why are we going with Char8 if we wanted to read in an image file!
2023-01-15 00:04:13 +0100 <voidzero> that was a suggestion I got from hlint refact
2023-01-15 00:04:44 +0100 <voidzero> because we're going to glitch a random byte in the file with another byte we pick at random
2023-01-15 00:04:45 +0100mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a) (Ping timeout: 252 seconds)
2023-01-15 00:04:46 +0100 <EvanR> Char8 seems highly niche to me
2023-01-15 00:05:20 +0100 <EvanR> if you're dealing with bytes you're dealing with bytes
2023-01-15 00:05:32 +0100 <EvanR> (Word8)
2023-01-15 00:07:22 +0100 <geekosaur> many people think Char8 is just a bad idea
2023-01-15 00:07:36 +0100mimmy_(~mimmy@142.126.70.245)
2023-01-15 00:07:43 +0100 <voidzero> searching the book to see if I can find a reference to Word8
2023-01-15 00:07:50 +0100 <monochrom> In fact since glitched = imageFile, why not just delete glitched altogether?
2023-01-15 00:08:19 +0100 <monochrom> But yeah "foo <- return bar" should be just "let foo = bar".
2023-01-15 00:08:40 +0100 <monochrom> Either that or just don't teach do-notation in the first place.
2023-01-15 00:09:49 +0100 <monochrom> For changing a byte in the image you can easily stick with Word8.
2023-01-15 00:09:54 +0100 <voidzero> Yeah, but oh what do we have here, "At this point the glitched valiable in your main doesn't need to be an IO type. Change that line so that glitched is a regulalar variable" i don't have a clue why we're not just delenting it altogether, but there is a hint that says "you're using return because eventually this will be replaced with an IO action that will alter the binary data"
2023-01-15 00:09:56 +0100voidzerosighs
2023-01-15 00:10:09 +0100 <voidzero> readers should not become editors
2023-01-15 00:10:27 +0100 <voidzero> I've already submitted over 10 errors in this book
2023-01-15 00:11:04 +0100 <monochrom> OK I can respect future-proving it with "glitched <- IO action in the future but return original image for now".
2023-01-15 00:11:05 +0100 <voidzero> small ones, large ones, and "your font does not support the ligatures fi, ffi" and so on
2023-01-15 00:11:42 +0100 <voidzero> right, so in that case, don't let me change it, it's confusing
2023-01-15 00:12:25 +0100mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a)
2023-01-15 00:12:34 +0100 <monochrom> But I can go up one level (as usual) and ask why glitching needs IO in the first place.
2023-01-15 00:12:52 +0100 <mauke> inb4 randomRIO
2023-01-15 00:13:02 +0100 <voidzero> but ok, at least the assignments and the progression in the book make sense
2023-01-15 00:13:11 +0100barak(~barak@77.125.90.25)
2023-01-15 00:13:12 +0100 <monochrom> If it's just because of PRNG, even that can be refactored...
2023-01-15 00:13:28 +0100mimmy_(~mimmy@142.126.70.245) (Ping timeout: 272 seconds)
2023-01-15 00:14:23 +0100 <monochrom> And there are a few more conceivable scenerios I can see how to refactor too.
2023-01-15 00:16:28 +0100anatta(~AdiIRC@h-155-4-132-216.NA.cust.bahnhof.se)
2023-01-15 00:16:49 +0100 <voidzero> the book is also letting us use mconcat a lot, in places where concat can also be used
2023-01-15 00:17:17 +0100 <voidzero> I'm guessing that using concat is better unless we really need mconcat
2023-01-15 00:18:14 +0100machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 260 seconds)
2023-01-15 00:18:26 +0100 <monochrom> That one falls under the pessimitic principle of conservation of learning effort. :)
2023-01-15 00:19:07 +0100 <monochrom> mconcat is more general so you learn fewer names but more difficult error messages.
2023-01-15 00:19:21 +0100 <voidzero> oh joy
2023-01-15 00:19:43 +0100 <monochrom> concat is more special so you learn more names (for other types) but easier error messages.
2023-01-15 00:21:04 +0100 <mauke> :t mconcat
2023-01-15 00:21:06 +0100 <lambdabot> Monoid a => [a] -> a
2023-01-15 00:21:15 +0100 <voidzero> alright. Haven't been introduced to Foldable yet
2023-01-15 00:21:15 +0100 <glguy> :t concat
2023-01-15 00:21:17 +0100 <lambdabot> Foldable t => t [a] -> [a]
2023-01-15 00:21:22 +0100 <mauke> :t join
2023-01-15 00:21:22 +0100 <glguy> generalizations all around
2023-01-15 00:21:23 +0100 <lambdabot> Monad m => m (m a) -> m a
2023-01-15 00:21:29 +0100shapr(~user@68.54.166.125) (Ping timeout: 268 seconds)
2023-01-15 00:21:35 +0100 <monochrom> Makes me wonder why I don't go completely evil and teach neither concat nor mconcat, I teach join. >:)
2023-01-15 00:21:44 +0100offdg^(~offdg@76.145.190.81) (Ping timeout: 260 seconds)
2023-01-15 00:22:18 +0100 <glguy> > > asum [[1,2],[3,4]]
2023-01-15 00:22:21 +0100 <lambdabot> <hint>:1:1: error: parse error on input ‘>’
2023-01-15 00:22:22 +0100 <glguy> > asum [[1,2],[3,4]]
2023-01-15 00:22:24 +0100 <lambdabot> [1,2,3,4]
2023-01-15 00:22:46 +0100 <glguy> :t asum
2023-01-15 00:22:48 +0100 <lambdabot> (Foldable t, Alternative f) => t (f a) -> f a
2023-01-15 00:23:01 +0100 <glguy> It's going to be hard to beat my 2-typeclass offering
2023-01-15 00:23:44 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 00:24:06 +0100 <monochrom> 1-typeclass can beat 2-typeclass if the 1-typeclass has the infamous name "Monad" >:)
2023-01-15 00:24:17 +0100cln(cln@wtf.cx)
2023-01-15 00:25:45 +0100 <monochrom> "In the Typeclass Zoo, all typeclasses are scary, but some are scarier than others."
2023-01-15 00:26:15 +0100acidjnk(~acidjnk@p200300d6e715c494853e5ab7d1dcba05.dip0.t-ipconnect.de)
2023-01-15 00:26:44 +0100mimmy_(~mimmy@142.126.70.245)
2023-01-15 00:28:11 +0100 <anatta> monochrom: it's kind of you to at least call it "join" still
2023-01-15 00:28:16 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 268 seconds)
2023-01-15 00:28:19 +0100 <anatta> instead of >>= id
2023-01-15 00:28:34 +0100 <anatta> or smth
2023-01-15 00:29:02 +0100 <monochrom> I am also happy to call it "flat/flatten" >:)
2023-01-15 00:30:34 +0100barak(~barak@77.125.90.25) (Ping timeout: 272 seconds)
2023-01-15 00:32:25 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2023-01-15 00:32:54 +0100mimmy_(~mimmy@142.126.70.245) (Ping timeout: 252 seconds)
2023-01-15 00:35:22 +0100 <voidzero> argh this book. Fantastic glitching. https://imgur.com/a/FVbRa87
2023-01-15 00:35:29 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6450:b99c:346:15e5)
2023-01-15 00:35:39 +0100caryhartline(~caryhartl@2600:1700:2d0:8d30:d485:7c6c:6dcc:2888) (Quit: caryhartline)
2023-01-15 00:36:01 +0100ddellacosta(~ddellacos@89.46.62.175)
2023-01-15 00:36:58 +0100 <unit73e> flat is justice
2023-01-15 00:37:11 +0100 <voidzero> https://i.imgur.com/J8tTi2p.jpg that's more like it
2023-01-15 00:39:49 +0100elevenkb(~elevenkb@105.224.37.136)
2023-01-15 00:40:06 +0100v0id_ptr(~adrift@user/ptr-frac7al/x-0038398)
2023-01-15 00:44:46 +0100barak(~barak@77.125.90.25)
2023-01-15 01:00:47 +0100justsomeguy(~justsomeg@user/justsomeguy)
2023-01-15 01:02:34 +0100AlexZenon(~alzenon@178.34.160.164) (Ping timeout: 260 seconds)
2023-01-15 01:03:44 +0100Alex_test(~al_test@178.34.160.164) (Ping timeout: 260 seconds)
2023-01-15 01:05:32 +0100L29Ah(~L29Ah@wikipedia/L29Ah)
2023-01-15 01:06:31 +0100AlexZenon(~alzenon@178.34.160.164)
2023-01-15 01:06:56 +0100shapr(~user@68.54.166.125)
2023-01-15 01:07:28 +0100acidjnk(~acidjnk@p200300d6e715c494853e5ab7d1dcba05.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2023-01-15 01:08:34 +0100Alex_test(~al_test@178.34.160.164)
2023-01-15 01:10:08 +0100Tuplanolla(~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.)
2023-01-15 01:12:53 +0100liszt2(sid336875@2a03:5180:f:3::5:23eb) ()
2023-01-15 01:14:51 +0100offdg^(~offdg@76.145.190.81)
2023-01-15 01:15:40 +0100mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a) (Ping timeout: 252 seconds)
2023-01-15 01:19:25 +0100mimmy_(~mimmy@142.126.70.245)
2023-01-15 01:23:38 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 01:23:55 +0100mimmy_(~mimmy@142.126.70.245) (Ping timeout: 260 seconds)
2023-01-15 01:28:12 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds)
2023-01-15 01:29:38 +0100elevenkb(~elevenkb@105.224.37.136) (Ping timeout: 260 seconds)
2023-01-15 01:30:47 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
2023-01-15 01:32:16 +0100mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a)
2023-01-15 01:37:23 +0100fizbin(~fizbin@user/fizbin) (Ping timeout: 264 seconds)
2023-01-15 01:39:34 +0100fizbin(~fizbin@user/fizbin)
2023-01-15 01:42:06 +0100offdg^(~offdg@76.145.190.81) (Remote host closed the connection)
2023-01-15 01:42:22 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-01-15 01:42:22 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-01-15 01:42:22 +0100wroathe(~wroathe@user/wroathe)
2023-01-15 01:51:17 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 01:56:04 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds)
2023-01-15 01:56:18 +0100jinsl-(~jinsl@2408:8207:255b:27c0:211:32ff:fec8:6aea)
2023-01-15 01:57:11 +0100jinsl(~jinsl@2408:8207:255f:27d0:211:32ff:fec8:6aea) (Ping timeout: 264 seconds)
2023-01-15 01:57:19 +0100L29Ah(~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
2023-01-15 02:01:19 +0100Inst(~Inst@2601:6c4:4081:54f0:3de7:12e6:ed3d:f8f8) (Ping timeout: 252 seconds)
2023-01-15 02:04:23 +0100dcoutts_(~duncan@host213-122-143-153.range213-122.btcentralplus.com) (Ping timeout: 246 seconds)
2023-01-15 02:07:55 +0100fizbin(~fizbin@user/fizbin) (Ping timeout: 252 seconds)
2023-01-15 02:10:30 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2023-01-15 02:10:41 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2023-01-15 02:14:26 +0100cheater(~Username@user/cheater) (Ping timeout: 272 seconds)
2023-01-15 02:15:50 +0100mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a) (Ping timeout: 260 seconds)
2023-01-15 02:16:50 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2023-01-15 02:17:25 +0100mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a)
2023-01-15 02:17:30 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 02:18:41 +0100Inst(~Inst@2601:6c4:4081:54f0:3de7:12e6:ed3d:f8f8)
2023-01-15 02:21:40 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 252 seconds)
2023-01-15 02:21:54 +0100 <Inst> How familiar are people with OCaml?
2023-01-15 02:22:29 +0100 <Inst> Nah, I'm probably wrong here, I was thinking OCaml was an OOP language via the first-class module system
2023-01-15 02:22:59 +0100 <geekosaur> first class modules don't make SML/NJ OOP
2023-01-15 02:23:00 +0100 <sshine> OCaml has support for object-oriented programming from way back when that got you drinks at the bar, but modern OCaml does not use the object system.
2023-01-15 02:23:14 +0100 <geekosaur> OCaml doessupport OOP, but modules aren't why
2023-01-15 02:23:16 +0100paulpaul1076(~textual@95-29-5-111.broadband.corbina.ru) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2023-01-15 02:23:17 +0100 <sshine> the first-class module system predates OOP support
2023-01-15 02:23:53 +0100dsrt^(~dsrt@76.145.190.81)
2023-01-15 02:24:00 +0100L29Ah(~L29Ah@wikipedia/L29Ah)
2023-01-15 02:24:18 +0100cheater(~Username@user/cheater)
2023-01-15 02:24:31 +0100 <mauke> has ocaml grown documentation for its module system in the last 10-15 years?
2023-01-15 02:24:40 +0100 <sshine> OCaml OOP: https://ocaml.org/docs/objects -- it is the 'class' and 'object' keywords that make it OOP.
2023-01-15 02:25:06 +0100 <mauke> I've been meaning to learn about modules, but at the time there wasn't much apart from a few examples of the syntax
2023-01-15 02:25:16 +0100 <sshine> mauke, Real World Ocaml v2 (https://dev.realworldocaml.org/) has more to say about the module system, yes. at least there are syntactic improvements.
2023-01-15 02:26:15 +0100 <mauke> thanks, I'll have a look
2023-01-15 02:28:11 +0100barak(~barak@77.125.90.25) (Ping timeout: 248 seconds)
2023-01-15 02:28:12 +0100cheater_(~Username@user/cheater)
2023-01-15 02:30:39 +0100cheater(~Username@user/cheater) (Ping timeout: 260 seconds)
2023-01-15 02:30:47 +0100cheater_cheater
2023-01-15 02:31:31 +0100 <sshine> Inst, https://dev.realworldocaml.org/objects.html -- here's a more modern take on OCaml OOP. :)
2023-01-15 02:32:21 +0100 <sshine> Inst, whereas the module system is described under the chapters "Functors" and "First-Class Modules"
2023-01-15 02:32:36 +0100 <Inst> it's more that I was looking at the Haskell module syntax, I was wondering if Haskell modules could have bene a way to retrofit OOP in
2023-01-15 02:32:39 +0100 <Inst> with backpack, etc
2023-01-15 02:32:58 +0100 <Inst> independent of my frankenstein instinct to break all purity
2023-01-15 02:33:16 +0100 <Inst> i'm more wishing for a more robust module system in Haskell, or at the very least, the ability to have multiple modules in one file
2023-01-15 02:33:45 +0100 <unit73e> packages are the poorly designed modules imo
2023-01-15 02:33:47 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2023-01-15 02:34:17 +0100 <unit73e> at least javascript got that mostly right
2023-01-15 02:34:55 +0100 <sshine> Inst, Haskell could have had a module system that more resembled MLs, but this still isn't related to OOP.
2023-01-15 02:35:22 +0100 <Inst> from what I read, Haskell designers somehow thought that ML module system was too fancy
2023-01-15 02:35:27 +0100 <unit73e> what's the difference?
2023-01-15 02:35:48 +0100 <sshine> unit73e, the difference between what? OOP and ML module systems?
2023-01-15 02:36:09 +0100 <monochrom> ocaml has a first-class OO system, and this is orthogonal to its first-class module system. :)
2023-01-15 02:36:12 +0100 <unit73e> sshine, between haskell modules and ML modules
2023-01-15 02:36:21 +0100razetime(~Thunderbi@117.193.4.145)
2023-01-15 02:36:37 +0100 <unit73e> if it's something like module blocks, yeah that would be useful
2023-01-15 02:36:39 +0100img(~img@user/img)
2023-01-15 02:37:16 +0100 <unit73e> kind off. I can get away without those.
2023-01-15 02:38:08 +0100 <sshine> unit73e, ah! in ML you have higher-order modules, confusingly named functors.
2023-01-15 02:38:27 +0100 <unit73e> hum ok, that could be useful
2023-01-15 02:39:09 +0100 <unit73e> function namespace is the annoying bit in haskell, but what I do is go Javahaskell and have each file with it's own record, and just call A.function in other modules
2023-01-15 02:39:10 +0100 <sshine> (well, confusing to a Haskeller)
2023-01-15 02:39:38 +0100 <unit73e> so similar to what Java does, each class in its own file
2023-01-15 02:39:39 +0100 <geekosaur> just don't go the whole way and give us C and T
2023-01-15 02:39:55 +0100troydm(~troydm@user/troydm) (Ping timeout: 248 seconds)
2023-01-15 02:40:13 +0100 <sshine> what are C and T?
2023-01-15 02:40:44 +0100 <monochrom> My http://www.cs.utoronto.ca/~trebla/CSCC24-2022-Summer/04-haskell-types-2.html#modules happens to describe *ml module systems, if you can make sense out of the brief example.
2023-01-15 02:40:48 +0100 <geekosaur> a certain infamous Haskeller names every typeclass C and every type T because the module name is enough to distinguish. until you haddock it
2023-01-15 02:40:59 +0100 <unit73e> oof, no I don't do that
2023-01-15 02:41:13 +0100 <unit73e> often I don't need qualifiers, I just do that in case I need
2023-01-15 02:41:15 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
2023-01-15 02:41:17 +0100 <sshine> unit73e, you get some of the same modularity with type classes, but not at the package level.
2023-01-15 02:41:48 +0100 <sshine> geekosaur, ah. I tried making every statement I make on IRC "S", as my intent should be evident from the context, but people didn't get it.
2023-01-15 02:42:03 +0100talismanick(~talismani@2601:200:c181:4c40::1be2)
2023-01-15 02:42:21 +0100fizbin(~fizbin@user/fizbin)
2023-01-15 02:42:26 +0100 <monochrom> BTW because of this I have a personal beef that other Haskellers have beef against writing *.hs-boot for mutually importing modules. *.hs-boot is no harder than writing module sigs in *ml which is considered normal daily activity.
2023-01-15 02:42:34 +0100 <unit73e> what I usually do is copy the structure of some other more experience haskeler, for example, I was making an archiver, for RGSS, so my inspiration was Tar
2023-01-15 02:42:44 +0100 <unit73e> because Tar looked decent code
2023-01-15 02:43:30 +0100 <unit73e> but just the structure. I use more modern haskell with monad transformers, and Tar has some legacy.
2023-01-15 02:44:21 +0100 <talismanick> How might I draw a screen-width rectangle under Wayland without GTK? What are my options besides Gloss?
2023-01-15 02:44:49 +0100machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-01-15 02:45:36 +0100 <talismanick> Draw a screenwidth rectangle and render unicode text on it, I should say
2023-01-15 02:47:28 +0100 <sshine> https://people.mpi-sws.org/~rossberg/papers/Rossberg%20-%201ML%20--%20Core%20and%20modules%20united%20[JFP].pdf -- I'd like to see this taken further. it's basically ML modules and values married into one.
2023-01-15 02:48:15 +0100razetime(~Thunderbi@117.193.4.145) (Ping timeout: 268 seconds)
2023-01-15 02:48:29 +0100 <unit73e> talismanick, you mean, vector graphics? or something else? because you can draw rectangles in many ways with multiple libraries. say opengl, vulkan, software, sdl, gloss, etc
2023-01-15 02:49:47 +0100 <talismanick> unit73e: Right, multiple ways to render it, but which is the right level of abstraction for displaying it without window controls and making it screenwidth and attached to the top or bottom?
2023-01-15 02:50:11 +0100 <talismanick> and rendering text inside of it, as a status bar (like xmobar)
2023-01-15 02:50:34 +0100 <talismanick> If I can get that, the rest should be a piece of cake
2023-01-15 02:51:20 +0100 <unit73e> talismanick, so you want to make a status bar? like xmobar?
2023-01-15 02:51:33 +0100 <unit73e> but for wayland
2023-01-15 02:51:34 +0100 <unit73e> not X
2023-01-15 02:51:38 +0100 <talismanick> Yeah, exactly
2023-01-15 02:52:48 +0100 <talismanick> I know how to write CLI programs and REST APIs, but I don't touch GUIs much
2023-01-15 02:55:12 +0100 <talismanick> https://sheaf.gitlab.io/fir/index.html looks really interesting, but a bit too low level for my purposes
2023-01-15 02:57:18 +0100 <unit73e> talismanick, I don't know much about wayland, but how about looking how others did it? like swaybar, or waybar? you're going to run into interoperability problems like having tray icons, so might as well inspire on those projects, but in haskell.
2023-01-15 02:57:36 +0100 <unit73e> it would be a cool project
2023-01-15 02:57:56 +0100Guest33(~Guest33@2001-b011-400a-5dfb-d995-a488-9bc0-4214.dynamic-ip6.hinet.net)
2023-01-15 02:58:24 +0100 <talismanick> That sounds like it could be a rabbit hole - just unicode characters with font choice and coloring would be a good start, imo
2023-01-15 02:58:35 +0100 <talismanick> maybe once I have something working
2023-01-15 02:59:00 +0100natechan(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2023-01-15 03:00:37 +0100 <unit73e> a basic opengl library would be enough to draw a rectangle, but I think you're going to find out you need GTK stuff (or KDE)
2023-01-15 03:00:38 +0100Guest33(~Guest33@2001-b011-400a-5dfb-d995-a488-9bc0-4214.dynamic-ip6.hinet.net) (Client Quit)
2023-01-15 03:01:29 +0100 <unit73e> or use wlroots
2023-01-15 03:01:31 +0100 <talismanick> unit73e: Even for sizing, anchoring, and text rendering?
2023-01-15 03:01:42 +0100 <talismanick> Yeah, I was planning to stick with wlroots
2023-01-15 03:03:05 +0100 <unit73e> afaik wlroots can draw rectangles, but I don't think there's an haskell module
2023-01-15 03:03:29 +0100 <unit73e> you'd have to make one yourself
2023-01-15 03:03:32 +0100 <talismanick> There's hsroots, but that was last updated in 2019
2023-01-15 03:03:42 +0100 <unit73e> at least there's something :p
2023-01-15 03:04:01 +0100son0p(~ff@190.158.28.118)
2023-01-15 03:04:34 +0100 <talismanick> I've heard praise for Haskell's C FFI. Is there best practice for using it? Handle C values with levity polymorphism?
2023-01-15 03:09:57 +0100unit73e(~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) (Quit: Leaving)
2023-01-15 03:11:52 +0100 <talismanick> :(
2023-01-15 03:14:18 +0100thongpv87(~thongpv87@2402:9d80:3b9:c4cc:21a0:88fc:6943:1ae5)
2023-01-15 03:14:47 +0100 <talismanick> Oof, it depends on the lower-level deprecated Hayland bindings...
2023-01-15 03:19:05 +0100beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 268 seconds)
2023-01-15 03:23:55 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 03:23:58 +0100emmanuelux(~emmanuelu@user/emmanuelux)
2023-01-15 03:27:16 +0100_leo92_(~emmanuelu@user/emmanuelux) (Ping timeout: 272 seconds)
2023-01-15 03:28:32 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds)
2023-01-15 03:31:02 +0100 <Inst> not going to admit I looked this guy up, but it's pretty good, there's an educator in Hyderabad who showed up on #haskell-beginners on Discord
2023-01-15 03:31:19 +0100 <Inst> he sells a bunch of training videos, will be interesting to see him shilling Haskell to Indians
2023-01-15 03:35:26 +0100CiaoSen(~Jura@p200300c9574fa4002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2023-01-15 03:40:59 +0100troydm(~troydm@user/troydm)
2023-01-15 03:41:19 +0100caryhartline(~caryhartl@2600:1700:2d0:8d30:ec3c:3ed4:a3c8:7826)
2023-01-15 03:42:52 +0100oldfashionedcowDEWIT
2023-01-15 03:44:45 +0100natechan(~nate@98.45.169.16)
2023-01-15 03:48:47 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds)
2023-01-15 03:50:27 +0100 <talismanick> Nice, there are gi-gtk bindings for the gtk-layer-shell Wayland protocol. Might go with that, then.
2023-01-15 03:50:43 +0100DEWIToldfashionedcow
2023-01-15 03:50:50 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-01-15 03:51:23 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit)
2023-01-15 04:00:17 +0100natechan(~nate@98.45.169.16) (Ping timeout: 246 seconds)
2023-01-15 04:00:55 +0100oldfashionedcowGeneralKenobi
2023-01-15 04:01:45 +0100mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a) (Ping timeout: 255 seconds)
2023-01-15 04:03:28 +0100razetime(~Thunderbi@117.193.4.145)
2023-01-15 04:03:33 +0100mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a)
2023-01-15 04:05:17 +0100jero98772(~jero98772@2800:484:1d80:d8ce:9815:cfda:3661:17bb) (Remote host closed the connection)
2023-01-15 04:06:54 +0100Neuromancer(~Neuromanc@user/neuromancer) (Ping timeout: 260 seconds)
2023-01-15 04:11:31 +0100 <fizbin> I just revisited a project from 2+ years ago and fixed some bugs; don't know if anyone here is really interested in regex processing but here's a short command line program that'll determine whether two regular expressions are equivalent (and if not, will find a string that one regex matches and the other does not): https://gist.github.com/fizbin/8267ff9dbc15c6564214aa4cea6d0cb0
2023-01-15 04:12:10 +0100paulpaul1076(~textual@95-29-5-111.broadband.corbina.ru)
2023-01-15 04:18:59 +0100 <fizbin> I do feel like the function 'firstJust' at https://gist.github.com/fizbin/8267ff9dbc15c6564214aa4cea6d0cb0#file-regexequiv-hs-L172-L187 could be generalized somehow, or made with generic components, but when I tried to make Work an Applicative and make it out of "liftA2 (<|>)", I wound up with one of those evil things that typechecks but is not correct.
2023-01-15 04:24:00 +0100chexum(~quassel@gateway/tor-sasl/chexum)
2023-01-15 04:31:29 +0100Nosrep(~Nosrep@user/nosrep)
2023-01-15 04:43:35 +0100segfaultfizzbuzz(~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds)
2023-01-15 04:44:21 +0100GeneralKenobioldfashionedcow
2023-01-15 04:45:34 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 04:49:36 +0100dolio(~dolio@130.44.134.54) (Read error: Connection reset by peer)
2023-01-15 04:53:24 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds)
2023-01-15 04:53:24 +0100razetime(~Thunderbi@117.193.4.145) (Ping timeout: 272 seconds)
2023-01-15 04:53:32 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2023-01-15 04:53:32 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2023-01-15 04:53:32 +0100finn_elijaFinnElija
2023-01-15 04:55:09 +0100xff0x_(~xff0x@2405:6580:b080:900:33f6:9250:43b6:b1c7) (Ping timeout: 252 seconds)
2023-01-15 04:55:46 +0100dolio(~dolio@130.44.134.54)
2023-01-15 04:57:08 +0100xff0x_(~xff0x@178.255.149.135)
2023-01-15 04:59:44 +0100td_(~td@83.135.9.53) (Ping timeout: 272 seconds)
2023-01-15 05:00:59 +0100td_(~td@83.135.9.57)
2023-01-15 05:10:34 +0100shriekingnoise(~shrieking@186.137.175.87)
2023-01-15 05:13:24 +0100xff0x_(~xff0x@178.255.149.135) (Ping timeout: 260 seconds)
2023-01-15 05:13:24 +0100shriekingnoise_(~shrieking@186.137.175.87) (Ping timeout: 260 seconds)
2023-01-15 05:14:22 +0100xff0x_(~xff0x@2405:6580:b080:900:54f9:caff:68f9:e2a8)
2023-01-15 05:16:13 +0100 <[Leary]> fizbin: Like a parser eating too much input, your `Work` `Applicative` presumably builds up `Work` from the lost branches of the `Alternative`. You might want something like `try :: Work (Maybe a) -> Work (Maybe a); try = maybe (pure Nothing) <$> const <*> finish` so you can do `try x <|> y`.
2023-01-15 05:16:58 +0100razetime(~Thunderbi@117.193.4.145)
2023-01-15 05:18:28 +0100 <[Leary]> Err, with (<|>) corresponding to that of `MaybeT Work`, I guess.
2023-01-15 05:18:46 +0100 <[Leary]> Which you might just want to use anyway.
2023-01-15 05:19:15 +0100mimmy_(~mimmy@142.126.70.245)
2023-01-15 05:19:18 +0100mikess(~sam@user/mikess)
2023-01-15 05:20:10 +0100vulpine(xfnw@tilde.team) (Quit: Connection reset by purr)
2023-01-15 05:22:27 +0100vulpine(xfnw@tilde.team)
2023-01-15 05:24:18 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
2023-01-15 05:26:44 +0100mimmy_(~mimmy@142.126.70.245) (Ping timeout: 268 seconds)
2023-01-15 05:26:45 +0100mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a) (Ping timeout: 256 seconds)
2023-01-15 05:30:13 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2023-01-15 05:30:46 +0100machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 272 seconds)
2023-01-15 05:35:54 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 05:40:01 +0100cheater_(~Username@user/cheater)
2023-01-15 05:40:35 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
2023-01-15 05:40:50 +0100mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a)
2023-01-15 05:41:59 +0100Techcable(~Techcable@user/Techcable) (Ping timeout: 265 seconds)
2023-01-15 05:43:11 +0100cheater(~Username@user/cheater) (Ping timeout: 256 seconds)
2023-01-15 05:43:16 +0100cheater_cheater
2023-01-15 05:44:27 +0100ddellacosta(~ddellacos@89.46.62.175) (Ping timeout: 248 seconds)
2023-01-15 05:49:09 +0100Nosrep(~Nosrep@user/nosrep) (Remote host closed the connection)
2023-01-15 05:51:01 +0100Techcable(~Techcable@user/Techcable)
2023-01-15 05:58:31 +0100natechan(~nate@98.45.169.16)
2023-01-15 06:02:21 +0100hrberg(~quassel@171.79-160-161.customer.lyse.net) (Ping timeout: 255 seconds)
2023-01-15 06:03:35 +0100oldfashionedcow(~Rahul_San@user/oldfashionedcow) (Quit: WeeChat 3.7.1)
2023-01-15 06:03:38 +0100segfaultfizzbuzz(~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
2023-01-15 06:03:50 +0100caryhartline(~caryhartl@2600:1700:2d0:8d30:ec3c:3ed4:a3c8:7826) (Ping timeout: 246 seconds)
2023-01-15 06:06:02 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
2023-01-15 06:12:59 +0100mikess(~sam@user/mikess) (Quit: leaving)
2023-01-15 06:18:44 +0100natechan(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2023-01-15 06:29:02 +0100justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 246 seconds)
2023-01-15 06:31:09 +0100leah2(~leah@vuxu.org) (Ping timeout: 255 seconds)
2023-01-15 06:41:19 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 06:42:22 +0100mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a) (Ping timeout: 252 seconds)
2023-01-15 06:43:40 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2023-01-15 06:46:08 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds)
2023-01-15 06:47:09 +0100mbuf(~Shakthi@49.204.134.13)
2023-01-15 06:53:37 +0100irrgit__(~irrgit@89.47.234.74)
2023-01-15 06:56:05 +0100mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a)
2023-01-15 06:56:40 +0100irrgit_(~irrgit@86.106.90.226) (Ping timeout: 252 seconds)
2023-01-15 06:59:26 +0100finsternis(~X@23.226.237.192) (Read error: Connection reset by peer)
2023-01-15 07:00:49 +0100mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a) (Ping timeout: 256 seconds)
2023-01-15 07:07:29 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2023-01-15 07:12:11 +0100mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a)
2023-01-15 07:16:13 +0100dcoutts_(~duncan@host213-122-143-153.range213-122.btcentralplus.com)
2023-01-15 07:22:59 +0100 <fizbin> [Leary]: That wouldn't work, I don't think. I want the result of the thing that returns a "Just" after stripping off the minimal number of layers of "Work", and near as I can tell that function requires me to finish all of "x"
2023-01-15 07:32:20 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2023-01-15 07:36:46 +0100mimmy_(~mimmy@142.126.70.245)
2023-01-15 07:38:42 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 272 seconds)
2023-01-15 07:41:11 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 07:41:52 +0100mimmy_(~mimmy@142.126.70.245) (Ping timeout: 272 seconds)
2023-01-15 07:46:18 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds)
2023-01-15 07:47:40 +0100fxttr(~florian@mue-88-130-57-190.dsl.tropolys.de)
2023-01-15 07:48:50 +0100segfaultfizzbuzz(~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 272 seconds)
2023-01-15 07:49:21 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 07:51:00 +0100trev(~trev@user/trev)
2023-01-15 07:53:41 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 246 seconds)
2023-01-15 07:54:09 +0100zaquest(~notzaques@5.130.79.72)
2023-01-15 07:56:26 +0100razetime(~Thunderbi@117.193.4.145) (Ping timeout: 272 seconds)
2023-01-15 08:05:41 +0100qhong(~qhong@rescomp-21-400677.stanford.edu) (Remote host closed the connection)
2023-01-15 08:06:30 +0100v0id_ptr(~adrift@user/ptr-frac7al/x-0038398) (Ping timeout: 265 seconds)
2023-01-15 08:06:54 +0100qhong(~qhong@rescomp-21-400677.stanford.edu)
2023-01-15 08:08:27 +0100v0id_ptr(~adrift@user/ptr-frac7al/x-0038398)
2023-01-15 08:13:40 +0100mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a) (Ping timeout: 252 seconds)
2023-01-15 08:13:48 +0100dcoutts_(~duncan@host213-122-143-153.range213-122.btcentralplus.com) (Ping timeout: 252 seconds)
2023-01-15 08:14:02 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-01-15 08:16:08 +0100natechan(~nate@98.45.169.16)
2023-01-15 08:16:24 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2023-01-15 08:17:28 +0100tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Ping timeout: 252 seconds)
2023-01-15 08:21:56 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-01-15 08:23:17 +0100 <[Leary]> fizbin: Ah, I misread the intention of `firstJust`. Your `foldr firstJust` is doing something like `minimumBy depthOfWork`, but with a sort of geometrically-balanced search, rather than depth first or breadth first... You could do something like `type Work a = [Maybe a]; work = (Nothing:); done x = [Just x]; finish = asum; firstJust = zipWith (<|>)` (or the same but an abstract newtype in a second module).
2023-01-15 08:25:13 +0100natechan(~nate@98.45.169.16) (Ping timeout: 252 seconds)
2023-01-15 08:26:04 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-01-15 08:26:04 +0100mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a)
2023-01-15 08:26:06 +0100irrgit_(~irrgit@146.70.27.250)
2023-01-15 08:28:19 +0100 <talismanick> Say I have monadic code that looks like this: https://0x0.st/o7dw.txt
2023-01-15 08:29:02 +0100 <talismanick> How might I deduplicate so the return value from `valGen` gets passed along in turn to each of the functions without me writing it out?
2023-01-15 08:29:24 +0100irrgit__(~irrgit@89.47.234.74) (Ping timeout: 260 seconds)
2023-01-15 08:30:57 +0100 <talismanick> Something kind of like Kleisli composition?
2023-01-15 08:34:42 +0100Tuplanolla(~Tuplanoll@91-159-68-152.elisa-laajakaista.fi)
2023-01-15 08:35:18 +0100 <talismanick> Or, rather, bind-as-relation (one to many instead of one to one)
2023-01-15 08:35:34 +0100 <c_wraith> talismanick: I... wouldn't bother changing it
2023-01-15 08:35:38 +0100Inst_(~Inst@2601:6c4:4081:54f0:3081:cca:cb95:ec2d)
2023-01-15 08:35:56 +0100 <c_wraith> talismanick: there are ways to rewrite it, but I don't think they'd aid understanding in this case
2023-01-15 08:38:43 +0100v0id_ptr(~adrift@user/ptr-frac7al/x-0038398) (Quit: WeeChat 3.5)
2023-01-15 08:39:23 +0100Inst(~Inst@2601:6c4:4081:54f0:3de7:12e6:ed3d:f8f8) (Ping timeout: 255 seconds)
2023-01-15 08:41:42 +0100 <[Leary]> talismanick: If you're passing `val` in a lot of places, you might want `ReaderT`.
2023-01-15 08:41:55 +0100 <c_wraith> talismanick: in simpler cases, things like (<*) and (<$) can help, but I don't think they do anything good here.
2023-01-15 08:50:54 +0100shriekingnoise(~shrieking@186.137.175.87) (Ping timeout: 272 seconds)
2023-01-15 08:50:55 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-01-15 08:52:26 +0100wroathe(~wroathe@user/wroathe) (Quit: leaving)
2023-01-15 08:53:03 +0100 <[Leary]> talismanick: You could also write, say, `fa <<* afb = fa >>= \a -> a <$ afb a; infixl 4 <<*`; it's not an entirely unreasonable operator.
2023-01-15 08:59:51 +0100 <[Leary]> fizbin: Oh, that should have been `firstJust (x:xs) (y:ys) = x:y:firstJust xs ys; firstJust xs ys = xs ++ ys`; `liftA2 (<|>)` would be breadth first.
2023-01-15 09:00:49 +0100 <[Leary]> This might all be easier with ... what was it, LogicT?
2023-01-15 09:11:54 +0100tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
2023-01-15 09:15:56 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds)
2023-01-15 09:16:31 +0100chexum(~quassel@gateway/tor-sasl/chexum)
2023-01-15 09:18:20 +0100tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Ping timeout: 252 seconds)
2023-01-15 09:18:56 +0100Guest52(~Guest52@58.171.243.251)
2023-01-15 09:19:19 +0100tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
2023-01-15 09:20:13 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2023-01-15 09:21:13 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-01-15 09:23:53 +0100barak(~barak@2a02:14f:83:75a5:98fb:ef64:df32:28ff)
2023-01-15 09:24:32 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.)
2023-01-15 09:29:14 +0100chexum(~quassel@gateway/tor-sasl/chexum)
2023-01-15 09:31:17 +0100mei(~mei@user/mei)
2023-01-15 09:50:25 +0100Guest|91(~Guest|91@173.230.148.39)
2023-01-15 09:51:36 +0100 <Guest|91> Could someone to help me installing Haskell?
2023-01-15 09:53:23 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-01-15 09:54:25 +0100Guest|91(~Guest|91@173.230.148.39) (Client Quit)
2023-01-15 09:59:05 +0100 <laalyn> I could try :)
2023-01-15 10:02:29 +0100kenran(~user@user/kenran)
2023-01-15 10:03:08 +0100kenran(~user@user/kenran) (Remote host closed the connection)
2023-01-15 10:08:23 +0100 <[exa]> Guest52: what's the problem?
2023-01-15 10:10:09 +0100f0c1s(~f0c1s@2401:4900:1cb9:5b16:bb45:5360:94a1:208f)
2023-01-15 10:10:29 +0100f0c1s_(~f0c1s@2401:4900:1cb9:5b16:bb45:5360:94a1:208f)
2023-01-15 10:12:31 +0100dtman34(~dtman34@76.156.89.180) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in)
2023-01-15 10:13:25 +0100dtman34(~dtman34@2601:447:d000:93c9:8095:75ea:f23b:f5f5)
2023-01-15 10:14:55 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:cd94:d604:3630:3cd8)
2023-01-15 10:15:20 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:cd94:d604:3630:3cd8) (Client Quit)
2023-01-15 10:17:36 +0100gmg(~user@user/gehmehgeh)
2023-01-15 10:19:53 +0100leah2(~leah@vuxu.org)
2023-01-15 10:26:38 +0100bastelfreak(bastelfrea@libera/staff/VoxPupuli.bastelfreak) (Quit: WeeChat 3.6)
2023-01-15 10:28:00 +0100bastelfreak(bastelfrea@libera/staff/VoxPupuli.bastelfreak)
2023-01-15 10:31:19 +0100burnsidesLlama(~burnsides@119247164140.ctinets.com)
2023-01-15 10:31:56 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2023-01-15 10:40:14 +0100acidjnk(~acidjnk@p200300d6e715c494a9d2b964e819f338.dip0.t-ipconnect.de)
2023-01-15 10:42:43 +0100thongpv87(~thongpv87@2402:9d80:3b9:c4cc:21a0:88fc:6943:1ae5) (Ping timeout: 252 seconds)
2023-01-15 10:44:44 +0100 <talismanick> What does `show @Milli . realToFrac` mean? What do I import so it compiles? What GHC extension?
2023-01-15 10:45:22 +0100 <talismanick> (well, I know it means to represent the number in some format when it gets cast into a string, but the rest is a mystery)
2023-01-15 10:47:06 +0100mechap(~mechap@user/mechap)
2023-01-15 10:51:29 +0100 <talismanick> [Leary]: Thanks for the suggestion, but I think c_wraith is right for now. Really, what I need are higher-power abstractions to pull parts out of IO or otherwise wrap them into clean, composable units
2023-01-15 10:53:08 +0100 <[exa]> talismanick: that looks like a type application, telling `show` what instance of Show to use (thus also forcing `realToFrac` to know what to ouput)
2023-01-15 10:53:24 +0100 <Hecate> -XTypeApplications
2023-01-15 10:53:27 +0100 <Hecate> indeed
2023-01-15 10:53:39 +0100 <Hecate> talismanick: https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/type_applications.html
2023-01-15 10:54:13 +0100burnsidesLlama(~burnsides@119247164140.ctinets.com) ()
2023-01-15 10:55:34 +0100 <[exa]> normally without the application you'd either have an ambiguity (or maybe a surprising default on Fractional+Show), or you'd have to use some gadget to force the type such as `show . (id :: Milli->Milli) . realToFrac`
2023-01-15 10:57:09 +0100gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-01-15 10:58:32 +0100mbuf(~Shakthi@49.204.134.13) (Quit: Leaving)
2023-01-15 10:59:16 +0100 <mauke> `show @Milli` seems a bit pointless when you can get the same effect with `\x -> show (x :: Milli)` or `show . (\x -> x :: Milli)` without any language extensions
2023-01-15 10:59:32 +0100coldtom(~coldtom@coldrick.cc) (Quit: Well, that's got rid of me)
2023-01-15 11:07:42 +0100 <Hecate> mauke: lol
2023-01-15 11:07:55 +0100 <Hecate> mauke: don't say that, he might think you're serious :P
2023-01-15 11:08:39 +0100 <mauke> ? I am serious
2023-01-15 11:12:02 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-01-15 11:13:18 +0100L29Ah(~L29Ah@wikipedia/L29Ah) ()
2023-01-15 11:14:19 +0100 <talismanick> mauke: You need ScopedTypeVariables for that
2023-01-15 11:14:37 +0100 <mauke> why?
2023-01-15 11:14:44 +0100talismanickshrugs
2023-01-15 11:14:55 +0100 <talismanick> It's a scoped type variable
2023-01-15 11:15:00 +0100 <mauke> none of the examples shown use any type variables
2023-01-15 11:16:02 +0100son0p(~ff@190.158.28.118) (Remote host closed the connection)
2023-01-15 11:16:10 +0100 <mauke> am I on drugs or is everyone else?
2023-01-15 11:18:45 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2023-01-15 11:21:05 +0100 <Hecate> pretty sure (\x -> show (x :: Milli)) . realToFrac doesn't need ScopedTypeVariables
2023-01-15 11:21:22 +0100 <Hecate> but it's still considerably more burdensome than show @Milli
2023-01-15 11:22:47 +0100 <mauke> but less burdensome than {-# LANGUAGE TypeApplications #-} show @Milli
2023-01-15 11:23:56 +0100gnalzothinks this is a question of taste :)
2023-01-15 11:23:57 +0100 <xerox> talismanick: here's some examples: https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/scoped_type_variables.html#extensio…
2023-01-15 11:25:33 +0100 <talismanick> ah, you're right - I'm confusing it with the time I did have to use that extension (with similar syntax)
2023-01-15 11:28:59 +0100 <Hecate> mauke: no
2023-01-15 11:29:01 +0100 <Hecate> :P
2023-01-15 11:29:14 +0100 <Hecate> gnalzo: :)
2023-01-15 11:36:25 +0100barak(~barak@2a02:14f:83:75a5:98fb:ef64:df32:28ff) (Ping timeout: 260 seconds)
2023-01-15 11:38:19 +0100mimmy_(~mimmy@142.126.70.245)
2023-01-15 11:40:18 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2023-01-15 11:43:48 +0100mimmy_(~mimmy@142.126.70.245) (Ping timeout: 272 seconds)
2023-01-15 11:48:33 +0100 <Reinhilde> e
2023-01-15 11:49:55 +0100 <mauke> https://duckduckgo.com/?t=ffab&q=%65&iax=images&ia=images
2023-01-15 11:55:47 +0100zeenk(~zeenk@2a02:2f04:a014:8700::7fe)
2023-01-15 12:01:45 +0100f0c1s_(~f0c1s@2401:4900:1cb9:5b16:bb45:5360:94a1:208f) (Quit: Leaving)
2023-01-15 12:01:45 +0100f0c1s(~f0c1s@2401:4900:1cb9:5b16:bb45:5360:94a1:208f) (Quit: Leaving)
2023-01-15 12:06:07 +0100mechap(~mechap@user/mechap) (Quit: WeeChat 3.8)
2023-01-15 12:07:21 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2023-01-15 12:10:06 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6450:b99c:346:15e5) (Remote host closed the connection)
2023-01-15 12:10:52 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2023-01-15 12:11:39 +0100chexum(~quassel@gateway/tor-sasl/chexum)
2023-01-15 12:12:09 +0100mei_(~mei@user/mei)
2023-01-15 12:14:31 +0100thongpv87(~thongpv87@2402:9d80:3b9:c4cc:6182:a43d:c5b4:7a2d)
2023-01-15 12:14:47 +0100mei(~mei@user/mei) (Ping timeout: 260 seconds)
2023-01-15 12:24:03 +0100tremon(~tremon@83-85-213-108.cable.dynamic.v4.ziggo.nl)
2023-01-15 12:24:21 +0100barak(~barak@2a02:14f:83:75a5:71fd:c7ff:a853:183e)
2023-01-15 12:26:00 +0100talismanick(~talismani@2601:200:c181:4c40::1be2) (Ping timeout: 260 seconds)
2023-01-15 12:36:39 +0100mmhat(~mmh@p200300f1c7123c02ee086bfffe095315.dip0.t-ipconnect.de)
2023-01-15 12:37:50 +0100beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt)
2023-01-15 12:38:54 +0100bolichep(~bolichep@186.57.179.191)
2023-01-15 12:41:19 +0100razetime(~Thunderbi@117.193.4.145)
2023-01-15 12:49:19 +0100acidjnk(~acidjnk@p200300d6e715c494a9d2b964e819f338.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2023-01-15 12:49:33 +0100son0p(~ff@190.158.28.118)
2023-01-15 12:49:34 +0100mmhat(~mmh@p200300f1c7123c02ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.8)
2023-01-15 12:53:04 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2023-01-15 12:54:20 +0100razetime(~Thunderbi@117.193.4.145) (Remote host closed the connection)
2023-01-15 13:10:33 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6450:b99c:346:15e5)
2023-01-15 13:14:17 +0100gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2023-01-15 13:16:08 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6450:b99c:346:15e5) (Ping timeout: 255 seconds)
2023-01-15 13:18:06 +0100CiaoSen(~Jura@p200300c9574fa4002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2023-01-15 13:21:11 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
2023-01-15 13:21:23 +0100wootehfoot(~wootehfoo@user/wootehfoot)
2023-01-15 13:24:54 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-01-15 13:28:17 +0100ss4(~wootehfoo@user/wootehfoot)
2023-01-15 13:30:24 +0100ss4(~wootehfoo@user/wootehfoot) (Client Quit)
2023-01-15 13:31:42 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 252 seconds)
2023-01-15 13:33:21 +0100__monty__(~toonn@user/toonn)
2023-01-15 13:34:13 +0100gmg(~user@user/gehmehgeh)
2023-01-15 13:44:57 +0100phma(phma@2001:5b0:211f:9a8:4ecd:10c6:a18f:491e) (Read error: Connection reset by peer)
2023-01-15 13:45:49 +0100phma(~phma@host-67-44-208-219.hnremote.net)
2023-01-15 13:53:32 +0100instantaphex(~jb@c-73-171-252-84.hsd1.fl.comcast.net)
2023-01-15 13:57:44 +0100instantaphex(~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 246 seconds)
2023-01-15 14:03:46 +0100 <Guest5476> Identity function with special treatment to Bool values: https://play-haskell.tomsmeding.com/saved/XrMtxzfx
2023-01-15 14:08:07 +0100titibandit1(~titibandi@xdsl-81-173-160-143.nc.de)
2023-01-15 14:18:22 +0100nek0(~nek0@2a01:4f8:222:2b41::12) (Quit: The Lounge - https://thelounge.chat)
2023-01-15 14:19:35 +0100nek0(~nek0@2a01:4f8:222:2b41::12)
2023-01-15 14:23:29 +0100CiaoSen(~Jura@p200300c9574fa4002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2023-01-15 14:31:29 +0100jakalx(~jakalx@base.jakalx.net) ()
2023-01-15 14:40:56 +0100pwug(~pwug@user/pwug) (Read error: Connection reset by peer)
2023-01-15 14:43:45 +0100bolichep(~bolichep@186.57.179.191) (Quit: Saliendo)
2023-01-15 14:47:58 +0100coot(~coot@213.134.171.3)
2023-01-15 14:48:06 +0100coot(~coot@213.134.171.3) (Remote host closed the connection)
2023-01-15 14:48:25 +0100barak(~barak@2a02:14f:83:75a5:71fd:c7ff:a853:183e) (Ping timeout: 252 seconds)
2023-01-15 14:56:23 +0100razetime(~Thunderbi@117.193.4.145)
2023-01-15 14:57:13 +0100CiaoSen(~Jura@p200300c9574fa4002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2023-01-15 14:57:28 +0100razetime(~Thunderbi@117.193.4.145) (Client Quit)
2023-01-15 15:00:14 +0100son0p(~ff@190.158.28.118) (Ping timeout: 268 seconds)
2023-01-15 15:01:25 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-01-15 15:03:33 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-01-15 15:04:14 +0100troydm(~troydm@user/troydm) (Ping timeout: 246 seconds)
2023-01-15 15:13:53 +0100tubogram440(~tubogram@user/tubogram)
2023-01-15 15:14:37 +0100tubogram44(~tubogram@user/tubogram) (Ping timeout: 246 seconds)
2023-01-15 15:14:38 +0100tubogram440tubogram44
2023-01-15 15:23:28 +0100jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2023-01-15 15:23:35 +0100jinsun__(~jinsun@user/jinsun)
2023-01-15 15:23:35 +0100jinsun__jinsun
2023-01-15 15:26:42 +0100jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2023-01-15 15:26:50 +0100 <ncf> do you have a permit for breaking parametricity?
2023-01-15 15:26:57 +0100jinsun(~jinsun@user/jinsun)
2023-01-15 15:28:01 +0100 <Inst_> question about short cricuiting in other languages
2023-01-15 15:28:04 +0100 <Inst_> do they use the thunk model?
2023-01-15 15:28:20 +0100 <Inst_> I'm describing laziness to some new developer who's trying to get their first job with Python as "everything short-circuits"
2023-01-15 15:28:31 +0100 <ncf> not necessarily; C has short-circuiting operators but no thunks
2023-01-15 15:28:38 +0100 <Inst_> ah
2023-01-15 15:28:43 +0100Inst_Inst
2023-01-15 15:28:45 +0100 <Inst> oh well
2023-01-15 15:28:48 +0100 <Inst> close enough, I guess
2023-01-15 15:29:38 +0100 <geekosaur> "everything short-circuits" isn't quite right either. how does that explain Control.Monad.when?
2023-01-15 15:30:50 +0100merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds)
2023-01-15 15:31:09 +0100 <geekosaur> it also doesn't work if multiple parameters are strict
2023-01-15 15:31:20 +0100 <geekosaur> well, even if one is
2023-01-15 15:31:39 +0100 <Inst> why does when matter?
2023-01-15 15:31:55 +0100merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
2023-01-15 15:32:00 +0100 <Inst> evaluate the boolean, then if the boolean is true, substitute pure () with the appllicative
2023-01-15 15:34:42 +0100 <geekosaur> laziness is why it doesn't evaluate the thunk before looking at the boolean
2023-01-15 15:34:58 +0100 <int-e> I'd call it on-demand evaluation. Boolean short-circuiting is a special case of that. But it still won't tell you what exactly constitutes "demand".
2023-01-15 15:37:47 +0100merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2023-01-15 15:39:53 +0100mimmy_(~mimmy@142.126.70.245)
2023-01-15 15:41:04 +0100gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.7.1)
2023-01-15 15:42:57 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2023-01-15 15:43:07 +0100 <Inst> it doesn't matter, the python guy doesn't even understand the "if it compiles, ship it" joke and the "if it compiles, it works" semi-joke
2023-01-15 15:43:23 +0100ubert(~Thunderbi@p548c9ce5.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2023-01-15 15:43:27 +0100ub(~Thunderbi@185.195.232.146)
2023-01-15 15:44:48 +0100mimmy_(~mimmy@142.126.70.245) (Ping timeout: 260 seconds)
2023-01-15 15:45:44 +0100paulpaul1076(~textual@95-29-5-111.broadband.corbina.ru) (Ping timeout: 272 seconds)
2023-01-15 15:45:45 +0100ububert
2023-01-15 15:49:41 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-01-15 15:53:25 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-01-15 15:54:42 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-01-15 15:58:03 +0100_leo92_(~emmanuelu@user/emmanuelux)
2023-01-15 15:59:53 +0100 <eldritchcookie[4> how can i make it sure that a file generated by template haskell is included in the final package?
2023-01-15 16:01:29 +0100emmanuelux(~emmanuelu@user/emmanuelux) (Ping timeout: 260 seconds)
2023-01-15 16:01:40 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2023-01-15 16:03:15 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-01-15 16:04:27 +0100barak(~barak@77.125.91.132)
2023-01-15 16:06:12 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2023-01-15 16:06:16 +0100wootehfoot(~wootehfoo@user/wootehfoot)
2023-01-15 16:07:21 +0100 <eldritchcookie[4> basically can i make a autogenerated file be mentioned in the includes?
2023-01-15 16:07:39 +0100Guest52(~Guest52@58.171.243.251) (Quit: Client closed)
2023-01-15 16:09:47 +0100barak(~barak@77.125.91.132) (Ping timeout: 264 seconds)
2023-01-15 16:10:46 +0100pagnol(~user@213-205-209-87.ftth.glasoperator.nl)
2023-01-15 16:12:06 +0100mechap(~mechap@user/mechap)
2023-01-15 16:15:58 +0100L29Ah(~L29Ah@wikipedia/L29Ah)
2023-01-15 16:16:13 +0100 <lyxia> eldritchcookie[4: there is an extra-sources-files field in cabal, it doesn't care where the files come from, they just have to be there when running "cabal sdist"
2023-01-15 16:25:43 +0100 <eldritchcookie[4> does it keep include-dirs automatically?
2023-01-15 16:26:19 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2023-01-15 16:27:19 +0100 <eldritchcookie[4> or do i need to also mention them in extra source files?
2023-01-15 16:29:15 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-01-15 16:30:22 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-01-15 16:30:54 +0100oldfashionedcow(~Rahul_San@user/oldfashionedcow)
2023-01-15 16:37:42 +0100wootehfoot(~wootehfoo@user/wootehfoot)
2023-01-15 16:37:59 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds)
2023-01-15 16:46:18 +0100fxttr(~florian@mue-88-130-57-190.dsl.tropolys.de) (Ping timeout: 268 seconds)
2023-01-15 16:47:53 +0100fxttr(~florian@i577BC913.versanet.de)
2023-01-15 16:49:31 +0100panovia(~user@user/siracusa) (Quit: Bye!)
2023-01-15 16:51:26 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 16:54:20 +0100machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-01-15 16:59:14 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
2023-01-15 17:01:06 +0100machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 268 seconds)
2023-01-15 17:02:28 +0100machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-01-15 17:06:02 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
2023-01-15 17:06:30 +0100matijja(~matijja@193.77.181.201) (Quit: ZNC 1.8.2 - https://znc.in)
2023-01-15 17:06:59 +0100matijja(~matijja@193.77.181.201)
2023-01-15 17:10:30 +0100merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
2023-01-15 17:11:30 +0100Inst(~Inst@2601:6c4:4081:54f0:3081:cca:cb95:ec2d) (Ping timeout: 255 seconds)
2023-01-15 17:13:22 +0100son0p(~ff@2800:e2:f80:867:8077:75e8:74b:f48d)
2023-01-15 17:19:35 +0100troydm(~troydm@user/troydm)
2023-01-15 17:21:50 +0100mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a) (Ping timeout: 255 seconds)
2023-01-15 17:22:08 +0100merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds)
2023-01-15 17:25:34 +0100ddellacosta(~ddellacos@86.106.143.136)
2023-01-15 17:31:39 +0100gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-01-15 17:33:04 +0100matijja(~matijja@193.77.181.201) (Quit: ZNC 1.8.2 - https://znc.in)
2023-01-15 17:33:45 +0100matijja(~matijja@193.77.181.201)
2023-01-15 17:34:17 +0100segfaultfizzbuzz(~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
2023-01-15 17:38:40 +0100pagnol(~user@213-205-209-87.ftth.glasoperator.nl) (Ping timeout: 260 seconds)
2023-01-15 17:40:34 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6450:b99c:346:15e5)
2023-01-15 17:44:48 +0100coot(~coot@213.134.171.3)
2023-01-15 17:45:30 +0100mimmy_(~mimmy@142.126.70.245)
2023-01-15 17:46:41 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2023-01-15 17:49:04 +0100son0p(~ff@2800:e2:f80:867:8077:75e8:74b:f48d) (Killed (NickServ (GHOST command used by son0p-!~ff@181.136.122.143)))
2023-01-15 17:49:57 +0100son0p(~ff@181.136.122.143)
2023-01-15 17:51:09 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2023-01-15 17:53:06 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2023-01-15 17:53:35 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 17:57:14 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-01-15 17:57:14 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-01-15 17:57:14 +0100wroathe(~wroathe@user/wroathe)
2023-01-15 18:02:32 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds)
2023-01-15 18:04:37 +0100thongpv(~thongpv87@113.176.74.88)
2023-01-15 18:06:01 +0100thongpv87(~thongpv87@2402:9d80:3b9:c4cc:6182:a43d:c5b4:7a2d) (Ping timeout: 252 seconds)
2023-01-15 18:06:26 +0100merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
2023-01-15 18:08:59 +0100 <fendor[m]> is there a yaml parsing library that lets me warn if my document contains unknown fields?
2023-01-15 18:09:45 +0100coot(~coot@213.134.171.3) (Quit: coot)
2023-01-15 18:11:22 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2023-01-15 18:12:02 +0100merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
2023-01-15 18:13:57 +0100jumper149(~jumper149@base.felixspringer.xyz)
2023-01-15 18:14:15 +0100Xeroine(~Xeroine@user/xeroine) (Ping timeout: 260 seconds)
2023-01-15 18:17:56 +0100Xeroine(~Xeroine@user/xeroine)
2023-01-15 18:18:07 +0100 <[exa]> fendor[m]: the yamlish aeson variant doesn't explode on unknown fields?
2023-01-15 18:19:22 +0100 <fendor[m]> aeson doesn't, so yaml won't either, afaict.
2023-01-15 18:19:44 +0100steerpike(~echelon@gateway/tor-sasl/steerpike)
2023-01-15 18:21:10 +0100steerpike(~echelon@gateway/tor-sasl/steerpike) ()
2023-01-15 18:21:41 +0100 <fendor[m]> By unknown field, I mean a field that isn't necessary for parsing. Parsing is successful, and the unknown field is simply not parsed into any data structure
2023-01-15 18:21:42 +0100dcoutts_(~duncan@host213-122-143-153.range213-122.btcentralplus.com)
2023-01-15 18:24:44 +0100ddellacosta(~ddellacos@86.106.143.136) (Ping timeout: 246 seconds)
2023-01-15 18:26:54 +0100ddellacosta(~ddellacos@89.45.224.227)
2023-01-15 18:27:19 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6450:b99c:346:15e5) (Remote host closed the connection)
2023-01-15 18:27:37 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6450:b99c:346:15e5)
2023-01-15 18:27:51 +0100 <[exa]> fendor[m]: well as a complete workaround you may format the data structure back to aeson Value and diff it
2023-01-15 18:29:45 +0100beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt) (Quit: beteigeuze)
2023-01-15 18:30:13 +0100beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt)
2023-01-15 18:32:19 +0100 <fendor[m]> [exa] sounds like a pretty good idea. It forces me to add a ToJSON instance, but it seems easier to maintain than other solution from stack overflow
2023-01-15 18:33:12 +0100 <[exa]> like, if the constraint you want to fit in is "no ignored fields ever", this is it
2023-01-15 18:34:27 +0100 <Guest5476> lmao, why this behaves in such a strange way? https://play-haskell.tomsmeding.com/saved/bCe7WkVe
2023-01-15 18:34:59 +0100 <fendor[m]> yeah, I think warning would be the better behaviour, now let's just hope I am never parsing files that have a few MB
2023-01-15 18:36:41 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
2023-01-15 18:40:25 +0100jakalx(~jakalx@base.jakalx.net)
2023-01-15 18:45:41 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 18:45:56 +0100econo(uid147250@user/econo)
2023-01-15 18:49:24 +0100mimmy_(~mimmy@142.126.70.245) (Ping timeout: 272 seconds)
2023-01-15 18:50:02 +0100 <[exa]> fendor[m]: actually if you compare the Values reasonably, it's gonna lazy-stream
2023-01-15 18:50:40 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds)
2023-01-15 18:51:32 +0100thongpv87(~thongpv87@2402:9d80:3ee:7887:942:a6bd:b981:3bd)
2023-01-15 18:52:08 +0100 <[exa]> Guest5476: wow okay, interesting
2023-01-15 18:53:19 +0100 <[exa]> looks like it doesn't really see your instance, for whatever reason
2023-01-15 18:53:39 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6450:b99c:346:15e5) (Remote host closed the connection)
2023-01-15 18:54:34 +0100thongpv(~thongpv87@113.176.74.88) (Ping timeout: 268 seconds)
2023-01-15 18:55:30 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6450:b99c:346:15e5)
2023-01-15 19:01:44 +0100 <Guest5476> No, that's expected behavior: https://serokell.io/blog/uncaught-exception-handling
2023-01-15 19:01:59 +0100 <Guest5476> [exa] ^
2023-01-15 19:07:04 +0100o(niko@libera/staff/niko)
2023-01-15 19:07:20 +0100fizbin(~fizbin@user/fizbin) (Ping timeout: 260 seconds)
2023-01-15 19:07:35 +0100merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
2023-01-15 19:08:44 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 19:13:23 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
2023-01-15 19:15:53 +0100titibandit1(~titibandi@xdsl-81-173-160-143.nc.de) (Quit: Leaving.)
2023-01-15 19:17:22 +0100dsrt^(~dsrt@76.145.190.81) (Remote host closed the connection)
2023-01-15 19:18:04 +0100dcoutts_(~duncan@host213-122-143-153.range213-122.btcentralplus.com) (Ping timeout: 260 seconds)
2023-01-15 19:18:18 +0100fizbin(~fizbin@user/fizbin)
2023-01-15 19:19:30 +0100shriekingnoise(~shrieking@186.137.175.87)
2023-01-15 19:22:09 +0100dcoutts_(~duncan@host213-122-143-153.range213-122.btcentralplus.com)
2023-01-15 19:27:24 +0100dcoutts_(~duncan@host213-122-143-153.range213-122.btcentralplus.com) (Ping timeout: 260 seconds)
2023-01-15 19:29:43 +0100fizbin(~fizbin@user/fizbin) (Ping timeout: 268 seconds)
2023-01-15 19:35:17 +0100 <[exa]> Guest5476: oh wow ok
2023-01-15 19:36:46 +0100CiaoSen(~Jura@p200300c9574fa4002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2023-01-15 19:40:55 +0100merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2023-01-15 19:43:55 +0100fizbin(~fizbin@user/fizbin)
2023-01-15 19:44:58 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 19:45:24 +0100machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 265 seconds)
2023-01-15 19:45:32 +0100Inst(~Inst@2601:6c4:4081:54f0:c85a:c40d:a7df:1361)
2023-01-15 19:46:27 +0100mechap(~mechap@user/mechap) (Quit: WeeChat 3.8)
2023-01-15 19:47:54 +0100talismanick(~talismani@2601:200:c181:4c40::1be2)
2023-01-15 19:49:36 +0100justsomeguy(~justsomeg@user/justsomeguy)
2023-01-15 19:49:48 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
2023-01-15 19:55:22 +0100 <juri_> I have a comparison in my program, that compares a value against the sum of a series of guaranteed to be positive values. is there a way i can abuse applicative to evaluate the series of positive values such that when the comparison is greater, it stops summing the applicatives, and evaluating their expensive generation functions?
2023-01-15 19:57:02 +0100 <geekosaur> asum over First?
2023-01-15 19:57:07 +0100 <geekosaur> maybe
2023-01-15 19:57:20 +0100 <geekosaur> hm, nom that's per element, not collecting
2023-01-15 19:57:28 +0100 <geekosaur> s/nom/no,
2023-01-15 20:01:10 +0100 <geekosaur> not sure you can do that with Applicative, actually, would need Monad
2023-01-15 20:03:02 +0100 <juri_> hmm. i guess i'd have to learn how monad works. fun! :)
2023-01-15 20:03:25 +0100 <juri_> (i am a simple haskeller, really. :) )
2023-01-15 20:03:43 +0100merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
2023-01-15 20:03:48 +0100fizbin(~fizbin@user/fizbin) (Ping timeout: 260 seconds)
2023-01-15 20:08:34 +0100merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
2023-01-15 20:12:56 +0100titibandit1(~titibandi@xdsl-81-173-160-143.nc.de)
2023-01-15 20:14:15 +0100natechan(~nate@98.45.169.16)
2023-01-15 20:15:40 +0100fxttr(~florian@i577BC913.versanet.de) (Quit: leaving)
2023-01-15 20:16:17 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2023-01-15 20:16:52 +0100caryhartline(~caryhartl@2600:1700:2d0:8d30:a4a8:25f2:538:8162)
2023-01-15 20:18:05 +0100trev(~trev@user/trev) (Remote host closed the connection)
2023-01-15 20:18:42 +0100natechan(~nate@98.45.169.16) (Ping timeout: 252 seconds)
2023-01-15 20:31:38 +0100natechan(~nate@98.45.169.16)
2023-01-15 20:33:05 +0100thongpv87(~thongpv87@2402:9d80:3ee:7887:942:a6bd:b981:3bd) (Ping timeout: 260 seconds)
2023-01-15 20:34:04 +0100wroathe(~wroathe@user/wroathe) (Quit: leaving)
2023-01-15 20:36:14 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2023-01-15 20:45:54 +0100mimmy_(~mimmy@142.126.70.245)
2023-01-15 20:48:48 +0100ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2023-01-15 20:49:20 +0100ec(~ec@gateway/tor-sasl/ec)
2023-01-15 20:50:23 +0100mimmy_(~mimmy@142.126.70.245) (Ping timeout: 246 seconds)
2023-01-15 20:51:52 +0100Sgeo(~Sgeo@user/sgeo)
2023-01-15 20:53:23 +0100natechan(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2023-01-15 20:54:05 +0100justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 260 seconds)
2023-01-15 20:54:16 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:bd7d:d18b:6ce0:4c58)
2023-01-15 21:01:59 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 264 seconds)
2023-01-15 21:04:55 +0100_leo92_(~emmanuelu@user/emmanuelux) (Quit: au revoir)
2023-01-15 21:09:58 +0100natechan(~nate@98.45.169.16)
2023-01-15 21:18:16 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:bd7d:d18b:6ce0:4c58) (Quit: WeeChat 2.8)
2023-01-15 21:23:15 +0100talismanick(~talismani@2601:200:c181:4c40::1be2) (Ping timeout: 260 seconds)
2023-01-15 21:24:24 +0100wroathe(~wroathe@50.205.197.50)
2023-01-15 21:24:24 +0100wroathe(~wroathe@50.205.197.50) (Changing host)
2023-01-15 21:24:24 +0100wroathe(~wroathe@user/wroathe)
2023-01-15 21:25:46 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2023-01-15 21:26:16 +0100hpc(~juzz@ip98-169-35-163.dc.dc.cox.net) (Ping timeout: 268 seconds)
2023-01-15 21:27:07 +0100merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
2023-01-15 21:27:46 +0100hpc(~juzz@ip98-169-35-163.dc.dc.cox.net)
2023-01-15 21:29:06 +0100ddellacosta(~ddellacos@89.45.224.227) (Ping timeout: 252 seconds)
2023-01-15 21:31:41 +0100Xeroine(~Xeroine@user/xeroine) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in)
2023-01-15 21:32:26 +0100hpc(~juzz@ip98-169-35-163.dc.dc.cox.net) (Ping timeout: 268 seconds)
2023-01-15 21:33:00 +0100Xeroine(~Xeroine@user/xeroine)
2023-01-15 21:33:11 +0100merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 264 seconds)
2023-01-15 21:40:21 +0100hpc(~juzz@ip98-169-35-163.dc.dc.cox.net)
2023-01-15 21:43:05 +0100kee(~~kee@user/wizzwizz4) (Ping timeout: 260 seconds)
2023-01-15 21:45:31 +0100merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
2023-01-15 21:46:00 +0100kee(~~kee@user/wizzwizz4)
2023-01-15 21:47:33 +0100azimut_(~azimut@gateway/tor-sasl/azimut)
2023-01-15 21:47:53 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
2023-01-15 21:49:09 +0100machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-01-15 21:50:11 +0100merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2023-01-15 21:55:50 +0100hrberg(~quassel@171.79-160-161.customer.lyse.net)
2023-01-15 21:57:02 +0100sh1n(~sh1n@181.229.121.151)
2023-01-15 22:03:16 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2023-01-15 22:04:43 +0100wroathe(~wroathe@50.205.197.50)
2023-01-15 22:04:43 +0100wroathe(~wroathe@50.205.197.50) (Changing host)
2023-01-15 22:04:43 +0100wroathe(~wroathe@user/wroathe)
2023-01-15 22:06:48 +0100merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
2023-01-15 22:08:04 +0100mimmy_(~mimmy@142.126.70.245)
2023-01-15 22:08:13 +0100acarrico(~acarrico@dhcp-68-142-49-163.greenmountainaccess.net) (Quit: Leaving.)
2023-01-15 22:08:50 +0100fizbin(~fizbin@user/fizbin)
2023-01-15 22:09:46 +0100acidjnk(~acidjnk@p54ad56b7.dip0.t-ipconnect.de)
2023-01-15 22:10:22 +0100gmg(~user@user/gehmehgeh) (Quit: Leaving)
2023-01-15 22:11:07 +0100hrberg(~quassel@171.79-160-161.customer.lyse.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2023-01-15 22:11:47 +0100hrberg(~quassel@171.79-160-161.customer.lyse.net)
2023-01-15 22:12:03 +0100aaronm04(~user@user/aaronm04)
2023-01-15 22:12:04 +0100merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
2023-01-15 22:13:20 +0100mimmy_(~mimmy@142.126.70.245) (Ping timeout: 272 seconds)
2023-01-15 22:15:39 +0100CiaoSen(~Jura@p200300c9574fa4002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2023-01-15 22:17:18 +0100shriekingnoise_(~shrieking@186.137.175.87)
2023-01-15 22:20:32 +0100shriekingnoise(~shrieking@186.137.175.87) (Ping timeout: 268 seconds)
2023-01-15 22:21:47 +0100titibandit1(~titibandi@xdsl-81-173-160-143.nc.de) (Remote host closed the connection)
2023-01-15 22:26:02 +0100mechap(~mechap@user/mechap)
2023-01-15 22:32:10 +0100justsomeguy(~justsomeg@user/justsomeguy)
2023-01-15 22:34:05 +0100oldfashionedcowconvincer3000
2023-01-15 22:36:04 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
2023-01-15 22:36:28 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2023-01-15 22:37:12 +0100convincer3000oldfashionedcow
2023-01-15 22:49:14 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2023-01-15 22:51:58 +0100kee(~~kee@user/wizzwizz4) (Ping timeout: 272 seconds)
2023-01-15 22:52:40 +0100wroathe(~wroathe@50.205.197.50)
2023-01-15 22:52:40 +0100wroathe(~wroathe@50.205.197.50) (Changing host)
2023-01-15 22:52:40 +0100wroathe(~wroathe@user/wroathe)
2023-01-15 22:53:12 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 22:55:53 +0100kee(~~kee@user/wizzwizz4)
2023-01-15 22:57:32 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 255 seconds)
2023-01-15 23:02:12 +0100mc47(~mc47@xmonad/TheMC47)
2023-01-15 23:02:56 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2023-01-15 23:08:28 +0100hrberg(~quassel@171.79-160-161.customer.lyse.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2023-01-15 23:14:04 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 23:14:09 +0100hrberg(~quassel@171.79-160-161.customer.lyse.net)
2023-01-15 23:15:08 +0100gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.7.1)
2023-01-15 23:18:06 +0100notzmv(~zmv@user/notzmv)
2023-01-15 23:18:34 +0100freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds)
2023-01-15 23:19:07 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2023-01-15 23:20:09 +0100zer0bitz(~zer0bitz@dsl-hkibng32-54fb48-32.dhcp.inet.fi) (Ping timeout: 260 seconds)
2023-01-15 23:24:26 +0100wroathe(~wroathe@50.205.197.50)
2023-01-15 23:24:26 +0100wroathe(~wroathe@50.205.197.50) (Changing host)
2023-01-15 23:24:26 +0100wroathe(~wroathe@user/wroathe)
2023-01-15 23:27:15 +0100merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
2023-01-15 23:29:05 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2023-01-15 23:35:41 +0100Guest94(~Guest94@2600:8805:d807:e00:9189:eb63:2ecf:8f6e)
2023-01-15 23:43:30 +0100 <Guest94> Hi all, im beginner in Haskell and have a question about function composition (.) operator. Say I have this code:
2023-01-15 23:43:30 +0100 <Guest94> firstPart = (<> " ")
2023-01-15 23:43:31 +0100 <Guest94> compose = (<>) . firstPart
2023-01-15 23:43:31 +0100 <Guest94> compose "hi" "john"
2023-01-15 23:43:32 +0100 <Guest94> ghci> "hi john"
2023-01-15 23:43:32 +0100 <Guest94> Im confused at (<>) is a 2 args function. Is it that natural to compose different no. of args function together?
2023-01-15 23:43:33 +0100 <Guest94> Secondly, I tried to apply the args on the same line with the composition, but it gives me error, even though I have the application operator (&):
2023-01-15 23:43:33 +0100 <Guest94> partial = (<>) . firstPart & "hi"
2023-01-15 23:43:34 +0100 <Guest94> partial = (<>) . firstPart & "hi" "john"
2023-01-15 23:43:34 +0100 <Guest94> partial = (<>) . firstPart "hi" "john"
2023-01-15 23:43:41 +0100 <Guest94> any help is much appreciated!
2023-01-15 23:44:02 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6450:b99c:346:15e5) (Remote host closed the connection)
2023-01-15 23:45:28 +0100 <sshine> Guest94, hi
2023-01-15 23:46:04 +0100 <sshine> Guest94, (<> " ") is syntax sugar for (\s -> s <> " ")
2023-01-15 23:46:26 +0100 <sshine> Guest94, (" " <>) is syntax sugar for (\s -> " " <> s)
2023-01-15 23:46:38 +0100scoopahdoopah(~quassel@050-089-109-059.res.spectrum.com)
2023-01-15 23:47:45 +0100 <sshine> Guest94, the reason you can't write (<>) . is, as you say, it's a two-argument function.
2023-01-15 23:48:48 +0100 <sshine> well, you can write it, but...
2023-01-15 23:48:52 +0100 <sshine> :t ((<>) .)
2023-01-15 23:48:53 +0100 <lambdabot> Semigroup a1 => (a2 -> a1) -> a2 -> a1 -> a1
2023-01-15 23:50:05 +0100 <Guest94> sshine I don't get what you mean, I can still write
2023-01-15 23:50:05 +0100 <Guest94> compose = (<>) . firstPart
2023-01-15 23:50:06 +0100 <Guest94> compose "hi" "john"
2023-01-15 23:50:06 +0100 <Guest94> and the result is "hi john"
2023-01-15 23:50:54 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving)
2023-01-15 23:50:55 +0100 <Guest94> but I didn't want to bind (<>) . firstPart to the variable compose
2023-01-15 23:51:46 +0100 <sshine> I'm a little confused. what do you wanna do then? :)
2023-01-15 23:51:50 +0100 <Guest94> I wanted to directly pass args right after the composition, and it failed, I tried all 3 ways:
2023-01-15 23:51:51 +0100 <Guest94> (<>) . firstPart & "hi"
2023-01-15 23:51:51 +0100 <Guest94> (<>) . firstPart & "hi" "john"
2023-01-15 23:51:52 +0100 <Guest94> (<>) . firstPart "hi" "john"
2023-01-15 23:52:34 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6450:b99c:346:15e5)
2023-01-15 23:52:43 +0100 <geekosaur> @let firstPart = (<> " ")
2023-01-15 23:52:45 +0100 <lambdabot> Defined.
2023-01-15 23:53:06 +0100 <geekosaur> > ((<>) . firstpart) "hi" "john"
2023-01-15 23:53:08 +0100 <lambdabot> error:
2023-01-15 23:53:08 +0100 <lambdabot> • Variable not in scope: firstpart :: [Char] -> [Char]
2023-01-15 23:53:08 +0100 <lambdabot> • Perhaps you meant ‘firstPart’ (line 202)
2023-01-15 23:53:14 +0100 <geekosaur> > ((<>) . firstPart) "hi" "john"
2023-01-15 23:53:16 +0100 <lambdabot> "hi john"
2023-01-15 23:53:31 +0100 <sshine> > (((<>) . (<> " ")) "hi") "john"
2023-01-15 23:53:33 +0100 <lambdabot> "hi john"
2023-01-15 23:54:01 +0100 <geekosaur> & does not help you here because the "hi" "john" part following it is treated as a function application, but "hi" isn't a function
2023-01-15 23:54:59 +0100 <sshine> > intercalate " " ["hi", "john"] -- :o
2023-01-15 23:55:01 +0100 <lambdabot> "hi john"
2023-01-15 23:55:10 +0100 <xerox> > unwords ["hi","john"]
2023-01-15 23:55:13 +0100 <lambdabot> "hi john"
2023-01-15 23:55:32 +0100 <sshine> > "hi john"
2023-01-15 23:55:35 +0100 <lambdabot> "hi john"
2023-01-15 23:55:40 +0100 <Guest94> geekosaur yours work. Could anyone explain why all my 3 ways failed?
2023-01-15 23:56:14 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-01-15 23:56:14 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-01-15 23:56:14 +0100wroathe(~wroathe@user/wroathe)
2023-01-15 23:56:14 +0100 <Guest94> (<>) . firstPart "hi" "john"
2023-01-15 23:56:15 +0100 <Guest94> (<>) . firstPart & "hi"
2023-01-15 23:56:15 +0100 <Guest94> (<>) . firstPart & "hi" "john"
2023-01-15 23:57:17 +0100 <sshine> Guest94, (&) is for reverse function application, i.e. the function comes after. so since "hi" is not a function, that won't work.
2023-01-15 23:57:51 +0100 <sshine> Guest94, the first one won't work because it gets interpreted as: (<>) . (firstPart "hi" "john"), but firstPart only takes one argument.
2023-01-15 23:59:17 +0100 <sshine> Guest94, considering geekosaur's: ((<>) . firstPart) "hi" "john" -- here, (<>) . (<> " ") :: [Char] -> [Char] -> [Char], i.e. it's a function that takes two curried arguments, which it's given.
2023-01-15 23:59:45 +0100 <Guest94> sshine interesting, I just learned that & is about precedence. Effectively i expected & would make the composition (<>) . firstPart higher than the function application firstPart "hi". Meaning, I expect the composition happen, ONLY AFTER that will it apply the args to the composition.