2023/01/15

2023-01-15 00:00:47 +0000justsomeguy(~justsomeg@user/justsomeguy)
2023-01-15 00:02:34 +0000AlexZenon(~alzenon@178.34.160.164) (Ping timeout: 260 seconds)
2023-01-15 00:03:44 +0000Alex_test(~al_test@178.34.160.164) (Ping timeout: 260 seconds)
2023-01-15 00:05:32 +0000L29Ah(~L29Ah@wikipedia/L29Ah)
2023-01-15 00:06:31 +0000AlexZenon(~alzenon@178.34.160.164)
2023-01-15 00:06:56 +0000shapr(~user@68.54.166.125)
2023-01-15 00:07:28 +0000acidjnk(~acidjnk@p200300d6e715c494853e5ab7d1dcba05.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2023-01-15 00:08:34 +0000Alex_test(~al_test@178.34.160.164)
2023-01-15 00:10:08 +0000Tuplanolla(~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.)
2023-01-15 00:12:53 +0000liszt2(sid336875@2a03:5180:f:3::5:23eb) ()
2023-01-15 00:14:51 +0000offdg^(~offdg@76.145.190.81)
2023-01-15 00:15:40 +0000mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a) (Ping timeout: 252 seconds)
2023-01-15 00:19:25 +0000mimmy_(~mimmy@142.126.70.245)
2023-01-15 00:23:38 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 00:23:55 +0000mimmy_(~mimmy@142.126.70.245) (Ping timeout: 260 seconds)
2023-01-15 00:28:12 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds)
2023-01-15 00:29:38 +0000elevenkb(~elevenkb@105.224.37.136) (Ping timeout: 260 seconds)
2023-01-15 00:30:47 +0000raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
2023-01-15 00:32:16 +0000mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a)
2023-01-15 00:37:23 +0000fizbin(~fizbin@user/fizbin) (Ping timeout: 264 seconds)
2023-01-15 00:39:34 +0000fizbin(~fizbin@user/fizbin)
2023-01-15 00:42:06 +0000offdg^(~offdg@76.145.190.81) (Remote host closed the connection)
2023-01-15 00:42:22 +0000wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-01-15 00:42:22 +0000wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-01-15 00:42:22 +0000wroathe(~wroathe@user/wroathe)
2023-01-15 00:51:17 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 00:56:04 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds)
2023-01-15 00:56:18 +0000jinsl-(~jinsl@2408:8207:255b:27c0:211:32ff:fec8:6aea)
2023-01-15 00:57:11 +0000jinsl(~jinsl@2408:8207:255f:27d0:211:32ff:fec8:6aea) (Ping timeout: 264 seconds)
2023-01-15 00:57:19 +0000L29Ah(~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
2023-01-15 01:01:19 +0000Inst(~Inst@2601:6c4:4081:54f0:3de7:12e6:ed3d:f8f8) (Ping timeout: 252 seconds)
2023-01-15 01:04:23 +0000dcoutts_(~duncan@host213-122-143-153.range213-122.btcentralplus.com) (Ping timeout: 246 seconds)
2023-01-15 01:07:55 +0000fizbin(~fizbin@user/fizbin) (Ping timeout: 252 seconds)
2023-01-15 01:10:30 +0000jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2023-01-15 01:10:41 +0000albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2023-01-15 01:14:26 +0000cheater(~Username@user/cheater) (Ping timeout: 272 seconds)
2023-01-15 01:15:50 +0000mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a) (Ping timeout: 260 seconds)
2023-01-15 01:16:50 +0000albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2023-01-15 01:17:25 +0000mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a)
2023-01-15 01:17:30 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 01:18:41 +0000Inst(~Inst@2601:6c4:4081:54f0:3de7:12e6:ed3d:f8f8)
2023-01-15 01:21:40 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 252 seconds)
2023-01-15 01:21:54 +0000 <Inst> How familiar are people with OCaml?
2023-01-15 01:22:29 +0000 <Inst> Nah, I'm probably wrong here, I was thinking OCaml was an OOP language via the first-class module system
2023-01-15 01:22:59 +0000 <geekosaur> first class modules don't make SML/NJ OOP
2023-01-15 01:23:00 +0000 <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 01:23:14 +0000 <geekosaur> OCaml doessupport OOP, but modules aren't why
2023-01-15 01:23:16 +0000paulpaul1076(~textual@95-29-5-111.broadband.corbina.ru) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2023-01-15 01:23:17 +0000 <sshine> the first-class module system predates OOP support
2023-01-15 01:23:53 +0000dsrt^(~dsrt@76.145.190.81)
2023-01-15 01:24:00 +0000L29Ah(~L29Ah@wikipedia/L29Ah)
2023-01-15 01:24:18 +0000cheater(~Username@user/cheater)
2023-01-15 01:24:31 +0000 <mauke> has ocaml grown documentation for its module system in the last 10-15 years?
2023-01-15 01:24:40 +0000 <sshine> OCaml OOP: https://ocaml.org/docs/objects -- it is the 'class' and 'object' keywords that make it OOP.
2023-01-15 01:25:06 +0000 <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 01:25:16 +0000 <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 01:26:15 +0000 <mauke> thanks, I'll have a look
2023-01-15 01:28:11 +0000barak(~barak@77.125.90.25) (Ping timeout: 248 seconds)
2023-01-15 01:28:12 +0000cheater_(~Username@user/cheater)
2023-01-15 01:30:39 +0000cheater(~Username@user/cheater) (Ping timeout: 260 seconds)
2023-01-15 01:30:47 +0000cheater_cheater
2023-01-15 01:31:31 +0000 <sshine> Inst, https://dev.realworldocaml.org/objects.html -- here's a more modern take on OCaml OOP. :)
2023-01-15 01:32:21 +0000 <sshine> Inst, whereas the module system is described under the chapters "Functors" and "First-Class Modules"
2023-01-15 01:32:36 +0000 <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 01:32:39 +0000 <Inst> with backpack, etc
2023-01-15 01:32:58 +0000 <Inst> independent of my frankenstein instinct to break all purity
2023-01-15 01:33:16 +0000 <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 01:33:45 +0000 <unit73e> packages are the poorly designed modules imo
2023-01-15 01:33:47 +0000img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2023-01-15 01:34:17 +0000 <unit73e> at least javascript got that mostly right
2023-01-15 01:34:55 +0000 <sshine> Inst, Haskell could have had a module system that more resembled MLs, but this still isn't related to OOP.
2023-01-15 01:35:22 +0000 <Inst> from what I read, Haskell designers somehow thought that ML module system was too fancy
2023-01-15 01:35:27 +0000 <unit73e> what's the difference?
2023-01-15 01:35:48 +0000 <sshine> unit73e, the difference between what? OOP and ML module systems?
2023-01-15 01:36:09 +0000 <monochrom> ocaml has a first-class OO system, and this is orthogonal to its first-class module system. :)
2023-01-15 01:36:12 +0000 <unit73e> sshine, between haskell modules and ML modules
2023-01-15 01:36:21 +0000razetime(~Thunderbi@117.193.4.145)
2023-01-15 01:36:37 +0000 <unit73e> if it's something like module blocks, yeah that would be useful
2023-01-15 01:36:39 +0000img(~img@user/img)
2023-01-15 01:37:16 +0000 <unit73e> kind off. I can get away without those.
2023-01-15 01:38:08 +0000 <sshine> unit73e, ah! in ML you have higher-order modules, confusingly named functors.
2023-01-15 01:38:27 +0000 <unit73e> hum ok, that could be useful
2023-01-15 01:39:09 +0000 <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 01:39:10 +0000 <sshine> (well, confusing to a Haskeller)
2023-01-15 01:39:38 +0000 <unit73e> so similar to what Java does, each class in its own file
2023-01-15 01:39:39 +0000 <geekosaur> just don't go the whole way and give us C and T
2023-01-15 01:39:55 +0000troydm(~troydm@user/troydm) (Ping timeout: 248 seconds)
2023-01-15 01:40:13 +0000 <sshine> what are C and T?
2023-01-15 01:40:44 +0000 <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 01:40:48 +0000 <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 01:40:59 +0000 <unit73e> oof, no I don't do that
2023-01-15 01:41:13 +0000 <unit73e> often I don't need qualifiers, I just do that in case I need
2023-01-15 01:41:15 +0000waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
2023-01-15 01:41:17 +0000 <sshine> unit73e, you get some of the same modularity with type classes, but not at the package level.
2023-01-15 01:41:48 +0000 <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 01:42:03 +0000talismanick(~talismani@2601:200:c181:4c40::1be2)
2023-01-15 01:42:21 +0000fizbin(~fizbin@user/fizbin)
2023-01-15 01:42:26 +0000 <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 01:42:34 +0000 <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 01:42:44 +0000 <unit73e> because Tar looked decent code
2023-01-15 01:43:30 +0000 <unit73e> but just the structure. I use more modern haskell with monad transformers, and Tar has some legacy.
2023-01-15 01:44:21 +0000 <talismanick> How might I draw a screen-width rectangle under Wayland without GTK? What are my options besides Gloss?
2023-01-15 01:44:49 +0000machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-01-15 01:45:36 +0000 <talismanick> Draw a screenwidth rectangle and render unicode text on it, I should say
2023-01-15 01:47:28 +0000 <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 01:48:15 +0000razetime(~Thunderbi@117.193.4.145) (Ping timeout: 268 seconds)
2023-01-15 01:48:29 +0000 <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 01:49:47 +0000 <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 01:50:11 +0000 <talismanick> and rendering text inside of it, as a status bar (like xmobar)
2023-01-15 01:50:34 +0000 <talismanick> If I can get that, the rest should be a piece of cake
2023-01-15 01:51:20 +0000 <unit73e> talismanick, so you want to make a status bar? like xmobar?
2023-01-15 01:51:33 +0000 <unit73e> but for wayland
2023-01-15 01:51:34 +0000 <unit73e> not X
2023-01-15 01:51:38 +0000 <talismanick> Yeah, exactly
2023-01-15 01:52:48 +0000 <talismanick> I know how to write CLI programs and REST APIs, but I don't touch GUIs much
2023-01-15 01:55:12 +0000 <talismanick> https://sheaf.gitlab.io/fir/index.html looks really interesting, but a bit too low level for my purposes
2023-01-15 01:57:18 +0000 <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 01:57:36 +0000 <unit73e> it would be a cool project
2023-01-15 01:57:56 +0000Guest33(~Guest33@2001-b011-400a-5dfb-d995-a488-9bc0-4214.dynamic-ip6.hinet.net)
2023-01-15 01:58:24 +0000 <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 01:58:35 +0000 <talismanick> maybe once I have something working
2023-01-15 01:59:00 +0000natechan(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2023-01-15 02:00:37 +0000 <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 02:00:38 +0000Guest33(~Guest33@2001-b011-400a-5dfb-d995-a488-9bc0-4214.dynamic-ip6.hinet.net) (Client Quit)
2023-01-15 02:01:29 +0000 <unit73e> or use wlroots
2023-01-15 02:01:31 +0000 <talismanick> unit73e: Even for sizing, anchoring, and text rendering?
2023-01-15 02:01:42 +0000 <talismanick> Yeah, I was planning to stick with wlroots
2023-01-15 02:03:05 +0000 <unit73e> afaik wlroots can draw rectangles, but I don't think there's an haskell module
2023-01-15 02:03:29 +0000 <unit73e> you'd have to make one yourself
2023-01-15 02:03:32 +0000 <talismanick> There's hsroots, but that was last updated in 2019
2023-01-15 02:03:42 +0000 <unit73e> at least there's something :p
2023-01-15 02:04:01 +0000son0p(~ff@190.158.28.118)
2023-01-15 02:04:34 +0000 <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 02:09:57 +0000unit73e(~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) (Quit: Leaving)
2023-01-15 02:11:52 +0000 <talismanick> :(
2023-01-15 02:14:18 +0000thongpv87(~thongpv87@2402:9d80:3b9:c4cc:21a0:88fc:6943:1ae5)
2023-01-15 02:14:47 +0000 <talismanick> Oof, it depends on the lower-level deprecated Hayland bindings...
2023-01-15 02:19:05 +0000beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 268 seconds)
2023-01-15 02:23:55 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 02:23:58 +0000emmanuelux(~emmanuelu@user/emmanuelux)
2023-01-15 02:27:16 +0000_leo92_(~emmanuelu@user/emmanuelux) (Ping timeout: 272 seconds)
2023-01-15 02:28:32 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds)
2023-01-15 02:31:02 +0000 <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 02:31:19 +0000 <Inst> he sells a bunch of training videos, will be interesting to see him shilling Haskell to Indians
2023-01-15 02:35:26 +0000CiaoSen(~Jura@p200300c9574fa4002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2023-01-15 02:40:59 +0000troydm(~troydm@user/troydm)
2023-01-15 02:41:19 +0000caryhartline(~caryhartl@2600:1700:2d0:8d30:ec3c:3ed4:a3c8:7826)
2023-01-15 02:42:52 +0000oldfashionedcowDEWIT
2023-01-15 02:44:45 +0000natechan(~nate@98.45.169.16)
2023-01-15 02:48:47 +0000chexum(~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds)
2023-01-15 02:50:27 +0000 <talismanick> Nice, there are gi-gtk bindings for the gtk-layer-shell Wayland protocol. Might go with that, then.
2023-01-15 02:50:43 +0000DEWIToldfashionedcow
2023-01-15 02:50:50 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-01-15 02:51:23 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit)
2023-01-15 03:00:17 +0000natechan(~nate@98.45.169.16) (Ping timeout: 246 seconds)
2023-01-15 03:00:55 +0000oldfashionedcowGeneralKenobi
2023-01-15 03:01:45 +0000mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a) (Ping timeout: 255 seconds)
2023-01-15 03:03:28 +0000razetime(~Thunderbi@117.193.4.145)
2023-01-15 03:03:33 +0000mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a)
2023-01-15 03:05:17 +0000jero98772(~jero98772@2800:484:1d80:d8ce:9815:cfda:3661:17bb) (Remote host closed the connection)
2023-01-15 03:06:54 +0000Neuromancer(~Neuromanc@user/neuromancer) (Ping timeout: 260 seconds)
2023-01-15 03:11:31 +0000 <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 03:12:10 +0000paulpaul1076(~textual@95-29-5-111.broadband.corbina.ru)
2023-01-15 03:18:59 +0000 <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 03:24:00 +0000chexum(~quassel@gateway/tor-sasl/chexum)
2023-01-15 03:31:29 +0000Nosrep(~Nosrep@user/nosrep)
2023-01-15 03:43:35 +0000segfaultfizzbuzz(~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds)
2023-01-15 03:44:21 +0000GeneralKenobioldfashionedcow
2023-01-15 03:45:34 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 03:49:36 +0000dolio(~dolio@130.44.134.54) (Read error: Connection reset by peer)
2023-01-15 03:53:24 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds)
2023-01-15 03:53:24 +0000razetime(~Thunderbi@117.193.4.145) (Ping timeout: 272 seconds)
2023-01-15 03:53:32 +0000finn_elija(~finn_elij@user/finn-elija/x-0085643)
2023-01-15 03:53:32 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2023-01-15 03:53:32 +0000finn_elijaFinnElija
2023-01-15 03:55:09 +0000xff0x_(~xff0x@2405:6580:b080:900:33f6:9250:43b6:b1c7) (Ping timeout: 252 seconds)
2023-01-15 03:55:46 +0000dolio(~dolio@130.44.134.54)
2023-01-15 03:57:08 +0000xff0x_(~xff0x@178.255.149.135)
2023-01-15 03:59:44 +0000td_(~td@83.135.9.53) (Ping timeout: 272 seconds)
2023-01-15 04:00:59 +0000td_(~td@83.135.9.57)
2023-01-15 04:10:34 +0000shriekingnoise(~shrieking@186.137.175.87)
2023-01-15 04:13:24 +0000xff0x_(~xff0x@178.255.149.135) (Ping timeout: 260 seconds)
2023-01-15 04:13:24 +0000shriekingnoise_(~shrieking@186.137.175.87) (Ping timeout: 260 seconds)
2023-01-15 04:14:22 +0000xff0x_(~xff0x@2405:6580:b080:900:54f9:caff:68f9:e2a8)
2023-01-15 04:16:13 +0000 <[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 04:16:58 +0000razetime(~Thunderbi@117.193.4.145)
2023-01-15 04:18:28 +0000 <[Leary]> Err, with (<|>) corresponding to that of `MaybeT Work`, I guess.
2023-01-15 04:18:46 +0000 <[Leary]> Which you might just want to use anyway.
2023-01-15 04:19:15 +0000mimmy_(~mimmy@142.126.70.245)
2023-01-15 04:19:18 +0000mikess(~sam@user/mikess)
2023-01-15 04:20:10 +0000vulpine(xfnw@tilde.team) (Quit: Connection reset by purr)
2023-01-15 04:22:27 +0000vulpine(xfnw@tilde.team)
2023-01-15 04:24:18 +0000jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
2023-01-15 04:26:44 +0000mimmy_(~mimmy@142.126.70.245) (Ping timeout: 268 seconds)
2023-01-15 04:26:45 +0000mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a) (Ping timeout: 256 seconds)
2023-01-15 04:30:13 +0000jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2023-01-15 04:30:46 +0000machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 272 seconds)
2023-01-15 04:35:54 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 04:40:01 +0000cheater_(~Username@user/cheater)
2023-01-15 04:40:35 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
2023-01-15 04:40:50 +0000mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a)
2023-01-15 04:41:59 +0000Techcable(~Techcable@user/Techcable) (Ping timeout: 265 seconds)
2023-01-15 04:43:11 +0000cheater(~Username@user/cheater) (Ping timeout: 256 seconds)
2023-01-15 04:43:16 +0000cheater_cheater
2023-01-15 04:44:27 +0000ddellacosta(~ddellacos@89.46.62.175) (Ping timeout: 248 seconds)
2023-01-15 04:49:09 +0000Nosrep(~Nosrep@user/nosrep) (Remote host closed the connection)
2023-01-15 04:51:01 +0000Techcable(~Techcable@user/Techcable)
2023-01-15 04:58:31 +0000natechan(~nate@98.45.169.16)
2023-01-15 05:02:21 +0000hrberg(~quassel@171.79-160-161.customer.lyse.net) (Ping timeout: 255 seconds)
2023-01-15 05:03:35 +0000oldfashionedcow(~Rahul_San@user/oldfashionedcow) (Quit: WeeChat 3.7.1)
2023-01-15 05:03:38 +0000segfaultfizzbuzz(~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
2023-01-15 05:03:50 +0000caryhartline(~caryhartl@2600:1700:2d0:8d30:ec3c:3ed4:a3c8:7826) (Ping timeout: 246 seconds)
2023-01-15 05:06:02 +0000azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
2023-01-15 05:12:59 +0000mikess(~sam@user/mikess) (Quit: leaving)
2023-01-15 05:18:44 +0000natechan(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2023-01-15 05:29:02 +0000justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 246 seconds)
2023-01-15 05:31:09 +0000leah2(~leah@vuxu.org) (Ping timeout: 255 seconds)
2023-01-15 05:41:19 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 05:42:22 +0000mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a) (Ping timeout: 252 seconds)
2023-01-15 05:43:40 +0000Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2023-01-15 05:46:08 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds)
2023-01-15 05:47:09 +0000mbuf(~Shakthi@49.204.134.13)
2023-01-15 05:53:37 +0000irrgit__(~irrgit@89.47.234.74)
2023-01-15 05:56:05 +0000mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a)
2023-01-15 05:56:40 +0000irrgit_(~irrgit@86.106.90.226) (Ping timeout: 252 seconds)
2023-01-15 05:59:26 +0000finsternis(~X@23.226.237.192) (Read error: Connection reset by peer)
2023-01-15 06:00:49 +0000mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a) (Ping timeout: 256 seconds)
2023-01-15 06:07:29 +0000[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2023-01-15 06:12:11 +0000mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a)
2023-01-15 06:16:13 +0000dcoutts_(~duncan@host213-122-143-153.range213-122.btcentralplus.com)
2023-01-15 06:22:59 +0000 <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 06:32:20 +0000takuan(~takuan@178-116-218-225.access.telenet.be)
2023-01-15 06:36:46 +0000mimmy_(~mimmy@142.126.70.245)
2023-01-15 06:38:42 +0000jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 272 seconds)
2023-01-15 06:41:11 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 06:41:52 +0000mimmy_(~mimmy@142.126.70.245) (Ping timeout: 272 seconds)
2023-01-15 06:46:18 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds)
2023-01-15 06:47:40 +0000fxttr(~florian@mue-88-130-57-190.dsl.tropolys.de)
2023-01-15 06:48:50 +0000segfaultfizzbuzz(~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 272 seconds)
2023-01-15 06:49:21 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 06:51:00 +0000trev(~trev@user/trev)
2023-01-15 06:53:41 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 246 seconds)
2023-01-15 06:54:09 +0000zaquest(~notzaques@5.130.79.72)
2023-01-15 06:56:26 +0000razetime(~Thunderbi@117.193.4.145) (Ping timeout: 272 seconds)
2023-01-15 07:05:41 +0000qhong(~qhong@rescomp-21-400677.stanford.edu) (Remote host closed the connection)
2023-01-15 07:06:30 +0000v0id_ptr(~adrift@user/ptr-frac7al/x-0038398) (Ping timeout: 265 seconds)
2023-01-15 07:06:54 +0000qhong(~qhong@rescomp-21-400677.stanford.edu)
2023-01-15 07:08:27 +0000v0id_ptr(~adrift@user/ptr-frac7al/x-0038398)
2023-01-15 07:13:40 +0000mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a) (Ping timeout: 252 seconds)
2023-01-15 07:13:48 +0000dcoutts_(~duncan@host213-122-143-153.range213-122.btcentralplus.com) (Ping timeout: 252 seconds)
2023-01-15 07:14:02 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-01-15 07:16:08 +0000natechan(~nate@98.45.169.16)
2023-01-15 07:16:24 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2023-01-15 07:17:28 +0000tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Ping timeout: 252 seconds)
2023-01-15 07:21:56 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-01-15 07:23:17 +0000 <[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 07:25:13 +0000natechan(~nate@98.45.169.16) (Ping timeout: 252 seconds)
2023-01-15 07:26:04 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-01-15 07:26:04 +0000mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a)
2023-01-15 07:26:06 +0000irrgit_(~irrgit@146.70.27.250)
2023-01-15 07:28:19 +0000 <talismanick> Say I have monadic code that looks like this: https://0x0.st/o7dw.txt
2023-01-15 07:29:02 +0000 <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 07:29:24 +0000irrgit__(~irrgit@89.47.234.74) (Ping timeout: 260 seconds)
2023-01-15 07:30:57 +0000 <talismanick> Something kind of like Kleisli composition?
2023-01-15 07:34:42 +0000Tuplanolla(~Tuplanoll@91-159-68-152.elisa-laajakaista.fi)
2023-01-15 07:35:18 +0000 <talismanick> Or, rather, bind-as-relation (one to many instead of one to one)
2023-01-15 07:35:34 +0000 <c_wraith> talismanick: I... wouldn't bother changing it
2023-01-15 07:35:38 +0000Inst_(~Inst@2601:6c4:4081:54f0:3081:cca:cb95:ec2d)
2023-01-15 07:35:56 +0000 <c_wraith> talismanick: there are ways to rewrite it, but I don't think they'd aid understanding in this case
2023-01-15 07:38:43 +0000v0id_ptr(~adrift@user/ptr-frac7al/x-0038398) (Quit: WeeChat 3.5)
2023-01-15 07:39:23 +0000Inst(~Inst@2601:6c4:4081:54f0:3de7:12e6:ed3d:f8f8) (Ping timeout: 255 seconds)
2023-01-15 07:41:42 +0000 <[Leary]> talismanick: If you're passing `val` in a lot of places, you might want `ReaderT`.
2023-01-15 07:41:55 +0000 <c_wraith> talismanick: in simpler cases, things like (<*) and (<$) can help, but I don't think they do anything good here.
2023-01-15 07:50:54 +0000shriekingnoise(~shrieking@186.137.175.87) (Ping timeout: 272 seconds)
2023-01-15 07:50:55 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-01-15 07:52:26 +0000wroathe(~wroathe@user/wroathe) (Quit: leaving)
2023-01-15 07:53:03 +0000 <[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 07:59:51 +0000 <[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 08:00:49 +0000 <[Leary]> This might all be easier with ... what was it, LogicT?
2023-01-15 08:11:54 +0000tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
2023-01-15 08:15:56 +0000chexum(~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds)
2023-01-15 08:16:31 +0000chexum(~quassel@gateway/tor-sasl/chexum)
2023-01-15 08:18:20 +0000tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Ping timeout: 252 seconds)
2023-01-15 08:18:56 +0000Guest52(~Guest52@58.171.243.251)
2023-01-15 08:19:19 +0000tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
2023-01-15 08:20:13 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2023-01-15 08:21:13 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-01-15 08:23:53 +0000barak(~barak@2a02:14f:83:75a5:98fb:ef64:df32:28ff)
2023-01-15 08:24:32 +0000chexum(~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.)
2023-01-15 08:29:14 +0000chexum(~quassel@gateway/tor-sasl/chexum)
2023-01-15 08:31:17 +0000mei(~mei@user/mei)
2023-01-15 08:50:25 +0000Guest|91(~Guest|91@173.230.148.39)
2023-01-15 08:51:36 +0000 <Guest|91> Could someone to help me installing Haskell?
2023-01-15 08:53:23 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-01-15 08:54:25 +0000Guest|91(~Guest|91@173.230.148.39) (Client Quit)
2023-01-15 08:59:05 +0000 <laalyn> I could try :)
2023-01-15 09:02:29 +0000kenran(~user@user/kenran)
2023-01-15 09:03:08 +0000kenran(~user@user/kenran) (Remote host closed the connection)
2023-01-15 09:08:23 +0000 <[exa]> Guest52: what's the problem?
2023-01-15 09:10:09 +0000f0c1s(~f0c1s@2401:4900:1cb9:5b16:bb45:5360:94a1:208f)
2023-01-15 09:10:29 +0000f0c1s_(~f0c1s@2401:4900:1cb9:5b16:bb45:5360:94a1:208f)
2023-01-15 09:12:31 +0000dtman34(~dtman34@76.156.89.180) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in)
2023-01-15 09:13:25 +0000dtman34(~dtman34@2601:447:d000:93c9:8095:75ea:f23b:f5f5)
2023-01-15 09:14:55 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:cd94:d604:3630:3cd8)
2023-01-15 09:15:20 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:cd94:d604:3630:3cd8) (Client Quit)
2023-01-15 09:17:36 +0000gmg(~user@user/gehmehgeh)
2023-01-15 09:19:53 +0000leah2(~leah@vuxu.org)
2023-01-15 09:26:38 +0000bastelfreak(bastelfrea@libera/staff/VoxPupuli.bastelfreak) (Quit: WeeChat 3.6)
2023-01-15 09:28:00 +0000bastelfreak(bastelfrea@libera/staff/VoxPupuli.bastelfreak)
2023-01-15 09:31:19 +0000burnsidesLlama(~burnsides@119247164140.ctinets.com)
2023-01-15 09:31:56 +0000Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2023-01-15 09:40:14 +0000acidjnk(~acidjnk@p200300d6e715c494a9d2b964e819f338.dip0.t-ipconnect.de)
2023-01-15 09:42:43 +0000thongpv87(~thongpv87@2402:9d80:3b9:c4cc:21a0:88fc:6943:1ae5) (Ping timeout: 252 seconds)
2023-01-15 09:44:44 +0000 <talismanick> What does `show @Milli . realToFrac` mean? What do I import so it compiles? What GHC extension?
2023-01-15 09:45:22 +0000 <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 09:47:06 +0000mechap(~mechap@user/mechap)
2023-01-15 09:51:29 +0000 <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 09:53:08 +0000 <[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 09:53:24 +0000 <Hecate> -XTypeApplications
2023-01-15 09:53:27 +0000 <Hecate> indeed
2023-01-15 09:53:39 +0000 <Hecate> talismanick: https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/type_applications.html
2023-01-15 09:54:13 +0000burnsidesLlama(~burnsides@119247164140.ctinets.com) ()
2023-01-15 09:55:34 +0000 <[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 09:57:09 +0000gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-01-15 09:58:32 +0000mbuf(~Shakthi@49.204.134.13) (Quit: Leaving)
2023-01-15 09:59:16 +0000 <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 09:59:32 +0000coldtom(~coldtom@coldrick.cc) (Quit: Well, that's got rid of me)
2023-01-15 10:07:42 +0000 <Hecate> mauke: lol
2023-01-15 10:07:55 +0000 <Hecate> mauke: don't say that, he might think you're serious :P
2023-01-15 10:08:39 +0000 <mauke> ? I am serious
2023-01-15 10:12:02 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-01-15 10:13:18 +0000L29Ah(~L29Ah@wikipedia/L29Ah) ()
2023-01-15 10:14:19 +0000 <talismanick> mauke: You need ScopedTypeVariables for that
2023-01-15 10:14:37 +0000 <mauke> why?
2023-01-15 10:14:44 +0000talismanickshrugs
2023-01-15 10:14:55 +0000 <talismanick> It's a scoped type variable
2023-01-15 10:15:00 +0000 <mauke> none of the examples shown use any type variables
2023-01-15 10:16:02 +0000son0p(~ff@190.158.28.118) (Remote host closed the connection)
2023-01-15 10:16:10 +0000 <mauke> am I on drugs or is everyone else?
2023-01-15 10:18:45 +0000tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2023-01-15 10:21:05 +0000 <Hecate> pretty sure (\x -> show (x :: Milli)) . realToFrac doesn't need ScopedTypeVariables
2023-01-15 10:21:22 +0000 <Hecate> but it's still considerably more burdensome than show @Milli
2023-01-15 10:22:47 +0000 <mauke> but less burdensome than {-# LANGUAGE TypeApplications #-} show @Milli
2023-01-15 10:23:56 +0000gnalzothinks this is a question of taste :)
2023-01-15 10:23:57 +0000 <xerox> talismanick: here's some examples: https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/scoped_type_variables.html#extensio…
2023-01-15 10:25:33 +0000 <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 10:28:59 +0000 <Hecate> mauke: no
2023-01-15 10:29:01 +0000 <Hecate> :P
2023-01-15 10:29:14 +0000 <Hecate> gnalzo: :)
2023-01-15 10:36:25 +0000barak(~barak@2a02:14f:83:75a5:98fb:ef64:df32:28ff) (Ping timeout: 260 seconds)
2023-01-15 10:38:19 +0000mimmy_(~mimmy@142.126.70.245)
2023-01-15 10:40:18 +0000coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2023-01-15 10:43:48 +0000mimmy_(~mimmy@142.126.70.245) (Ping timeout: 272 seconds)
2023-01-15 10:48:33 +0000 <Reinhilde> e
2023-01-15 10:49:55 +0000 <mauke> https://duckduckgo.com/?t=ffab&q=%65&iax=images&ia=images
2023-01-15 10:55:47 +0000zeenk(~zeenk@2a02:2f04:a014:8700::7fe)
2023-01-15 11:01:45 +0000f0c1s_(~f0c1s@2401:4900:1cb9:5b16:bb45:5360:94a1:208f) (Quit: Leaving)
2023-01-15 11:01:45 +0000f0c1s(~f0c1s@2401:4900:1cb9:5b16:bb45:5360:94a1:208f) (Quit: Leaving)
2023-01-15 11:06:07 +0000mechap(~mechap@user/mechap) (Quit: WeeChat 3.8)
2023-01-15 11:07:21 +0000econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2023-01-15 11:10:06 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:6450:b99c:346:15e5) (Remote host closed the connection)
2023-01-15 11:10:52 +0000chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2023-01-15 11:11:39 +0000chexum(~quassel@gateway/tor-sasl/chexum)
2023-01-15 11:12:09 +0000mei_(~mei@user/mei)
2023-01-15 11:14:31 +0000thongpv87(~thongpv87@2402:9d80:3b9:c4cc:6182:a43d:c5b4:7a2d)
2023-01-15 11:14:47 +0000mei(~mei@user/mei) (Ping timeout: 260 seconds)
2023-01-15 11:24:03 +0000tremon(~tremon@83-85-213-108.cable.dynamic.v4.ziggo.nl)
2023-01-15 11:24:21 +0000barak(~barak@2a02:14f:83:75a5:71fd:c7ff:a853:183e)
2023-01-15 11:26:00 +0000talismanick(~talismani@2601:200:c181:4c40::1be2) (Ping timeout: 260 seconds)
2023-01-15 11:36:39 +0000mmhat(~mmh@p200300f1c7123c02ee086bfffe095315.dip0.t-ipconnect.de)
2023-01-15 11:37:50 +0000beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt)
2023-01-15 11:38:54 +0000bolichep(~bolichep@186.57.179.191)
2023-01-15 11:41:19 +0000razetime(~Thunderbi@117.193.4.145)
2023-01-15 11:49:19 +0000acidjnk(~acidjnk@p200300d6e715c494a9d2b964e819f338.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2023-01-15 11:49:33 +0000son0p(~ff@190.158.28.118)
2023-01-15 11:49:34 +0000mmhat(~mmh@p200300f1c7123c02ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.8)
2023-01-15 11:53:04 +0000coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2023-01-15 11:54:20 +0000razetime(~Thunderbi@117.193.4.145) (Remote host closed the connection)
2023-01-15 12:10:33 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:6450:b99c:346:15e5)
2023-01-15 12:14:17 +0000gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2023-01-15 12:16:08 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:6450:b99c:346:15e5) (Ping timeout: 255 seconds)
2023-01-15 12:18:06 +0000CiaoSen(~Jura@p200300c9574fa4002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2023-01-15 12:21:11 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
2023-01-15 12:21:23 +0000wootehfoot(~wootehfoo@user/wootehfoot)
2023-01-15 12:24:54 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-01-15 12:28:17 +0000ss4(~wootehfoo@user/wootehfoot)
2023-01-15 12:30:24 +0000ss4(~wootehfoo@user/wootehfoot) (Client Quit)
2023-01-15 12:31:42 +0000wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 252 seconds)
2023-01-15 12:33:21 +0000__monty__(~toonn@user/toonn)
2023-01-15 12:34:13 +0000gmg(~user@user/gehmehgeh)
2023-01-15 12:44:57 +0000phma(phma@2001:5b0:211f:9a8:4ecd:10c6:a18f:491e) (Read error: Connection reset by peer)
2023-01-15 12:45:49 +0000phma(~phma@host-67-44-208-219.hnremote.net)
2023-01-15 12:53:32 +0000instantaphex(~jb@c-73-171-252-84.hsd1.fl.comcast.net)
2023-01-15 12:57:44 +0000instantaphex(~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 246 seconds)
2023-01-15 13:03:46 +0000 <Guest5476> Identity function with special treatment to Bool values: https://play-haskell.tomsmeding.com/saved/XrMtxzfx
2023-01-15 13:08:07 +0000titibandit1(~titibandi@xdsl-81-173-160-143.nc.de)
2023-01-15 13:18:22 +0000nek0(~nek0@2a01:4f8:222:2b41::12) (Quit: The Lounge - https://thelounge.chat)
2023-01-15 13:19:35 +0000nek0(~nek0@2a01:4f8:222:2b41::12)
2023-01-15 13:23:29 +0000CiaoSen(~Jura@p200300c9574fa4002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2023-01-15 13:31:29 +0000jakalx(~jakalx@base.jakalx.net) ()
2023-01-15 13:40:56 +0000pwug(~pwug@user/pwug) (Read error: Connection reset by peer)
2023-01-15 13:43:45 +0000bolichep(~bolichep@186.57.179.191) (Quit: Saliendo)
2023-01-15 13:47:58 +0000coot(~coot@213.134.171.3)
2023-01-15 13:48:06 +0000coot(~coot@213.134.171.3) (Remote host closed the connection)
2023-01-15 13:48:25 +0000barak(~barak@2a02:14f:83:75a5:71fd:c7ff:a853:183e) (Ping timeout: 252 seconds)
2023-01-15 13:56:23 +0000razetime(~Thunderbi@117.193.4.145)
2023-01-15 13:57:13 +0000CiaoSen(~Jura@p200300c9574fa4002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2023-01-15 13:57:28 +0000razetime(~Thunderbi@117.193.4.145) (Client Quit)
2023-01-15 14:00:14 +0000son0p(~ff@190.158.28.118) (Ping timeout: 268 seconds)
2023-01-15 14:01:25 +0000sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-01-15 14:03:33 +0000sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-01-15 14:04:14 +0000troydm(~troydm@user/troydm) (Ping timeout: 246 seconds)
2023-01-15 14:13:53 +0000tubogram440(~tubogram@user/tubogram)
2023-01-15 14:14:37 +0000tubogram44(~tubogram@user/tubogram) (Ping timeout: 246 seconds)
2023-01-15 14:14:38 +0000tubogram440tubogram44
2023-01-15 14:23:28 +0000jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2023-01-15 14:23:35 +0000jinsun__(~jinsun@user/jinsun)
2023-01-15 14:23:35 +0000jinsun__jinsun
2023-01-15 14:26:42 +0000jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2023-01-15 14:26:50 +0000 <ncf> do you have a permit for breaking parametricity?
2023-01-15 14:26:57 +0000jinsun(~jinsun@user/jinsun)
2023-01-15 14:28:01 +0000 <Inst_> question about short cricuiting in other languages
2023-01-15 14:28:04 +0000 <Inst_> do they use the thunk model?
2023-01-15 14:28:20 +0000 <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 14:28:31 +0000 <ncf> not necessarily; C has short-circuiting operators but no thunks
2023-01-15 14:28:38 +0000 <Inst_> ah
2023-01-15 14:28:43 +0000Inst_Inst
2023-01-15 14:28:45 +0000 <Inst> oh well
2023-01-15 14:28:48 +0000 <Inst> close enough, I guess
2023-01-15 14:29:38 +0000 <geekosaur> "everything short-circuits" isn't quite right either. how does that explain Control.Monad.when?
2023-01-15 14:30:50 +0000merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds)
2023-01-15 14:31:09 +0000 <geekosaur> it also doesn't work if multiple parameters are strict
2023-01-15 14:31:20 +0000 <geekosaur> well, even if one is
2023-01-15 14:31:39 +0000 <Inst> why does when matter?
2023-01-15 14:31:55 +0000merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
2023-01-15 14:32:00 +0000 <Inst> evaluate the boolean, then if the boolean is true, substitute pure () with the appllicative
2023-01-15 14:34:42 +0000 <geekosaur> laziness is why it doesn't evaluate the thunk before looking at the boolean
2023-01-15 14:34:58 +0000 <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 14:37:47 +0000merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2023-01-15 14:39:53 +0000mimmy_(~mimmy@142.126.70.245)
2023-01-15 14:41:04 +0000gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.7.1)
2023-01-15 14:42:57 +0000azimut(~azimut@gateway/tor-sasl/azimut)
2023-01-15 14:43:07 +0000 <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 14:43:23 +0000ubert(~Thunderbi@p548c9ce5.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2023-01-15 14:43:27 +0000ub(~Thunderbi@185.195.232.146)
2023-01-15 14:44:48 +0000mimmy_(~mimmy@142.126.70.245) (Ping timeout: 260 seconds)
2023-01-15 14:45:44 +0000paulpaul1076(~textual@95-29-5-111.broadband.corbina.ru) (Ping timeout: 272 seconds)
2023-01-15 14:45:45 +0000ububert
2023-01-15 14:49:41 +0000[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-01-15 14:53:25 +0000sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-01-15 14:54:42 +0000sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-01-15 14:58:03 +0000_leo92_(~emmanuelu@user/emmanuelux)
2023-01-15 14:59:53 +0000 <eldritchcookie[4> how can i make it sure that a file generated by template haskell is included in the final package?
2023-01-15 15:01:29 +0000emmanuelux(~emmanuelu@user/emmanuelux) (Ping timeout: 260 seconds)
2023-01-15 15:01:40 +0000jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2023-01-15 15:03:15 +0000merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-01-15 15:04:27 +0000barak(~barak@77.125.91.132)
2023-01-15 15:06:12 +0000raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2023-01-15 15:06:16 +0000wootehfoot(~wootehfoo@user/wootehfoot)
2023-01-15 15:07:21 +0000 <eldritchcookie[4> basically can i make a autogenerated file be mentioned in the includes?
2023-01-15 15:07:39 +0000Guest52(~Guest52@58.171.243.251) (Quit: Client closed)
2023-01-15 15:09:47 +0000barak(~barak@77.125.91.132) (Ping timeout: 264 seconds)
2023-01-15 15:10:46 +0000pagnol(~user@213-205-209-87.ftth.glasoperator.nl)
2023-01-15 15:12:06 +0000mechap(~mechap@user/mechap)
2023-01-15 15:15:58 +0000L29Ah(~L29Ah@wikipedia/L29Ah)
2023-01-15 15:16:13 +0000 <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 15:25:43 +0000 <eldritchcookie[4> does it keep include-dirs automatically?
2023-01-15 15:26:19 +0000wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2023-01-15 15:27:19 +0000 <eldritchcookie[4> or do i need to also mention them in extra source files?
2023-01-15 15:29:15 +0000sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-01-15 15:30:22 +0000sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-01-15 15:30:54 +0000oldfashionedcow(~Rahul_San@user/oldfashionedcow)
2023-01-15 15:37:42 +0000wootehfoot(~wootehfoo@user/wootehfoot)
2023-01-15 15:37:59 +0000merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds)
2023-01-15 15:46:18 +0000fxttr(~florian@mue-88-130-57-190.dsl.tropolys.de) (Ping timeout: 268 seconds)
2023-01-15 15:47:53 +0000fxttr(~florian@i577BC913.versanet.de)
2023-01-15 15:49:31 +0000panovia(~user@user/siracusa) (Quit: Bye!)
2023-01-15 15:51:26 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 15:54:20 +0000machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-01-15 15:59:14 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
2023-01-15 16:01:06 +0000machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 268 seconds)
2023-01-15 16:02:28 +0000machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-01-15 16:06:02 +0000tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
2023-01-15 16:06:30 +0000matijja(~matijja@193.77.181.201) (Quit: ZNC 1.8.2 - https://znc.in)
2023-01-15 16:06:59 +0000matijja(~matijja@193.77.181.201)
2023-01-15 16:10:30 +0000merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
2023-01-15 16:11:30 +0000Inst(~Inst@2601:6c4:4081:54f0:3081:cca:cb95:ec2d) (Ping timeout: 255 seconds)
2023-01-15 16:13:22 +0000son0p(~ff@2800:e2:f80:867:8077:75e8:74b:f48d)
2023-01-15 16:19:35 +0000troydm(~troydm@user/troydm)
2023-01-15 16:21:50 +0000mizlan(~mizlan@2607:f010:2a7:1005:e1d1:8a04:4a34:845a) (Ping timeout: 255 seconds)
2023-01-15 16:22:08 +0000merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds)
2023-01-15 16:25:34 +0000ddellacosta(~ddellacos@86.106.143.136)
2023-01-15 16:31:39 +0000gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-01-15 16:33:04 +0000matijja(~matijja@193.77.181.201) (Quit: ZNC 1.8.2 - https://znc.in)
2023-01-15 16:33:45 +0000matijja(~matijja@193.77.181.201)
2023-01-15 16:34:17 +0000segfaultfizzbuzz(~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
2023-01-15 16:38:40 +0000pagnol(~user@213-205-209-87.ftth.glasoperator.nl) (Ping timeout: 260 seconds)
2023-01-15 16:40:34 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:6450:b99c:346:15e5)
2023-01-15 16:44:48 +0000coot(~coot@213.134.171.3)
2023-01-15 16:45:30 +0000mimmy_(~mimmy@142.126.70.245)
2023-01-15 16:46:41 +0000waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2023-01-15 16:49:04 +0000son0p(~ff@2800:e2:f80:867:8077:75e8:74b:f48d) (Killed (NickServ (GHOST command used by son0p-!~ff@181.136.122.143)))
2023-01-15 16:49:57 +0000son0p(~ff@181.136.122.143)
2023-01-15 16:51:09 +0000raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2023-01-15 16:53:06 +0000raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2023-01-15 16:53:35 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 16:57:14 +0000wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-01-15 16:57:14 +0000wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-01-15 16:57:14 +0000wroathe(~wroathe@user/wroathe)
2023-01-15 17:02:32 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds)
2023-01-15 17:04:37 +0000thongpv(~thongpv87@113.176.74.88)
2023-01-15 17:06:01 +0000thongpv87(~thongpv87@2402:9d80:3b9:c4cc:6182:a43d:c5b4:7a2d) (Ping timeout: 252 seconds)
2023-01-15 17:06:26 +0000merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
2023-01-15 17:08:59 +0000 <fendor[m]> is there a yaml parsing library that lets me warn if my document contains unknown fields?
2023-01-15 17:09:45 +0000coot(~coot@213.134.171.3) (Quit: coot)
2023-01-15 17:11:22 +0000tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2023-01-15 17:12:02 +0000merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
2023-01-15 17:13:57 +0000jumper149(~jumper149@base.felixspringer.xyz)
2023-01-15 17:14:15 +0000Xeroine(~Xeroine@user/xeroine) (Ping timeout: 260 seconds)
2023-01-15 17:17:56 +0000Xeroine(~Xeroine@user/xeroine)
2023-01-15 17:18:07 +0000 <[exa]> fendor[m]: the yamlish aeson variant doesn't explode on unknown fields?
2023-01-15 17:19:22 +0000 <fendor[m]> aeson doesn't, so yaml won't either, afaict.
2023-01-15 17:19:44 +0000steerpike(~echelon@gateway/tor-sasl/steerpike)
2023-01-15 17:21:10 +0000steerpike(~echelon@gateway/tor-sasl/steerpike) ()
2023-01-15 17:21:41 +0000 <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 17:21:42 +0000dcoutts_(~duncan@host213-122-143-153.range213-122.btcentralplus.com)
2023-01-15 17:24:44 +0000ddellacosta(~ddellacos@86.106.143.136) (Ping timeout: 246 seconds)
2023-01-15 17:26:54 +0000ddellacosta(~ddellacos@89.45.224.227)
2023-01-15 17:27:19 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:6450:b99c:346:15e5) (Remote host closed the connection)
2023-01-15 17:27:37 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:6450:b99c:346:15e5)
2023-01-15 17:27:51 +0000 <[exa]> fendor[m]: well as a complete workaround you may format the data structure back to aeson Value and diff it
2023-01-15 17:29:45 +0000beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt) (Quit: beteigeuze)
2023-01-15 17:30:13 +0000beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt)
2023-01-15 17:32:19 +0000 <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 17:33:12 +0000 <[exa]> like, if the constraint you want to fit in is "no ignored fields ever", this is it
2023-01-15 17:34:27 +0000 <Guest5476> lmao, why this behaves in such a strange way? https://play-haskell.tomsmeding.com/saved/bCe7WkVe
2023-01-15 17:34:59 +0000 <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 17:36:41 +0000raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
2023-01-15 17:40:25 +0000jakalx(~jakalx@base.jakalx.net)
2023-01-15 17:45:41 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 17:45:56 +0000econo(uid147250@user/econo)
2023-01-15 17:49:24 +0000mimmy_(~mimmy@142.126.70.245) (Ping timeout: 272 seconds)
2023-01-15 17:50:02 +0000 <[exa]> fendor[m]: actually if you compare the Values reasonably, it's gonna lazy-stream
2023-01-15 17:50:40 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds)
2023-01-15 17:51:32 +0000thongpv87(~thongpv87@2402:9d80:3ee:7887:942:a6bd:b981:3bd)
2023-01-15 17:52:08 +0000 <[exa]> Guest5476: wow okay, interesting
2023-01-15 17:53:19 +0000 <[exa]> looks like it doesn't really see your instance, for whatever reason
2023-01-15 17:53:39 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:6450:b99c:346:15e5) (Remote host closed the connection)
2023-01-15 17:54:34 +0000thongpv(~thongpv87@113.176.74.88) (Ping timeout: 268 seconds)
2023-01-15 17:55:30 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:6450:b99c:346:15e5)
2023-01-15 18:01:44 +0000 <Guest5476> No, that's expected behavior: https://serokell.io/blog/uncaught-exception-handling
2023-01-15 18:01:59 +0000 <Guest5476> [exa] ^
2023-01-15 18:07:04 +0000o(niko@libera/staff/niko)
2023-01-15 18:07:20 +0000fizbin(~fizbin@user/fizbin) (Ping timeout: 260 seconds)
2023-01-15 18:07:35 +0000merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
2023-01-15 18:08:44 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 18:13:23 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
2023-01-15 18:15:53 +0000titibandit1(~titibandi@xdsl-81-173-160-143.nc.de) (Quit: Leaving.)
2023-01-15 18:17:22 +0000dsrt^(~dsrt@76.145.190.81) (Remote host closed the connection)
2023-01-15 18:18:04 +0000dcoutts_(~duncan@host213-122-143-153.range213-122.btcentralplus.com) (Ping timeout: 260 seconds)
2023-01-15 18:18:18 +0000fizbin(~fizbin@user/fizbin)
2023-01-15 18:19:30 +0000shriekingnoise(~shrieking@186.137.175.87)
2023-01-15 18:22:09 +0000dcoutts_(~duncan@host213-122-143-153.range213-122.btcentralplus.com)
2023-01-15 18:27:24 +0000dcoutts_(~duncan@host213-122-143-153.range213-122.btcentralplus.com) (Ping timeout: 260 seconds)
2023-01-15 18:29:43 +0000fizbin(~fizbin@user/fizbin) (Ping timeout: 268 seconds)
2023-01-15 18:35:17 +0000 <[exa]> Guest5476: oh wow ok
2023-01-15 18:36:46 +0000CiaoSen(~Jura@p200300c9574fa4002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2023-01-15 18:40:55 +0000merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2023-01-15 18:43:55 +0000fizbin(~fizbin@user/fizbin)
2023-01-15 18:44:58 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 18:45:24 +0000machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 265 seconds)
2023-01-15 18:45:32 +0000Inst(~Inst@2601:6c4:4081:54f0:c85a:c40d:a7df:1361)
2023-01-15 18:46:27 +0000mechap(~mechap@user/mechap) (Quit: WeeChat 3.8)
2023-01-15 18:47:54 +0000talismanick(~talismani@2601:200:c181:4c40::1be2)
2023-01-15 18:49:36 +0000justsomeguy(~justsomeg@user/justsomeguy)
2023-01-15 18:49:48 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds)
2023-01-15 18:55:22 +0000 <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 18:57:02 +0000 <geekosaur> asum over First?
2023-01-15 18:57:07 +0000 <geekosaur> maybe
2023-01-15 18:57:20 +0000 <geekosaur> hm, nom that's per element, not collecting
2023-01-15 18:57:28 +0000 <geekosaur> s/nom/no,
2023-01-15 19:01:10 +0000 <geekosaur> not sure you can do that with Applicative, actually, would need Monad
2023-01-15 19:03:02 +0000 <juri_> hmm. i guess i'd have to learn how monad works. fun! :)
2023-01-15 19:03:25 +0000 <juri_> (i am a simple haskeller, really. :) )
2023-01-15 19:03:43 +0000merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
2023-01-15 19:03:48 +0000fizbin(~fizbin@user/fizbin) (Ping timeout: 260 seconds)
2023-01-15 19:08:34 +0000merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
2023-01-15 19:12:56 +0000titibandit1(~titibandi@xdsl-81-173-160-143.nc.de)
2023-01-15 19:14:15 +0000natechan(~nate@98.45.169.16)
2023-01-15 19:15:40 +0000fxttr(~florian@i577BC913.versanet.de) (Quit: leaving)
2023-01-15 19:16:17 +0000coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2023-01-15 19:16:52 +0000caryhartline(~caryhartl@2600:1700:2d0:8d30:a4a8:25f2:538:8162)
2023-01-15 19:18:05 +0000trev(~trev@user/trev) (Remote host closed the connection)
2023-01-15 19:18:42 +0000natechan(~nate@98.45.169.16) (Ping timeout: 252 seconds)
2023-01-15 19:31:38 +0000natechan(~nate@98.45.169.16)
2023-01-15 19:33:05 +0000thongpv87(~thongpv87@2402:9d80:3ee:7887:942:a6bd:b981:3bd) (Ping timeout: 260 seconds)
2023-01-15 19:34:04 +0000wroathe(~wroathe@user/wroathe) (Quit: leaving)
2023-01-15 19:36:14 +0000wootehfoot(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2023-01-15 19:45:54 +0000mimmy_(~mimmy@142.126.70.245)
2023-01-15 19:48:48 +0000ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2023-01-15 19:49:20 +0000ec(~ec@gateway/tor-sasl/ec)
2023-01-15 19:50:23 +0000mimmy_(~mimmy@142.126.70.245) (Ping timeout: 246 seconds)
2023-01-15 19:51:52 +0000Sgeo(~Sgeo@user/sgeo)
2023-01-15 19:53:23 +0000natechan(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2023-01-15 19:54:05 +0000justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 260 seconds)
2023-01-15 19:54:16 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:bd7d:d18b:6ce0:4c58)
2023-01-15 20:01:59 +0000notzmv(~zmv@user/notzmv) (Ping timeout: 264 seconds)
2023-01-15 20:04:55 +0000_leo92_(~emmanuelu@user/emmanuelux) (Quit: au revoir)
2023-01-15 20:09:58 +0000natechan(~nate@98.45.169.16)
2023-01-15 20:18:16 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:bd7d:d18b:6ce0:4c58) (Quit: WeeChat 2.8)
2023-01-15 20:23:15 +0000talismanick(~talismani@2601:200:c181:4c40::1be2) (Ping timeout: 260 seconds)
2023-01-15 20:24:24 +0000wroathe(~wroathe@50.205.197.50)
2023-01-15 20:24:24 +0000wroathe(~wroathe@50.205.197.50) (Changing host)
2023-01-15 20:24:24 +0000wroathe(~wroathe@user/wroathe)
2023-01-15 20:25:46 +0000coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2023-01-15 20:26:16 +0000hpc(~juzz@ip98-169-35-163.dc.dc.cox.net) (Ping timeout: 268 seconds)
2023-01-15 20:27:07 +0000merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
2023-01-15 20:27:46 +0000hpc(~juzz@ip98-169-35-163.dc.dc.cox.net)
2023-01-15 20:29:06 +0000ddellacosta(~ddellacos@89.45.224.227) (Ping timeout: 252 seconds)
2023-01-15 20:31:41 +0000Xeroine(~Xeroine@user/xeroine) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in)
2023-01-15 20:32:26 +0000hpc(~juzz@ip98-169-35-163.dc.dc.cox.net) (Ping timeout: 268 seconds)
2023-01-15 20:33:00 +0000Xeroine(~Xeroine@user/xeroine)
2023-01-15 20:33:11 +0000merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 264 seconds)
2023-01-15 20:40:21 +0000hpc(~juzz@ip98-169-35-163.dc.dc.cox.net)
2023-01-15 20:43:05 +0000kee(~~kee@user/wizzwizz4) (Ping timeout: 260 seconds)
2023-01-15 20:45:31 +0000merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
2023-01-15 20:46:00 +0000kee(~~kee@user/wizzwizz4)
2023-01-15 20:47:33 +0000azimut_(~azimut@gateway/tor-sasl/azimut)
2023-01-15 20:47:53 +0000azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
2023-01-15 20:49:09 +0000machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-01-15 20:50:11 +0000merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2023-01-15 20:55:50 +0000hrberg(~quassel@171.79-160-161.customer.lyse.net)
2023-01-15 20:57:02 +0000sh1n(~sh1n@181.229.121.151)
2023-01-15 21:03:16 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2023-01-15 21:04:43 +0000wroathe(~wroathe@50.205.197.50)
2023-01-15 21:04:43 +0000wroathe(~wroathe@50.205.197.50) (Changing host)
2023-01-15 21:04:43 +0000wroathe(~wroathe@user/wroathe)
2023-01-15 21:06:48 +0000merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
2023-01-15 21:08:04 +0000mimmy_(~mimmy@142.126.70.245)
2023-01-15 21:08:13 +0000acarrico(~acarrico@dhcp-68-142-49-163.greenmountainaccess.net) (Quit: Leaving.)
2023-01-15 21:08:50 +0000fizbin(~fizbin@user/fizbin)
2023-01-15 21:09:46 +0000acidjnk(~acidjnk@p54ad56b7.dip0.t-ipconnect.de)
2023-01-15 21:10:22 +0000gmg(~user@user/gehmehgeh) (Quit: Leaving)
2023-01-15 21:11:07 +0000hrberg(~quassel@171.79-160-161.customer.lyse.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2023-01-15 21:11:47 +0000hrberg(~quassel@171.79-160-161.customer.lyse.net)
2023-01-15 21:12:03 +0000aaronm04(~user@user/aaronm04)
2023-01-15 21:12:04 +0000merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
2023-01-15 21:13:20 +0000mimmy_(~mimmy@142.126.70.245) (Ping timeout: 272 seconds)
2023-01-15 21:15:39 +0000CiaoSen(~Jura@p200300c9574fa4002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2023-01-15 21:17:18 +0000shriekingnoise_(~shrieking@186.137.175.87)
2023-01-15 21:20:32 +0000shriekingnoise(~shrieking@186.137.175.87) (Ping timeout: 268 seconds)
2023-01-15 21:21:47 +0000titibandit1(~titibandi@xdsl-81-173-160-143.nc.de) (Remote host closed the connection)
2023-01-15 21:26:02 +0000mechap(~mechap@user/mechap)
2023-01-15 21:32:10 +0000justsomeguy(~justsomeg@user/justsomeguy)
2023-01-15 21:34:05 +0000oldfashionedcowconvincer3000
2023-01-15 21:36:04 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
2023-01-15 21:36:28 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2023-01-15 21:37:12 +0000convincer3000oldfashionedcow
2023-01-15 21:49:14 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2023-01-15 21:51:58 +0000kee(~~kee@user/wizzwizz4) (Ping timeout: 272 seconds)
2023-01-15 21:52:40 +0000wroathe(~wroathe@50.205.197.50)
2023-01-15 21:52:40 +0000wroathe(~wroathe@50.205.197.50) (Changing host)
2023-01-15 21:52:40 +0000wroathe(~wroathe@user/wroathe)
2023-01-15 21:53:12 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 21:55:53 +0000kee(~~kee@user/wizzwizz4)
2023-01-15 21:57:32 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 255 seconds)
2023-01-15 22:02:12 +0000mc47(~mc47@xmonad/TheMC47)
2023-01-15 22:02:56 +0000takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2023-01-15 22:08:28 +0000hrberg(~quassel@171.79-160-161.customer.lyse.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2023-01-15 22:14:04 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 22:14:09 +0000hrberg(~quassel@171.79-160-161.customer.lyse.net)
2023-01-15 22:15:08 +0000gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.7.1)
2023-01-15 22:18:06 +0000notzmv(~zmv@user/notzmv)
2023-01-15 22:18:34 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds)
2023-01-15 22:19:07 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2023-01-15 22:20:09 +0000zer0bitz(~zer0bitz@dsl-hkibng32-54fb48-32.dhcp.inet.fi) (Ping timeout: 260 seconds)
2023-01-15 22:24:26 +0000wroathe(~wroathe@50.205.197.50)
2023-01-15 22:24:26 +0000wroathe(~wroathe@50.205.197.50) (Changing host)
2023-01-15 22:24:26 +0000wroathe(~wroathe@user/wroathe)
2023-01-15 22:27:15 +0000merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl)
2023-01-15 22:29:05 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2023-01-15 22:35:41 +0000Guest94(~Guest94@2600:8805:d807:e00:9189:eb63:2ecf:8f6e)
2023-01-15 22:43:30 +0000 <Guest94> Hi all, im beginner in Haskell and have a question about function composition (.) operator. Say I have this code:
2023-01-15 22:43:30 +0000 <Guest94> firstPart = (<> " ")
2023-01-15 22:43:31 +0000 <Guest94> compose = (<>) . firstPart
2023-01-15 22:43:31 +0000 <Guest94> compose "hi" "john"
2023-01-15 22:43:32 +0000 <Guest94> ghci> "hi john"
2023-01-15 22:43:32 +0000 <Guest94> Im confused at (<>) is a 2 args function. Is it that natural to compose different no. of args function together?
2023-01-15 22:43:33 +0000 <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 22:43:33 +0000 <Guest94> partial = (<>) . firstPart & "hi"
2023-01-15 22:43:34 +0000 <Guest94> partial = (<>) . firstPart & "hi" "john"
2023-01-15 22:43:34 +0000 <Guest94> partial = (<>) . firstPart "hi" "john"
2023-01-15 22:43:41 +0000 <Guest94> any help is much appreciated!
2023-01-15 22:44:02 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:6450:b99c:346:15e5) (Remote host closed the connection)
2023-01-15 22:45:28 +0000 <sshine> Guest94, hi
2023-01-15 22:46:04 +0000 <sshine> Guest94, (<> " ") is syntax sugar for (\s -> s <> " ")
2023-01-15 22:46:26 +0000 <sshine> Guest94, (" " <>) is syntax sugar for (\s -> " " <> s)
2023-01-15 22:46:38 +0000scoopahdoopah(~quassel@050-089-109-059.res.spectrum.com)
2023-01-15 22:47:45 +0000 <sshine> Guest94, the reason you can't write (<>) . is, as you say, it's a two-argument function.
2023-01-15 22:48:48 +0000 <sshine> well, you can write it, but...
2023-01-15 22:48:52 +0000 <sshine> :t ((<>) .)
2023-01-15 22:48:53 +0000 <lambdabot> Semigroup a1 => (a2 -> a1) -> a2 -> a1 -> a1
2023-01-15 22:50:05 +0000 <Guest94> sshine I don't get what you mean, I can still write
2023-01-15 22:50:05 +0000 <Guest94> compose = (<>) . firstPart
2023-01-15 22:50:06 +0000 <Guest94> compose "hi" "john"
2023-01-15 22:50:06 +0000 <Guest94> and the result is "hi john"
2023-01-15 22:50:54 +0000Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving)
2023-01-15 22:50:55 +0000 <Guest94> but I didn't want to bind (<>) . firstPart to the variable compose
2023-01-15 22:51:46 +0000 <sshine> I'm a little confused. what do you wanna do then? :)
2023-01-15 22:51:50 +0000 <Guest94> I wanted to directly pass args right after the composition, and it failed, I tried all 3 ways:
2023-01-15 22:51:51 +0000 <Guest94> (<>) . firstPart & "hi"
2023-01-15 22:51:51 +0000 <Guest94> (<>) . firstPart & "hi" "john"
2023-01-15 22:51:52 +0000 <Guest94> (<>) . firstPart "hi" "john"
2023-01-15 22:52:34 +0000eggplantade(~Eggplanta@2600:1700:38c5:d800:6450:b99c:346:15e5)
2023-01-15 22:52:43 +0000 <geekosaur> @let firstPart = (<> " ")
2023-01-15 22:52:45 +0000 <lambdabot> Defined.
2023-01-15 22:53:06 +0000 <geekosaur> > ((<>) . firstpart) "hi" "john"
2023-01-15 22:53:08 +0000 <lambdabot> error:
2023-01-15 22:53:08 +0000 <lambdabot> • Variable not in scope: firstpart :: [Char] -> [Char]
2023-01-15 22:53:08 +0000 <lambdabot> • Perhaps you meant ‘firstPart’ (line 202)
2023-01-15 22:53:14 +0000 <geekosaur> > ((<>) . firstPart) "hi" "john"
2023-01-15 22:53:16 +0000 <lambdabot> "hi john"
2023-01-15 22:53:31 +0000 <sshine> > (((<>) . (<> " ")) "hi") "john"
2023-01-15 22:53:33 +0000 <lambdabot> "hi john"
2023-01-15 22:54:01 +0000 <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 22:54:59 +0000 <sshine> > intercalate " " ["hi", "john"] -- :o
2023-01-15 22:55:01 +0000 <lambdabot> "hi john"
2023-01-15 22:55:10 +0000 <xerox> > unwords ["hi","john"]
2023-01-15 22:55:13 +0000 <lambdabot> "hi john"
2023-01-15 22:55:32 +0000 <sshine> > "hi john"
2023-01-15 22:55:35 +0000 <lambdabot> "hi john"
2023-01-15 22:55:40 +0000 <Guest94> geekosaur yours work. Could anyone explain why all my 3 ways failed?
2023-01-15 22:56:14 +0000wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-01-15 22:56:14 +0000wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-01-15 22:56:14 +0000wroathe(~wroathe@user/wroathe)
2023-01-15 22:56:14 +0000 <Guest94> (<>) . firstPart "hi" "john"
2023-01-15 22:56:15 +0000 <Guest94> (<>) . firstPart & "hi"
2023-01-15 22:56:15 +0000 <Guest94> (<>) . firstPart & "hi" "john"
2023-01-15 22:57:17 +0000 <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 22:57:51 +0000 <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 22:59:17 +0000 <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 22:59:45 +0000 <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.
2023-01-15 23:00:18 +0000 <sshine> Guest94, you're looking for $ if you want the function to live on the left-hand side.
2023-01-15 23:00:24 +0000merijn(~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2023-01-15 23:01:00 +0000 <sshine> Guest94, but if you do (<>) . (<> " ") $ "hi" "john" -- you get the problem that geekosaur explained.
2023-01-15 23:01:14 +0000 <sshine> ("hi" isn't a function)
2023-01-15 23:01:15 +0000 <Guest94> you are right! I mistook & to $
2023-01-15 23:03:54 +0000 <sshine> f . g = \x -> f (g x)
2023-01-15 23:04:32 +0000chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2023-01-15 23:04:47 +0000chexum(~quassel@gateway/tor-sasl/chexum)
2023-01-15 23:05:01 +0000oldfashionedcow(~Rahul_San@user/oldfashionedcow) (Quit: WeeChat 3.7.1)
2023-01-15 23:05:02 +0000 <Guest94> Im starting to get it. But one more confusing point. Could you tell me why this NOT work?
2023-01-15 23:05:03 +0000 <Guest94> (<>) . firstPart $ "hi" "john"
2023-01-15 23:05:11 +0000 <sshine> I just did
2023-01-15 23:05:16 +0000oldfashionedcow(~Rahul_San@user/oldfashionedcow)
2023-01-15 23:05:21 +0000 <sshine> firstPart = (<> " ")
2023-01-15 23:05:42 +0000 <sshine> it will first try to apply "hi" as a function to "john"
2023-01-15 23:05:56 +0000 <sshine> > "hi" "john"
2023-01-15 23:05:58 +0000 <lambdabot> error:
2023-01-15 23:05:58 +0000 <lambdabot> • Couldn't match expected type ‘[Char] -> t’
2023-01-15 23:05:58 +0000 <lambdabot> with actual type ‘[Char]’
2023-01-15 23:05:59 +0000 <geekosaur> $ applies the next expression, not an arbitrary number of parameters
2023-01-15 23:06:21 +0000 <geekosaur> The next expression looks like a function application, except that "hi" isn't a function so it fails
2023-01-15 23:06:36 +0000 <geekosaur> :t (&)
2023-01-15 23:06:38 +0000 <lambdabot> a -> (a -> b) -> b
2023-01-15 23:06:50 +0000 <Guest94> ok that makes sense. I need to read up on $ operator
2023-01-15 23:06:51 +0000oldfashionedgoat(~oldfashio@2.120.174.52)
2023-01-15 23:07:15 +0000 <geekosaur> (&) is ($) only reversed, so the error is even weirder because you gave it as <function> & <parameters> but it expects <parameter> & <function>
2023-01-15 23:07:23 +0000azimut_(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
2023-01-15 23:07:40 +0000 <Guest94> essentially, the book im reading only mentioned that $ is to demote the precedence of firstPart "hi", and focus the precedence on the composition of (<>) . firstPart
2023-01-15 23:08:22 +0000 <Guest94> and so I could understand that I can bind like this:
2023-01-15 23:08:22 +0000 <Guest94> partial = (<>) . firstPart $ "hi"
2023-01-15 23:08:23 +0000 <Guest94> partial "john"
2023-01-15 23:08:23 +0000 <Guest94> >> "hi john"
2023-01-15 23:08:31 +0000oldfashionedgoat(~oldfashio@2.120.174.52) (Client Quit)
2023-01-15 23:09:05 +0000 <Guest94> but I never realize that
2023-01-15 23:09:05 +0000 <Guest94> (<>) . firstPart $ "hi" "john"
2023-01-15 23:09:06 +0000 <Guest94> would consider "hi" a function
2023-01-15 23:09:35 +0000 <sshine> yes
2023-01-15 23:09:43 +0000azimut(~azimut@gateway/tor-sasl/azimut)
2023-01-15 23:10:20 +0000 <sshine> because f $ x is f(x), so f $ x y is f(x y), and 'x y' is x applied as a function to y.
2023-01-15 23:10:33 +0000 <sshine> here, (<>) . firstPart is f
2023-01-15 23:11:08 +0000CiaoSen(~Jura@p200300c9574fa4002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2023-01-15 23:11:48 +0000 <sshine> you don't want f("hi"("john")) :)
2023-01-15 23:12:05 +0000 <Guest94> because f $ x is f(x), so f $ x y is f(x y), and 'x y' is x applied as a function to y.
2023-01-15 23:12:10 +0000 <Guest94> that makes a lot of sense!
2023-01-15 23:12:37 +0000 <sshine> it's easier to see when you set f = (<>) . firstPart -- there's a lot of syntax sugar to distract from the simple function application that follows it.
2023-01-15 23:12:41 +0000 <Guest94> now i have a better understand of $ is the f(x). I was tunneled in thinking it was to demote precedence
2023-01-15 23:13:06 +0000 <sshine> if it's any help, you can *always* use parentheses instead of $.
2023-01-15 23:13:59 +0000 <Guest94> sshine geekosaur thank you for your help
2023-01-15 23:15:09 +0000 <geekosaur> it does demote precedence, usually. but function application has a fixed high precedence that $ can't touch
2023-01-15 23:15:31 +0000 <geekosaur> so `"hi" "there"` continues to look like a function application
2023-01-15 23:16:05 +0000 <Guest94> ok thank you
2023-01-15 23:16:07 +0000 <geekosaur> > (<>) . firstPart $ "hi" $ "john"
2023-01-15 23:16:09 +0000 <lambdabot> error:
2023-01-15 23:16:09 +0000 <lambdabot> • Couldn't match expected type ‘[Char] -> [Char]’
2023-01-15 23:16:09 +0000 <lambdabot> with actual type ‘[Char]’
2023-01-15 23:17:01 +0000 <sshine> yeah, the space between "hi" and "john" can be seen as an operator with the highest precedence.
2023-01-15 23:17:11 +0000 <sshine> (function application)
2023-01-15 23:17:24 +0000__monty__(~toonn@user/toonn) (Quit: leaving)
2023-01-15 23:17:33 +0000 <geekosaur> and that one failed because it applies to the wrong thing
2023-01-15 23:17:41 +0000 <geekosaur> % :info &
2023-01-15 23:17:41 +0000 <yahb2> <interactive>:1:1: error: Not in scope: ‘&’
2023-01-15 23:17:43 +0000 <Guest94> say `f = (<>) . firstPart`
2023-01-15 23:17:44 +0000 <Guest94> so why does this fail
2023-01-15 23:17:44 +0000 <Guest94> f $ "hi" $ "john"
2023-01-15 23:17:53 +0000 <Guest94> say `f = (<>) . firstPart`
2023-01-15 23:17:53 +0000 <Guest94> so why does this fail
2023-01-15 23:17:54 +0000 <Guest94> `f $ "hi" $ "john"`
2023-01-15 23:18:01 +0000alskdf(~alskdf@dhcp-108-168-13-112.cable.user.start.ca)
2023-01-15 23:18:12 +0000 <geekosaur> :t firstPart $ "hi" $ "john"
2023-01-15 23:18:13 +0000 <lambdabot> error:
2023-01-15 23:18:13 +0000 <lambdabot> • Couldn't match expected type ‘[Char] -> [Char]’
2023-01-15 23:18:13 +0000 <lambdabot> with actual type ‘[Char]’
2023-01-15 23:18:30 +0000 <sshine> f $ "hi" $ "john" => f ("hi" ("john")) when you wanted (f "hi") "john" so you could say it failed because $ is right-associative.
2023-01-15 23:19:03 +0000 <geekosaur> % import Data.Function
2023-01-15 23:19:04 +0000 <yahb2> <no output>
2023-01-15 23:19:10 +0000 <geekosaur> % :info &
2023-01-15 23:19:10 +0000 <yahb2> (&) :: a -> (a -> b) -> b -- Defined in ‘Data.Function’ ; infixl 1 &
2023-01-15 23:19:22 +0000 <geekosaur> % :info $
2023-01-15 23:19:22 +0000 <yahb2> ($) :: (a -> b) -> a -> b -- Defined in ‘GHC.Base’ ; infixr 0 $
2023-01-15 23:19:51 +0000 <Guest94> why it's not  `f("hi) ("john)` but `f ("hi" ("john"))`
2023-01-15 23:19:58 +0000 <sshine> > let f = (<>) . (<> " ") in "john" & ("hi" & f)
2023-01-15 23:20:00 +0000 <lambdabot> "hi john"
2023-01-15 23:20:27 +0000 <Guest94> i think `"hi"` get consider as a function
2023-01-15 23:21:06 +0000 <sshine> yes
2023-01-15 23:21:12 +0000 <anatta> yes, because $ is weak
2023-01-15 23:21:37 +0000 <Guest94> i think i am pusing it too far, and noone really writes `f & "hi" & "john
2023-01-15 23:21:41 +0000 <anatta> you could say that everything to the right is evaluated first
2023-01-15 23:21:46 +0000 <Guest94> i think i am pusing it too far, and noone really writes `f & "hi" & "john`
2023-01-15 23:22:18 +0000 <geekosaur> many people think using $ is a bad idea, because this is so confusing
2023-01-15 23:22:23 +0000 <anatta> so if you write f $ "hi" $ "john" it starts by evaluating "john", which is all well and good, but then it tries everything to the right of the second one, which is "hi" "john"
2023-01-15 23:22:58 +0000 <hpc> the right answer is to parenthesize everything, since everyone already knows lisp :P
2023-01-15 23:23:19 +0000sshinejohn
2023-01-15 23:23:23 +0000 <anatta> the right answer is to go bird watching
2023-01-15 23:23:33 +0000 <anatta> ;)
2023-01-15 23:23:39 +0000johnsshine
2023-01-15 23:24:40 +0000 <Guest94> so everyone prefers paranthesis over $? Im new to haskell, so idk which people usually use (I definitely would go for parenthesis after this discussion)
2023-01-15 23:25:11 +0000 <sshine> it depends
2023-01-15 23:25:11 +0000 <anatta> in your case I'd argue the problem is more that you're using contrived functions
2023-01-15 23:25:43 +0000 <geekosaur> not everyone, but especially for beginners it's a good idea because of things like this
2023-01-15 23:25:51 +0000 <anatta> like, you could write what you want as f s1 s2 = s1 <> " " <> s2
2023-01-15 23:25:55 +0000 <anatta> and everything would be fine
2023-01-15 23:26:47 +0000 <Guest94> that's way better. I was trying to be idiomatic
2023-01-15 23:26:50 +0000 <hpc> my general rule is when i am writing code, it's not to be read by a computer but by the next person to edit it
2023-01-15 23:26:59 +0000 <hpc> so i just write whatever i will be able to make sense of a week from now
2023-01-15 23:27:08 +0000 <anatta> <> is generally an infix operator
2023-01-15 23:27:28 +0000 <hpc> or as i like to say it, "make code look like what it does"
2023-01-15 23:27:30 +0000mimmy_(~mimmy@142.126.70.245)
2023-01-15 23:28:00 +0000 <Guest94> thank you everyone
2023-01-15 23:28:39 +0000wroathe(~wroathe@user/wroathe) (Quit: Reconnecting)
2023-01-15 23:28:52 +0000wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-01-15 23:28:52 +0000wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-01-15 23:28:52 +0000wroathe(~wroathe@user/wroathe)
2023-01-15 23:29:13 +0000 <anatta> sometimes it's difficult to know what looks weird because you're just not used to it yet, and what looks weird because you're doing something wrong =)
2023-01-15 23:29:35 +0000 <anatta> it happens to me as well, all the time
2023-01-15 23:30:13 +0000 <Guest94> :)
2023-01-15 23:30:58 +0000Guest94(~Guest94@2600:8805:d807:e00:9189:eb63:2ecf:8f6e) (Quit: Client closed)
2023-01-15 23:33:07 +0000mimmy_(~mimmy@142.126.70.245) (Ping timeout: 268 seconds)
2023-01-15 23:35:45 +0000sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-01-15 23:35:50 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg)
2023-01-15 23:37:02 +0000sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-01-15 23:37:23 +0000alskdf(~alskdf@dhcp-108-168-13-112.cable.user.start.ca) (Quit: Leaving)
2023-01-15 23:40:22 +0000freeside(~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 252 seconds)
2023-01-15 23:44:02 +0000Guest94(~Guest94@2600:8805:d807:e00:9189:eb63:2ecf:8f6e)
2023-01-15 23:52:07 +0000jumper149(~jumper149@base.felixspringer.xyz) (Quit: WeeChat 3.7.1)
2023-01-15 23:52:10 +0000Tuplanolla(~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.)