2023/10/19

2023-10-19 00:00:39 +0200mikoto-chan(~mikoto-ch@ip-212-239-236-59.dsl.scarlet.be)
2023-10-19 00:00:58 +0200jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 252 seconds)
2023-10-19 00:07:57 +0200sm(~sm@plaintextaccounting/sm) (Quit: sm)
2023-10-19 00:08:13 +0200stuu22(~stuuu@2a01:c22:8486:1800:1511:8706:c3e7:eb57)
2023-10-19 00:10:05 +0200 <stuu22> hi, i have a stream of osc-messages. when i get the message "rec" i want to start making a list of all following messages until i get "stop". i want to use concurrency with forkIO.. any tips on how to handle the "rec"/"stop" thing? i had no luck with mvar so far
2023-10-19 00:10:52 +0200 <stuu22> without forkIO i had a working approach. but it is too slow then and messages get lost
2023-10-19 00:13:59 +0200Sgeo(~Sgeo@user/sgeo)
2023-10-19 00:16:26 +0200 <Rembane> stuu22: How many messages per time unit are we talking?
2023-10-19 00:18:10 +0200falafel(~falafel@62.175.113.194.dyn.user.ono.com) (Ping timeout: 255 seconds)
2023-10-19 00:18:17 +0200 <stuu22> hundreds i would say
2023-10-19 00:18:38 +0200 <Rembane> How big are they?
2023-10-19 00:18:39 +0200 <ncf> how many time units per hundred messages are we talking
2023-10-19 00:19:00 +0200 <ncf> or how many seconds per time unit i guess
2023-10-19 00:19:47 +0200 <c_wraith> If you just want to queue events for another thread to handle and aren't worried about memory use, Chan is the quick and easy answer.
2023-10-19 00:20:07 +0200 <c_wraith> If you *are* concerned about memory use while keeping up with a real-time stream... you're going to need some clever stuff.;
2023-10-19 00:20:21 +0200 <stuu22> it is TUIO so bundled osc messages, i track every finger joint of two hands
2023-10-19 00:20:40 +0200danza(~francesco@151.43.99.161)
2023-10-19 00:21:40 +0200 <stuu22> when my "rec" message is received i want to extract the values of the TUIO messages, store them in a list and re-send them to another application.
2023-10-19 00:21:51 +0200 <c_wraith> Try Control.Concurrent.Chan. If your consumers can't keep up, you're going to need to try buffering strategies.
2023-10-19 00:21:59 +0200 <stuu22> when i tried receiving without concurrency mmessages got lost
2023-10-19 00:22:38 +0200 <stuu22> okay! will have to read through it, as if you probably guessed: i am not a pro :)
2023-10-19 00:23:40 +0200 <c_wraith> fortunately it's a very small API. :)
2023-10-19 00:25:25 +0200 <monochrom> Ha! Applicative is a pretty small API too. Then everyone is confused. >:)
2023-10-19 00:25:32 +0200 <stuu22> i do wonder though about MVars, as they are kind of mutable? seems to go a bit against the overall concept.
2023-10-19 00:26:07 +0200troydm(~troydm@user/troydm) (Ping timeout: 264 seconds)
2023-10-19 00:26:20 +0200 <c_wraith> The trick with mutability in haskell is that it's not *functions* that cause it.
2023-10-19 00:26:27 +0200 <c_wraith> So functions remain pure
2023-10-19 00:26:41 +0200 <c_wraith> It's other stuff (*glares at IO*) that does the mutability
2023-10-19 00:27:34 +0200 <stuu22> but "even" once assigned variables in IO are immutable arent they?
2023-10-19 00:27:41 +0200 <c_wraith> variables are.
2023-10-19 00:27:52 +0200 <c_wraith> But a reference is a value, not a variable
2023-10-19 00:28:05 +0200 <c_wraith> You can change what the reference points to without changing any variable
2023-10-19 00:28:20 +0200 <monochrom> IORef and MVar are mutable. Sure, the "x = 0" kind of "variable" aren't.
2023-10-19 00:28:24 +0200 <c_wraith> (looking at the new contents requires an IO action)
2023-10-19 00:29:09 +0200 <stuu22> so MVar is the reference i point to different values?
2023-10-19 00:29:30 +0200 <c_wraith> Yes.
2023-10-19 00:29:38 +0200 <c_wraith> Something like Chan is a linked list of MVars
2023-10-19 00:30:32 +0200 <c_wraith> relatively easy to implement (for something that needs to deal with concurrent use), relatively simple to use.. But definitely not the fastest thing in the world.
2023-10-19 00:31:12 +0200waleee(~waleee@2001:9b0:21c:e600:f2f3:f744:435d:137c)
2023-10-19 00:32:42 +0200 <stuu22> ok, i dont think it has to be c-level fast. but actually the stored messages dont need to be MVar's. I do think more about a state that changes from "rec" to "stop" and back and forth. so while listening to messages via threads i just have to do different things during different states?
2023-10-19 00:33:52 +0200 <c_wraith> I was thinking of splitting more like - have one thread watch the input. When it sees a rec, start writing to a Chan until it sees a stop. Then another thread will read from the Chan and do whatever processing it needs to.
2023-10-19 00:34:22 +0200 <c_wraith> There are a *lot* of minor variations possible on this, depending on how you want to signal between threads.
2023-10-19 00:35:25 +0200 <c_wraith> But the main idea is to have one thread receiving events and queuing them if needed, then a second thread to process the queued events.
2023-10-19 00:36:39 +0200 <stuu22> thanks a lot! i hope i get it to work :)
2023-10-19 00:37:04 +0200 <c_wraith> ... and then there's the extra detail that you probably need to compile with the threaded runtime and then run it with multiple cores. Those aren't hard, but they're extra steps.
2023-10-19 00:37:59 +0200mikoto-chan(~mikoto-ch@ip-212-239-236-59.dsl.scarlet.be) (Ping timeout: 245 seconds)
2023-10-19 00:39:14 +0200 <stuu22> the more i think about this i dont get why i need the threads. in python with python-osc library it worked very good without threads (except python-osc uses some under the hood). but with hosc i had a huge package loss
2023-10-19 00:39:27 +0200 <stuu22> same with Max and Pure Data
2023-10-19 00:39:36 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2023-10-19 00:40:12 +0200 <c_wraith> It probably comes down to vagaries of the stop-the-world garbage collector.
2023-10-19 00:40:40 +0200 <c_wraith> who knows? Maybe if you switch to the concurrent collector you can do it with only one thread. That might be worth a try.
2023-10-19 00:42:01 +0200Vajb(~Vajb@207.61.167.122) (Ping timeout: 255 seconds)
2023-10-19 00:42:06 +0200 <stuu22> fancy tip!
2023-10-19 00:48:28 +0200Maxdamantus(~Maxdamant@user/maxdamantus) (Ping timeout: 255 seconds)
2023-10-19 00:54:21 +0200danza(~francesco@151.43.99.161) (Ping timeout: 258 seconds)
2023-10-19 00:56:18 +0200waleee(~waleee@2001:9b0:21c:e600:f2f3:f744:435d:137c) (Ping timeout: 272 seconds)
2023-10-19 00:58:26 +0200waleee(~waleee@2001:9b0:21c:e600:f2f3:f744:435d:137c)
2023-10-19 01:06:53 +0200jmdaemon(~jmdaemon@user/jmdaemon) (Read error: Connection reset by peer)
2023-10-19 01:09:43 +0200Inst(~Inst@120.244.192.250) (Ping timeout: 252 seconds)
2023-10-19 01:12:59 +0200waleee(~waleee@2001:9b0:21c:e600:f2f3:f744:435d:137c) (Ping timeout: 245 seconds)
2023-10-19 01:18:47 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 255 seconds)
2023-10-19 01:23:10 +0200waleee(~waleee@2001:9b0:21c:e600:f2f3:f744:435d:137c)
2023-10-19 01:32:25 +0200Inst(~Inst@120.244.192.250)
2023-10-19 01:34:22 +0200troydm(~troydm@user/troydm)
2023-10-19 01:37:31 +0200stuu22(~stuuu@2a01:c22:8486:1800:1511:8706:c3e7:eb57) (Quit: Leaving)
2023-10-19 01:39:05 +0200CiaoSen(~Jura@2a05:5800:2b2:8d00:664b:f0ff:fe37:9ef) (Ping timeout: 240 seconds)
2023-10-19 02:12:36 +0200dcoutts(~duncan@net77-43-75-226.mclink.it)
2023-10-19 02:13:03 +0200Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.)
2023-10-19 02:15:13 +0200shriekingnoise_(~shrieking@186.137.175.87)
2023-10-19 02:16:00 +0200aforemny(~aforemny@2001:9e8:6ce4:a700:b6be:fb5b:7ea6:79a3) (Ping timeout: 258 seconds)
2023-10-19 02:17:09 +0200shriekingnoise(~shrieking@186.137.175.87) (Ping timeout: 258 seconds)
2023-10-19 02:18:33 +0200shriekingnoise_(~shrieking@186.137.175.87) (Remote host closed the connection)
2023-10-19 02:19:13 +0200aforemny(~aforemny@2001:9e8:6cf0:dd00:82d7:c870:ea12:df34)
2023-10-19 02:20:13 +0200dcoutts(~duncan@net77-43-75-226.mclink.it) (Ping timeout: 258 seconds)
2023-10-19 02:20:24 +0200shriekingnoise(~shrieking@186.137.175.87)
2023-10-19 02:20:47 +0200ddellacosta(~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 255 seconds)
2023-10-19 02:21:24 +0200shriekingnoise(~shrieking@186.137.175.87) (Client Quit)
2023-10-19 02:21:40 +0200ddellacosta(~ddellacos@ool-44c738de.dyn.optonline.net)
2023-10-19 02:32:29 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 255 seconds)
2023-10-19 02:45:01 +0200 <EvanR> if you only want mutable variables you can get away with ST instead of IO
2023-10-19 02:45:39 +0200 <EvanR> which is a handy way to construct a value with a classic imperative pseudocode algorithm found on wikipedia, then freeze it to be returned to "pure code"
2023-10-19 02:57:28 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds)
2023-10-19 02:57:56 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2023-10-19 02:58:57 +0200ddellacosta(~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 255 seconds)
2023-10-19 02:59:46 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-10-19 03:00:06 +0200Alleria(~JohnGalt@user/alleria)
2023-10-19 03:00:53 +0200ddellacosta(~ddellacos@ool-44c738de.dyn.optonline.net)
2023-10-19 03:08:12 +0200otto_s(~user@p5b044495.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2023-10-19 03:09:51 +0200 <EvanR> the threaded runtime also has more responsive sleep and wakeup, important for executing within audio deadlines
2023-10-19 03:10:05 +0200otto_s(~user@p5de2fa05.dip0.t-ipconnect.de)
2023-10-19 03:18:05 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2023-10-19 03:33:41 +0200xff0x(~xff0x@ai101218.d.east.v6connect.net) (Ping timeout: 255 seconds)
2023-10-19 03:39:24 +0200 <kanto> has anyone here read The Haskell Road to Logic, Maths and Programming who thinks highly of it?
2023-10-19 03:42:48 +0200aforemny_(~aforemny@i59F516DD.versanet.de)
2023-10-19 03:43:24 +0200aforemny(~aforemny@2001:9e8:6cf0:dd00:82d7:c870:ea12:df34) (Ping timeout: 258 seconds)
2023-10-19 03:45:13 +0200cpressey(~cpressey@host-2-102-14-126.as13285.net)
2023-10-19 03:46:52 +0200vglfr(~vglfr@88.155.159.184) (Ping timeout: 248 seconds)
2023-10-19 03:47:50 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2023-10-19 03:53:03 +0200mud(~mud@user/kadoban)
2023-10-19 03:57:31 +0200cpressey(~cpressey@host-2-102-14-126.as13285.net) (Quit: Client closed)
2023-10-19 04:00:45 +0200Vajb(~Vajb@207.61.167.122)
2023-10-19 04:03:39 +0200euleritian(~euleritia@dynamic-046-114-202-144.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2023-10-19 04:03:57 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-10-19 04:10:18 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com)
2023-10-19 04:11:43 +0200bilegeek(~bilegeek@2600:1008:b046:1e20:2def:8984:9be9:6198)
2023-10-19 04:14:25 +0200td_(~td@i5387091B.versanet.de) (Ping timeout: 255 seconds)
2023-10-19 04:15:19 +0200waleee(~waleee@2001:9b0:21c:e600:f2f3:f744:435d:137c) (Ping timeout: 264 seconds)
2023-10-19 04:15:33 +0200mud(~mud@user/kadoban) (Quit: quit)
2023-10-19 04:16:13 +0200td_(~td@i53870939.versanet.de)
2023-10-19 04:20:00 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2023-10-19 04:28:50 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2023-10-19 04:28:50 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2023-10-19 04:28:50 +0200finn_elijaFinnElija
2023-10-19 04:41:49 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2023-10-19 04:48:16 +0200Sgeo(~Sgeo@user/sgeo)
2023-10-19 04:59:28 +0200sm(~sm@plaintextaccounting/sm)
2023-10-19 05:00:03 +0200sm(~sm@plaintextaccounting/sm) (Client Quit)
2023-10-19 05:05:07 +0200Vajb(~Vajb@207.61.167.122) (Ping timeout: 264 seconds)
2023-10-19 05:08:10 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:b915:f992:5adb:85e) (Remote host closed the connection)
2023-10-19 05:08:26 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d)
2023-10-19 05:09:13 +0200jinsun_(~jinsun@user/jinsun)
2023-10-19 05:09:13 +0200jinsunGuest8599
2023-10-19 05:09:14 +0200Guest8599(~jinsun@user/jinsun) (Killed (silver.libera.chat (Nickname regained by services)))
2023-10-19 05:09:14 +0200jinsun_jinsun
2023-10-19 05:19:12 +0200aforemny(~aforemny@2001:9e8:6cc3:2a00:a85b:4589:39bf:9c93)
2023-10-19 05:20:07 +0200aforemny_(~aforemny@i59F516DD.versanet.de) (Ping timeout: 255 seconds)
2023-10-19 05:20:54 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-10-19 05:30:04 +0200roboguy_(~roboguy_@2605:a601:ac4a:2700:f810:32a3:6ffc:b04a)
2023-10-19 05:31:00 +0200myxos(~myxos@cpe-65-28-251-121.cinci.res.rr.com) (Remote host closed the connection)
2023-10-19 05:36:57 +0200myyo(~myyo@75-166-145-203.hlrn.qwest.net)
2023-10-19 05:50:50 +0200 <energizer> why is haskell hello world so big compared to other gc languages like golang? https://github.com/MichalStrehovsky/sizegame
2023-10-19 05:55:46 +0200vglfr(vglfr@gateway/vpn/protonvpn/vglfr)
2023-10-19 06:02:23 +0200 <energizer> i see https://www.reddit.com/r/haskell/comments/1imfio/why_are_haskell_specifically_ghc_binaries_so_huge/
2023-10-19 06:03:00 +0200myxos(~myxos@cpe-65-28-251-121.cinci.res.rr.com)
2023-10-19 06:07:50 +0200 <albet70> between threads, one to write, multiple to read, what should I use? MVar is blocked, not good for this case
2023-10-19 06:14:20 +0200monochrom(trebla@216.138.220.146) (Ping timeout: 246 seconds)
2023-10-19 06:18:57 +0200monochrom(trebla@216.138.220.146)
2023-10-19 06:19:41 +0200derpyxdhs(~Thunderbi@user/derpyxdhs)
2023-10-19 06:21:01 +0200vglfr(vglfr@gateway/vpn/protonvpn/vglfr) (Remote host closed the connection)
2023-10-19 06:21:54 +0200vglfr(vglfr@gateway/vpn/protonvpn/vglfr)
2023-10-19 06:22:31 +0200myyo(~myyo@75-166-145-203.hlrn.qwest.net) ()
2023-10-19 06:29:21 +0200michalz(~michalz@185.246.207.218)
2023-10-19 06:31:58 +0200 <c_wraith> energizer: because it's linking in the GHC runtime statically, instead of what C compilers do where they dynamically link to libc.
2023-10-19 06:32:59 +0200 <energizer> c_wraith: iiuc golang runtime's statically linked too
2023-10-19 06:33:10 +0200 <c_wraith> it does a lot less than GHC's
2023-10-19 06:47:24 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 258 seconds)
2023-10-19 06:47:40 +0200Inst(~Inst@120.244.192.250) (Read error: Connection reset by peer)
2023-10-19 06:54:04 +0200vglfr(vglfr@gateway/vpn/protonvpn/vglfr) (Ping timeout: 248 seconds)
2023-10-19 06:55:23 +0200vglfr(~vglfr@88.155.170.213)
2023-10-19 06:56:10 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2023-10-19 06:56:21 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2023-10-19 06:56:30 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-10-19 07:03:08 +0200Square(~Square@user/square)
2023-10-19 07:03:43 +0200roboguy_(~roboguy_@2605:a601:ac4a:2700:f810:32a3:6ffc:b04a) (Quit: Leaving...)
2023-10-19 07:04:06 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2023-10-19 07:16:14 +0200idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-10-19 07:18:39 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
2023-10-19 07:19:11 +0200euleritian(~euleritia@dynamic-046-114-203-151.46.114.pool.telefonica.de)
2023-10-19 07:20:34 +0200euleritian(~euleritia@dynamic-046-114-203-151.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2023-10-19 07:20:51 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-10-19 07:21:16 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2023-10-19 07:25:22 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
2023-10-19 07:25:47 +0200euleritian(~euleritia@dynamic-046-114-203-151.46.114.pool.telefonica.de)
2023-10-19 07:29:58 +0200Maxdamantus(~Maxdamant@user/maxdamantus)
2023-10-19 07:48:31 +0200 <haskellbridge> <A​quas> albet70: You may want Control.Concurrent.Chan.Chan
2023-10-19 07:58:12 +0200trev(~trev@user/trev)
2023-10-19 07:58:18 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 256 seconds)
2023-10-19 08:00:29 +0200trev(~trev@user/trev) (Client Quit)
2023-10-19 08:01:04 +0200trev(~trev@user/trev)
2023-10-19 08:02:43 +0200trev(~trev@user/trev) (Client Quit)
2023-10-19 08:03:01 +0200trev(~trev@user/trev)
2023-10-19 08:05:43 +0200ubert(~Thunderbi@77.119.220.59.wireless.dyn.drei.com) (Ping timeout: 264 seconds)
2023-10-19 08:09:05 +0200Sanguine_(~Sanguine@176.254.244.83) (Ping timeout: 255 seconds)
2023-10-19 08:12:19 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 264 seconds)
2023-10-19 08:16:40 +0200trev(~trev@user/trev) (Quit: trev)
2023-10-19 08:17:00 +0200kalj(~kalj@h-158-174-207-174.NA.cust.bahnhof.se)
2023-10-19 08:18:08 +0200euleritian(~euleritia@dynamic-046-114-203-151.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2023-10-19 08:18:39 +0200euleritian(~euleritia@dynamic-046-114-203-151.46.114.pool.telefonica.de)
2023-10-19 08:21:42 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 258 seconds)
2023-10-19 08:23:11 +0200euleritian(~euleritia@dynamic-046-114-203-151.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2023-10-19 08:24:04 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-10-19 08:24:42 +0200derpyxdhs1(~Thunderbi@user/derpyxdhs)
2023-10-19 08:27:00 +0200derpyxdhs(~Thunderbi@user/derpyxdhs) (Ping timeout: 240 seconds)
2023-10-19 08:27:00 +0200derpyxdhs1derpyxdhs
2023-10-19 08:29:00 +0200Square2(~Square4@user/square)
2023-10-19 08:30:55 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2023-10-19 08:31:18 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-10-19 08:32:18 +0200hugo(znc@verdigris.lysator.liu.se) (Ping timeout: 272 seconds)
2023-10-19 08:33:29 +0200Square(~Square@user/square) (Ping timeout: 255 seconds)
2023-10-19 08:33:33 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2023-10-19 08:33:40 +0200euleritian(~euleritia@dynamic-046-114-203-151.46.114.pool.telefonica.de)
2023-10-19 08:34:08 +0200euleritian(~euleritia@dynamic-046-114-203-151.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2023-10-19 08:34:28 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-10-19 08:36:09 +0200derpyxdhs(~Thunderbi@user/derpyxdhs) ()
2023-10-19 08:36:33 +0200hugo(znc@verdigris.lysator.liu.se)
2023-10-19 08:36:44 +0200derpyxdhs(~Thunderbi@user/derpyxdhs)
2023-10-19 08:43:27 +0200acidjnk_new(~acidjnk@p200300d6e72b9391d1b8c4ed720c4872.dip0.t-ipconnect.de)
2023-10-19 08:43:33 +0200Ascension(~Ascension@176.254.244.83)
2023-10-19 08:43:55 +0200fendor(~fendor@2a02:8388:1640:be00:aab:1226:f274:5021)
2023-10-19 08:46:52 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 272 seconds)
2023-10-19 08:47:50 +0200euleritian(~euleritia@dynamic-046-114-203-151.46.114.pool.telefonica.de)
2023-10-19 08:54:40 +0200sm(~sm@plaintextaccounting/sm)
2023-10-19 09:04:21 +0200euleritian(~euleritia@dynamic-046-114-203-151.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2023-10-19 09:05:28 +0200rosco(~rosco@yp-150-69.tm.net.my)
2023-10-19 09:08:25 +0200rosco(~rosco@yp-150-69.tm.net.my) (Client Quit)
2023-10-19 09:11:34 +0200hugo(znc@verdigris.lysator.liu.se) (Ping timeout: 272 seconds)
2023-10-19 09:11:55 +0200dcoutts(~duncan@net77-43-75-226.mclink.it)
2023-10-19 09:12:12 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-10-19 09:18:05 +0200coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-10-19 09:18:32 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2023-10-19 09:19:44 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-10-19 09:21:11 +0200gmg(~user@user/gehmehgeh)
2023-10-19 09:21:29 +0200rosco(~rosco@yp-150-69.tm.net.my)
2023-10-19 09:33:43 +0200kalj(~kalj@h-158-174-207-174.NA.cust.bahnhof.se) (Quit: Client closed)
2023-10-19 09:33:59 +0200mc47(~mc47@xmonad/TheMC47)
2023-10-19 09:36:37 +0200Jackneill(~Jackneill@20014C4E1E0E6F003CEC9358C0A0FF0B.dsl.pool.telekom.hu)
2023-10-19 09:37:31 +0200vpan(~vpan@212.117.1.172)
2023-10-19 09:41:39 +0200oo_miguel(~Thunderbi@78-11-179-96.static.ip.netia.com.pl)
2023-10-19 09:46:16 +0200ubert(~Thunderbi@77.119.220.44.wireless.dyn.drei.com)
2023-10-19 09:47:49 +0200 <albet70> v = Right 3; how to use v to get value from 'fromList [(3, 2)]'?
2023-10-19 09:50:24 +0200 <albet70> fmap (fromList [(3,2)] !) Right 3
2023-10-19 09:52:05 +0200chele(~chele@user/chele)
2023-10-19 09:57:08 +0200 <int-e> plausible except that you'll need parentheses around (Right 3)
2023-10-19 09:57:16 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2023-10-19 09:57:42 +0200 <int-e> :t Right
2023-10-19 09:57:43 +0200 <lambdabot> b -> Either a b
2023-10-19 10:05:46 +0200idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.5)
2023-10-19 10:12:49 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d) (Remote host closed the connection)
2023-10-19 10:13:06 +0200hugo(znc@verdigris.lysator.liu.se)
2023-10-19 10:15:58 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d)
2023-10-19 10:20:20 +0200 <albet70> how to concat IO [2] and Right [3]?
2023-10-19 10:20:44 +0200 <albet70> to get [2,3]
2023-10-19 10:21:04 +0200 <dminuoso> That (!) and fromList is a bit silly.
2023-10-19 10:21:20 +0200 <kuribas> albet70: you mean IO [2, 3] ?
2023-10-19 10:22:14 +0200 <albet70> kuribas , yes, but Right may be Left so EitherT?
2023-10-19 10:23:11 +0200 <kuribas> liftA2 (++) (pure 2) (pure $ fromRight [] $ Right [3])
2023-10-19 10:23:35 +0200notzmv(~zmv@user/notzmv)
2023-10-19 10:23:36 +0200 <kuribas> Depends on how you want to handle Left.
2023-10-19 10:24:04 +0200 <Unicorn_Princess> what's the point of the other-extensions field in cabal? https://cabal.readthedocs.io/en/stable/cabal-package.html#pkg-field-other-extensions - i can use the {-# LANGUAGE .. #-} pragmas without them, can't I?
2023-10-19 10:24:17 +0200 <kuribas> liftA2 (++) (pure 2) (either error pure $ Right [3])
2023-10-19 10:24:41 +0200 <kuribas> well "pure [2]"
2023-10-19 10:26:23 +0200 <dminuoso> albet70: I recommend starting with just case-of in a sensible way.
2023-10-19 10:26:57 +0200 <dminuoso> I tend to do something like `r <- case r of Left a -> fail ("failed to get thing: " <> a); Right a -> pure a`
2023-10-19 10:27:15 +0200 <dminuoso> There's loads of various twists and ideas you can build ontop of this.
2023-10-19 10:27:37 +0200 <albet70> decode msg :: Right Map Int SockAddr; takeMVar searchMap :: IO Map Int SockAddr; I want concat decode msg into that takeMVar and put it jnto putMVar
2023-10-19 10:28:02 +0200 <albet70> and only if decode msg is Right then concat
2023-10-19 10:28:02 +0200 <dminuoso> Like if you do this regularly, you might want some `note :: Either a b -> String -> IO b`
2023-10-19 10:28:28 +0200 <dminuoso> albet70: Yes, and what if not?
2023-10-19 10:28:37 +0200 <kuribas> dminuoso: I only use "either" if the cases are simple, as in not a lambda or a complicated composition.
2023-10-19 10:28:53 +0200 <kuribas> But yeah, a case is recommended for beginners.
2023-10-19 10:28:53 +0200 <dminuoso> kuribas: Sure. I consider `either` to be a twist on the idea.
2023-10-19 10:28:59 +0200 <kuribas> right
2023-10-19 10:29:03 +0200 <dminuoso> I dont like `either` personally *shrugs*
2023-10-19 10:29:30 +0200 <albet70> dminuoso , do not run takeMVar and putMVar action
2023-10-19 10:30:15 +0200 <kuribas> fair enough, you could say that many combinators make the code less readable, at only the gain of a few extra characters
2023-10-19 10:30:45 +0200 <dminuoso> albet70: Yes, and instead do what?
2023-10-19 10:31:05 +0200 <albet70> dminuoso , nothing else
2023-10-19 10:31:13 +0200 <dminuoso> Use case-of then.
2023-10-19 10:31:18 +0200 <dminuoso> Its simple enough and lets you express this idea.
2023-10-19 10:32:36 +0200 <albet70> right, I already use case-of, I just wonder if no pattern matching is ok too
2023-10-19 10:34:51 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
2023-10-19 10:35:27 +0200tzh(~tzh@c-71-193-181-0.hsd1.or.comcast.net) (Quit: zzz)
2023-10-19 10:42:41 +0200Square3(~Square4@user/square)
2023-10-19 10:44:01 +0200 <albet70> why we can't put IO into other monads?
2023-10-19 10:45:01 +0200Square2(~Square4@user/square) (Ping timeout: 255 seconds)
2023-10-19 10:45:53 +0200mokee(~mokee@37.228.215.243)
2023-10-19 10:46:29 +0200danza(~francesco@ge-19-98-133.service.infuturo.it)
2023-10-19 10:47:13 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2023-10-19 10:47:39 +0200 <albet70> > fmap (+1) $ print 3
2023-10-19 10:47:41 +0200 <lambdabot> error:
2023-10-19 10:47:41 +0200 <lambdabot> • No instance for (Num ()) arising from a use of ‘+’
2023-10-19 10:47:41 +0200 <lambdabot> • In the first argument of ‘fmap’, namely ‘(+ 1)’
2023-10-19 10:50:57 +0200 <Unicorn_Princess> the result of "print 3" is of type "IO ()", so you're trying to map onto type ()
2023-10-19 10:51:00 +0200derpyxdhs(~Thunderbi@user/derpyxdhs) ()
2023-10-19 10:51:07 +0200derpyxdhs(~Thunderbi@user/derpyxdhs)
2023-10-19 10:51:21 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2023-10-19 10:51:46 +0200derpyxdhs(~Thunderbi@user/derpyxdhs) (Quit: derpyxdhs)
2023-10-19 10:52:40 +0200raym(~ray@user/raym) (Ping timeout: 255 seconds)
2023-10-19 10:58:36 +0200raym(~ray@user/raym)
2023-10-19 10:58:59 +0200cfricke(~cfricke@user/cfricke)
2023-10-19 10:59:11 +0200rosco(~rosco@yp-150-69.tm.net.my) (Ping timeout: 255 seconds)
2023-10-19 10:59:26 +0200danse-nr3(~francesco@ge-19-98-133.service.infuturo.it)
2023-10-19 11:00:55 +0200rosco(~rosco@193.138.218.161)
2023-10-19 11:01:13 +0200rosco(~rosco@193.138.218.161) (Client Quit)
2023-10-19 11:01:54 +0200 <albet70> what's the effect of ExceptT e IO a?
2023-10-19 11:01:55 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2023-10-19 11:04:30 +0200raym(~ray@user/raym) (Ping timeout: 246 seconds)
2023-10-19 11:10:36 +0200raym(~ray@user/raym)
2023-10-19 11:16:14 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d) (Remote host closed the connection)
2023-10-19 11:18:52 +0200bilegeek(~bilegeek@2600:1008:b046:1e20:2def:8984:9be9:6198) (Quit: Leaving)
2023-10-19 11:19:06 +0200danza(~francesco@ge-19-98-133.service.infuturo.it) (Ping timeout: 260 seconds)
2023-10-19 11:24:18 +0200ubert1(~Thunderbi@77.119.205.197.wireless.dyn.drei.com)
2023-10-19 11:24:33 +0200ubert(~Thunderbi@77.119.220.44.wireless.dyn.drei.com) (Ping timeout: 258 seconds)
2023-10-19 11:24:34 +0200ubert1ubert
2023-10-19 11:28:23 +0200ft(~ft@p3e9bc680.dip0.t-ipconnect.de) (Quit: leaving)
2023-10-19 11:40:16 +0200idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-10-19 11:42:34 +0200econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2023-10-19 11:46:43 +0200mikoto-chan(~mikoto-ch@ip-212-239-236-59.dsl.scarlet.be)
2023-10-19 11:47:53 +0200chele(~chele@user/chele) (Ping timeout: 246 seconds)
2023-10-19 11:49:24 +0200rosco(~rosco@yp-150-69.tm.net.my)
2023-10-19 11:53:20 +0200lg188(~lg188@82.18.98.230)
2023-10-19 11:53:33 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d)
2023-10-19 11:54:09 +0200 <albet70> I got it, traverse (IO a) (Right a)
2023-10-19 11:56:17 +0200 <albet70> traverse (\a -> (fmap (<> a) (takeMVar searchMap)) >>= putMVar searchMap) $ Right fromList [(2,3)]
2023-10-19 11:56:41 +0200 <dminuoso> albet70: For the same reason you cant put apples into boxes of oranges.
2023-10-19 11:56:56 +0200 <dminuoso> Different things.
2023-10-19 11:57:03 +0200 <dminuoso> The reason is quite simple
2023-10-19 11:57:06 +0200 <dminuoso> :t (>>=)
2023-10-19 11:57:07 +0200 <lambdabot> Monad m => m a -> (a -> m b) -> m b
2023-10-19 11:57:30 +0200 <albet70> dminuoso , why this code worked?
2023-10-19 11:57:38 +0200 <dminuoso> This demands that both monads be the *same* type (because both occurences of `m` in argument position are the same m)
2023-10-19 11:58:03 +0200 <dminuoso> albet70: ExceptT is a monad transformer, which imbues the effect of one monad to another monad in some sensible fashion.
2023-10-19 11:59:04 +0200 <albet70> in (\a ...) the m is IO
2023-10-19 11:59:08 +0200 <albet70> not Right
2023-10-19 12:00:05 +0200 <dminuoso> albet70: oh thats something else
2023-10-19 12:00:10 +0200 <dminuoso> :t traverse
2023-10-19 12:00:11 +0200 <lambdabot> (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
2023-10-19 12:00:39 +0200chele(~chele@user/chele)
2023-10-19 12:01:24 +0200califax(~califax@user/califx) (Ping timeout: 256 seconds)
2023-10-19 12:01:32 +0200 <dminuoso> albet70: `traverse` generalizes loops, and `Either a` is sort of like a `list with either no element and an error, or an element`
2023-10-19 12:01:37 +0200 <dminuoso> If that helps
2023-10-19 12:02:15 +0200diamond(~user@89.223.35.3)
2023-10-19 12:02:43 +0200 <albet70> traverse or fmap will not run on Left branch, on the Right branch, like only if then no else
2023-10-19 12:03:27 +0200 <albet70> no case-of need for Right _ or Left _
2023-10-19 12:04:13 +0200mikoto-chan(~mikoto-ch@ip-212-239-236-59.dsl.scarlet.be) (Ping timeout: 252 seconds)
2023-10-19 12:04:15 +0200 <dminuoso> albet70: It's ultimately case-of inside.
2023-10-19 12:04:29 +0200 <dminuoso> Like I said: There's various twists and ideas that all eventually build upon case-of.
2023-10-19 12:04:45 +0200 <dminuoso> (Though I guess this could be said about every binding in haskell)
2023-10-19 12:06:58 +0200chomwitt(~chomwitt@2a02:587:7a17:8900:1ac0:4dff:fedb:a3f1) (Ping timeout: 252 seconds)
2023-10-19 12:07:29 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 258 seconds)
2023-10-19 12:23:34 +0200ThePenguin(~ThePengui@cust-95-80-24-166.csbnet.se) (Ping timeout: 255 seconds)
2023-10-19 12:26:33 +0200ThePenguin(~ThePengui@cust-95-80-24-166.csbnet.se)
2023-10-19 12:45:17 +0200 <rosco> new to haskell, i've heard that managing packages like stack or ghc with pacman is a mess, should i install these using ghcup?
2023-10-19 12:46:10 +0200 <sshine> rosco, using stack or cabal instead of pacman, yes
2023-10-19 12:46:20 +0200 <sshine> rosco, both stack and cabal can be installed with ghcup
2023-10-19 12:46:58 +0200 <sshine> rosco, if you install stack or cabal with pacman, you can use stack or cabal to install itself locally.
2023-10-19 12:47:32 +0200 <sshine> rosco, then you'll have two binaries, one being an old one in /usr and another being a new one in ~
2023-10-19 12:48:07 +0200 <rosco> did the standard install with ghcup, seems to work fine! thanks
2023-10-19 12:49:36 +0200 <rosco> now i don't have to install 150+ haskell libs just for stack, that's a relief
2023-10-19 12:51:29 +0200 <sshine> since both stack and cabal-install use Cabal, the library, I would have thought that they share library source code, but maybe I'm just thinking of a nice possible future.
2023-10-19 12:51:58 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2023-10-19 12:52:41 +0200 <sshine> I ran out of disk space recently with Rust because the build directory has copies of all dependencies and their build artifacts, rather than symlink them. I'm not sure why this was never a problem with Haskell.
2023-10-19 12:53:20 +0200 <sshine> too many pet projects with too many architectures and compiler versions
2023-10-19 12:53:41 +0200 <sshine> (also, my disk partition is too small to begin with.)
2023-10-19 12:59:13 +0200 <haskellbridge> <s​m> stack and cabal share installed haskell libs across your haskell projects, but not across ghc versions or each other
2023-10-19 13:00:03 +0200 <haskellbridge> <s​m> I've noticed cargo seems to rebuild absolutely everything in each project, and even if you build again in the same project
2023-10-19 13:06:21 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 248 seconds)
2023-10-19 13:08:02 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2023-10-19 13:08:09 +0200 <hpc> for extra fun, run "cargo vendor"
2023-10-19 13:08:23 +0200euleritian(~euleritia@dynamic-046-114-201-015.46.114.pool.telefonica.de)
2023-10-19 13:08:54 +0200euleritian(~euleritia@dynamic-046-114-201-015.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2023-10-19 13:09:13 +0200xff0x(~xff0x@2405:6580:b080:900:235e:1e4f:5a95:dd4d)
2023-10-19 13:09:56 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-10-19 13:12:17 +0200Vajb(~Vajb@207.61.167.122)
2023-10-19 13:12:59 +0200thegeekinside(~thegeekin@189.180.124.118) (Ping timeout: 245 seconds)
2023-10-19 13:17:09 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-10-19 13:19:04 +0200sm(~sm@plaintextaccounting/sm) (Quit: sm)
2023-10-19 13:19:32 +0200arahael(~arahael@119-18-2-212.771202.syd.nbn.aussiebb.net)
2023-10-19 13:27:11 +0200Tlsx(~rscastilh@187.40.125.21)
2023-10-19 13:35:04 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-10-19 13:38:43 +0200xff0x(~xff0x@2405:6580:b080:900:235e:1e4f:5a95:dd4d) (Ping timeout: 258 seconds)
2023-10-19 13:39:07 +0200xff0x(~xff0x@ai101218.d.east.v6connect.net)
2023-10-19 13:45:47 +0200Tlsx(~rscastilh@187.40.125.21) ()
2023-10-19 13:53:34 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 255 seconds)
2023-10-19 13:55:58 +0200danse-nr3(~francesco@ge-19-98-133.service.infuturo.it) (Read error: Connection reset by peer)
2023-10-19 13:56:07 +0200danse-nr3(~francesco@151.43.111.89)
2023-10-19 14:01:11 +0200falafel(~falafel@143.244.47.73)
2023-10-19 14:01:31 +0200sabino(~sabino@user/sabino)
2023-10-19 14:05:14 +0200Vajb(~Vajb@207.61.167.122) (Read error: Connection reset by peer)
2023-10-19 14:05:25 +0200Vajb(~Vajb@207.61.167.122)
2023-10-19 14:09:27 +0200Vajb(~Vajb@207.61.167.122) (Ping timeout: 240 seconds)
2023-10-19 14:12:22 +0200danse-nr3(~francesco@151.43.111.89) (Ping timeout: 252 seconds)
2023-10-19 14:18:51 +0200Inst(~Inst@120.244.192.250)
2023-10-19 14:19:55 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2023-10-19 14:20:38 +0200vglfr(~vglfr@88.155.170.213) (Read error: Connection reset by peer)
2023-10-19 14:20:58 +0200vglfr(vglfr@gateway/vpn/protonvpn/vglfr)
2023-10-19 14:29:16 +0200stites(~stites@130.44.147.204)
2023-10-19 14:29:36 +0200idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.5)
2023-10-19 14:29:55 +0200Vajb(~Vajb@207.61.167.122)
2023-10-19 14:30:05 +0200vglfr(vglfr@gateway/vpn/protonvpn/vglfr) (Ping timeout: 258 seconds)
2023-10-19 14:32:08 +0200vglfr(~vglfr@88.155.170.213)
2023-10-19 14:33:11 +0200falafel_(~falafel@62.175.113.194.dyn.user.ono.com)
2023-10-19 14:34:36 +0200simendsjo(~user@84.211.91.241)
2023-10-19 14:35:29 +0200falafel(~falafel@143.244.47.73) (Ping timeout: 245 seconds)
2023-10-19 14:36:46 +0200Vajb(~Vajb@207.61.167.122) (Ping timeout: 255 seconds)
2023-10-19 14:37:45 +0200mikoto-chan(~mikoto-ch@ip-212-239-236-59.dsl.scarlet.be)
2023-10-19 14:41:50 +0200CiaoSen(~Jura@2a05:5800:2cf:a000:664b:f0ff:fe37:9ef)
2023-10-19 14:42:06 +0200 <Unicorn_Princess> what does the last line do in "import Data.Text as T; default (T.Text);"? doesn't really fit with how 'default' is described on https://wiki.haskell.org/Keywords
2023-10-19 14:42:36 +0200 <Unicorn_Princess> i mean it -looks- like it exports T.Text to just Text, but i'd like to know for surer
2023-10-19 14:43:10 +0200 <Unicorn_Princess> oh wait i'm missing a 'qualified'
2023-10-19 14:43:12 +0200vglfr(~vglfr@88.155.170.213) (Ping timeout: 255 seconds)
2023-10-19 14:43:37 +0200 <mauke> that is indeed a default declaration as described on the wiki
2023-10-19 14:43:54 +0200 <int-e> Unicorn_Princess: that import form exists; it combines both `import Data.Text` and `import qualified Data.Text as T`
2023-10-19 14:44:40 +0200 <mauke> https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/overloaded_strings.html
2023-10-19 14:45:09 +0200 <Unicorn_Princess> ah i see
2023-10-19 14:45:18 +0200 <Unicorn_Princess> or will see, once i digest this, maybe
2023-10-19 14:46:42 +0200 <mauke> :t 42
2023-10-19 14:46:43 +0200__monty__(~toonn@user/toonn)
2023-10-19 14:46:43 +0200 <lambdabot> Num p => p
2023-10-19 14:46:43 +0200 <int-e> So when it's looking for an `IsString` instance it'll prefer T.Text = Data.Text.Text when the type would otherwise be ambiguous.
2023-10-19 14:46:53 +0200 <mauke> this is a polymorphic type
2023-10-19 14:46:56 +0200 <mauke> > 42
2023-10-19 14:46:58 +0200 <lambdabot> 42
2023-10-19 14:47:31 +0200 <mauke> normally this would be a type error ("ambiguous type"), but ghc applies defaulting rules to get Integer
2023-10-19 14:48:10 +0200 <mauke> OverloadedStrings extends this polymorphism to string literals, which in standard haskell always have type String
2023-10-19 14:48:22 +0200 <Unicorn_Princess> right right, so default(T) prioritizes T when resolving ambiguities
2023-10-19 14:48:44 +0200 <Unicorn_Princess> and this only happens for numbers and strings
2023-10-19 14:48:53 +0200 <mauke> yes, it's a bit of a hack
2023-10-19 14:49:03 +0200 <Unicorn_Princess> i can live with it
2023-10-19 14:49:05 +0200 <mauke> also, you can list multiple types in order of preference
2023-10-19 14:49:06 +0200diamond(~user@89.223.35.3) (Ping timeout: 260 seconds)
2023-10-19 14:49:17 +0200 <mauke> the first matching type is chosen
2023-10-19 14:49:32 +0200 <mauke> > 42 + 0.0
2023-10-19 14:49:35 +0200 <lambdabot> 42.0
2023-10-19 14:49:47 +0200 <mauke> here 42 gets defaulted to Double, not Integer
2023-10-19 14:51:30 +0200 <Unicorn_Princess> thanks, that clears it all up
2023-10-19 14:52:14 +0200diamond(~user@89.223.35.3)
2023-10-19 15:03:33 +0200 <Unicorn_Princess> > Haddock are a member of the cod family, but they are smaller than Atlantic cod.
2023-10-19 15:03:34 +0200 <lambdabot> <hint>:1:22: error: parse error on input ‘of’
2023-10-19 15:03:40 +0200 <Unicorn_Princess> well that's good to know lol
2023-10-19 15:05:35 +0200waleee(~waleee@2001:9b0:21c:e600:f2f3:f744:435d:137c)
2023-10-19 15:14:21 +0200_xor(~xor@72.49.199.93) (Quit: Ping timeout (120 seconds))
2023-10-19 15:14:59 +0200_xor(~xor@72.49.199.93)
2023-10-19 15:18:39 +0200vglfr(~vglfr@88.155.170.213)
2023-10-19 15:24:33 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-10-19 15:28:16 +0200 <Unicorn_Princess> hm, so how should i be working with Data.Text? e.g. is there a Text version of Show, or a version of ++ that's shorter than `append`, etc?
2023-10-19 15:29:49 +0200 <__monty__> Unicorn_Princess: Yes, `mappend`.
2023-10-19 15:30:11 +0200 <__monty__> (That is spelled `<>` as an operator, sorry for being facetious : > )
2023-10-19 15:30:21 +0200Guest45(~Guest45@ext-1-173.eduroam.chalmers.se)
2023-10-19 15:30:35 +0200 <Guest45> Hi! Is there a way to make sure that a core plugin is executed after all the optimizations have taken place?
2023-10-19 15:31:08 +0200 <Guest45> I want to inspect core just before it is handed off to the code generator
2023-10-19 15:31:18 +0200 <Unicorn_Princess> __monty__, oh, thanks! totally forgot about monoids!
2023-10-19 15:36:47 +0200falafel_(~falafel@62.175.113.194.dyn.user.ono.com) (Ping timeout: 258 seconds)
2023-10-19 15:37:00 +0200sm(~sm@plaintextaccounting/sm)
2023-10-19 15:41:44 +0200myxos(~myxos@cpe-65-28-251-121.cinci.res.rr.com) (Remote host closed the connection)
2023-10-19 15:42:46 +0200arahael(~arahael@119-18-2-212.771202.syd.nbn.aussiebb.net) (Ping timeout: 260 seconds)
2023-10-19 15:47:45 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2023-10-19 15:48:08 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2023-10-19 15:48:55 +0200waleee(~waleee@2001:9b0:21c:e600:f2f3:f744:435d:137c) (Ping timeout: 264 seconds)
2023-10-19 15:57:23 +0200danse-nr3(~francesco@151.43.111.89)
2023-10-19 15:57:33 +0200Guest|16(~Guest|16@i5387A4AF.versanet.de)
2023-10-19 15:57:56 +0200Guest|16(~Guest|16@i5387A4AF.versanet.de) (Client Quit)
2023-10-19 16:00:28 +0200mikoto-chan(~mikoto-ch@ip-212-239-236-59.dsl.scarlet.be) (Ping timeout: 255 seconds)
2023-10-19 16:02:03 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2023-10-19 16:05:54 +0200Cale(~cale@cpe80d04ade0a03-cm80d04ade0a01.cpe.net.cable.rogers.com) (Ping timeout: 245 seconds)
2023-10-19 16:09:10 +0200rosco(~rosco@yp-150-69.tm.net.my) (Read error: Connection reset by peer)
2023-10-19 16:16:24 +0200simendsjo(~user@84.211.91.241) (Remote host closed the connection)
2023-10-19 16:17:36 +0200simendsjo(~user@84.211.91.241)
2023-10-19 16:24:01 +0200Alleria(~JohnGalt@user/alleria) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2023-10-19 16:28:58 +0200thegeekinside(~thegeekin@189.180.124.118)
2023-10-19 16:39:14 +0200mikoto-chan(~mikoto-ch@ip-212-239-236-59.dsl.scarlet.be)
2023-10-19 16:41:41 +0200sm(~sm@plaintextaccounting/sm) (Quit: sm)
2023-10-19 16:43:43 +0200Sgeo(~Sgeo@user/sgeo)
2023-10-19 16:46:22 +0200Inst(~Inst@120.244.192.250) (Read error: Connection reset by peer)
2023-10-19 16:50:03 +0200puke(~puke@user/puke) (Remote host closed the connection)
2023-10-19 16:50:22 +0200puke(~puke@user/puke)
2023-10-19 16:51:17 +0200idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-10-19 16:51:48 +0200puke(~puke@user/puke) (Excess Flood)
2023-10-19 16:52:15 +0200puke(~puke@user/puke)
2023-10-19 16:57:19 +0200tzh(~tzh@c-71-193-181-0.hsd1.or.comcast.net)
2023-10-19 16:58:06 +0200gmg(~user@user/gehmehgeh)
2023-10-19 16:58:18 +0200stites(~stites@130.44.147.204) (Read error: Connection reset by peer)
2023-10-19 16:58:33 +0200stites(~stites@130.44.147.204)
2023-10-19 17:01:00 +0200wombat8756(~user@cpe-74-65-214-231.nyc.res.rr.com)
2023-10-19 17:01:10 +0200Alleria(~JohnGalt@user/alleria)
2023-10-19 17:03:02 +0200stites(~stites@130.44.147.204) (Ping timeout: 258 seconds)
2023-10-19 17:03:34 +0200stites(~stites@2607:fb91:de5:5d85:fe03:1608:5962:585c)
2023-10-19 17:08:16 +0200billchenchina(~billchenc@2a0c:b641:7a2:230::10)
2023-10-19 17:09:37 +0200Alleria(~JohnGalt@user/alleria) (Quit: Textual IRC Client: www.textualapp.com)
2023-10-19 17:15:18 +0200Guest45(~Guest45@ext-1-173.eduroam.chalmers.se) (Ping timeout: 258 seconds)
2023-10-19 17:19:28 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d) (Remote host closed the connection)
2023-10-19 17:19:33 +0200Inst(~Inst@120.244.192.250)
2023-10-19 17:19:43 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d)
2023-10-19 17:23:11 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 246 seconds)
2023-10-19 17:23:32 +0200EvanR(~EvanR@user/evanr) (Remote host closed the connection)
2023-10-19 17:23:38 +0200chele(~chele@user/chele) (Remote host closed the connection)
2023-10-19 17:23:50 +0200EvanR(~EvanR@user/evanr)
2023-10-19 17:25:54 +0200elevenkb(elevenkb@thunix.net) (ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.1))
2023-10-19 17:29:28 +0200rosco(~rosco@yp-150-69.tm.net.my)
2023-10-19 17:30:06 +0200billchenchina(~billchenc@2a0c:b641:7a2:230::10) (Quit: Leaving)
2023-10-19 17:32:45 +0200Kuttenbrunzer(~Kuttenbru@2a02:8108:8b80:1d48::eb0a)
2023-10-19 17:32:59 +0200CiaoSen(~Jura@2a05:5800:2cf:a000:664b:f0ff:fe37:9ef) (Ping timeout: 246 seconds)
2023-10-19 17:33:12 +0200econo_(uid147250@id-147250.tinside.irccloud.com)
2023-10-19 17:35:57 +0200alphacentauri(alphacenta@gateway/vpn/protonvpn/alphacentauri) (Quit: WeeChat 4.1.0)
2023-10-19 17:43:36 +0200jinsun(~jinsun@user/jinsun) (Quit: No Ping reply in 180 seconds.)
2023-10-19 17:45:02 +0200jinsun(~jinsun@user/jinsun)
2023-10-19 17:46:38 +0200danse-nr3(~francesco@151.43.111.89) (Remote host closed the connection)
2023-10-19 17:47:00 +0200danse-nr3(~francesco@151.43.111.89)
2023-10-19 17:50:57 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 258 seconds)
2023-10-19 17:51:04 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
2023-10-19 17:51:15 +0200diamond(~user@89.223.35.3) (ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.1))
2023-10-19 17:55:58 +0200cpressey(~cpressey@host-92-10-146-234.as13285.net)
2023-10-19 17:56:35 +0200danse-nr3_(~francesco@ge-19-101-218.service.infuturo.it)
2023-10-19 17:57:40 +0200danse-nr3(~francesco@151.43.111.89) (Read error: Connection reset by peer)
2023-10-19 18:03:40 +0200stites(~stites@2607:fb91:de5:5d85:fe03:1608:5962:585c) (Read error: Connection reset by peer)
2023-10-19 18:04:02 +0200stites(~stites@2607:fb91:de5:5d85:fe03:1608:5962:585c)
2023-10-19 18:05:58 +0200stites(~stites@2607:fb91:de5:5d85:fe03:1608:5962:585c) (Read error: Connection reset by peer)
2023-10-19 18:06:17 +0200stites(~stites@155.33.134.28)
2023-10-19 18:12:56 +0200Kuttenbrunzer(~Kuttenbru@2a02:8108:8b80:1d48::eb0a) (Quit: Where is it)
2023-10-19 18:16:33 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
2023-10-19 18:19:39 +0200wombat8756(~user@cpe-74-65-214-231.nyc.res.rr.com) (Ping timeout: 245 seconds)
2023-10-19 18:22:59 +0200danse-nr3_(~francesco@ge-19-101-218.service.infuturo.it) (Ping timeout: 255 seconds)
2023-10-19 18:30:47 +0200danse-nr3_(~francesco@ge-19-101-218.service.infuturo.it)
2023-10-19 18:34:06 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 256 seconds)
2023-10-19 18:34:12 +0200paddymahoney(~paddymaho@cpe883d24bcf597-cmbc4dfb741f80.cpe.net.cable.rogers.com) (Ping timeout: 240 seconds)
2023-10-19 18:35:28 +0200todi(~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Quit: ZNC - https://znc.in)
2023-10-19 18:36:01 +0200myxos(~myxos@cpe-65-28-251-121.cinci.res.rr.com)
2023-10-19 18:38:57 +0200todi(~todi@p4fd1a3e6.dip0.t-ipconnect.de)
2023-10-19 18:44:25 +0200vpan(~vpan@212.117.1.172) (Quit: Leaving.)
2023-10-19 18:45:02 +0200Cale(~cale@cpe80d04ade0a03-cm80d04ade0a01.cpe.net.cable.rogers.com)
2023-10-19 18:48:39 +0200mikoto-chan(~mikoto-ch@ip-212-239-236-59.dsl.scarlet.be) (Ping timeout: 240 seconds)
2023-10-19 18:50:38 +0200billchenchina(~billchenc@39.144.222.56)
2023-10-19 18:52:49 +0200billchenchina-(~billchenc@2a0c:b641:7a2:230::10)
2023-10-19 18:53:52 +0200sm(~sm@plaintextaccounting/sm)
2023-10-19 18:55:31 +0200billchenchina(~billchenc@39.144.222.56) (Ping timeout: 255 seconds)
2023-10-19 18:57:08 +0200Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
2023-10-19 18:58:42 +0200idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.5)
2023-10-19 19:03:31 +0200sabino(~sabino@user/sabino) (Quit: Lambda _ -> x)
2023-10-19 19:04:59 +0200billchenchina-(~billchenc@2a0c:b641:7a2:230::10) (Remote host closed the connection)
2023-10-19 19:05:18 +0200billchenchina-(~billchenc@2a0c:b641:7a2:230::10)
2023-10-19 19:08:08 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d) (Remote host closed the connection)
2023-10-19 19:08:19 +0200sabino(~sabino@user/sabino)
2023-10-19 19:12:17 +0200krei-se(~krei-se@p50874770.dip0.t-ipconnect.de) (Quit: ZNC 1.8.2 - https://znc.in)
2023-10-19 19:12:36 +0200krei-se(~krei-se@p50874770.dip0.t-ipconnect.de)
2023-10-19 19:13:52 +0200hugo(znc@verdigris.lysator.liu.se) (Ping timeout: 272 seconds)
2023-10-19 19:31:21 +0200hugo(znc@verdigris.lysator.liu.se)
2023-10-19 19:32:35 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d)
2023-10-19 19:34:35 +0200td_(~td@i53870939.versanet.de) (Ping timeout: 240 seconds)
2023-10-19 19:34:36 +0200danse-nr3_(~francesco@ge-19-101-218.service.infuturo.it) (Ping timeout: 240 seconds)
2023-10-19 19:34:45 +0200Simikando(~Simikando@adsl-dyn158.91-127-59.t-com.sk)
2023-10-19 19:35:24 +0200td_(~td@i53870930.versanet.de)
2023-10-19 19:41:30 +0200mikoto-chan(~mikoto-ch@ip-212-239-236-59.dsl.scarlet.be)
2023-10-19 19:42:50 +0200hugo(znc@verdigris.lysator.liu.se) (Ping timeout: 246 seconds)
2023-10-19 19:43:05 +0200rosco(~rosco@yp-150-69.tm.net.my) (Quit: Lost terminal)
2023-10-19 19:49:21 +0200migas9(~migas@static.140.65.63.178.clients.your-server.de) (Remote host closed the connection)
2023-10-19 19:49:39 +0200migas9(~migas@static.140.65.63.178.clients.your-server.de)
2023-10-19 20:04:04 +0200danza(~francesco@ge-19-101-218.service.infuturo.it)
2023-10-19 20:07:17 +0200cpressey(~cpressey@host-92-10-146-234.as13285.net) (Quit: Client closed)
2023-10-19 20:08:06 +0200hugo(znc@verdigris.lysator.liu.se)
2023-10-19 20:10:39 +0200billchenchina-(~billchenc@2a0c:b641:7a2:230::10) (Remote host closed the connection)
2023-10-19 20:11:57 +0200statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Read error: Connection reset by peer)
2023-10-19 20:12:09 +0200statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com)
2023-10-19 20:12:24 +0200biberu\(~biberu@user/biberu)
2023-10-19 20:14:42 +0200qqq(~qqq@92.43.167.61) (Quit: leaving)
2023-10-19 20:15:37 +0200biberu(~biberu@user/biberu) (Ping timeout: 255 seconds)
2023-10-19 20:15:38 +0200biberu\biberu
2023-10-19 20:22:24 +0200Simikando(~Simikando@adsl-dyn158.91-127-59.t-com.sk) (Quit: Leaving)
2023-10-19 20:23:38 +0200td_(~td@i53870930.versanet.de) (Quit: waking up from the american dream ...)
2023-10-19 20:26:52 +0200mikoto-chan(~mikoto-ch@ip-212-239-236-59.dsl.scarlet.be) (Ping timeout: 255 seconds)
2023-10-19 20:34:56 +0200Square3(~Square4@user/square) (Ping timeout: 272 seconds)
2023-10-19 20:39:31 +0200aoliver(~aoliver@47.red-83-59-7.dynamicip.rima-tde.net)
2023-10-19 20:39:34 +0200danza(~francesco@ge-19-101-218.service.infuturo.it) (Ping timeout: 252 seconds)
2023-10-19 20:40:41 +0200danza(~francesco@ge-19-101-218.service.infuturo.it)
2023-10-19 20:41:43 +0200aoliver(~aoliver@47.red-83-59-7.dynamicip.rima-tde.net) ()
2023-10-19 20:42:11 +0200sm(~sm@plaintextaccounting/sm) (Quit: sm)
2023-10-19 20:43:07 +0200td_(~td@i53870930.versanet.de)
2023-10-19 20:53:18 +0200todi(~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2023-10-19 21:00:32 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d) (Remote host closed the connection)
2023-10-19 21:01:22 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d)
2023-10-19 21:01:31 +0200alphacentauri(alphacenta@gateway/vpn/protonvpn/alphacentauri)
2023-10-19 21:02:46 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d) (Remote host closed the connection)
2023-10-19 21:08:15 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 240 seconds)
2023-10-19 21:10:34 +0200mokee(~mokee@37.228.215.243) (Quit: off)
2023-10-19 21:19:36 +0200Square(~Square@user/square)
2023-10-19 21:33:31 +0200CrunchyFlakes(~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de)
2023-10-19 21:34:46 +0200moni_(~moni@cpe-174-106-185-141.ec.res.rr.com)
2023-10-19 21:35:18 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d)
2023-10-19 21:40:10 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d) (Ping timeout: 272 seconds)
2023-10-19 21:44:34 +0200todi(~todi@p4fd1a3e6.dip0.t-ipconnect.de)
2023-10-19 21:46:02 +0200lortabac(~lortabac@185.238.219.63)
2023-10-19 21:50:43 +0200hugo(znc@verdigris.lysator.liu.se) (Ping timeout: 264 seconds)
2023-10-19 21:56:09 +0200danza_(~francesco@151.57.117.212)
2023-10-19 21:58:08 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-10-19 21:58:28 +0200ft(~ft@p3e9bc680.dip0.t-ipconnect.de)
2023-10-19 21:58:49 +0200danza(~francesco@ge-19-101-218.service.infuturo.it) (Ping timeout: 255 seconds)
2023-10-19 22:01:37 +0200mikoto-chan(~mikoto-ch@ip-212-239-236-59.dsl.scarlet.be)
2023-10-19 22:03:03 +0200danza_(~francesco@151.57.117.212) (Ping timeout: 240 seconds)
2023-10-19 22:05:36 +0200_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
2023-10-19 22:06:18 +0200hugo(znc@verdigris.lysator.liu.se)
2023-10-19 22:10:03 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2023-10-19 22:10:19 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-10-19 22:12:45 +0200todi(~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2023-10-19 22:13:42 +0200stefan-__(~m-ohzqow@42dots.de) (Remote host closed the connection)
2023-10-19 22:14:07 +0200stefan-__(~m-ohzqow@42dots.de)
2023-10-19 22:17:22 +0200hugo(znc@verdigris.lysator.liu.se) (Ping timeout: 258 seconds)
2023-10-19 22:19:00 +0200stefan-__(~m-ohzqow@42dots.de) (Remote host closed the connection)
2023-10-19 22:19:26 +0200stefan-__(~m-ohzqow@42dots.de)
2023-10-19 22:23:52 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2023-10-19 22:24:19 +0200stefan-__(~m-ohzqow@42dots.de) (Remote host closed the connection)
2023-10-19 22:24:58 +0200stefan-__(~m-ohzqow@42dots.de)
2023-10-19 22:26:16 +0200L29Ah(~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
2023-10-19 22:28:45 +0200lortabac(~lortabac@185.238.219.63) (Quit: WeeChat 2.8)
2023-10-19 22:30:04 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:a042:5d7c:7cf4:626d)
2023-10-19 22:30:27 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net)
2023-10-19 22:35:50 +0200todi(~todi@p4fd1a3e6.dip0.t-ipconnect.de)
2023-10-19 22:41:44 +0200simendsjo(~user@84.211.91.241) (Ping timeout: 255 seconds)
2023-10-19 22:42:23 +0200Jackneill(~Jackneill@20014C4E1E0E6F003CEC9358C0A0FF0B.dsl.pool.telekom.hu) (Ping timeout: 246 seconds)
2023-10-19 22:46:06 +0200Pickchea(~private@user/pickchea)
2023-10-19 22:48:28 +0200waleee(~waleee@2001:9b0:21c:e600:f2f3:f744:435d:137c)
2023-10-19 22:50:44 +0200moni_(~moni@cpe-174-106-185-141.ec.res.rr.com) (Ping timeout: 255 seconds)
2023-10-19 22:50:58 +0200moni(~moni@cpe-174-106-185-141.ec.res.rr.com)
2023-10-19 23:04:03 +0200 <haskellbridge> <C​elestial> I'm pretty sure `mappend` is discouraged right?
2023-10-19 23:04:29 +0200 <geekosaur> huh?
2023-10-19 23:04:37 +0200 <haskellbridge> <C​elestial> because it's just a relic from the time where we didn't have semigroups and so nowadays it should never be anything different from `<>`
2023-10-19 23:04:46 +0200 <haskellbridge> <C​elestial> atleast i read that in the docs somewhere I think
2023-10-19 23:04:48 +0200 <haskellbridge> <I​nst> mappend vs sappend (iirc) vs <>
2023-10-19 23:05:34 +0200 <haskellbridge> <C​elestial> > NOTE: This method is redundant and has the default implementation mappend = (<>) since base-4.11.0.0. Should it be implemented manually, since mappend is a synonym for (<>), it is expected that the two functions are defined the same way. In a future GHC release mappend will be removed from Monoid.
2023-10-19 23:05:57 +0200 <haskellbridge> <C​elestial> It even seems to be marked as near-deprecated
2023-10-19 23:06:26 +0200 <monochrom> Those who have learned from history know that "in a future release" means at least 10 years away. :)
2023-10-19 23:06:35 +0200 <tomsmeding> Celestial: mappend will probably never be removed, but it might be removed _from the Monoid class_
2023-10-19 23:06:47 +0200 <tomsmeding> it might be lifted out of the class to a top-level method that just calls (<>)
2023-10-19 23:06:52 +0200 <haskellbridge> <C​elestial> right, that makes sense
2023-10-19 23:07:02 +0200 <monochrom> Yeah, near-deprecated means 15 years, deprecated means 10 years, obsoleted means 5 years.
2023-10-19 23:07:19 +0200 <tomsmeding> in a slow-moving thing like 'base', in any case
2023-10-19 23:07:25 +0200 <haskellbridge> <C​elestial> the same way `return` will.be eventually removed from `Monad`?
2023-10-19 23:07:30 +0200 <tomsmeding> in the JS world, replace "years" by "months" or less
2023-10-19 23:07:37 +0200 <tomsmeding> "eventually", yes
2023-10-19 23:07:47 +0200 <tomsmeding> even worse than "soon (tm)"
2023-10-19 23:07:48 +0200 <monochrom> As an example, people decided to relocate "return" way before COVID. It still hasn't been moved.
2023-10-19 23:08:15 +0200 <tomsmeding> do we now have an era-based time reckoning system based on pandemics?
2023-10-19 23:08:42 +0200 <Rembane> That's ominous
2023-10-19 23:09:32 +0200 <haskellbridge> <C​elestial> Are you not in the year 104 PSF? (Post Spanish Flu)
2023-10-19 23:09:46 +0200 <monochrom> As another example, {-# OPTIONS #-} was deprecated in favour of {-# OPTIONS_GHC #-}. That was like 10-15 years ago already.
2023-10-19 23:12:25 +0200hugo(znc@verdigris.lysator.liu.se)
2023-10-19 23:12:27 +0200 <monochrom> Personally I prefer <>, but not because I fear "deprecation" etc. I couldn't care less. But <> has been set up to be way more convenient in multiple ways.
2023-10-19 23:12:47 +0200 <monochrom> For starters, it is a really nice and short infix notation.
2023-10-19 23:13:33 +0200 <EvanR> the anti-operator crowd hates this
2023-10-19 23:13:44 +0200 <EvanR> for some reason
2023-10-19 23:13:55 +0200 <tomsmeding> % a ⋄ b = a <> b
2023-10-19 23:13:56 +0200 <yahb2> <no output>
2023-10-19 23:15:41 +0200 <monochrom> Well I am not extremist or religious about symbolic operators either. 55% of the time I prefer fmap to <$> for example.
2023-10-19 23:16:15 +0200 <EvanR> yes I often can't bring myself to use <$> just because I can
2023-10-19 23:16:19 +0200Square(~Square@user/square) (Ping timeout: 252 seconds)
2023-10-19 23:16:24 +0200thegeekinside(~thegeekin@189.180.124.118) (Ping timeout: 258 seconds)
2023-10-19 23:16:30 +0200 <monochrom> But every language has accepted to use a symbolic infix operator for string concatenation for example. <> is not out of the norm.
2023-10-19 23:16:32 +0200 <EvanR> fmap is more obviously fmapping to me
2023-10-19 23:18:23 +0200 <haskellbridge> <C​elestial> I like <$> when it's the only term in something paranthesised
2023-10-19 23:18:29 +0200 <monochrom> And unlike Python, we actually have div and mod being alphabetical instead of symbolic.
2023-10-19 23:18:36 +0200 <haskellbridge> <C​elestial> `foo (f <$> x)`
2023-10-19 23:18:49 +0200 <monochrom> So anti-operator haters can bring their hate to Python instead, first and foremost.
2023-10-19 23:22:06 +0200 <EvanR> foo (fmap f x)
2023-10-19 23:22:18 +0200 <EvanR> shift key conservation
2023-10-19 23:22:47 +0200 <EvanR> and less likely to trigger the anti-operator crowd
2023-10-19 23:23:21 +0200 <haskellbridge> <C​elestial> we should start having half operators half named functions
2023-10-19 23:23:28 +0200 <haskellbridge> <C​elestial> `<fm$ap>`
2023-10-19 23:23:29 +0200 <monochrom> Often I like "a b <$> c d <*> e f" because it is fewer parentheses. But this is dangerously close to "use <$> to get rid of parentheses". :)
2023-10-19 23:23:38 +0200 <haskellbridge> <C​elestial> `<mappend>`
2023-10-19 23:24:08 +0200 <monochrom> Oooohhh that is giving me ideas...
2023-10-19 23:25:18 +0200fendor(~fendor@2a02:8388:1640:be00:aab:1226:f274:5021) (Remote host closed the connection)
2023-10-19 23:25:43 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2023-10-19 23:26:28 +0200 <monochrom> > let ᐸfᐳ = even in map ᐸfᐳ [3,4]
2023-10-19 23:26:30 +0200 <lambdabot> [False,True]
2023-10-19 23:27:26 +0200 <EvanR> what
2023-10-19 23:27:42 +0200 <tomsmeding> :t let fm = flip (.) pure in (fm$ap)
2023-10-19 23:27:42 +0200 <lambdabot> Monad m => (a -> b) -> m a -> m b
2023-10-19 23:29:14 +0200 <tomsmeding> :t let fm = flip fmap pure in (fm$ap)
2023-10-19 23:29:15 +0200 <lambdabot> Monad m => (a -> b) -> m a -> m b
2023-10-19 23:29:30 +0200 <tomsmeding> :t let fm = fmap `flip` pure in (fm$ap)
2023-10-19 23:29:31 +0200 <lambdabot> Monad m => (a -> b) -> m a -> m b
2023-10-19 23:29:53 +0200 <tomsmeding> >:)
2023-10-19 23:30:42 +0200 <monochrom> Cf. https://twitter.com/mosheroperandi/status/856946180810354688 :)
2023-10-19 23:31:11 +0200 <tomsmeding> obviously
2023-10-19 23:31:41 +0200 <tomsmeding> just 12 points? that be an old screenshot
2023-10-19 23:32:11 +0200 <EvanR> twitter. Old school
2023-10-19 23:32:30 +0200 <EvanR> do you also have a betamax player
2023-10-19 23:32:36 +0200michalz(~michalz@185.246.207.218) (Ping timeout: 240 seconds)
2023-10-19 23:33:13 +0200 <monochrom> My family did. :)
2023-10-19 23:33:37 +0200 <monochrom> Our first video tape machine was Betamax.
2023-10-19 23:33:50 +0200nate2(~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
2023-10-19 23:36:05 +0200stites(~stites@155.33.134.28) (Ping timeout: 240 seconds)
2023-10-19 23:36:56 +0200stites(~stites@2607:fb91:de8:94ca:cd75:d180:a559:e9f9)
2023-10-19 23:38:49 +0200 <Inst> hmmm, could I ask a quick question about rank 2 types?
2023-10-19 23:39:38 +0200 <Inst> basically, rank2 just requires that the function being used has to be fully polymorphic, right?
2023-10-19 23:40:18 +0200 <monochrom> That is very botched wording, but yes.
2023-10-19 23:42:16 +0200 <Inst> Please help me out by indicating why it is botched wording?
2023-10-19 23:42:47 +0200 <monochrom> Instead: an argument has to be fully polymorphic
2023-10-19 23:44:07 +0200 <Inst> runST :: (forall s. ST s a) -> a
2023-10-19 23:44:18 +0200stites(~stites@2607:fb91:de8:94ca:cd75:d180:a559:e9f9) (Ping timeout: 272 seconds)
2023-10-19 23:44:24 +0200 <monochrom> "the" makes no sense. If I have "(forall a. a -> a) -> Bool", there is an outer function "(forall a. a -> a) -> Bool", and there is an inner funciton "forall a. a -> a". Which one is "the" function?
2023-10-19 23:44:33 +0200 <Inst> in this case, the value of type ST s a cannot lock s to be a specific type
2023-10-19 23:45:02 +0200 <EvanR> when runST is used, the choice of a is made
2023-10-19 23:45:16 +0200 <EvanR> inside runST, the choice of s is made
2023-10-19 23:45:23 +0200 <EvanR> or can be
2023-10-19 23:45:51 +0200coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-10-19 23:45:59 +0200 <EvanR> or it could be passed to another rank 2 function
2023-10-19 23:46:31 +0200 <Inst> wait, is it possible to have a value such that
2023-10-19 23:46:42 +0200 <Inst> foo :: (forall a. a)
2023-10-19 23:46:50 +0200 <EvanR> :t undefined
2023-10-19 23:46:51 +0200 <lambdabot> a
2023-10-19 23:46:54 +0200 <monochrom> It can only be bottom.
2023-10-19 23:46:56 +0200 <Inst> or, actually, this should reduce because it's a non-function value, right?
2023-10-19 23:47:18 +0200 <monochrom> There is a proof by free theorems or parametricity.
2023-10-19 23:47:19 +0200 <EvanR> Maybe a doesn't reduce
2023-10-19 23:47:35 +0200 <EvanR> what would it reduce to
2023-10-19 23:47:49 +0200 <Inst> i mean, foo :: (forall a. a) is equivalent to foo :: forall a. a, right?
2023-10-19 23:48:03 +0200 <EvanR> all you did was take away unnecessary parens
2023-10-19 23:48:04 +0200 <Inst> and of course only undefined can satisfy this, or some other bottom
2023-10-19 23:48:41 +0200 <monochrom> "reduce" is not relevant for why forall a. a can only be bottom.
2023-10-19 23:49:54 +0200 <monochrom> In fact, normally, evaluation is way after type erasure, there is no longer any type consideration at all.
2023-10-19 23:50:36 +0200 <Inst> but in haskell's type system, I can't have, say, and the State is intentional
2023-10-19 23:50:37 +0200 <monochrom> So the flip side is that evaluation tells you nothing about types.
2023-10-19 23:51:10 +0200 <Inst> State (forall s. s) a, or StateT (for all s. s) Identity a?
2023-10-19 23:52:12 +0200 <monochrom> Have you tried?
2023-10-19 23:52:24 +0200 <Inst> yeah, i'm asking too much, thanks
2023-10-19 23:52:58 +0200 <monochrom> In fact, have you tried with ImpredicativeTypes enabled?
2023-10-19 23:54:29 +0200 <Inst> whoa, this typechecks
2023-10-19 23:54:39 +0200 <Inst> but in the example shown above, this is a rank 2 type?
2023-10-19 23:54:58 +0200 <Inst> and the hypothesis that rank 2 types only exist in function types is hereby falsified, methinks
2023-10-19 23:56:17 +0200 <EvanR> if there was a non-bottom value of type forall a . a, then it would have the type Char and the type Int if I so desire. No such common Char-Int exists by virtue of Char and Int being defined separately and independently from each other
2023-10-19 23:57:31 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2023-10-19 23:57:43 +0200 <EvanR> or by virtue of just checking all the Char and Int
2023-10-19 23:57:52 +0200 <Inst> What the actual context is, I stumbled across a usage of rank 2 types in defining a function, and I'm just trying to confirm that what it means is that its argument of rank 2 type cannot assert its own type for the type variable under forall, but must instead be polymorphic and allow the calling function to determine the type
2023-10-19 23:58:08 +0200 <Inst> I'm just trying to make sure I understand it, and thanks