Home liberachat/#haskell: Logs Calendar

Logs on 2024-04-08 (liberachat/#haskell)

00:01:57 forell joins (~forell@user/forell)
00:03:15 × Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
00:06:26 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
00:10:55 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 272 seconds)
00:14:20 <janus> back when there were multiple haskell implementations, did 'network' work with multiple of them?
00:15:03 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
00:15:19 <janus> i suppose i don't really understand how 'network' interacts with the green threading of GHC
00:16:21 <janus> i would guess that the GHC RTS would keep track of which green threads are trying to read/write from a file descriptor
00:16:46 <janus> then the network package could use that functionality and be written in a blocking manner, but wouldn't actually the whole application
00:19:16 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds)
00:19:35 × xff0x quits (~xff0x@2405:6580:b080:900:bb82:210b:4257:7a0f) (Ping timeout: 268 seconds)
00:24:53 <janus> but if that's how it worked back when there were multiple haskell implementations, and they didn't have green threading, does that mean that the other impls didn't have concurrency at all?
00:25:10 <janus> s/wouldn't actually the whole/wouldn't actually _block_ the whole/
00:30:08 <geekosaur> ghc offers threadWaitRead and threadWaitWrite for the low level scheduling; I have no idea whether hugs or nhc98 had similar functionality
00:33:01 <janus> oh , i see the network package does use those functions
00:35:37 × euphores quits (~SASL_euph@user/euphores) (Ping timeout: 272 seconds)
00:35:51 <geekosaur> I've been under the impression that only ghc ever offered threads of any variety, but I have no direct experience; nhc98 was already pretty much dead when I started using Haskell, and I did very little with Hugs
00:36:55 <geekosaur> (and N:M threading came much later than green threads in GHC)
00:37:51 <geekosaur> pretty sure no other Haskell implementation other than possibly UHC had those
00:38:52 <janus> what did GHC have because N:M threading?
00:38:55 <janus> *before
00:39:19 <geekosaur> green threads, without OS threads
00:40:04 <Maxdamantus> ie, 1:M or N:1 threading, not sure which.
00:40:05 <c_wraith> is GND in GHC2021? that surprises me...
00:40:26 <c_wraith> It is!
00:40:32 <c_wraith> I sure didn't expect that.
00:40:38 <janus> why is that surprising?
00:40:53 <c_wraith> The number of times it has created holes in the type system in the past.
00:41:01 <c_wraith> Yeah, we think they're all fixed now..
00:41:07 <c_wraith> But.. are we sure?
00:41:44 <geekosaur> it's impl threads:OS threads, so green threads are N:1 and 1:M makes no sense unless M == 1
00:42:06 <c_wraith> what? you've never wanted 20 OS threads for a single application thread? :P
00:42:31 <janus> hehe but then look at GHC2024 ;) it has DataKinds, wouldn't that be ever more in flux than GND?
00:42:36 × ystael quits (~ystael@user/ystael) (Ping timeout: 260 seconds)
00:42:44 <geekosaur> (well, strictly speaking if you use forkOS you get 2 OS threads per Haskell thread because one is used for FFI)
00:42:54 <c_wraith> Yeah, DataKinds is a bit surprising because it's not... done.
00:43:23 <janus> i wonder if we will ever get enough data to actually conclude that libraries that stayed on GHC2021 had less churn than the ones on GHC2024
00:44:40 <jackdk> I thought the basic idea of DataKinds was pretty solid, but all the extra stuff around importing/exporting/binding/passing types was still evolving. Am I wrong?
00:45:38 <janus> so if GHC had 1:M, and you did forkIO, the RTS would run select(2) on all your fd's and then schedule the right HEC? i suppose there was no epoll back then
00:45:59 dsmith_ joins (~dsmith@user/dsmith)
00:46:04 <geekosaur> yeh
00:46:06 <c_wraith> jackdk: that's basically right. edge cases keep changing around as dependent haskell work progresses.
00:46:18 <geekosaur> (and what "back then"? you still get that with the non-threaded runtime)
00:47:09 × dsmith_ quits (~dsmith@user/dsmith) (Remote host closed the connection)
00:47:11 <janus> yeah ok.. so N:M and threaded runtime are two ways of saying the same thing, right?
00:47:33 <geekosaur> I think you still get it with -threaded and +RTS -N1
00:47:56 <geekosaur> except the program can use setNumCapabilities to override your -N
00:48:07 <janus> ah makes sense
00:48:21 <janus> i have made some libuv bindings for MicroHs
00:48:41 <janus> and Lennart says he will eventually implement Concurrent Haskell (not sure what that means)
00:48:53 <janus> i suppose it will be compatible to a certain degree
00:48:55 × dsmith quits (~dsmith@user/dsmith) (Ping timeout: 260 seconds)
00:49:03 <geekosaur> it means MicroHs doesn't have forkIO yet
00:49:25 <janus> yeah it doesn't. i am thinking of writing a user-level scheduler for continuations like i did for Idris2
00:49:41 <janus> but it feels silly cause it will be superfluous when he implements forkIO
00:50:32 <janus> am i right to be annoyed that all the protocol implementations are tied to network and IO
00:50:52 <janus> now that there are delimited continuations, does it mean there is now a fast way to schedule continuations in user space?
00:51:39 <janus> so we could actually have an pure-continuation http library that would be fast even though if it was executed with a user-space scheduler?
00:51:52 <geekosaur> network is just FFI bindings to OS network functions
00:52:28 <janus> yeah but it has threadWaitRead. with my libuv bindings, i am not sure i can provide that API
00:52:30 <geekosaur> you need those anyway unless you're planning to implement user-space TCP/IP (BTDT avoid)
00:52:56 <janus> if i use libuv, surely i am not implementing user-space TCP/IP?
00:53:23 <janus> let me just show you what i have: https://github.com/ysangkok/MicroHs/blob/libuv/tests/Foreign.hs
00:53:29 <geekosaur> threadWaitRead is part of concurrent Haskell, if you are making an alternative to that then presumably you have some alternative or you will find all I/O to be difficult
00:54:37 <geekosaur> so it looks like libuv exports its own interface to the system network API
00:55:35 <janus> what i did in Idris is that i just stick all the continuations in a map. then when they need data, they yield and the scheduler loops. at each loop iteration, it calls the equivalent of select(2)
00:56:13 <geekosaur> so now you need to either use libuv-provided mechanisms to interact with threads, or give up on threads entirely
00:57:04 <janus> yeah.. it's probably best if i just wait for Lennart
00:57:11 <janus> he works fast anyway, I think
00:57:39 <geekosaur> even then you'll need libuv to provide you with a file descriptor to block/select/epoll/whatever on
00:58:00 <geekosaur> otherwise it can't be made thread compatible
00:58:13 <geekosaur> regardless of your thread implementation
00:58:35 <janus> hmm, but maybe it doesn't need to be thread compatible... it would be ok if it could just be 'network' package compatible
00:58:59 <janus> but i don't have a good understanding of how tied to GHC the network API is... i fear that it might be too tied
00:59:12 <geekosaur> it didn't look to me like that was in the offing
01:00:02 <geekosaur> this is not a question of "how tied to GHC the network API is", the only ties are threadWaitRead and threadWaitWrite and those are part of concurrent Haskell so you would need to provide those anyway so the thread impl knows what to select(2) on
01:00:20 <geekosaur> network is tied to the OS network libraries, and libuv abstracts those away
01:01:03 <janus> well maybe libuv is a mistake on my part, if it means code won't be compatible...
01:01:38 <janus> but that's good news
01:01:53 <janus> cause it sounds like the interface of Concurrent Haskell is fairly minimal
01:02:20 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
01:03:48 <geekosaur> I just looked at the libuv documentation. it's worse thn I thought: it's a replacement event loop, so you would need to rewrite the GHC RTS to be based on libuv instead of its own event loop
01:04:31 <geekosaur> or ask Lennart to implement concurrent MicroHs's event loop via libuv
01:05:00 <janus> my goal is to make existing code compatible with MicroHs
01:05:10 <janus> if libuv is not the best way to achieve that, i shouldn't use it
01:05:26 <janus> the advantage of libuv is that it works across platforms
01:05:29 <geekosaur> no, it's not, libuv is at a different level
01:05:44 <geekosaur> libuv replaces the RTS, not Haskell code
01:06:16 <janus> but if the RTS can use libuv internally and still provide the same user-level API, then it's all right
01:06:32 <janus> when you said "or ask Lennart ... " , that's what i understood what a possibility
01:06:43 <geekosaur> yes, that was what I was angling toward
01:07:18 <janus> right. i am perfectly aware that the libuv code that i write in userspace really has to go, if MicroHs supports Concurrent Haskell
01:07:37 <janus> i just do it in user space because it was what i thought was easiest to get this echo server running
01:07:50 <janus> and it is very similar to what i did in Idris
01:08:07 <janus> but when i did it, i didn't know that Lennart was planning to even add Concurrent Haskell
01:08:46 <janus> so now the situation is changed and i probably shouldn't go down this route of user level scheduling
01:09:39 <janus> I _do_ still think it's weird that Haskell is a 'pure' language and still we don't have prevalent effect systems that make it possible to write a HTTP server that can be treated as a continuation
01:17:12 <monochrom> But we did. Haskell 1.2 and before had a CPS I/O system rather than a monad.
01:17:56 <janus> but Haskell didn't even have monads yet, right?
01:18:04 <monochrom> Right. :)
01:18:40 <Axman6> It's so nice to hop on IRC and see conversations happening in my timezone. It's always so quiet when .au is awake :'(
01:18:42 <janus> so how many years did it take for mtl/transformers to appear as the predominant effects system? i suppose it was already too late, because I don't know of MonadNetwork
01:19:02 <geekosaur> btw, you would need to replace network. you could provide the same Haskell API but it would use libuv instead of OS network APIs directly
01:19:32 <monochrom> type MonadNetwork = IO
01:19:54 <janus> but you can't interpret IO... it's not abstracted, it's concrete
01:20:05 <janus> isn't that why io-sim exists?
01:21:24 <monochrom> I don't understand that. I thought I could interpret concrete data but not abstract objects.
01:21:30 <janus> Axman6: yeah i never understood why it seemed like #haskell was mostly on european timezones... cause it seems like there is at least the same amount of Haskell going on in the US
01:22:01 <geekosaur> mtl was already in ghc 5's libraries, but it included transformers functionality built in. transformers came later, when they evaluated type families vs. monad transformers+fundeps for mtl2-to-be
01:22:17 <janus> monochrom: what i mean is that MonadNetwork would be a type class, so you can write an interpreter and 'mock' networking
01:22:48 <janus> monochrom: IO isn't a type class, you can't take 'IO a' and run it in a pure context?
01:22:51 <geekosaur> (you can see that in monads-fd vs. monads-tf on hackage)
01:23:06 × euleritian quits (~euleritia@77.22.252.56) (Ping timeout: 268 seconds)
01:23:09 <janus> for me, MonadNetwork is abstract, since it is an interface, not an implmentation
01:23:42 euleritian joins (~euleritia@dynamic-176-006-188-089.176.6.pool.telefonica.de)
01:24:38 <geekosaur> I think the question there is whether anyone wants to deal with the potential performance of lots of indirect calls for networking operations
01:24:54 <janus> right, that makes sense, that makes a lot of sense
01:25:29 <janus> but that then begs the question: with delimited continuations, could we now write those 'pure' / 'continuation' webservers and execute them just as fast as had they been in IO?
01:25:42 <monochrom> There is just probably too little interest in doing mock testing on network code.
01:25:48 <geekosaur> I don't know if you can arrange for the compiler to optimize the indirect method calls away in enough cases
01:26:24 <geekosaur> and in any case I think network mocking can be done with linux interfaces without having to wire it into your language's network libs?
01:26:41 <geekosaur> (and freebsd, dunno about windows or os x)
01:27:16 × euleritian quits (~euleritia@dynamic-176-006-188-089.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
01:27:30 <monochrom> Yeah that. I test my students' network code in dockers. :)
01:27:33 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
01:28:11 <janus> and i took your Cont article, extended it to be double-barrelled and wrote working Idris servers with it ;)
01:29:24 <janus> it might be that you can mock it all through the OS, but that just seems so cumbersome to me...
01:29:43 <janus> anyway, this is kind of orthogonal to the question of how much existing code could run on MicroHs
01:30:43 <janus> it's good to hear that you could rewrite network and have it be compatble... would be really interesting to try that, but i suppose it doesn't make sense to even try before Concurrent Haskell arrives in MicroHs
01:33:00 × infinity0 quits (~infinity0@pwned.gg) (Ping timeout: 260 seconds)
01:33:34 infinity0 joins (~infinity0@pwned.gg)
01:41:06 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds)
01:43:47 <janus> commit where 'net' was extracted (from ghc, maybe?): https://github.com/haskell/network/commit/efb0e791b67492213021c2081001cec5590e4f7c
01:44:51 <janus> doesn't seem like it supported concurrency back then
01:45:49 <janus> ah sorry, yes it did. it's in Socket.hsc
01:46:13 <geekosaur> https://downloads.haskell.org/~ghc/5.00/docs/set/sec-net.html
01:50:19 <geekosaur> looks like it was in 4.x as well
01:54:19 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
01:56:08 × otto_s quits (~user@p4ff27276.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
01:57:59 otto_s joins (~user@p5de2f26b.dip0.t-ipconnect.de)
01:59:59 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 264 seconds)
02:01:34 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 256 seconds)
02:12:31 × mei quits (~mei@user/mei) (Remote host closed the connection)
02:14:00 sroso joins (~sroso@user/SrOso)
02:14:57 mei joins (~mei@user/mei)
02:15:34 × janus quits (~janus@anubis.0x90.dk) (Changing host)
02:15:34 janus joins (~janus@user/janus)
02:18:07 ddellacosta joins (~ddellacos@ool-44c73d29.dyn.optonline.net)
02:20:12 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
02:23:42 tri joins (~tri@ool-43564db8.dyn.optonline.net)
02:26:17 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer)
02:35:52 × dbaoty quits (~dbaoty@tptn-04-0838.dsl.iowatelecom.net) (Quit: Leaving.)
02:43:10 × tri quits (~tri@ool-43564db8.dyn.optonline.net) (Remote host closed the connection)
02:51:04 tri joins (~tri@ool-43564db8.dyn.optonline.net)
02:54:14 × td_ quits (~td@i53870921.versanet.de) (Ping timeout: 252 seconds)
02:55:58 td_ joins (~td@i53870933.versanet.de)
02:56:55 <jackdk> monochrom: I have recently discovered that even the Python world wants IO-free network libraries: https://sans-io.readthedocs.io/
03:00:00 × Taneb quits (~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0) (Quit: I seem to have stopped.)
03:01:12 Taneb joins (~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0)
03:15:17 × systemfault quits (sid267009@about/typescript/member/systemfault) (Ping timeout: 240 seconds)
03:18:24 systemfault joins (sid267009@about/typescript/member/systemfault)
03:19:05 × mei quits (~mei@user/mei) (Remote host closed the connection)
03:21:31 mei joins (~mei@user/mei)
03:29:56 × tri quits (~tri@ool-43564db8.dyn.optonline.net) (Remote host closed the connection)
03:31:33 × JimL quits (~quassel@89.162.16.26) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
03:31:53 <sm> janus: are you implementing libs for MicroHs ?
03:34:25 JimL joins (~quassel@89.162.16.26)
03:34:54 <sm> it's interesting about european timezones, I think I've noticed that too. Possibly there are more OSS/academic haskellers there, who have time/permission to chat, unlike most corporate devs
03:36:30 <sm> also I guess there can be regional preferences/predominance of IRC / matrix / discord / ...
03:36:58 <sm> and these are more siloed than in the past
03:37:20 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
03:42:19 <janus> sm: i've only written these libuv bindings, that's it
03:42:37 <janus> sm: don't think cabal supports microhs yet, so depending on what you mean by lib, it might not be possible
03:43:14 <sm> it sounded like you were porting/cloning network for microhs
03:43:51 <sm> that's what I meant. I think microhs is exciting.
03:44:32 <janus> i'd do it but i don't think it makes sense since network seems to assume that green threads are available
03:44:44 <sm> aha
03:44:55 <janus> but as you can see, Lennart is planning on adding those
03:45:13 <sm> aHA
03:45:53 <janus> but you can see from my PoC that you can do networking just fine without green threads
03:46:11 <sm> awesome
03:46:28 <janus> you just have to schedule everything yourself so and then it isn't compatible with any existing code... so probably not worth the effort
03:47:00 <sm> experiments++
03:49:53 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 256 seconds)
03:51:48 × werneta quits (~werneta@071-083-160-242.res.spectrum.com) (Quit: leaving)
03:51:53 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
03:53:43 × aforemny_ quits (~aforemny@i59F516C7.versanet.de) (Ping timeout: 260 seconds)
03:54:12 aforemny joins (~aforemny@i59F516E6.versanet.de)
03:55:35 × nurupo quits (~nurupo.ga@user/nurupo) (Quit: nurupo.ga)
03:55:56 × xigua quits (~xigua@user/xigua) (Read error: Connection reset by peer)
03:56:10 xigua joins (~xigua@user/xigua)
04:00:24 × actioninja quits (~actioninj@user/actioninja) (Quit: see ya mane)
04:00:52 actioninja joins (~actioninj@user/actioninja)
04:04:23 nickiminjaj joins (~nickiminj@188.146.120.15)
04:04:23 × nickiminjaj quits (~nickiminj@188.146.120.15) (Changing host)
04:04:23 nickiminjaj joins (~nickiminj@user/laxhh)
04:05:54 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 268 seconds)
04:05:58 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 260 seconds)
04:07:33 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
04:08:23 × todi quits (~todi@p57803331.dip0.t-ipconnect.de) (Remote host closed the connection)
04:08:43 × nickiminjaj quits (~nickiminj@user/laxhh) (Client Quit)
04:27:41 michalz joins (~michalz@185.246.207.205)
04:33:06 × hgolden quits (~hgolden@2603-8000-9d00-3ed1-2678-8497-aa5c-7fa9.res6.spectrum.com) (Remote host closed the connection)
04:34:48 hgolden joins (~hgolden@2603-8000-9d00-3ed1-2678-8497-aa5c-7fa9.res6.spectrum.com)
04:38:02 × dsrt^ quits (~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Remote host closed the connection)
04:43:04 nickiminjaj joins (~nickiminj@188.146.120.15)
04:43:04 × nickiminjaj quits (~nickiminj@188.146.120.15) (Changing host)
04:43:04 nickiminjaj joins (~nickiminj@user/laxhh)
04:45:39 × nickiminjaj quits (~nickiminj@user/laxhh) (Client Quit)
04:50:53 igemnace joins (~ian@user/igemnace)
04:53:29 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
04:58:27 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 272 seconds)
05:04:46 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
05:05:08 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
05:05:28 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
05:08:55 zetef joins (~quassel@5.2.182.99)
05:10:36 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
05:10:47 sadie_ joins (~sadie@c-76-155-235-153.hsd1.co.comcast.net)
05:11:39 ChaiTRex joins (~ChaiTRex@user/chaitrex)
05:17:15 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:20:01 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
05:20:30 ChaiTRex joins (~ChaiTRex@user/chaitrex)
05:30:45 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
05:31:20 euleritian joins (~euleritia@dynamic-176-006-186-113.176.6.pool.telefonica.de)
05:34:59 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
05:44:00 × _d0t quits (~{-d0t-}@user/-d0t-/x-7915216) (Remote host closed the connection)
05:44:48 _d0t joins (~{-d0t-}@user/-d0t-/x-7915216)
05:46:10 × Axman6 quits (~Axman6@user/axman6) (Remote host closed the connection)
05:46:25 Axman6 joins (~Axman6@user/axman6)
05:49:23 nickiminjaj joins (~nickiminj@188.146.120.15)
05:49:23 × nickiminjaj quits (~nickiminj@188.146.120.15) (Changing host)
05:49:23 nickiminjaj joins (~nickiminj@user/laxhh)
05:54:35 × nickiminjaj quits (~nickiminj@user/laxhh) (Ping timeout: 260 seconds)
05:57:27 tititest joins (~tititest@ip-037-201-154-121.um10.pools.vodafone-ip.de)
05:59:56 × zetef quits (~quassel@5.2.182.99) (Ping timeout: 260 seconds)
06:00:02 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
06:01:54 yeitrafferin joins (~user@2a04:4540:720b:ad00:4e6c:5428:51b2:1598)
06:02:03 euphores joins (~SASL_euph@user/euphores)
06:04:05 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 240 seconds)
06:04:34 × cross quits (~cross@spitfire.i.gajendra.net) (Ping timeout: 246 seconds)
06:06:12 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
06:08:13 zetef joins (~quassel@5.2.182.99)
06:21:54 cross joins (~cross@spitfire.i.gajendra.net)
06:28:46 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 260 seconds)
06:30:35 ChaiTRex joins (~ChaiTRex@user/chaitrex)
06:34:15 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 260 seconds)
06:35:40 acidjnk_new joins (~acidjnk@p200300d6e714dc9124c21742e07a126c.dip0.t-ipconnect.de)
06:39:46 Maxdamantus joins (~Maxdamant@user/maxdamantus)
06:42:45 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
06:43:48 nurupo joins (~nurupo.ga@user/nurupo)
06:44:31 sord937 joins (~sord937@gateway/tor-sasl/sord937)
06:53:06 danza joins (~francesco@an-19-178-190.service.infuturo.it)
06:59:59 × zetef quits (~quassel@5.2.182.99) (Ping timeout: 264 seconds)
07:01:47 × euleritian quits (~euleritia@dynamic-176-006-186-113.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
07:02:06 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
07:09:49 zetef joins (~quassel@5.2.182.99)
07:10:11 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
07:13:08 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:23:02 × igemnace quits (~ian@user/igemnace) (Read error: Connection reset by peer)
07:25:02 gmg joins (~user@user/gehmehgeh)
07:31:51 × zetef quits (~quassel@5.2.182.99) (Remote host closed the connection)
07:34:20 zetef joins (~quassel@5.2.182.99)
07:38:16 migas97 joins (~migas@static.140.65.63.178.clients.your-server.de)
07:39:24 mesaoptimizer joins (~mesaoptim@user/PapuaHardyNet)
07:40:09 igemnace joins (~ian@user/igemnace)
07:42:22 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
07:44:30 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
07:48:32 Square joins (~Square4@user/square)
07:54:33 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
07:55:39 × zetef quits (~quassel@5.2.182.99) (Ping timeout: 255 seconds)
07:55:47 × danza quits (~francesco@an-19-178-190.service.infuturo.it) (Ping timeout: 272 seconds)
07:57:28 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
07:57:58 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
07:58:37 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
07:59:42 × sadie_ quits (~sadie@c-76-155-235-153.hsd1.co.comcast.net) (Remote host closed the connection)
08:05:55 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
08:07:57 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
08:28:59 dhil joins (~dhil@2001:8e0:2014:3100:3d77:3c3c:fa90:61a5)
08:33:07 zetef joins (~quassel@5.2.182.99)
08:33:11 chele joins (~chele@user/chele)
08:35:47 danse-nr3 joins (~danse-nr3@an-19-178-190.service.infuturo.it)
08:35:53 × danse-nr3 quits (~danse-nr3@an-19-178-190.service.infuturo.it) (Remote host closed the connection)
08:36:17 danse-nr3 joins (~danse-nr3@an-19-178-190.service.infuturo.it)
08:49:22 × ft quits (~ft@p4fc2a20e.dip0.t-ipconnect.de) (Quit: leaving)
08:52:33 akegalj joins (~akegalj@141-136-147-171.dsl.iskon.hr)
08:57:50 × philopsos quits (~caecilius@user/philopsos) (Quit: Lost terminal)
08:59:04 × tzh quits (~tzh@c-73-164-206-160.hsd1.or.comcast.net) (Quit: zzz)
09:05:24 × tititest quits (~tititest@ip-037-201-154-121.um10.pools.vodafone-ip.de) (Quit: Leaving.)
09:05:27 stratl joins (~user@p5b0f3575.dip0.t-ipconnect.de)
09:15:45 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 255 seconds)
09:16:33 sawilagar joins (~sawilagar@user/sawilagar)
09:17:33 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
09:18:41 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
09:21:26 × ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 260 seconds)
09:23:12 ec_ joins (~ec@gateway/tor-sasl/ec)
09:26:11 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
09:26:42 sord937 joins (~sord937@gateway/tor-sasl/sord937)
09:30:11 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
09:31:22 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
09:31:44 sord937 joins (~sord937@gateway/tor-sasl/sord937)
09:33:12 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 260 seconds)
09:35:33 × zetef quits (~quassel@5.2.182.99) (Ping timeout: 255 seconds)
09:46:33 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
09:46:53 sord937 joins (~sord937@gateway/tor-sasl/sord937)
09:50:14 × hammond quits (~abner@user/hammond2) (Read error: Connection reset by peer)
09:54:56 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 268 seconds)
09:56:48 × dhil quits (~dhil@2001:8e0:2014:3100:3d77:3c3c:fa90:61a5) (Quit: Leaving)
10:09:05 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
10:09:36 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
10:12:04 zetef joins (~quassel@5.2.182.99)
10:18:05 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
10:18:37 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
10:18:56 hammond joins (proscan@gateway02.insomnia247.nl)
10:23:38 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 256 seconds)
10:24:34 xff0x joins (~xff0x@2405:6580:b080:900:d77c:415b:b254:7fcb)
10:30:50 tititest joins (~tititest@ip-037-201-154-121.um10.pools.vodafone-ip.de)
10:34:48 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
10:35:29 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
10:36:09 Lord_of_Life_ is now known as Lord_of_Life
10:37:19 xdminsy joins (~xdminsy@117.147.70.203)
10:37:19 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
10:47:49 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
10:49:22 × stratl quits (~user@p5b0f3575.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
10:56:56 × danse-nr3 quits (~danse-nr3@an-19-178-190.service.infuturo.it) (Read error: Connection reset by peer)
10:57:34 danse-nr3 joins (~danse-nr3@151.47.219.151)
11:04:07 [exa] joins (~exa@user/exa/x-3587197)
11:08:29 × danse-nr3 quits (~danse-nr3@151.47.219.151) (Ping timeout: 256 seconds)
11:25:20 × sanpo quits (~sanpo@user/sanpo) (Quit: Client closed)
11:32:58 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
11:34:01 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
11:39:19 cfricke joins (~cfricke@user/cfricke)
11:44:04 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
11:45:04 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
11:46:14 danse-nr3 joins (~danse-nr3@ba-19-139-35.service.infuturo.it)
11:46:37 × danse-nr3 quits (~danse-nr3@ba-19-139-35.service.infuturo.it) (Remote host closed the connection)
11:47:02 danse-nr3 joins (~danse-nr3@ba-19-139-35.service.infuturo.it)
11:48:21 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
11:49:30 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
12:03:25 × sroso quits (~sroso@user/SrOso) (Quit: Leaving :))
12:06:36 × ddellacosta quits (~ddellacos@ool-44c73d29.dyn.optonline.net) (Ping timeout: 268 seconds)
12:06:46 dbaoty joins (~dbaoty@tptn-04-0838.dsl.iowatelecom.net)
12:21:09 × xdminsy quits (~xdminsy@117.147.70.203) (Ping timeout: 272 seconds)
12:22:20 xdminsy joins (~xdminsy@117.147.70.203)
12:26:53 cimento joins (n8n@user/n8n)
12:27:16 stratl joins (~user@p5b0f3d8b.dip0.t-ipconnect.de)
12:27:29 × cimento quits (n8n@user/n8n) (Client Quit)
12:27:35 × Eoco quits (~ian@128.101.131.218) (Ping timeout: 264 seconds)
12:29:13 Eoco joins (~ian@128.101.131.218)
12:33:27 × Athas quits (athas@sigkill.dk) (Quit: ZNC 1.8.2 - https://znc.in)
12:34:20 sanpo joins (~sanpo@user/sanpo)
12:36:32 × Eoco quits (~ian@128.101.131.218) (Remote host closed the connection)
12:42:34 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
12:42:54 Eoco joins (~ian@128.101.131.218)
12:46:01 × TonyStone quits (~TonyStone@user/TonyStone) (Remote host closed the connection)
12:50:16 TonyStone joins (~TonyStone@user/TonyStone)
12:52:40 × danse-nr3 quits (~danse-nr3@ba-19-139-35.service.infuturo.it) (Ping timeout: 256 seconds)
12:56:22 Athas joins (athas@2a01:7c8:aaac:1cf:af1c:2933:77d:8603)
12:56:24 <kuribas> Why does Spock-core have an upper limit? mtl (>=2.1 && <2.3)
12:56:43 <kuribas> It is causing my cabal build to fail inside the haskell:9 docker.
12:58:03 <kuribas> presumably because the mtl version is too high.
13:02:11 danse-nr3 joins (~danse-nr3@ba-19-139-35.service.infuturo.it)
13:05:32 <kuribas> Oh, I can take an earlier haskell docker.
13:06:45 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
13:07:09 <yushyin> kuribas: https://github.com/agrafix/Spock/pull/185 that's why
13:07:26 <yushyin> ( https://github.com/agrafix/Spock/pull/185#issuecomment-1806856069 )
13:13:50 divya joins (~user@202.170.201.67)
13:14:24 × stratl quits (~user@p5b0f3d8b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
13:16:32 tri joins (~tri@ool-18bbef1a.static.optonline.net)
13:21:00 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 256 seconds)
13:27:53 tri joins (~tri@ool-18bbef1a.static.optonline.net)
13:28:39 <janus> kuribas: probably better to just use spock from git
13:29:02 <janus> kuribas: you _can_ override the mtl version though, you don't have to use the one shipped with ghc
13:29:21 <janus> kuribas: downgrading the whole docker image would be my third option ;)
13:29:31 nickiminjaj joins (~nickiminj@188.146.120.15)
13:29:31 × nickiminjaj quits (~nickiminj@188.146.120.15) (Changing host)
13:29:31 nickiminjaj joins (~nickiminj@user/laxhh)
13:30:22 <janus> it's amazing how many years this fixing of mtl reexports is taking.. started in 2021 if i am not wrong: https://github.com/haskell/mtl/issues/101
13:32:07 <danse-nr3> long-running processes are not unusual in the community as far as i understand
13:32:44 <danse-nr3> had to reset my hyped-tech mindset when i moved to haskell ...
13:32:56 n8n joins (n8n@user/n8n)
13:33:50 <yushyin> spock also doesn't seem to be the most active project
13:34:04 <kuribas> janus: I just end up using a lower ghc version.
13:34:23 <kuribas> haskell:9.4.8-buster instead of haskell:9
13:34:40 <danse-nr3> it is not... all plain web microframeworks got to the background after servant i guess
13:36:58 <probie> They didn't go the background, so much as being left as finished products, but the Haskell ecosystem has too much churn to allow that
13:37:30 × nickiminjaj quits (~nickiminj@user/laxhh) (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:37:38 <danse-nr3> huh ... i believe "finished" software is a myth
13:38:01 <danse-nr3> (also a contradiction in terms)
13:38:13 <janus> what about interfaces, can they be finished? ;)
13:38:39 <danse-nr3> sure that's the reason for never versioning them
13:39:14 <janus> what do you mean? interfaces are versioned, that's why the first two components of a PVP function number are different
13:39:27 <janus> major bump => interface changed
13:39:41 <janus> or more like iff
13:39:51 <danse-nr3> nevermind ... not the best monday and it triggered my irony
13:43:03 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
13:43:27 euleritian joins (~euleritia@dynamic-176-006-178-051.176.6.pool.telefonica.de)
13:44:41 nickiminjaj joins (~nickiminj@user/laxhh)
13:45:05 todi joins (~todi@p57803331.dip0.t-ipconnect.de)
13:46:12 ystael joins (~ystael@user/ystael)
13:52:10 × Square quits (~Square4@user/square) (Ping timeout: 246 seconds)
13:55:34 × divya quits (~user@202.170.201.67) (Ping timeout: 256 seconds)
14:00:44 × nickiminjaj quits (~nickiminj@user/laxhh) (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:04:00 nickiminjaj joins (~nickiminj@user/laxhh)
14:04:41 <probie> danse-nr3: What new features does `cat` need?
14:05:36 <danse-nr3> look, i don't feel like arguing about this. If you want to believe in the idea of finished software, you are free to do so
14:09:23 haskell_ joins (~haskell@75-164-217-161.ptld.qwest.net)
14:09:45 × haskell_ quits (~haskell@75-164-217-161.ptld.qwest.net) (Remote host closed the connection)
14:10:23 <probie> This feels like being relegated to the "on par with sovereign citizens" pile, and whilst I'll accept it because I don't want to waste your energy, I'm not exactly happy about it
14:10:37 probie parts (cc0b34050a@user/probie) ()
14:11:46 <danse-nr3> wow...
14:19:11 × myme quits (~myme@2a01:799:d5c:5f00:6072:e797:6705:d556) (Ping timeout: 268 seconds)
14:19:35 Square2 joins (~Square@user/square)
14:19:43 myme joins (~myme@2a01:799:d5c:5f00:1e69:7aff:feab:e7ae)
14:31:11 × euleritian quits (~euleritia@dynamic-176-006-178-051.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
14:32:35 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
14:41:05 <haskellbridge> <m​auke> There is this special biologist word we use for 'stable'. It is 'dead'. -- Jack Cohen
14:42:12 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
14:42:41 × yeitrafferin quits (~user@2a04:4540:720b:ad00:4e6c:5428:51b2:1598) (Quit: Leaving)
14:44:21 <danse-nr3> (:
14:48:29 × nickiminjaj quits (~nickiminj@user/laxhh) (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:48:35 <danse-nr3> seems more fair to me to use dehydration as a metaphor. Sure, not all software survives the process
14:50:23 nickiminjaj joins (~nickiminj@188.146.120.15)
14:50:23 × nickiminjaj quits (~nickiminj@188.146.120.15) (Changing host)
14:50:23 nickiminjaj joins (~nickiminj@user/laxhh)
14:51:47 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.1.1)
14:58:35 × hueso quits (~root@user/hueso) (Read error: Connection reset by peer)
14:58:36 × xdminsy quits (~xdminsy@117.147.70.203) (Read error: Connection reset by peer)
14:58:51 hueso joins (~root@user/hueso)
15:05:56 × zetef quits (~quassel@5.2.182.99) (Ping timeout: 260 seconds)
15:09:00 × rvalue quits (~rvalue@user/rvalue) (Ping timeout: 255 seconds)
15:10:54 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:17:11 hippoid joins (~hippoid@user/hippoid)
15:18:30 × nickiminjaj quits (~nickiminj@user/laxhh) (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:18:39 × Batzy quits (~quassel@user/batzy) (Read error: Connection reset by peer)
15:20:28 × igemnace quits (~ian@user/igemnace) (Read error: Connection reset by peer)
15:21:08 __monty__ joins (~toonn@user/toonn)
15:21:42 × mei quits (~mei@user/mei) (Remote host closed the connection)
15:21:46 Batzy joins (~quassel@user/batzy)
15:23:25 × Square2 quits (~Square@user/square) (Ping timeout: 255 seconds)
15:24:08 mei joins (~mei@user/mei)
15:24:19 zetef joins (~quassel@5.2.182.99)
15:27:00 sadie-sorceress joins (~sadie-sor@c-76-155-235-153.hsd1.co.comcast.net)
15:27:13 Square joins (~Square4@user/square)
15:28:11 alexherbo2 joins (~alexherbo@2a02-8440-3141-1d70-d510-781c-6cfb-b61d.rev.sfr.net)
15:29:59 × tititest quits (~tititest@ip-037-201-154-121.um10.pools.vodafone-ip.de) (Quit: Leaving.)
15:30:41 <janus> so what's the software analogue to the water bear?
15:31:51 yeitrafferin joins (~user@2a04:4540:720b:ad00:4e6c:5428:51b2:1598)
15:31:52 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 27.1))
15:37:24 nickiminjaj joins (~nickiminj@user/laxhh)
15:37:34 igemnace joins (~ian@user/igemnace)
15:41:01 <danse-nr3> also plant seeds survive dehidration for a long while. There are too many variables though, and they are not simply part of the software itself. Haskell does great at maintainability for instance, but the population of potential new maintainers does not have a great outlook
15:41:18 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 260 seconds)
15:41:40 × nickiminjaj quits (~nickiminj@user/laxhh) (Client Quit)
15:44:04 ubert joins (~Thunderbi@p200300ecdf3957b4cb1ee850dd579499.dip0.t-ipconnect.de)
15:46:01 <c_wraith> last night I added a library that hadn't been updated since 2015 to a project and.. it worked great.
15:46:21 × danse-nr3 quits (~danse-nr3@ba-19-139-35.service.infuturo.it) (Ping timeout: 272 seconds)
15:46:49 rvalue joins (~rvalue@user/rvalue)
15:47:11 danse-nr3 joins (~danse-nr3@an-19-169-111.service.infuturo.it)
15:48:21 × sanpo quits (~sanpo@user/sanpo) (Quit: Client closed)
15:49:43 <danse-nr3> luckily this is logged. Yes, in my experience haskell is quite resistent. It also depends by how fast a domain demands obsolescence. Also, i was talking free software. In a company, maintainability is great and finding new maintainers is also easy
15:50:29 <dminuoso> danse-nr3: If interfaces can be finished, how can their implementations not be finished?
15:50:49 <dminuoso> If an implementation behaves according to specification, bug-free, how can it be not finished?
15:50:52 <danse-nr3> huh i think you missed something...
15:51:48 tititest joins (~tititest@ip-037-201-154-121.um10.pools.vodafone-ip.de)
15:53:23 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds)
15:53:48 euleritian joins (~euleritia@dynamic-176-006-178-051.176.6.pool.telefonica.de)
16:00:02 ChaiTRex joins (~ChaiTRex@user/chaitrex)
16:04:56 × micro quits (~micro@user/micro) (Ping timeout: 268 seconds)
16:05:40 micro joins (~micro@user/micro)
16:06:35 × danse-nr3 quits (~danse-nr3@an-19-169-111.service.infuturo.it) (Ping timeout: 264 seconds)
16:07:45 tzh joins (~tzh@c-73-164-206-160.hsd1.or.comcast.net)
16:07:55 × chele quits (~chele@user/chele) (Remote host closed the connection)
16:16:53 × CrunchyFlakes quits (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
16:18:02 × sadie-sorceress quits (~sadie-sor@c-76-155-235-153.hsd1.co.comcast.net) (Quit: Client closed)
16:18:04 CrunchyFlakes joins (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de)
16:19:53 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
16:20:41 × euleritian quits (~euleritia@dynamic-176-006-178-051.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
16:20:59 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
16:25:44 <sm> dehydration, heh I like your 3-body reference
16:25:54 × hueso quits (~root@user/hueso) (Ping timeout: 268 seconds)
16:27:01 zzidun93 joins (~zzidun@user/zzidun)
16:27:09 <sm> chaotic era approaching! DEHYDRATE
16:27:42 <geekosaur> I think someone already mentioned water bears 😛
16:28:02 × zzidun93 quits (~zzidun@user/zzidun) (Client Quit)
16:28:47 <sm> g'day geekosaur
16:28:57 geekosaur waves
16:33:29 <sm> c_wraith: \o/ always good to see things resisting rot
16:34:13 hueso joins (~root@user/hueso)
16:35:16 Inst joins (~Inst@user/Inst)
16:35:21 <Inst> does Category do anything?
16:35:38 <Inst> erm, does anyone actually use Control.Category?
16:38:34 tcard_ joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
16:38:54 sam113102 joins (~sam@24.157.253.231)
16:39:28 × tititest quits (~tititest@ip-037-201-154-121.um10.pools.vodafone-ip.de) (Ping timeout: 255 seconds)
16:39:34 Etabeta11 joins (~Etabeta1@176.207.241.56)
16:39:34 cayley52 joins (~cayley5@user/phileasfogg)
16:39:41 fr33domlover1 joins (~fr33domlo@towards.vision)
16:39:42 hc_ joins (~hc@mail.hce.li)
16:39:45 henrytill_ joins (e0180937c3@2a03:6000:1812:100::e8c)
16:39:57 brettgilio_ joins (a35ba67324@2a03:6000:1812:100::260)
16:39:57 shreyasminocha_ joins (51fdc93eda@user/shreyasminocha)
16:39:57 jakzale_ joins (6291399afa@user/jakzale)
16:39:58 benjaminl_ joins (~benjaminl@2601:1c0:8480:d580:223:24ff:fe66:4370)
16:40:03 sefidel_ joins (~sefidel@user/sefidel)
16:40:17 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
16:40:17 chessai_ joins (sid225296@id-225296.lymington.irccloud.com)
16:40:17 terrorjack0 joins (~terrorjac@2a01:4f8:c17:87f8::)
16:40:19 integral_ joins (sid296274@user/integral)
16:40:23 Yumemi_ joins (~Yumemi@chamoin.net)
16:40:25 dispater- joins (~dispater@mail.brprice.uk)
16:40:28 conjunctive_ joins (sid433686@id-433686.helmsley.irccloud.com)
16:40:29 michalz_ joins (~michalz@185.246.207.193)
16:40:34 CrunchyFlakes_ joins (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de)
16:40:35 benkard joins (~mulk@p5b2dc97e.dip0.t-ipconnect.de)
16:40:36 dmj`_ joins (sid72307@id-72307.hampstead.irccloud.com)
16:40:39 TheCoffeMaker_ joins (~TheCoffeM@200.114.213.75)
16:40:51 B-J joins (~BenziJuni@232-148-209-31.dynamic.hringdu.is)
16:40:55 orcus- joins (~orcus@mail.brprice.uk)
16:40:57 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
16:40:59 <Inst> in base, Kleisli, contravariant functors, function arrow
16:41:23 Ellenor joins (ellenor@invictus.wa.us.umbrellix.net)
16:41:59 Batzy_ joins (~quassel@user/batzy)
16:42:08 zfnmxt_ joins (~zfnmxt@107.189.30.63)
16:42:09 mzg_ joins (mzg@abusers.hu)
16:42:22 haveo_ joins (~weechat@pacamara.iuwt.fr)
16:42:22 × destituion quits (~destituio@2a02:2121:107:22da:bbaf:a6d8:6599:5221) (Ping timeout: 268 seconds)
16:42:22 × brettgilio quits (a35ba67324@2a03:6000:1812:100::260) (Ping timeout: 268 seconds)
16:42:22 × Yumemi quits (~Yumemi@chamoin.net) (Ping timeout: 268 seconds)
16:42:22 × henrytill quits (e0180937c3@2a03:6000:1812:100::e8c) (Ping timeout: 268 seconds)
16:42:22 × mulk quits (~mulk@p5b2dc97e.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
16:42:22 × CrunchyFlakes quits (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Ping timeout: 268 seconds)
16:42:22 × orcus quits (~orcus@mail.brprice.uk) (Ping timeout: 268 seconds)
16:42:22 × dispater quits (~dispater@mail.brprice.uk) (Ping timeout: 268 seconds)
16:42:22 × zfnmxt quits (~zfnmxt@user/zfnmxt) (Ping timeout: 268 seconds)
16:42:22 × shreyasminocha quits (51fdc93eda@user/shreyasminocha) (Ping timeout: 268 seconds)
16:42:22 × pointlessslippe1 quits (~pointless@212.82.82.3) (Ping timeout: 268 seconds)
16:42:22 × dmj` quits (sid72307@id-72307.hampstead.irccloud.com) (Ping timeout: 268 seconds)
16:42:23 × integral quits (sid296274@user/integral) (Ping timeout: 268 seconds)
16:42:23 × terrorjack quits (~terrorjac@2a01:4f8:c17:87f8::) (Ping timeout: 268 seconds)
16:42:23 × tcard quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Ping timeout: 268 seconds)
16:42:23 × benjaminl quits (~benjaminl@user/benjaminl) (Ping timeout: 268 seconds)
16:42:23 × haveo quits (~weechat@pacamara.iuwt.fr) (Ping timeout: 268 seconds)
16:42:23 × xsarnik quits (xsarnik@lounge.fi.muni.cz) (Ping timeout: 268 seconds)
16:42:23 × jakzale quits (6291399afa@user/jakzale) (Ping timeout: 268 seconds)
16:42:23 × abrar quits (~abrar@pool-72-78-199-167.phlapa.fios.verizon.net) (Ping timeout: 268 seconds)
16:42:23 × Reinhilde quits (ellenor@2604:180:f2::bc) (Ping timeout: 268 seconds)
16:42:23 × Benzi-Junior quits (~BenziJuni@232-148-209-31.dynamic.hringdu.is) (Read error: Connection reset by peer)
16:42:23 × Batzy quits (~quassel@user/batzy) (Ping timeout: 268 seconds)
16:42:23 × TonyStone quits (~TonyStone@user/TonyStone) (Ping timeout: 268 seconds)
16:42:23 × michalz quits (~michalz@185.246.207.205) (Ping timeout: 268 seconds)
16:42:23 × sefidel quits (~sefidel@user/sefidel) (Ping timeout: 268 seconds)
16:42:23 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 268 seconds)
16:42:23 × tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 268 seconds)
16:42:23 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 268 seconds)
16:42:23 × hc quits (~hc@mail.hce.li) (Ping timeout: 268 seconds)
16:42:23 × mqlnv quits (~tripod@47.154.25.27) (Ping timeout: 268 seconds)
16:42:23 × Etabeta1 quits (~Etabeta1@user/meow/Etabeta1) (Ping timeout: 268 seconds)
16:42:23 × Vajb quits (~Vajb@n6jbiwem1nfkemdydn4-1.v6.elisa-mobile.fi) (Ping timeout: 268 seconds)
16:42:23 × chessai quits (sid225296@id-225296.lymington.irccloud.com) (Ping timeout: 268 seconds)
16:42:23 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Ping timeout: 268 seconds)
16:42:23 × mzg quits (mzg@abusers.hu) (Ping timeout: 268 seconds)
16:42:23 × fr33domlover quits (~fr33domlo@towards.vision) (Ping timeout: 268 seconds)
16:42:23 × conjunctive quits (sid433686@id-433686.helmsley.irccloud.com) (Ping timeout: 268 seconds)
16:42:24 × cayley5 quits (~cayley5@user/phileasfogg) (Ping timeout: 268 seconds)
16:42:24 × sam113101 quits (~sam@24.157.253.231) (Ping timeout: 268 seconds)
16:42:24 dmj`_ is now known as dmj`
16:42:24 tomboy65 joins (~tomboy64@user/tomboy64)
16:42:24 TonyStone31 joins (~TonyStone@user/TonyStone)
16:42:24 benkard is now known as mulk
16:42:24 fr33domlover1 is now known as fr33domlover
16:42:24 integral_ is now known as integral
16:42:24 chessai_ is now known as chessai
16:42:27 terrorjack0 is now known as terrorjack
16:42:27 sefidel_ is now known as sefidel
16:42:27 Etabeta11 is now known as Etabeta1
16:42:27 cayley52 is now known as cayley5
16:42:27 conjunctive_ is now known as conjunctive
16:42:28 jakzale_ is now known as jakzale
16:42:28 sam113102 is now known as sam113101
16:42:35 henrytill_ is now known as henrytill
16:42:41 pointlessslippe- joins (~pointless@212.82.82.3)
16:42:44 brettgilio_ is now known as brettgilio
16:42:52 shreyasminocha_ is now known as shreyasminocha
16:42:57 abrar joins (~abrar@pool-72-78-199-167.phlapa.fios.verizon.net)
16:43:02 tititest joins (~tititest@ip-037-201-154-121.um10.pools.vodafone-ip.de)
16:43:06 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 252 seconds)
16:43:11 mqlnv joins (~tripod@47.154.25.27)
16:43:14 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
16:46:29 cyphase joins (~cyphase@user/cyphase)
16:47:00 zfnmxt_ is now known as zfnmxt
16:48:12 xsarnik joins (xsarnik@lounge.fi.muni.cz)
16:50:56 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
16:51:31 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
16:52:41 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 4.1.2)
16:56:48 nickiminjaj joins (~nickiminj@user-5-173-222-105.play-internet.pl)
16:56:49 × nickiminjaj quits (~nickiminj@user-5-173-222-105.play-internet.pl) (Changing host)
16:56:49 nickiminjaj joins (~nickiminj@user/laxhh)
17:00:40 gaff joins (~gaff@49.207.229.138)
17:03:35 <gaff> For `newtype StateP s a = StateP { runStateP :: s -> (a, s) }` we have `fmap f (StateP g) = StateP $ \s -> let (a, s') = g s in (f a, s') ` How would you now reduce `fmap h (StateP $ \s -> let (a, s') = g s in (f a, s') )`?
17:06:37 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
17:06:39 nickiminjaj_ joins (~nickiminj@188.146.120.15)
17:06:39 × nickiminjaj_ quits (~nickiminj@188.146.120.15) (Changing host)
17:06:39 nickiminjaj_ joins (~nickiminj@user/laxhh)
17:06:50 euleritian joins (~euleritia@dynamic-176-006-178-051.176.6.pool.telefonica.de)
17:07:11 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
17:07:49 <gaff> Appreciate any help.
17:08:16 × nickiminjaj quits (~nickiminj@user/laxhh) (Ping timeout: 255 seconds)
17:08:32 × n8n quits (n8n@user/n8n) (Quit: WeeChat 4.2.1)
17:09:06 × zetef quits (~quassel@5.2.182.99) (Remote host closed the connection)
17:09:35 × yeitrafferin quits (~user@2a04:4540:720b:ad00:4e6c:5428:51b2:1598) (Quit: Leaving)
17:11:30 × nickiminjaj_ quits (~nickiminj@user/laxhh) (Client Quit)
17:13:12 nickiminjaj joins (~nickiminj@user/laxhh)
17:13:44 <ncf> is that fmap (h . f) (StateP g) ?
17:14:35 <ncf> the equation tells you how to reduce it, but you might need to alpha-rename a few things to make sense of it
17:14:54 <gaff> ncf: yes, indeed. I am just try to verify the equivalence.
17:15:26 <ski> fmap h (StateP \s -> let (a,s') = g s in (f a,s'))
17:15:31 × nickiminjaj quits (~nickiminj@user/laxhh) (Client Quit)
17:15:32 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Remote host closed the connection)
17:15:41 <ski> = fmap h (StateP \s -> let (b,s'') = g s in (f b,s''))
17:15:49 <gaff> i am tying to check if fmap (h . f) = fmap h . fmap f for this functor.
17:16:03 <mauke> isn't that free?
17:16:04 tri joins (~tri@ool-18bbef1a.static.optonline.net)
17:16:18 <ski> = StateP \s -> let (b,s'') = (\s -> let (a,s') = g s in (f a,s')) s in (h b, s'')
17:16:34 <ski> = StateP \s -> let (b,s'') = let (a,s') = g s in (f a,s') in (h b,s'')
17:16:52 <ski> = StateP \s -> let (a,s') = g s; (b,s'') = (f a,s') in (h b,s'')
17:17:06 <ski> = StateP \s -> let (a,s') = g s; b = f a; s'' = s' in (h b,s'')
17:17:21 <ski> = StateP \s -> let (a,s') = g s in (h (f a),s')
17:17:31 <ski> = StateP \s -> let (a,s') = g s in ((h . f) a,s')
17:17:42 <ski> = fmap (h . f) (StateP g)
17:17:51 <mauke> nice
17:18:02 <c_wraith> mauke: you're right. it's free as long as you have fmap id x === x
17:18:05 <gaff> ski: thank you, that indeed is a nice proof.
17:18:30 nickiminjaj joins (~nickiminj@user/laxhh)
17:19:30 × igemnace quits (~ian@user/igemnace) (Quit: WeeChat 4.2.1)
17:21:46 × nickiminjaj quits (~nickiminj@user/laxhh) (Client Quit)
17:23:36 mud joins (~mud@user/kadoban)
17:26:19 target_i joins (~target_i@user/target-i/x-6023099)
17:29:59 nickiminjaj joins (~nickiminj@188.146.120.15)
17:29:59 × nickiminjaj quits (~nickiminj@188.146.120.15) (Changing host)
17:29:59 nickiminjaj joins (~nickiminj@user/laxhh)
17:33:32 × nickiminjaj quits (~nickiminj@user/laxhh) (Client Quit)
17:33:58 Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
17:37:22 × gaff quits (~gaff@49.207.229.138) ()
17:39:19 × byte quits (~byte@149.28.222.189) (Ping timeout: 268 seconds)
17:39:38 byte joins (~byte@149.28.222.189)
17:40:44 × mei quits (~mei@user/mei) (Remote host closed the connection)
17:41:18 mei joins (~mei@user/mei)
18:02:31 × puke quits (~puke@user/puke) (Quit: puke)
18:05:29 puke joins (~puke@user/puke)
18:05:51 × puke quits (~puke@user/puke) (Max SendQ exceeded)
18:07:07 puke joins (~puke@user/puke)
18:19:28 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
18:23:48 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds)
18:26:18 szkl joins (uid110435@id-110435.uxbridge.irccloud.com)
18:28:08 docrdoac^ joins (~cd@c-98-242-74-66.hsd1.ga.comcast.net)
18:40:35 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:42:37 × vnogueira_ quits (~vnogueira@user/vnogueira) (Remote host closed the connection)
18:43:48 vnogueira joins (~vnogueira@user/vnogueira)
18:48:07 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:55:19 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Remote host closed the connection)
18:55:54 tri joins (~tri@ool-18bbef1a.static.optonline.net)
19:02:21 <Inst> did you know that Javascript effectively has where clauses?
19:02:57 <Inst> arguing with Julians as to why they need a where macro, and am now reading on their metaprogramming ability to stuff it in
19:03:21 <Inst> but JS has where clauses by setting up a where comment, then defining a bunch of functions to hoist
19:03:28 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:04:05 <Inst> JS also has true immutable data, courtesy the "variables are 0-arity functions" of Paul Hudak
19:04:36 × todi quits (~todi@p57803331.dip0.t-ipconnect.de) (Quit: ZNC - https://znc.in)
19:04:38 <Inst> the keyword isn't const, it's function ;)
19:04:55 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
19:05:24 <Inst> actually, it doesn't, ugh
19:07:59 <dolio> What's the where clause in JS?
19:11:24 y04nn joins (~username@2a03:1b20:8:f011::e10d)
19:11:50 <Inst> hoisted functions
19:12:01 <Inst> just comment where to pretend it's Haskell
19:12:04 <Inst> then hoist away!
19:12:23 <Inst> julia doesn't get this, and tbh idg why lispers act confused when you tell them about where clauses
19:21:57 <sm> what's the big deal about where clauses Inst ?
19:22:24 <sm> asking for a friend!
19:22:46 <Inst> allows more declarative presentation of code, i.e, separate specification from implementation
19:23:45 <sm> how are they significantly different from what you can do in other languages, eg multiple top level var/function definitions, or local definitions within functions ?
19:23:58 <Inst> I mean the priority matters
19:24:12 <Inst> I've been trying to get the line override method in Julia, it seems as though they don't have one
19:24:22 <Inst> the only way around it is to use operators at the end of the line
19:24:37 <Inst> vs start of the line in Haskell, and the Julian method is not only ugly, it makes it easier to not see the operator correctly
19:24:42 <sm> I don't understand what's so special about where
19:25:10 <c_wraith> This all sounds like the equivalent between let and lambda.
19:25:36 <Inst> in Excel or Lisp?
19:25:52 <c_wraith> (if you ignore HM explicitly treating them differently in terms of type generalization)
19:26:53 <Inst> i fell in love with haskell not because it was functional, but because it was declarative and code was comprehensible, whereas it felt to me like imperative code was gobbledygook, but that was more reflective of my maturity level at the time
19:27:12 × qqq quits (~qqq@92.43.167.61) (Ping timeout: 268 seconds)
19:27:58 <c_wraith> I don't treat Haskell as a declarative language. I depend on operational semantics allowing me to ensure performance properties. This does sort of tie me to GHC, but I can live with that.
19:28:11 <Inst> but i mean it matters that you read the specification first, not the implementation, and it's nice to be able to write a specification of your function / procedure before you go and implement it, it encourages top-down design
19:28:46 qqq joins (~qqq@92.43.167.73)
19:28:59 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
19:29:03 <c_wraith> that's... types.
19:29:58 <c_wraith> I do like Haskell's type system. It allows you to say a lot in a way that's both precise and concise.
19:30:08 <c_wraith> And even checked by the compiler!
19:30:30 × euleritian quits (~euleritia@dynamic-176-006-178-051.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
19:30:47 euleritian joins (~euleritia@77.22.252.56)
19:30:50 <Inst> i'm curious, a serious complaint about Haskell's types is that they're not easily extensible, which is a plus for correctness, but a minus for extensibility
19:31:04 <Inst> (regarding types vs where, they both serve the same goal, no?)
19:31:13 <Inst> how do you deal with that?
19:31:42 AlexNoo_ joins (~AlexNoo@178.34.160.182)
19:32:00 <c_wraith> functions.
19:32:10 × Square quits (~Square4@user/square) (Ping timeout: 256 seconds)
19:32:22 <c_wraith> I mean, that's a bit glib, and a reference to that one meme... but it's also true.
19:32:30 Square2 joins (~Square@user/square)
19:32:45 <c_wraith> I pass around functions for doing things. You want to change the behavior, use a different function.
19:33:54 <c_wraith> It only works if you can foresee extension points, but that's the same as everything else.
19:34:47 <Inst> custom HOF? or record of functions?
19:35:13 × AlexZenon quits (~alzenon@94.233.240.255) (Ping timeout: 268 seconds)
19:35:27 × AlexNoo quits (~AlexNoo@94.233.240.255) (Ping timeout: 260 seconds)
19:35:29 <c_wraith> I've been working with commonmark for doing markdown -> html conversions recently. I wanted to add syntax highlighting to its code block conversions, and it was annoyingly awkward because commonmark uses a class.
19:36:00 <c_wraith> I had to define a new data type wrapping the existing one that *almost* did what I want, and add trivial wrappers for all of the generation stuff except code blocks.
19:36:08 nickiminjaj joins (~nickiminj@188.146.120.15)
19:36:08 × nickiminjaj quits (~nickiminj@188.146.120.15) (Changing host)
19:36:08 nickiminjaj joins (~nickiminj@user/laxhh)
19:36:22 <c_wraith> If it was just a record of functions, it would have been a trivial change.
19:36:51 <c_wraith> Instead there was a big pile of hoops to jump through because someone thought that just because classes exist, they should be used.
19:37:35 nickiminjaj_ joins (~nickiminj@user-5-173-222-109.play-internet.pl)
19:37:35 × nickiminjaj_ quits (~nickiminj@user-5-173-222-109.play-internet.pl) (Changing host)
19:37:35 nickiminjaj_ joins (~nickiminj@user/laxhh)
19:37:37 <sm> a too-rigid implementation
19:37:40 AlexNoo_ is now known as AlexNoo
19:37:47 × qqq quits (~qqq@92.43.167.73) (Ping timeout: 264 seconds)
19:38:42 qqq joins (~qqq@92.43.167.61)
19:39:05 <dolio> I'm not sure there are any declarative languages, really.
19:39:25 <dolio> At least, not for operational stuff.
19:39:27 <c_wraith> SQL when you aren't give the ability to make hints for the query planner?
19:39:54 <dolio> No, SQL is a lie in that respect.
19:40:39 <dolio> In practice you need to worry about the query plans, and changing your 'declarative' query in various ways probably will affect the query plan.
19:41:00 AlexZenon joins (~alzenon@178.34.160.182)
19:41:01 <c_wraith> sure, but those changes are voodoo. :)
19:41:11 <dolio> Yeah, that makes it bad. :)
19:41:31 × nickiminjaj quits (~nickiminj@user/laxhh) (Ping timeout: 260 seconds)
19:41:39 <c_wraith> in general, I do think declarative <-> operational is an axis. And for anything where you care about performance, you need to be towards the operational end.
19:42:14 <dolio> Layout of a GUI or something can probably be declarative.
19:43:08 <c_wraith> hopefully the layout is something that can be run relatively rarely :)
19:43:56 <geekosaur> window resizes, mostly
19:45:06 <geekosaur> that said, I think declarative UI libs read the declarative layout and convert it to an operational layout based on the specific UI they're written for
19:55:07 philopsos joins (~caecilius@user/philopsos)
20:00:54 masterbuilder joins (~quassel@user/masterbuilder)
20:02:08 <Inst> also tbh c_wraith: part of the point of where clauses is that traditionally, where clauses are type-inferred ;)
20:06:52 × TheCoffeMaker_ quits (~TheCoffeM@200.114.213.75) (Read error: Connection reset by peer)
20:07:02 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
20:09:36 ft joins (~ft@p4fc2a20e.dip0.t-ipconnect.de)
20:14:27 Square joins (~Square4@user/square)
20:17:07 × euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.)
20:17:27 × Square2 quits (~Square@user/square) (Ping timeout: 260 seconds)
20:17:50 euphores joins (~SASL_euph@user/euphores)
20:17:56 × euphores quits (~SASL_euph@user/euphores) (Client Quit)
20:18:17 <c_wraith> if you mean let-generalization, that's an intentional choice in the Hindley-Milner algorithm, not a fundamental truth.
20:26:13 × Inst quits (~Inst@user/Inst) (Read error: Connection reset by peer)
20:26:22 Inst joins (~Inst@user/Inst)
20:28:40 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
20:30:54 euphores joins (~SASL_euph@user/euphores)
20:36:52 × alexherbo2 quits (~alexherbo@2a02-8440-3141-1d70-d510-781c-6cfb-b61d.rev.sfr.net) (Remote host closed the connection)
20:38:50 × tititest quits (~tititest@ip-037-201-154-121.um10.pools.vodafone-ip.de) (Quit: Leaving.)
20:43:44 × akegalj quits (~akegalj@141-136-147-171.dsl.iskon.hr) (Quit: leaving)
20:46:33 × euphores quits (~SASL_euph@user/euphores) (Ping timeout: 272 seconds)
20:52:55 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
20:58:22 julie_pilgrim joins (~julie_pil@user/julie-pilgrim/x-1240752)
21:01:22 × Eoco quits (~ian@128.101.131.218) (Ping timeout: 255 seconds)
21:06:14 Eoco joins (~ian@128.101.131.218)
21:10:55 × robbert-vdh quits (~robbert@robbertvanderhelm.nl) (Quit: WeeChat 3.4)
21:12:55 <Inst> c_wraith: i mean, traditionally, people drop off the type signatures in where clauses :)
21:13:52 × qqq quits (~qqq@92.43.167.61) (Remote host closed the connection)
21:14:18 × Eoco quits (~ian@128.101.131.218) (Remote host closed the connection)
21:14:47 ski often includes them, for non-trivial local functions
21:15:13 × benjaminl_ quits (~benjaminl@2601:1c0:8480:d580:223:24ff:fe66:4370) (Remote host closed the connection)
21:15:29 benjaminl joins (~benjaminl@user/benjaminl)
21:16:00 Eoco joins (~ian@128.101.131.218)
21:16:08 <geekosaur> I got over that (omitting type signatures in `let`/`where`) because it made debugging unexpected type mismatches painful
21:18:44 <c_wraith> a lot of times types in nested definitions aren't expressible without ScopedTypeVariables
21:20:14 <c_wraith> that cured me of trying to put unnecessary types on local definitions.
21:20:47 <geekosaur> tbh I've rarely run into that
21:22:09 Nixkernal joins (~Nixkernal@240.17.194.178.dynamic.wline.res.cust.swisscom.ch)
21:23:16 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:23:45 × Eoco quits (~ian@128.101.131.218) (Remote host closed the connection)
21:24:26 Eoco joins (~ian@128.101.131.218)
21:28:21 × julie_pilgrim quits (~julie_pil@user/julie-pilgrim/x-1240752) (Remote host closed the connection)
21:31:15 × michalz_ quits (~michalz@185.246.207.193) (Quit: ZNC 1.8.2 - https://znc.in)
21:31:15 × nickiminjaj_ quits (~nickiminj@user/laxhh) (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:31:25 stratl joins (~user@p200300f91701bc00227df96d735a3a19.dip0.t-ipconnect.de)
21:32:57 × target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving)
21:33:08 finsternis joins (~X@23.226.237.192)
21:33:33 × Eoco quits (~ian@128.101.131.218) (Remote host closed the connection)
21:34:09 Eoco joins (~ian@128.101.131.218)
21:35:41 × stratl quits (~user@p200300f91701bc00227df96d735a3a19.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
21:35:53 julie_pilgrim joins (~julie_pil@user/julie-pilgrim/x-1240752)
21:37:53 quintasan joins (~quassel@quintasan.pl)
21:38:44 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
21:39:35 sadie_ joins (~sadie@c-76-155-235-153.hsd1.co.comcast.net)
21:43:27 × Eoco quits (~ian@128.101.131.218) (Remote host closed the connection)
21:44:48 nickiminjaj joins (~nickiminj@188.146.120.15)
21:44:49 × nickiminjaj quits (~nickiminj@188.146.120.15) (Changing host)
21:44:49 nickiminjaj joins (~nickiminj@user/laxhh)
21:44:52 haskellbridge <s​m> uses type sigs for anything non trivial
21:49:52 Eoco joins (~ian@128.101.131.218)
21:56:52 × nickiminjaj quits (~nickiminj@user/laxhh) (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:59:51 × Eoco quits (~ian@128.101.131.218) (Remote host closed the connection)
22:01:16 <ski> (was that a `/me' ?)
22:01:53 nickiminjaj joins (~nickiminj@188.146.120.15)
22:01:53 × nickiminjaj quits (~nickiminj@188.146.120.15) (Changing host)
22:01:53 nickiminjaj joins (~nickiminj@user/laxhh)
22:04:25 <sm> it was, ski
22:05:50 × gmg quits (~user@user/gehmehgeh) (Ping timeout: 260 seconds)
22:06:47 gmg joins (~user@user/gehmehgeh)
22:08:03 Eoco joins (~ian@128.101.131.218)
22:08:27 × nickiminjaj quits (~nickiminj@user/laxhh) (Quit: Textual IRC Client: www.textualapp.com)
22:08:29 × gmg quits (~user@user/gehmehgeh) (Client Quit)
22:10:56 × Pixi quits (~Pixi@user/pixi) (Ping timeout: 268 seconds)
22:14:52 × Eoco quits (~ian@128.101.131.218) (Remote host closed the connection)
22:17:48 Eoco joins (~ian@128.101.131.218)
22:24:28 × Eoco quits (~ian@128.101.131.218) (Remote host closed the connection)
22:30:30 Pixi joins (~Pixi@user/pixi)
22:33:22 × julie_pilgrim quits (~julie_pil@user/julie-pilgrim/x-1240752) (Remote host closed the connection)
22:35:13 Eoco joins (~ian@128.101.131.218)
22:36:21 <Inst> yeah i stuff them in there too, especially once type errors pop up
22:39:57 <Inst> wait, are free monads still horribly unperformant?
22:40:15 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 260 seconds)
22:40:25 <Inst> like, every time you semicolon, you add another layer of free monads?
22:44:23 × Eoco quits (~ian@128.101.131.218) (Remote host closed the connection)
22:44:40 Eoco joins (~ian@128.101.131.218)
22:48:41 Sgeo joins (~Sgeo@user/sgeo)
22:48:46 × califax quits (~califax@user/califx) (Ping timeout: 260 seconds)
22:48:46 califax_ joins (~califax@user/califx)
22:50:02 califax_ is now known as califax
22:53:23 × sp1ff quits (~user@c-24-21-45-157.hsd1.wa.comcast.net) (Read error: Connection reset by peer)
22:53:37 sp1ff joins (~user@c-24-21-45-157.hsd1.wa.comcast.net)
22:54:56 helle joins (~helle@user/meow/Helle)
22:55:21 noumenon joins (~noumenon@113.51-175-156.customer.lyse.net)
23:00:54 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 260 seconds)
23:02:09 chexum joins (~quassel@gateway/tor-sasl/chexum)
23:03:46 × Square quits (~Square4@user/square) (Ping timeout: 246 seconds)
23:05:29 × philopsos quits (~caecilius@user/philopsos) (Quit: Lost terminal)
23:08:11 rekahsoft joins (~rekahsoft@bras-base-orllon1103w-grc-13-184-148-6-204.dsl.bell.ca)
23:08:41 × docrdoac^ quits (~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Remote host closed the connection)
23:11:14 × Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
23:13:41 × sus quits (1b7af6299f@user/zeromomentum) (Ping timeout: 240 seconds)
23:14:05 × lane quits (809450f172@2a03:6000:1812:100::1300) (Ping timeout: 240 seconds)
23:14:37 × wryish quits (~wryish@2605:4c40:119:efa3:0:727d:19eb:1) (Quit: %blank%)
23:14:54 wryish joins (~wryish@2605:4c40:119:efa3:0:727d:19eb:1)
23:15:18 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
23:16:29 × mei quits (~mei@user/mei) (Remote host closed the connection)
23:16:36 lane joins (809450f172@2a03:6000:1812:100::1300)
23:16:37 sus joins (1b7af6299f@user/zeromomentum)
23:18:29 × JoelMcCracken quits (5ea8252fbb@2a03:6000:1812:100::10e3) (Ping timeout: 240 seconds)
23:18:55 mei joins (~mei@user/mei)
23:18:59 JoelMcCracken joins (5ea8252fbb@2a03:6000:1812:100::10e3)
23:20:09 × hgolden quits (~hgolden@2603-8000-9d00-3ed1-2678-8497-aa5c-7fa9.res6.spectrum.com) (Remote host closed the connection)
23:20:30 hgolden joins (~hgolden@2603-8000-9d00-3ed1-2678-8497-aa5c-7fa9.res6.spectrum.com)
23:20:31 <Inst> wait
23:20:46 <Inst> if you rebuild free monads on a binary tree structure, don't you just end up with... hell, you don't even need binary trees
23:20:50 <Inst> you literally end up with a lisp
23:20:51 <Inst> hahahahaa
23:23:12 <Inst> nah, you don't even need that, can just define an AST via data declaration
23:24:08 × migas97 quits (~migas@static.140.65.63.178.clients.your-server.de) (Quit: The Lounge - https://thelounge.github.io)
23:24:28 migas97 joins (~migas@static.140.65.63.178.clients.your-server.de)
23:25:41 × barrucadu quits (~barrucadu@carcosa.barrucadu.co.uk) (Ping timeout: 240 seconds)
23:25:58 <geekosaur> yes?
23:26:10 × acidjnk_new quits (~acidjnk@p200300d6e714dc9124c21742e07a126c.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
23:26:12 × sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 260 seconds)
23:26:52 barrucadu joins (~barrucadu@carcosa.barrucadu.co.uk)
23:37:59 × kimiamania quits (~671c7418@user/kimiamania) (Quit: Ping timeout (120 seconds))
23:38:23 kimiamania joins (~671c7418@user/kimiamania)
23:38:59 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
23:39:16 img joins (~img@user/img)
23:47:11 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
23:47:28 <Inst> sorry ;_;
23:47:55 <Inst> just had occasion to share this link, and was going over it
23:47:56 <Inst> https://fumieval.hatenablog.com/entry/20121111/1352624678
23:48:49 <Inst> i guess i'm at the stage where i finally learned to love monads
23:49:50 <Inst> i'm thinking about LogicT / ListT right now, and I'm wondering if people use the nondeterminism to manage concurrency
23:50:56 <geekosaur> it's not that kind of nondeterminism. it's not so much "randomness" as "all possible solutions, unbiased"
23:51:10 <Inst> i hated the term nondeterminism
23:51:15 <Inst> choice, i guess
23:51:46 × shoggouth quits (uid607148@user/shoggouth) (Quit: Connection closed for inactivity)
23:51:48 <Inst> but LogicT / List monad is very impressive because StateT / ReaderT / WriterT really only give you back capabilities you had in imperative programming, although WriterT is interesting
23:52:02 <geekosaur> (but, being a computer, there si in fact internal order, you just don't have access to that order in your code)
23:52:26 <Inst> LogicT / List monad is closer to logic programming--it's offering something totally different
23:52:34 <geekosaur> yes
23:53:01 <Inst> and even working with only [], you can still use sequenceA to spin up a bunch of threads with forkIO or some safer concurrency abstractions
23:53:20 <Inst> mapConcurrently springs to mind
23:54:38 <geekosaur> have you looked at Control.Parallel.Strategies?
23:54:39 × arahael quits (~arahael@119-18-1-21.771201.syd.nbn.aussiebb.net) (Ping timeout: 272 seconds)
23:55:04 × ftweedal quits (~ftweedal@159.196.12.92) (Ping timeout: 255 seconds)
23:55:11 <Inst> But that also explains the weird model SPJ et al did in Verse
23:55:28 <Inst> it's basically just a ListT / LogicT eDSL
23:55:55 <Inst> you mean usingIO?
23:56:48 ftweedal joins (~ftweedal@159.196.12.92)
23:57:21 <geekosaur> actually I meant the non-IO ones
23:57:30 <geekosaur> parallelism without forkIO
23:58:12 pavonia joins (~user@user/siracusa)
23:58:53 <Inst> I can use the spark parallelism with difficulty
23:59:10 <Inst> but I was more thinking about concurrency controlled in LogicT
23:59:17 <Inst> because that is still absolutely mind-blowing
23:59:44 <geekosaur> tbh I've thought more about concurrency via Cont than via LogicT

All times are in UTC on 2024-04-08.