2021/10/29

2021-10-29 00:00:32 +0200akspecs__(~akspecs@user/akspecs) (Read error: Connection reset by peer)
2021-10-29 00:05:11 +0200yrlnry(~mjd@pool-74-109-22-90.phlapa.fios.verizon.net) (Ping timeout: 264 seconds)
2021-10-29 00:06:14 +0200akspecs__(~akspecs@136-24-214-166.cab.webpass.net)
2021-10-29 00:06:14 +0200akspecs__(~akspecs@136-24-214-166.cab.webpass.net) (Changing host)
2021-10-29 00:06:14 +0200akspecs__(~akspecs@user/akspecs)
2021-10-29 00:11:34 +0200zincy_(~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e) (Remote host closed the connection)
2021-10-29 00:11:40 +0200ubert(~Thunderbi@178.115.57.1.wireless.dyn.drei.com) (Remote host closed the connection)
2021-10-29 00:12:24 +0200MarsIronPI(~MarsIronP@166.205.153.209)
2021-10-29 00:17:10 +0200MarsIronPI(~MarsIronP@166.205.153.209) (Ping timeout: 260 seconds)
2021-10-29 00:18:43 +0200a6a45081-2b83(~aditya@2601:249:4300:1296:88ec:cc73:84d4:1507)
2021-10-29 00:21:20 +0200bongobrown(~bongobrow@cpe-76-185-215-2.satx.res.rr.com) (Ping timeout: 260 seconds)
2021-10-29 00:22:49 +0200Xatenev(~xatenev@user/xatenev)
2021-10-29 00:23:02 +0200Xatenev(~xatenev@user/xatenev) ()
2021-10-29 00:23:28 +0200michalz(~michalz@185.246.204.109) (Remote host closed the connection)
2021-10-29 00:24:23 +0200fusion86(~fusion@2a02-a44c-e6e5-1-2dd3-247f-2e63-c814.fixed6.kpn.net) (Quit: Leaving)
2021-10-29 00:24:51 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-10-29 00:27:47 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-10-29 00:27:48 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-10-29 00:27:48 +0200wroathe(~wroathe@user/wroathe)
2021-10-29 00:30:02 +0200Cajun(~Cajun@user/cajun) (Quit: Client closed)
2021-10-29 00:32:46 +0200johnjay(~pi@192.142.100.50) (Quit: WeeChat 2.3)
2021-10-29 00:34:35 +0200jess(~jess@libera/staff/jess)
2021-10-29 00:35:12 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2021-10-29 00:37:12 +0200gdd(~gdd@129.199.146.230) (Ping timeout: 260 seconds)
2021-10-29 00:38:48 +0200johnjay(~pi@192.142.100.50)
2021-10-29 00:39:00 +0200gdd(~gdd@129.199.146.230)
2021-10-29 00:40:45 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3)
2021-10-29 00:45:16 +0200Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-10-29 00:45:32 +0200max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Remote host closed the connection)
2021-10-29 00:46:04 +0200 <aegon> hmm, i'm having my first sequencing problem with laziness. i have this block which calls a 2 handlers in succession within do notation
2021-10-29 00:46:14 +0200 <aegon> and for whatever reason the 2nd statement is happening first even with $! in there
2021-10-29 00:46:21 +0200 <aegon> pastebinning it up
2021-10-29 00:49:26 +0200 <aegon> rcs found"
2021-10-29 00:49:37 +0200 <aegon> https://paste.tomsmeding.com/vLXi3kp7
2021-10-29 00:50:52 +0200 <monochrom> This leaves open multiple questions.
2021-10-29 00:50:53 +0200burnsidesLlama(~burnsides@dhcp168-026.wadham.ox.ac.uk) (Remote host closed the connection)
2021-10-29 00:51:19 +0200 <monochrom> Is "ByteString" from Data.ByteString or is it from Data.ByteString.Lazy?
2021-10-29 00:51:25 +0200burnsidesLlama(~burnsides@dhcp168-026.wadham.ox.ac.uk)
2021-10-29 00:51:55 +0200 <monochrom> What's an actual h that does what you observed?
2021-10-29 00:52:10 +0200Skyfire(~pyon@user/pyon) (Quit: WeeChat 3.3)
2021-10-29 00:52:27 +0200 <monochrom> What actual observation caused you to conclude your conclusion?
2021-10-29 00:52:42 +0200 <aegon> monochrom: i filled that in as a dummy to prevent overcomplicating things, the actually sigs of onSync takes a tuple of a bunch of stuff, and on sequence takes a Seq.Seq of tuples
2021-10-29 00:52:55 +0200 <aegon> both these callbacks mutate an MVar
2021-10-29 00:53:01 +0200 <aegon> i put print statemetns inside the moutation and on either end of it
2021-10-29 00:53:07 +0200 <monochrom> If you use Debug.Trace and insert a few of those traceMfoo thingies, does that still corroborate with your story?
2021-10-29 00:53:15 +0200 <aegon> and when the first statement is called, the 2nd statement is already in the mutex and processed in its handler
2021-10-29 00:53:45 +0200 <aegon> never done, how would iuse traceMfoo stuffs
2021-10-29 00:53:57 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-10-29 00:54:12 +0200 <aegon> i've been using print which might be further confusing things, but then again the observation of the data in the MVar within the modifyMVar_ corroberates the 2nds happening first
2021-10-29 00:54:23 +0200 <aegon> at least at the mutex taking level
2021-10-29 00:54:44 +0200 <aegon> let me try to get a fuller picture on paste
2021-10-29 00:55:23 +0200brainfreeze(~brainfree@2a03:1b20:4:f011::20d)
2021-10-29 00:55:51 +0200burnsidesLlama(~burnsides@dhcp168-026.wadham.ox.ac.uk) (Ping timeout: 260 seconds)
2021-10-29 00:56:37 +0200 <aegon> hmm, trying to simplify stuff down to printing but this happens in different threads so thats not a great source of truth either
2021-10-29 00:56:37 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-29 00:57:02 +0200 <monochrom> See this is why I am unconvinced until I see an actual h.
2021-10-29 00:57:11 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-29 00:57:40 +0200brainfreeze(~brainfree@2a03:1b20:4:f011::20d) (Client Quit)
2021-10-29 00:57:54 +0200 <monochrom> If the onSync field contains a "forkIO", no one should be surprised by "unexpected" order.
2021-10-29 00:58:51 +0200 <monochrom> The ultimate scientific question is how do you know you have ruled out all other explanations.
2021-10-29 00:58:52 +0200 <aegon> well ok so the full picture is a parentThread creates a bunch of handlers and shoves a mutex into them for state accumulation
2021-10-29 00:59:03 +0200 <aegon> it then forkIO's a child, which calls those handlers in a given order
2021-10-29 00:59:29 +0200 <aegon> the parent thread for whatever reason processes the handler calls out of order from what i can tell by observig what data has been put into the state at the time the mutex is aquired by each handler
2021-10-29 01:00:21 +0200 <monochrom> How do you know that your observation is not explained by interleaving two handlers?
2021-10-29 01:00:36 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds)
2021-10-29 01:00:47 +0200 <aegon> the flow should be, package handlers -> fork (fork process calles handlerA once then handlerB 3 times and enters its recursive loop)
2021-10-29 01:01:10 +0200 <aegon> i would think that the parent handler A being called from the child thread should finish before handler b is called from the child thread
2021-10-29 01:01:27 +0200 <aegon> given the first thing they both do is grab a mutex to the state wit modifyMVar_
2021-10-29 01:01:41 +0200 <aegon> but what i'm seeing is that handlerb processes 3 times, then handler a processes
2021-10-29 01:02:06 +0200 <aegon> but the call doesn't return till its completely done with processing, theres no forking within the call
2021-10-29 01:02:51 +0200 <aegon> so even if a child thread calls A, B, B, B, which actually isn't happening between threads afaik now that i'm saying it out load, its invoking those continuations on the child thread
2021-10-29 01:03:30 +0200 <aegon> hmm :\ i'm gonna try to delete a bonch of extra stuff and git a minimum reproducable thing going
2021-10-29 01:03:55 +0200 <aegon> i was hoping someone would see the convention and be like, AH! thats laziness cauing it like this *tadaaa* :P
2021-10-29 01:04:09 +0200 <monochrom> But IO is not lazy.
2021-10-29 01:04:39 +0200jespada(~jespada@181.28.253.200)
2021-10-29 01:04:46 +0200 <monochrom> If you say so much as "do { print 1; print 2 }" you will never observe out-of-order.
2021-10-29 01:04:51 +0200 <aegon> yeah its wierd, a do block should definitely be sequenced, which is why i came runing here
2021-10-29 01:05:10 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-10-29 01:05:11 +0200 <aegon> afaik this code is taking do {print 1: print 2} and then at runtime going, print 2; print 1
2021-10-29 01:05:51 +0200 <monochrom> But if you do "do {forkIO f; forkIO f} where f = do { print 1; print 2}", you may misinterpret an outcome as out-of-order.
2021-10-29 01:05:51 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-29 01:06:03 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-29 01:06:29 +0200 <monochrom> For example an outcome could be "1, 2, 1, 2" and then you fixate on the middle "2, 1" and call it out-of-order.
2021-10-29 01:06:54 +0200 <aegon> its \p1 p2 -> forkIO (do {p1; p2) and thats resulting in p2 being called before p1
2021-10-29 01:07:15 +0200 <aegon> but i'm definite missing somethign because that isn't how that should work
2021-10-29 01:08:10 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:90ed:9a10:88ac:8dca) (Remote host closed the connection)
2021-10-29 01:08:13 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-10-29 01:09:12 +0200 <sm> just confirming, the paste looks ok
2021-10-29 01:09:25 +0200 <sm> more realistic paste needed
2021-10-29 01:10:39 +0200 <aegon> more realistic paste in progress, changing the callbacks to incrimenting an int in a MVar and printing it
2021-10-29 01:11:23 +0200 <sm> or, well.. hmm.. does it make a difference if you `print <<=` before each action ? Forcing it to evaluate
2021-10-29 01:11:50 +0200 <sm> no, never mnid
2021-10-29 01:12:32 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-29 01:13:00 +0200 <aegon> hmm, this stuff is all happening pretty deep in this code from the entrypoint, i'm not sure how best to easily whip up an repro outside of the context
2021-10-29 01:13:13 +0200lavaman(~lavaman@98.38.249.169)
2021-10-29 01:13:43 +0200 <sm> sharing a repro is hard, maybe just simplifying your code in place is easier
2021-10-29 01:13:46 +0200alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-10-29 01:14:06 +0200alzgh(~alzgh@user/alzgh)
2021-10-29 01:19:21 +0200brettgilio(~brettgili@x-node.gq) (Quit: Leaving...)
2021-10-29 01:20:29 +0200acidjnk_new(~acidjnk@p200300d0c7238d76b9ac87bdf676c186.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2021-10-29 01:22:06 +0200brettgilio(~brettgili@x-node.gq)
2021-10-29 01:22:11 +0200 <aegon> here's a closer version but i'm worried i missed something in that simplification
2021-10-29 01:22:14 +0200 <aegon> https://paste.tomsmeding.com/S2jOauqM
2021-10-29 01:22:48 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-10-29 01:23:42 +0200 <aegon> it might need some liberal $ thrown in places to compile but thats the calling order and the mvar behavior
2021-10-29 01:24:46 +0200Skyfire(~pyon@user/pyon)
2021-10-29 01:26:03 +0200betelgeuse(~betelgeus@94-225-47-8.access.telenet.be) (Quit: The Lounge - https://thelounge.chat)
2021-10-29 01:26:10 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-10-29 01:26:21 +0200Inst__(~Inst@2601:6c4:4080:3f80:258f:7b54:f932:b719) (Ping timeout: 245 seconds)
2021-10-29 01:27:36 +0200myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 260 seconds)
2021-10-29 01:28:22 +0200 <Axman6> what's modyfMVar?
2021-10-29 01:28:39 +0200 <aegon> modifyMVar_
2021-10-29 01:29:24 +0200 <aegon> typed by hands that are having synchronization issues
2021-10-29 01:29:48 +0200 <sm> I find that not easy to understand. If it's still happening, I'd simplify more (list the actions explicitly in a do sequence)
2021-10-29 01:29:55 +0200 <aegon> and dropping charaters
2021-10-29 01:30:30 +0200 <Axman6> @hoogle modifyMVar_
2021-10-29 01:30:31 +0200 <lambdabot> Control.Concurrent.MVar modifyMVar_ :: MVar a -> (a -> IO a) -> IO ()
2021-10-29 01:30:31 +0200 <lambdabot> GHC.Conc.Sync modifyMVar_ :: MVar a -> (a -> IO a) -> IO ()
2021-10-29 01:30:31 +0200 <lambdabot> Control.Concurrent.MVar.Lifted modifyMVar_ :: (MonadBaseControl IO m) => MVar a -> (a -> m a) -> m ()
2021-10-29 01:30:44 +0200 <Axman6> so you're missing a lambda there?
2021-10-29 01:30:57 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:90ed:9a10:88ac:8dca)
2021-10-29 01:31:19 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2021-10-29 01:33:07 +0200 <Axman6> FYI, $! isn't going to change the ordering that things are executed in IO, it jujst forced the IO expression itself, it doesn't have anything to do with evaluation
2021-10-29 01:33:22 +0200 <Axman6> uh, misread, ignore me
2021-10-29 01:34:11 +0200 <Axman6> I'm struggling to follow this because this code doesn't type check
2021-10-29 01:34:42 +0200 <Axman6> but ifyou are getting the behaviour you're claiming, the IO monad is fundamentally broken, and that seem unlikely
2021-10-29 01:34:49 +0200jespada(~jespada@181.28.253.200) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-10-29 01:36:13 +0200 <aegon> yeah this is really wierd, there must be something else going on here. the only way i can get the intended behavior is to do it twice
2021-10-29 01:36:28 +0200 <aegon> the first call to the first handler always gets evaluated first
2021-10-29 01:36:32 +0200 <aegon> regaurdless of do call order
2021-10-29 01:36:53 +0200 <Axman6> do you have actual code you can share?
2021-10-29 01:36:59 +0200 <sm> my 2c: this is much too complicated, simplify further
2021-10-29 01:37:32 +0200 <monochrom> Ugh Sink vs Sync
2021-10-29 01:37:45 +0200 <sm> at some point it'll stop having the unexpected sequence
2021-10-29 01:38:10 +0200 <Axman6> then copy and paste that code and never question it again, like a true software engineer
2021-10-29 01:38:30 +0200 <aegon> balls, i cant share the whole thing, :| i'm gonna try ripping things out till it sequences as expected, this might be too big of a rabbit hole to pick at, maybe just taking these sequences out of this funciton might change things? don't know i'm going to try nonesense changes till i see different behavior
2021-10-29 01:39:30 +0200 <aegon> if you don't Sync your Sinks and pass your Sources via Sinks before sending via sources, well ... your Sunk
2021-10-29 01:39:42 +0200 <aegon> i see no problems with these names :P
2021-10-29 01:39:59 +0200euandreh(~euandreh@2804:14c:33:9fe5:ece1:b35e:c9b0:1b9e) (Ping timeout: 264 seconds)
2021-10-29 01:40:27 +0200 <aegon> ok, i'll shut up for a while and try stepping along the routes you guys have laid out, hopefully back with some sort of finding in a bit
2021-10-29 01:40:32 +0200 <monochrom> No problem, except it looks like one of them is a typo of the other.
2021-10-29 01:41:41 +0200 <Axman6> IMO, I would add some debug logging... everywhere and see what is actually being executed where
2021-10-29 01:41:51 +0200 <aegon> do be clear, i was being sarcastic, your absolutely right the names are confusing
2021-10-29 01:42:08 +0200 <aegon> Axman6: i'm using print but i don't think print order is garunteed between threads right? is there a better tool for this type of stuff?
2021-10-29 01:42:13 +0200pavonia(~user@user/siracusa)
2021-10-29 01:42:33 +0200 <aegon> print is just putStrLn . show right?
2021-10-29 01:42:46 +0200 <Axman6> no it's not but that shouldn't be affecting what you're claiming since the calls are coming in the same thread
2021-10-29 01:42:50 +0200 <Axman6> yes
2021-10-29 01:43:22 +0200 <monochrom> This is why I raised the "do {forkIO f; forkIO f} where f = do { print 1; print 2}" "1, 2, 1, 2" example.
2021-10-29 01:43:50 +0200 <Axman6> or 1 1 2 , both are totally ok
2021-10-29 01:44:03 +0200 <Axman6> so, give threads ids so you know which thread printed what
2021-10-29 01:44:14 +0200danso(~danso@23-233-111-52.cpe.pppoe.ca)
2021-10-29 01:46:29 +0200xsperry(~xs@user/xsperry)
2021-10-29 01:47:11 +0200Cajun(~Cajun@user/cajun)
2021-10-29 01:47:59 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-10-29 01:47:59 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-10-29 01:47:59 +0200wroathe(~wroathe@user/wroathe)
2021-10-29 01:49:41 +0200 <aegon> oh man :X i'm gonna have egg on my face for a while i think
2021-10-29 01:49:54 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-29 01:49:55 +0200 <sm> stick trace everywhere
2021-10-29 01:50:09 +0200 <sm> always a good move :)
2021-10-29 01:50:15 +0200 <monochrom> I prefer cake or pie.
2021-10-29 01:50:21 +0200 <aegon> no i found it... :|
2021-10-29 01:50:32 +0200 <aegon> i wasn't following the rest of the thread
2021-10-29 01:50:40 +0200 <aegon> later on theres an erronious extra call to sync
2021-10-29 01:50:50 +0200 <aegon> io is working fine, my eyes aren't
2021-10-29 01:51:49 +0200 <aegon> thanks for taking a look at the examples
2021-10-29 01:52:12 +0200aegonputs on the dunce cap for the day
2021-10-29 01:52:50 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2021-10-29 01:52:56 +0200 <sm> sounds like a haskell programmer :)
2021-10-29 01:53:49 +0200mvk(~mvk@2607:fea8:5cc1:300::d3fb)
2021-10-29 01:54:12 +0200ralu(~ralu@static.211.245.203.116.clients.your-server.de) (Quit: Ping timeout (120 seconds))
2021-10-29 01:54:25 +0200ralu(~ralu@static.211.245.203.116.clients.your-server.de)
2021-10-29 01:58:38 +0200burnsidesLlama(~burnsides@dhcp168-026.wadham.ox.ac.uk)
2021-10-29 02:00:39 +0200mc47(~mc47@xmonad/TheMC47) (Quit: Leaving)
2021-10-29 02:05:05 +0200 <aegon> i shouldn't have put any sort of initial set of calls in the same place as creating the other half of the continuations, another tick in my worry bucket about making IO accessable too many places
2021-10-29 02:06:55 +0200terrorjack(~terrorjac@static.3.200.12.49.clients.your-server.de) (Quit: Ping timeout (120 seconds))
2021-10-29 02:07:54 +0200terrorjack(~terrorjac@static.3.200.12.49.clients.your-server.de)
2021-10-29 02:08:07 +0200sprout_(~quassel@2a02:a467:ccd6:1:21d2:19c0:e01b:f66c)
2021-10-29 02:08:22 +0200 <remexre> is there a way to get either tuple syntax or list syntax for hlists?
2021-10-29 02:08:40 +0200sprout(~quassel@2a02:a467:ccd6:1:319c:b1d4:3651:39a5) (Ping timeout: 268 seconds)
2021-10-29 02:09:03 +0200 <remexre> or are hlists "dead" and do people use something else to get generic computations over tuples of unknown length
2021-10-29 02:10:13 +0200 <awpr> you mean make `[5, "hi"]` work as an `HList [Int, String]`? not currently. I've been considering making a GHC plugin that could do that, but it's vaporware and would take substantial work even if I did decide to prioritize it
2021-10-29 02:10:38 +0200 <awpr> I should say, not that I know of
2021-10-29 02:11:02 +0200 <remexre> I guess alternatively-and-isomorphically, is there a good way to get n-ary curried functions?
2021-10-29 02:11:25 +0200dajoer(~david@user/gvx)
2021-10-29 02:11:36 +0200 <remexre> in this case, where each argument has a certain trait, and the final return is polymorphic (but doesn't depend on the arg types)
2021-10-29 02:11:41 +0200 <remexre> er, typeclass*
2021-10-29 02:11:41 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-29 02:11:58 +0200 <remexre> I've been writing Rust for the last couple years instead of Haskell :)
2021-10-29 02:12:01 +0200 <awpr> there's the trick used by `printf` where it always returns a `forall r. FormatResult r => r` at each step, or something to that effect
2021-10-29 02:12:10 +0200 <awpr> sounds like it has some hope of being applicable here
2021-10-29 02:12:23 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-29 02:12:30 +0200 <remexre> I'll take a look at that; is that Text.Printf.printf?
2021-10-29 02:12:52 +0200 <awpr> yeah, s/FormatResult/PrintfType/
2021-10-29 02:13:36 +0200guniberas(~guniberas@42.191.188.121) (Ping timeout: 268 seconds)
2021-10-29 02:13:36 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-29 02:13:57 +0200 <remexre> huh, okay, its approach makes sense, I think
2021-10-29 02:14:01 +0200 <remexre> I'll try that, thanks!
2021-10-29 02:15:31 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-29 02:17:27 +0200Farzad(~FarzadBek@185.131.125.100)
2021-10-29 02:18:59 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-10-29 02:19:17 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 264 seconds)
2021-10-29 02:21:47 +0200Lord_of_Life_Lord_of_Life
2021-10-29 02:23:47 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-10-29 02:29:16 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Ping timeout: 245 seconds)
2021-10-29 02:31:00 +0200sprout_(~quassel@2a02:a467:ccd6:1:21d2:19c0:e01b:f66c) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2021-10-29 02:31:40 +0200sprout(~quassel@2a02:a467:ccd6:1:21d2:19c0:e01b:f66c)
2021-10-29 02:32:08 +0200 <remexre> oh ugh, breaks when the return type is a monad typeclass
2021-10-29 02:32:20 +0200 <remexre> because (a -> m ()) is a monad too
2021-10-29 02:32:31 +0200 <remexre> er
2021-10-29 02:33:17 +0200 <remexre> because typeclass resolution doesn't figure out that really only one instance matches
2021-10-29 02:33:54 +0200 <remexre> between Func f => Func (a -> f) and (Func f, Monad m, a ~ ()) => Func (m a)
2021-10-29 02:37:08 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:90ed:9a10:88ac:8dca) (Remote host closed the connection)
2021-10-29 02:37:55 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-29 02:38:10 +0200lavaman(~lavaman@98.38.249.169)
2021-10-29 02:38:17 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-29 02:39:59 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-29 02:40:08 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-29 02:40:09 +0200 <remexre> oh, right, {-# OVERLAPPING #-} exists
2021-10-29 02:41:33 +0200CannabisIndica(~herb@user/mesaboogie) (Quit: ZNC - https://znc.in)
2021-10-29 02:48:52 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com)
2021-10-29 02:50:48 +0200euandreh(~euandreh@2804:14c:33:9fe5:eba7:95bb:d099:a7d8)
2021-10-29 02:51:40 +0200lbseale(~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
2021-10-29 02:54:27 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:90ed:9a10:88ac:8dca)
2021-10-29 02:55:11 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-10-29 02:55:30 +0200CannibisIndica(~herb@user/mesaboogie)
2021-10-29 02:58:02 +0200bongobrown(~bongobrow@cpe-76-185-215-2.satx.res.rr.com)
2021-10-29 02:59:55 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4) (Ping timeout: 260 seconds)
2021-10-29 03:01:54 +0200kupi(uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-10-29 03:03:48 +0200alx741(~alx741@186.178.109.79) (Quit: alx741)
2021-10-29 03:08:48 +0200lavaman(~lavaman@98.38.249.169)
2021-10-29 03:12:35 +0200d0ku(~d0ku@178.43.15.137.ipv4.supernova.orange.pl) (Ping timeout: 246 seconds)
2021-10-29 03:13:01 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 245 seconds)
2021-10-29 03:13:43 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-10-29 03:14:27 +0200neurocyte0132889(~neurocyte@user/neurocyte) (Ping timeout: 260 seconds)
2021-10-29 03:16:50 +0200mmhat(~mmh@55d4b856.access.ecotel.net) (Ping timeout: 260 seconds)
2021-10-29 03:19:50 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-10-29 03:20:39 +0200MoC_(~moc@user/moc)
2021-10-29 03:21:21 +0200MoC(~moc@user/moc) (Ping timeout: 245 seconds)
2021-10-29 03:23:24 +0200a6a45081-2b83(~aditya@2601:249:4300:1296:88ec:cc73:84d4:1507) (Remote host closed the connection)
2021-10-29 03:30:20 +0200mmhat(~mmh@55d4bea4.access.ecotel.net)
2021-10-29 03:36:45 +0200Farzad(~FarzadBek@185.131.125.100) (Quit: Leaving)
2021-10-29 03:38:26 +0200mmhat(~mmh@55d4bea4.access.ecotel.net) (Ping timeout: 245 seconds)
2021-10-29 03:43:08 +0200alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-10-29 03:45:16 +0200xff0x(~xff0x@2001:1a81:525b:da00:1097:4d57:43e2:986f) (Ping timeout: 260 seconds)
2021-10-29 03:46:26 +0200lavaman(~lavaman@98.38.249.169)
2021-10-29 03:47:01 +0200xff0x(~xff0x@2001:1a81:529e:f300:b22f:69e6:aa77:fd2f)
2021-10-29 03:51:02 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-10-29 03:52:16 +0200alzgh(~alzgh@user/alzgh)
2021-10-29 03:55:19 +0200myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-10-29 04:01:18 +0200ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-10-29 04:03:39 +0200alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-10-29 04:17:23 +0200abrantesasf(~abrantesa@187.36.170.211) (Remote host closed the connection)
2021-10-29 04:18:05 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 260 seconds)
2021-10-29 04:20:43 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-29 04:24:30 +0200bongobrown(~bongobrow@cpe-76-185-215-2.satx.res.rr.com) (Ping timeout: 260 seconds)
2021-10-29 04:25:49 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-10-29 04:25:49 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-10-29 04:25:49 +0200wroathe(~wroathe@user/wroathe)
2021-10-29 04:26:47 +0200fizzsegfaultbuzz(~segfaultf@135-180-0-138.static.sonic.net) (Ping timeout: 260 seconds)
2021-10-29 04:28:12 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-29 04:30:25 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-29 04:30:52 +0200brainfreeze(~brainfree@2a03:1b20:4:f011::20d)
2021-10-29 04:38:47 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 264 seconds)
2021-10-29 04:40:20 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-10-29 04:51:45 +0200mbuf(~Shakthi@171.61.174.60)
2021-10-29 04:54:06 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-10-29 04:54:19 +0200td_(~td@94.134.91.221) (Ping timeout: 260 seconds)
2021-10-29 04:55:57 +0200td_(~td@muedsl-82-207-238-132.citykom.de)
2021-10-29 04:56:00 +0200waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 260 seconds)
2021-10-29 04:57:53 +0200burnsidesLlama(~burnsides@dhcp168-026.wadham.ox.ac.uk) (Remote host closed the connection)
2021-10-29 05:12:26 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
2021-10-29 05:17:22 +0200Guest3764(~fedora@59.98.57.201)
2021-10-29 05:19:06 +0200Guest3764(~fedora@59.98.57.201) (Client Quit)
2021-10-29 05:19:13 +0200zzzonion
2021-10-29 05:26:29 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
2021-10-29 05:26:47 +0200mvk(~mvk@2607:fea8:5cc1:300::d3fb) (Ping timeout: 264 seconds)
2021-10-29 05:29:52 +0200nikshalark(~nikshalar@c-73-110-102-193.hsd1.in.comcast.net)
2021-10-29 05:55:32 +0200bgamari(~bgamari@64.223.157.117)
2021-10-29 05:55:49 +0200bgamari_(~bgamari@64.223.175.225) (Ping timeout: 252 seconds)
2021-10-29 05:56:26 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-10-29 05:58:25 +0200bgamari(~bgamari@64.223.157.117) (Client Quit)
2021-10-29 06:00:56 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4) (Ping timeout: 245 seconds)
2021-10-29 06:02:20 +0200bgamari(~bgamari@64.223.227.106)
2021-10-29 06:10:24 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-29 06:11:02 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-29 06:21:23 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 264 seconds)
2021-10-29 06:23:31 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-10-29 06:23:31 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-10-29 06:23:31 +0200wroathe(~wroathe@user/wroathe)
2021-10-29 06:31:44 +0200v01d4lph4(~v01d4lph4@223.190.95.48)
2021-10-29 06:31:44 +0200v01d4lph4(~v01d4lph4@223.190.95.48) (Changing host)
2021-10-29 06:31:44 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-10-29 06:35:10 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 260 seconds)
2021-10-29 06:38:10 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-10-29 06:43:15 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-10-29 06:50:23 +0200nikshalark(~nikshalar@c-73-110-102-193.hsd1.in.comcast.net) (Quit: Lost terminal)
2021-10-29 06:50:56 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-29 07:00:20 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4) (Ping timeout: 260 seconds)
2021-10-29 07:01:09 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-10-29 07:02:09 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2021-10-29 07:25:06 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-10-29 07:26:41 +0200idnar(sid12240@debian/mithrandi) (Read error: Connection reset by peer)
2021-10-29 07:26:47 +0200gonz___(sid304396@lymington.irccloud.com) (Ping timeout: 264 seconds)
2021-10-29 07:26:47 +0200bw(sid2730@user/betawaffle) (Ping timeout: 264 seconds)
2021-10-29 07:26:47 +0200bjs(sid190364@user/bjs) (Ping timeout: 264 seconds)
2021-10-29 07:26:47 +0200scav(sid309693@helmsley.irccloud.com) (Ping timeout: 264 seconds)
2021-10-29 07:26:47 +0200tnks(sid412124@helmsley.irccloud.com) (Ping timeout: 264 seconds)
2021-10-29 07:26:49 +0200gmc(sid58314@ilkley.irccloud.com) (Read error: Connection reset by peer)
2021-10-29 07:26:50 +0200idnar(sid12240@debian/mithrandi)
2021-10-29 07:26:58 +0200gmc(sid58314@id-58314.ilkley.irccloud.com)
2021-10-29 07:26:59 +0200Guest39(~Guest39@103.142.31.135)
2021-10-29 07:27:06 +0200SanchayanMaity(sid478177@hampstead.irccloud.com) (Read error: Connection reset by peer)
2021-10-29 07:27:07 +0200glowcoil(sid3405@tinside.irccloud.com) (Read error: Connection reset by peer)
2021-10-29 07:27:14 +0200glowcoil(sid3405@id-3405.tinside.irccloud.com)
2021-10-29 07:27:15 +0200SanchayanMaity(sid478177@id-478177.hampstead.irccloud.com)
2021-10-29 07:27:16 +0200scav(sid309693@id-309693.helmsley.irccloud.com)
2021-10-29 07:27:18 +0200bjs(sid190364@user/bjs)
2021-10-29 07:27:23 +0200ysh(sid6017@ilkley.irccloud.com) (Ping timeout: 264 seconds)
2021-10-29 07:27:23 +0200rtpg(sid443069@ilkley.irccloud.com) (Ping timeout: 264 seconds)
2021-10-29 07:27:23 +0200taktoa[c](sid282096@tinside.irccloud.com) (Ping timeout: 264 seconds)
2021-10-29 07:27:51 +0200 <Guest39> When testing a function with HUnit how do I mock the database connection and the query response
2021-10-29 07:27:59 +0200aarchi(sid486183@uxbridge.irccloud.com) (Ping timeout: 264 seconds)
2021-10-29 07:27:59 +0200cbarrett(sid192934@helmsley.irccloud.com) (Ping timeout: 264 seconds)
2021-10-29 07:27:59 +0200lightandlight(sid135476@helmsley.irccloud.com) (Ping timeout: 264 seconds)
2021-10-29 07:27:59 +0200systemfault(sid267009@uxbridge.irccloud.com) (Ping timeout: 264 seconds)
2021-10-29 07:27:59 +0200bbhoss(sid18216@tinside.irccloud.com) (Ping timeout: 264 seconds)
2021-10-29 07:28:16 +0200rtpg(sid443069@id-443069.ilkley.irccloud.com)
2021-10-29 07:28:22 +0200fizzsegfaultbuzz(~segfaultf@135-180-0-138.static.sonic.net)
2021-10-29 07:28:35 +0200alinab(sid468903@helmsley.irccloud.com) (Read error: Connection reset by peer)
2021-10-29 07:28:35 +0200edmundnoble(sid229620@helmsley.irccloud.com) (Ping timeout: 264 seconds)
2021-10-29 07:28:35 +0200ephemient(uid407513@lymington.irccloud.com) (Ping timeout: 264 seconds)
2021-10-29 07:28:40 +0200bbhoss(sid18216@id-18216.tinside.irccloud.com)
2021-10-29 07:28:43 +0200alinab(sid468903@id-468903.helmsley.irccloud.com)
2021-10-29 07:28:48 +0200taktoa[c](sid282096@id-282096.tinside.irccloud.com)
2021-10-29 07:28:49 +0200gonz___(sid304396@id-304396.lymington.irccloud.com)
2021-10-29 07:28:51 +0200Ferdirand(~somebody@2001:4c78:2012:5000::2) (Ping timeout: 245 seconds)
2021-10-29 07:28:59 +0200bw(sid2730@user/betawaffle)
2021-10-29 07:29:04 +0200cbarrett(sid192934@id-192934.helmsley.irccloud.com)
2021-10-29 07:29:10 +0200lightandlight(sid135476@id-135476.helmsley.irccloud.com)
2021-10-29 07:29:12 +0200ysh(sid6017@id-6017.ilkley.irccloud.com)
2021-10-29 07:29:14 +0200Ferdirand(~somebody@2001:4c78:2012:5000::2)
2021-10-29 07:29:15 +0200ephemient(uid407513@id-407513.lymington.irccloud.com)
2021-10-29 07:29:15 +0200edmundnoble(sid229620@id-229620.helmsley.irccloud.com)
2021-10-29 07:29:45 +0200tnks(sid412124@id-412124.helmsley.irccloud.com)
2021-10-29 07:29:47 +0200hamishmack(sid389057@hampstead.irccloud.com) (Ping timeout: 264 seconds)
2021-10-29 07:29:47 +0200awpr(uid446117@lymington.irccloud.com) (Ping timeout: 264 seconds)
2021-10-29 07:30:02 +0200systemfault(sid267009@id-267009.uxbridge.irccloud.com)
2021-10-29 07:30:23 +0200integral(sid296274@user/integral) (Ping timeout: 264 seconds)
2021-10-29 07:30:23 +0200Pent(sid313808@lymington.irccloud.com) (Ping timeout: 264 seconds)
2021-10-29 07:30:44 +0200aarchi(sid486183@id-486183.uxbridge.irccloud.com)
2021-10-29 07:31:20 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4) (Remote host closed the connection)
2021-10-29 07:32:17 +0200awpr(uid446117@id-446117.lymington.irccloud.com)
2021-10-29 07:32:38 +0200 <Axman6> mocking a database cnnection seems difficult. mocking queries to the database seems doable though
2021-10-29 07:32:59 +0200 <Guest39> could you tell me how I can accomplish that
2021-10-29 07:32:59 +0200hamishmack(sid389057@id-389057.hampstead.irccloud.com)
2021-10-29 07:33:10 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-10-29 07:33:10 +0200 <Axman6> it would very much depend on your codebase
2021-10-29 07:33:29 +0200Pent(sid313808@id-313808.lymington.irccloud.com)
2021-10-29 07:33:51 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds)
2021-10-29 07:33:59 +0200jakesyl_(sid56879@hampstead.irccloud.com) (Ping timeout: 264 seconds)
2021-10-29 07:34:59 +0200integral(sid296274@user/integral)
2021-10-29 07:34:59 +0200 <Guest39> well iam just getting started learning so
2021-10-29 07:35:11 +0200 <Guest39> I used postgresql-simple
2021-10-29 07:36:43 +0200obviyus(sid415299@user/obviyus) (Read error: Connection reset by peer)
2021-10-29 07:36:50 +0200 <Axman6> A common way to do this is to define a type class that contains functions which define the interface you need, and then make instances for that type class against the databse and as a mock instance
2021-10-29 07:36:52 +0200obviyus(sid415299@user/obviyus)
2021-10-29 07:38:18 +0200 <Guest39> Understood I then create have mock implementation for everything that iam goingto use from the actual library
2021-10-29 07:38:36 +0200jakesyl_(sid56879@id-56879.hampstead.irccloud.com)
2021-10-29 07:38:45 +0200 <Guest39> but wont the code still be importing the library functions
2021-10-29 07:39:00 +0200 <Guest39> how do i make it use my mock implementation temporarily
2021-10-29 07:39:32 +0200 <Guest39> I mean only while running the test casess
2021-10-29 07:45:00 +0200zebrag(~chris@user/zebrag) (Remote host closed the connection)
2021-10-29 07:47:45 +0200 <Axman6> I haven't read the article, but skimming this looks like it may be a good introduction: https://making.pusher.com/unit-testing-io-in-haskell/
2021-10-29 07:48:51 +0200 <Axman6> maybe this is a better one https://lexi-lambda.github.io/blog/2017/06/29/unit-testing-effectful-haskell-with-monad-mock/
2021-10-29 07:49:42 +0200 <Axman6> this looks pretty cool actually
2021-10-29 07:49:50 +0200fizzsegfaultbuzz(~segfaultf@135-180-0-138.static.sonic.net) (Ping timeout: 260 seconds)
2021-10-29 07:52:07 +0200myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 260 seconds)
2021-10-29 07:55:00 +0200 <Guest39> thank you
2021-10-29 07:55:25 +0200aegon(~mike@174.127.249.180) (Remote host closed the connection)
2021-10-29 07:57:08 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-10-29 07:58:46 +0200phma(~phma@host-67-44-208-16.hnremote.net) (Read error: Connection reset by peer)
2021-10-29 08:02:14 +0200_xor(~xor@72.49.199.147)
2021-10-29 08:02:45 +0200phma(~phma@host-67-44-208-251.hnremote.net)
2021-10-29 08:08:05 +0200Kaiepi(~Kaiepi@156.34.44.192) (Remote host closed the connection)
2021-10-29 08:11:19 +0200sagax(~sagax_nb@user/sagax)
2021-10-29 08:12:36 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 245 seconds)
2021-10-29 08:16:20 +0200jakalx(~jakalx@base.jakalx.net) ()
2021-10-29 08:19:10 +0200max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr)
2021-10-29 08:19:38 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-10-29 08:19:59 +0200Sgeo(~Sgeo@user/sgeo)
2021-10-29 08:29:13 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-10-29 08:29:13 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-10-29 08:29:13 +0200wroathe(~wroathe@user/wroathe)
2021-10-29 08:33:59 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 264 seconds)
2021-10-29 08:34:11 +0200fendor(~fendor@178.165.166.121.wireless.dyn.drei.com) (Read error: Connection reset by peer)
2021-10-29 08:34:16 +0200michalz(~michalz@185.246.204.109)
2021-10-29 08:36:39 +0200fendor(~fendor@178.165.166.121.wireless.dyn.drei.com)
2021-10-29 08:37:58 +0200brainfreeze(~brainfree@2a03:1b20:4:f011::20d) (Remote host closed the connection)
2021-10-29 08:41:18 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-10-29 08:42:06 +0200hololeap(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2021-10-29 08:44:19 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-10-29 08:48:15 +0200Guest39(~Guest39@103.142.31.135) (Quit: Client closed)
2021-10-29 08:49:26 +0200lortabac(~lortabac@atoulouse-256-1-14-70.w92-136.abo.wanadoo.fr)
2021-10-29 08:55:33 +0200lavaman(~lavaman@98.38.249.169)
2021-10-29 08:55:39 +0200jakalx(~jakalx@base.jakalx.net)
2021-10-29 08:57:53 +0200neurocyte0132889(~neurocyte@46.243.81.22)
2021-10-29 08:57:53 +0200neurocyte0132889(~neurocyte@46.243.81.22) (Changing host)
2021-10-29 08:57:53 +0200neurocyte0132889(~neurocyte@user/neurocyte)
2021-10-29 08:57:54 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-29 08:58:32 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-29 08:58:41 +0200comandingo(~drever@ipb218f985.dynamic.kabel-deutschland.de)
2021-10-29 08:59:03 +0200comandingo(~drever@ipb218f985.dynamic.kabel-deutschland.de) (Client Quit)
2021-10-29 09:00:23 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
2021-10-29 09:07:06 +0200gehmehgeh(~user@user/gehmehgeh)
2021-10-29 09:08:05 +0200Kaiepi(~Kaiepi@156.34.44.192)
2021-10-29 09:11:06 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-29 09:19:10 +0200hololeap(~hololeap@user/hololeap)
2021-10-29 09:22:16 +0200bontaq`(~user@ool-45779fe5.dyn.optonline.net)
2021-10-29 09:25:51 +0200MoC_(~moc@user/moc) (Quit: Konversation terminated!)
2021-10-29 09:27:10 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-10-29 09:27:17 +0200MoC(~moc@user/moc)
2021-10-29 09:29:49 +0200hendursaga(~weechat@user/hendursaga) (Remote host closed the connection)
2021-10-29 09:30:37 +0200hendursaga(~weechat@user/hendursaga)
2021-10-29 09:30:53 +0200chele(~chele@user/chele)
2021-10-29 09:31:53 +0200gehmehgeh_(~user@user/gehmehgeh)
2021-10-29 09:32:57 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2021-10-29 09:34:01 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-10-29 09:35:15 +0200zincy_(~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e)
2021-10-29 09:35:24 +0200gehmehgeh(~user@user/gehmehgeh) (Ping timeout: 276 seconds)
2021-10-29 09:38:04 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-10-29 09:38:19 +0200acidjnk_new(~acidjnk@p200300d0c7238d78f12f2b4aa168a17a.dip0.t-ipconnect.de)
2021-10-29 09:39:41 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-10-29 09:43:14 +0200zincy_(~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e) (Remote host closed the connection)
2021-10-29 09:47:55 +0200jumper149(~jumper149@80.240.31.34)
2021-10-29 09:51:58 +0200unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Remote host closed the connection)
2021-10-29 09:58:28 +0200ubert(~Thunderbi@178.165.162.187.wireless.dyn.drei.com)
2021-10-29 10:00:05 +0200Cajun(~Cajun@user/cajun) (Quit: Client closed)
2021-10-29 10:00:45 +0200fendor(~fendor@178.165.166.121.wireless.dyn.drei.com) (Remote host closed the connection)
2021-10-29 10:06:55 +0200hendursa1(~weechat@user/hendursaga)
2021-10-29 10:08:33 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 276 seconds)
2021-10-29 10:12:30 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:90ed:9a10:88ac:8dca) (Remote host closed the connection)
2021-10-29 10:14:38 +0200d0ku(~d0ku@178.43.150.25.ipv4.supernova.orange.pl)
2021-10-29 10:16:46 +0200hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-10-29 10:16:54 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Read error: Connection reset by peer)
2021-10-29 10:17:38 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-10-29 10:18:09 +0200hololeap(~hololeap@user/hololeap)
2021-10-29 10:20:51 +0200bontaq`bontaq
2021-10-29 10:27:16 +0200phma(~phma@host-67-44-208-251.hnremote.net) (Read error: Connection reset by peer)
2021-10-29 10:28:32 +0200phma(~phma@host-67-44-208-63.hnremote.net)
2021-10-29 10:32:37 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-10-29 10:32:58 +0200vpan(~0@212.117.1.172)
2021-10-29 10:35:18 +0200cfricke(~cfricke@user/cfricke)
2021-10-29 10:38:20 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 258 seconds)
2021-10-29 10:40:42 +0200alzgh(~alzgh@user/alzgh)
2021-10-29 10:40:52 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-10-29 10:42:53 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-10-29 11:07:01 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2021-10-29 11:11:26 +0200peterhil(~peterhil@mobile-access-5672f1-161.dhcp.inet.fi)
2021-10-29 11:12:07 +0200rond_(~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438)
2021-10-29 11:12:54 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:90ed:9a10:88ac:8dca)
2021-10-29 11:17:47 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:90ed:9a10:88ac:8dca) (Ping timeout: 264 seconds)
2021-10-29 11:19:15 +0200jumper149(~jumper149@80.240.31.34) (Ping timeout: 260 seconds)
2021-10-29 11:19:59 +0200jumper149(~jumper149@80.240.31.34)
2021-10-29 11:21:15 +0200mmhat(~mmh@55d4be4b.access.ecotel.net)
2021-10-29 11:22:22 +0200gehmehgeh_gehmehgeh
2021-10-29 11:23:04 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-10-29 11:25:15 +0200LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao) (Ping timeout: 276 seconds)
2021-10-29 11:25:16 +0200poljar(~poljar@93-139-113-226.adsl.net.t-com.hr) (Ping timeout: 252 seconds)
2021-10-29 11:25:57 +0200LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao)
2021-10-29 11:26:05 +0200MoC(~moc@user/moc) (Quit: Konversation terminated!)
2021-10-29 11:26:57 +0200shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-10-29 11:27:13 +0200poljar(~poljar@78-3-31-140.adsl.net.t-com.hr)
2021-10-29 11:38:29 +0200peterhil(~peterhil@mobile-access-5672f1-161.dhcp.inet.fi) (Ping timeout: 264 seconds)
2021-10-29 11:42:33 +0200peterhil(~peterhil@mobile-access-5672f1-161.dhcp.inet.fi)
2021-10-29 11:44:10 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-10-29 11:45:12 +0200alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-10-29 11:45:32 +0200alzgh(~alzgh@user/alzgh)
2021-10-29 11:57:59 +0200lortabac(~lortabac@atoulouse-256-1-14-70.w92-136.abo.wanadoo.fr) (Ping timeout: 264 seconds)
2021-10-29 12:02:11 +0200peterhil(~peterhil@mobile-access-5672f1-161.dhcp.inet.fi) (Ping timeout: 264 seconds)
2021-10-29 12:11:17 +0200lortabac(~lortabac@atoulouse-256-1-14-70.w92-136.abo.wanadoo.fr)
2021-10-29 12:12:08 +0200__monty__(~toonn@user/toonn)
2021-10-29 12:12:58 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4) (Remote host closed the connection)
2021-10-29 12:16:04 +0200wonko(~wjc@user/wonko)
2021-10-29 12:17:53 +0200gehmehgeh(~user@user/gehmehgeh) (Remote host closed the connection)
2021-10-29 12:18:42 +0200gehmehgeh(~user@user/gehmehgeh)
2021-10-29 12:21:19 +0200jjrol(~jjrol@n122-104-58-147.sun4.vic.optusnet.com.au)
2021-10-29 12:22:21 +0200jjrol(~jjrol@n122-104-58-147.sun4.vic.optusnet.com.au) ()
2021-10-29 12:24:32 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-10-29 12:35:47 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-10-29 12:36:05 +0200acidjnk_new(~acidjnk@p200300d0c7238d78f12f2b4aa168a17a.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2021-10-29 12:36:31 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-29 12:39:36 +0200johnjay(~pi@192.142.100.50) (Ping timeout: 260 seconds)
2021-10-29 12:42:05 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-10-29 12:42:22 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-29 12:45:31 +0200dcl^(~dcl@wsip-98-188-242-6.mc.at.cox.net)
2021-10-29 12:46:22 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 258 seconds)
2021-10-29 12:47:36 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-10-29 12:48:01 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-29 12:48:23 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 264 seconds)
2021-10-29 12:53:47 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-10-29 12:54:00 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-29 12:55:56 +0200ubert(~Thunderbi@178.165.162.187.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
2021-10-29 12:56:25 +0200Cajun(~Cajun@user/cajun)
2021-10-29 12:57:19 +0200lavaman(~lavaman@98.38.249.169)
2021-10-29 13:02:00 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 260 seconds)
2021-10-29 13:03:02 +0200faultline(~christian@nat-eduroam-01.scc.kit.edu) (Ping timeout: 246 seconds)
2021-10-29 13:03:46 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-10-29 13:03:52 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-10-29 13:05:09 +0200img(~img@user/img)
2021-10-29 13:05:26 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-29 13:12:48 +0200AlexNoo_(~AlexNoo@178.34.163.209)
2021-10-29 13:14:35 +0200Alex_test(~al_test@178.34.150.219) (Ping timeout: 260 seconds)
2021-10-29 13:15:05 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-10-29 13:15:32 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.3)
2021-10-29 13:15:49 +0200AlexNoo_(~AlexNoo@178.34.163.209) (Client Quit)
2021-10-29 13:16:00 +0200AlexZenon(~alzenon@178.34.150.219) (Ping timeout: 260 seconds)
2021-10-29 13:16:03 +0200AlexNoo_(~AlexNoo@178.34.163.209)
2021-10-29 13:16:16 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-10-29 13:16:35 +0200AlexNoo(~AlexNoo@178.34.150.219) (Ping timeout: 264 seconds)
2021-10-29 13:16:48 +0200AlexZenon(~alzenon@178.34.163.209)
2021-10-29 13:16:49 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-29 13:16:59 +0200Alex_test(~al_test@178.34.163.209)
2021-10-29 13:17:31 +0200ubert(~Thunderbi@178.165.162.187.wireless.dyn.drei.com)
2021-10-29 13:17:50 +0200AlexNoo_AlexNoo
2021-10-29 13:19:16 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds)
2021-10-29 13:19:19 +0200talismanick(~talismani@76.78.246.111)
2021-10-29 13:20:01 +0200 <talismanick> Realized I didn't have Haskell yet on my computer, so I curl'd ghcup, ran it, and got... an error?
2021-10-29 13:20:10 +0200 <maerwald> talismanick: which one
2021-10-29 13:20:51 +0200 <talismanick> maerwald: Version of ghcup? Whichever's latest from the website - I didn't pipe directly to sh, but into a script which I then executed
2021-10-29 13:21:06 +0200 <maerwald> which error
2021-10-29 13:21:25 +0200 <talismanick> I looked at config.log in /tmp, and it was calling GCC with flags which don't exist, like -V
2021-10-29 13:21:58 +0200 <maerwald> that's not ghcup, that's the GHC configure script
2021-10-29 13:22:01 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-10-29 13:22:14 +0200 <maerwald> so it failed during installing the bindist?
2021-10-29 13:22:32 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-29 13:22:43 +0200 <talismanick> yeah
2021-10-29 13:22:57 +0200 <maerwald> can you reproduce the error when running configure?
2021-10-29 13:23:25 +0200 <talismanick> maerwald: Correct. I tried it 2x.
2021-10-29 13:23:42 +0200 <maerwald> what's the exact error then?
2021-10-29 13:24:01 +0200 <maerwald> not all errors in config.log are fatal
2021-10-29 13:24:48 +0200 <talismanick> https://0x0.st/-nTw.log
2021-10-29 13:25:15 +0200 <talismanick> maerwald: Yeah, but it does list 2 errors as "fatal"
2021-10-29 13:25:46 +0200 <maerwald> it's just probing your gcc for cli flags afaik
2021-10-29 13:26:04 +0200 <maerwald> error: cannot run C compiled programs.
2021-10-29 13:26:07 +0200 <maerwald> this looks relevant
2021-10-29 13:26:59 +0200 <tomsmeding> in particular that "permission denied"
2021-10-29 13:27:13 +0200 <tomsmeding> is your /tmp on a partition which does not allow executing executables?
2021-10-29 13:27:13 +0200 <talismanick> I don't remember running it with sudo
2021-10-29 13:27:26 +0200tomsmedingthinks that's the noexec mount option, but might remember incorrectly
2021-10-29 13:28:03 +0200 <talismanick> tomsmeding: Well, I remember setting tmp with "nosuid" in /etc/fstab not long ago
2021-10-29 13:28:09 +0200 <talismanick> Here's the whole line: tmpfs /tmp tmpfs defaults,nosuid,nodev 0 0
2021-10-29 13:28:13 +0200 <maerwald> talismanick: run the script with TMPDIR=$HOME/.ghcup-tmp or so set
2021-10-29 13:28:49 +0200 <maerwald> I believe cabal itself will bail out badly too if it can't execute binaries in /tmp
2021-10-29 13:28:51 +0200johnjay(~pi@192.142.100.50)
2021-10-29 13:29:08 +0200 <tomsmeding> talismanick: try what maerwald suggests; if that does work, 'mount | grep /tmp' and see what flags are there (I have nosuid too, works fine)
2021-10-29 13:29:15 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-10-29 13:30:37 +0200img(~img@user/img)
2021-10-29 13:31:11 +0200 <talismanick> tomsmeding: Good call - there is indeed a noexec flag set
2021-10-29 13:31:18 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-10-29 13:31:29 +0200 <tomsmeding> no idea how that might end up there, but that's probably the issue here
2021-10-29 13:31:43 +0200 <maerwald> it's an odd choice
2021-10-29 13:31:54 +0200 <maerwald> I don't see that improving security
2021-10-29 13:32:12 +0200 <talismanick> tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noexec,noatime,size=6291456k,inode64)
2021-10-29 13:32:38 +0200 <talismanick> I don't remember ever writing that explicitly - could it be that btrfs put it there?
2021-10-29 13:32:38 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-10-29 13:32:51 +0200dcl^(~dcl@wsip-98-188-242-6.mc.at.cox.net) (Remote host closed the connection)
2021-10-29 13:33:00 +0200 <maerwald> at any rate, check out https://www.haskell.org/ghcup/guide/#env-variables
2021-10-29 13:33:23 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-10-29 13:33:32 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-29 13:35:06 +0200 <talismanick> maerwald: I think I've seen that at some point - I have the XDG option set in ~/.bash_profile already
2021-10-29 13:35:13 +0200 <hpc> it stops a lot of lazy malware - /tmp is one of those places every user needs to write to, so it's a good place to drop the next stage of an attack after you have disk access
2021-10-29 13:36:14 +0200 <maerwald> malware?
2021-10-29 13:36:20 +0200 <maerwald> like ghcup? :D
2021-10-29 13:36:40 +0200 <hpc> like php :D
2021-10-29 13:36:51 +0200 <talismanick> write and compile hello_world.c => "Windows detected malware and deleted it"
2021-10-29 13:39:44 +0200dsrt^(~dsrt@wsip-98-188-242-6.mc.at.cox.net)
2021-10-29 13:40:02 +0200rond_(~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Quit: Client closed)
2021-10-29 13:44:25 +0200 <bontaq> lmao
2021-10-29 13:45:29 +0200 <talismanick> Anyways, I remounted /tmp with "exec" in the args, and it works fine now
2021-10-29 13:46:22 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-10-29 13:48:46 +0200tomsmedingwonders why a tmpfs has noatime set -- that's for increasing performance due to not performing additional non-sequential writes for each file update, right? But tmpfs is an in-memory file system, so that shouldn't matter much
2021-10-29 13:49:37 +0200 <hpc> atime is access time?
2021-10-29 13:49:43 +0200 <hpc> it probably improves read performance enough to be worth it
2021-10-29 13:49:46 +0200 <geekosaur> tmpfs is more complicated than that iirc. in particular it can use otherwise free swap space
2021-10-29 13:50:18 +0200 <tomsmeding> ah
2021-10-29 13:50:20 +0200 <talismanick> hpc: Don't ask me, I don't know why. I posted the tmpfs line in /etc/fstab, which is roughly what you'd expect
2021-10-29 13:50:28 +0200zincy_(~zincy@host86-181-60-139.range86-181.btcentralplus.com)
2021-10-29 13:50:38 +0200 <tomsmeding> talismanick: hpc responded to me I think :p
2021-10-29 13:50:48 +0200 <talismanick> oh, duh
2021-10-29 13:50:50 +0200 <talismanick> tired
2021-10-29 13:50:56 +0200peterhil(~peterhil@mobile-access-5672f1-161.dhcp.inet.fi)
2021-10-29 13:51:21 +0200oxide(~lambda@user/oxide)
2021-10-29 13:53:03 +0200 <hpc> :P
2021-10-29 13:59:20 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-10-29 13:59:29 +0200max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Ping timeout: 264 seconds)
2021-10-29 13:59:35 +0200JimL(~quassel@89-162-2-132.fiber.signal.no) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2021-10-29 13:59:54 +0200JimL(~quassel@89-162-2-132.fiber.signal.no)
2021-10-29 14:00:27 +0200JimL(~quassel@89-162-2-132.fiber.signal.no) (Client Quit)
2021-10-29 14:00:45 +0200JimL(~quassel@89-162-2-132.fiber.signal.no)
2021-10-29 14:04:55 +0200guniberas(~guniberas@42.191.188.121)
2021-10-29 14:06:33 +0200bongobrown(~bongobrow@cpe-76-185-215-2.satx.res.rr.com)
2021-10-29 14:19:59 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Quit: Leaving)
2021-10-29 14:21:11 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-10-29 14:24:41 +0200peterhil(~peterhil@mobile-access-5672f1-161.dhcp.inet.fi) (Ping timeout: 264 seconds)
2021-10-29 14:27:39 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-10-29 14:31:22 +0200cfricke(~cfricke@user/cfricke)
2021-10-29 14:31:27 +0200zincy_(~zincy@host86-181-60-139.range86-181.btcentralplus.com) (Remote host closed the connection)
2021-10-29 14:32:03 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-10-29 14:36:04 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-10-29 14:37:27 +0200img(~img@user/img)
2021-10-29 14:38:56 +0200CiaoSen(~Jura@p200300c95730dd002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-10-29 14:42:45 +0200dsrt^(~dsrt@wsip-98-188-242-6.mc.at.cox.net) (Remote host closed the connection)
2021-10-29 14:44:40 +0200peterhil(~peterhil@mobile-access-5672f1-161.dhcp.inet.fi)
2021-10-29 14:56:41 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-10-29 14:56:56 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-10-29 14:57:07 +0200lavaman(~lavaman@98.38.249.169)
2021-10-29 14:58:37 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-10-29 14:58:59 +0200Vajb(~Vajb@n8vwdu04eps78g521-2.v6.elisa-mobile.fi)
2021-10-29 15:01:55 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 260 seconds)
2021-10-29 15:05:47 +0200peterhil(~peterhil@mobile-access-5672f1-161.dhcp.inet.fi) (Ping timeout: 264 seconds)
2021-10-29 15:06:58 +0200 <maerwald> I can't coerce if the target data constructor is not in scope?
2021-10-29 15:07:26 +0200 <merijn> maerwald: You mean newtype constructor, presumably? And correct
2021-10-29 15:07:35 +0200 <maerwald> yes
2021-10-29 15:07:39 +0200peterhil(~peterhil@mobile-access-5672f1-161.dhcp.inet.fi)
2021-10-29 15:08:05 +0200 <merijn> Can't coerce without visible constructor (to allow abstract datatypes that can't be coerced)
2021-10-29 15:08:21 +0200 <maerwald> is there a hack to make it work?
2021-10-29 15:08:27 +0200 <merijn> unsafeCoerce? :p
2021-10-29 15:09:05 +0200hpc(~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 260 seconds)
2021-10-29 15:10:53 +0200hpc(~juzz@ip98-169-35-13.dc.dc.cox.net)
2021-10-29 15:11:02 +0200kn07_(~kn07_@86.121.23.168)
2021-10-29 15:12:07 +0200 <maerwald> well, that was easy
2021-10-29 15:12:22 +0200 <maerwald> packages not exposing internal modules are annoying
2021-10-29 15:14:42 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds)
2021-10-29 15:15:33 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-10-29 15:15:39 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-10-29 15:16:01 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-10-29 15:17:53 +0200 <Tisoxin> There aren't any laws for the Alternative type class, are there?
2021-10-29 15:18:19 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2021-10-29 15:19:27 +0200CiaoSen(~Jura@p200300c95730dd002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Quit: CiaoSen)
2021-10-29 15:20:14 +0200yrlnry(~mjd@pool-74-109-22-90.phlapa.fios.verizon.net)
2021-10-29 15:23:09 +0200hendursa1(~weechat@user/hendursaga) (Ping timeout: 276 seconds)
2021-10-29 15:23:30 +0200 <Tisoxin> nvm
2021-10-29 15:24:57 +0200hendursa1(~weechat@user/hendursaga)
2021-10-29 15:27:40 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-10-29 15:28:19 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2021-10-29 15:36:21 +0200jumper149(~jumper149@80.240.31.34) (Quit: WeeChat 3.2)
2021-10-29 15:37:17 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-29 15:38:29 +0200shriekingnoise(~shrieking@186.137.144.80)
2021-10-29 15:38:30 +0200MQ-17J(~MQ-17J@8.6.144.203)
2021-10-29 15:38:44 +0200amazigh(~amirouche@user/amirouche) (WeeChat 2.8)
2021-10-29 15:39:17 +0200fendor(~fendor@178.115.69.86.wireless.dyn.drei.com)
2021-10-29 15:39:50 +0200 <lortabac> Tisoxin: that's a good question, I would say it should have the same laws as Monoid, but perhaps different laws are also possible and no agreement has been reached
2021-10-29 15:40:11 +0200wonko(~wjc@user/wonko) (Ping timeout: 246 seconds)
2021-10-29 15:41:00 +0200 <lortabac> it would be interesting to read the discussions that led to the absence of laws in the documentation
2021-10-29 15:42:16 +0200 <lortabac> maybe, given the superclass constraint, the Applicative laws are enough?
2021-10-29 15:43:40 +0200 <merijn> Alternative laws are associativity + identity
2021-10-29 15:43:42 +0200 <merijn> So same as monoid
2021-10-29 15:43:51 +0200 <merijn> That part is uncontroversial, afaik
2021-10-29 15:44:02 +0200 <merijn> The controversy is the relation between Alternative/MonadPlus
2021-10-29 15:44:08 +0200 <maerwald> anyone tried GHC under wine?
2021-10-29 15:44:28 +0200 <lortabac> merijn: but why aren't they mentioned in the documentation?
2021-10-29 15:44:29 +0200 <maerwald> I'm getting tired of coding inside a windows VM
2021-10-29 15:45:28 +0200 <merijn> lortabac: They are? "A monoid on applicative functors." and empty says "The identity of <|>" and <|> says "An associative binary operation"
2021-10-29 15:45:38 +0200gehmehgeh(~user@user/gehmehgeh) (Remote host closed the connection)
2021-10-29 15:46:07 +0200 <merijn> lortabac: The real controversy is mzero/mplus
2021-10-29 15:46:23 +0200gehmehgeh(~user@user/gehmehgeh)
2021-10-29 15:46:33 +0200 <merijn> lortabac: Specifically the docs say: "v >> mzero = mzero" but does that mean the effects of 'v' happened or not?
2021-10-29 15:46:55 +0200 <lortabac> merijn: right, I was looking for an explicit list of laws as the other classes
2021-10-29 15:47:25 +0200 <merijn> lortabac: Yeah, I recall that existing in the past (but maybe I imagined it?), should be easy for someone to add that, though
2021-10-29 15:48:31 +0200Kaiepi(~Kaiepi@156.34.44.192) (Remote host closed the connection)
2021-10-29 15:49:16 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Quit: restart)
2021-10-29 15:50:31 +0200 <geekosaur> might check the Typeclassopedia
2021-10-29 15:51:02 +0200 <geekosaur> although if it's there then someone should really add it to the class docs
2021-10-29 15:51:47 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-29 15:52:51 +0200 <lortabac> I'm reading the Typeclassopedia, it explains the problem well
2021-10-29 15:56:29 +0200peterhil(~peterhil@mobile-access-5672f1-161.dhcp.inet.fi) (Ping timeout: 264 seconds)
2021-10-29 15:58:40 +0200ubert(~Thunderbi@178.165.162.187.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
2021-10-29 16:00:34 +0200peterhil(~peterhil@mobile-access-5672f1-161.dhcp.inet.fi)
2021-10-29 16:00:59 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3)
2021-10-29 16:04:00 +0200MQ-17J(~MQ-17J@8.6.144.203) (Ping timeout: 260 seconds)
2021-10-29 16:07:49 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-29 16:09:32 +0200lortabac(~lortabac@atoulouse-256-1-14-70.w92-136.abo.wanadoo.fr) (Quit: WeeChat 2.8)
2021-10-29 16:12:16 +0200acidjnk_new(~acidjnk@p200300d0c7238d78f12f2b4aa168a17a.dip0.t-ipconnect.de)
2021-10-29 16:13:08 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-10-29 16:17:28 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:90ed:9a10:88ac:8dca)
2021-10-29 16:21:46 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:90ed:9a10:88ac:8dca) (Ping timeout: 245 seconds)
2021-10-29 16:22:59 +0200faultline(~christian@193.27.14.21)
2021-10-29 16:24:32 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.3)
2021-10-29 16:25:16 +0200 <Tisoxin> <merijn> "lortabac: Specifically the..." <- i stumpled upon this controvery due to megaparsecs ParsecT: https://hackage.haskell.org/package/megaparsec-9.2.0/docs/Text-Megaparsec.html#t:ParsecT
2021-10-29 16:27:20 +0200 <merijn> Well, it's not a law in the docs, because people can't agree on it :p
2021-10-29 16:27:30 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Quit: relog)
2021-10-29 16:27:57 +0200 <Tisoxin> yeah
2021-10-29 16:30:48 +0200zer0bitz(~zer0bitz@dsl-hkibng31-54fae3-116.dhcp.inet.fi)
2021-10-29 16:32:42 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-29 16:36:53 +0200 <adamCS> maerwald: Thanks again for all the help yesterday! Using the ByteString functions as a Streamly unfold ends up 3 times faster than Text.hGetline. I can see from all your fine tuned inline pragmas that there's some subtlety to inlining well for streamly. Any place you would go to read/learn about that? I'm onto to optimizing another bit that I would like to fuse as nicely as possible...
2021-10-29 16:37:57 +0200 <maerwald> adamCS: https://github.com/composewell/streamly/blob/master/docs/optimizing.md
2021-10-29 16:38:53 +0200 <maerwald> what do you mean with "ByteString functions as Streamly unfold"? Did you use streamly-bytestring with the elemIndex?
2021-10-29 16:39:21 +0200 <adamCS> No. Just used your function to feed Streamly.Unfold.unfoldr
2021-10-29 16:39:23 +0200Sgeo(~Sgeo@user/sgeo)
2021-10-29 16:39:24 +0200 <adamCS> more or less
2021-10-29 16:39:56 +0200 <maerwald> https://hackage.haskell.org/package/streamly-0.8.0/docs/Streamly-Prelude.html#v:unfoldr
2021-10-29 16:39:59 +0200 <maerwald> that way?
2021-10-29 16:40:40 +0200 <maerwald> I still feel it's kinda a hack
2021-10-29 16:40:52 +0200 <maerwald> Because we're relying on lazy bytestring
2021-10-29 16:41:00 +0200 <adamCS> https://gist.github.com/adamConnerSax/f115bb26a15e597d1199d42af2645568
2021-10-29 16:41:42 +0200 <adamCS> Sure. I'm just trying to make a thing faster though, so it's a win. 10 times faster than Pipes using Pipes.Text and feeding Pipes via that same function didn't speed that up much. Which is confusing.
2021-10-29 16:41:50 +0200 <maerwald> yeah, but we're not using streamly to read the file now, which is sad
2021-10-29 16:42:33 +0200 <maerwald> although we could: https://hackage.haskell.org/package/streamly-bytestring-0.1.3/docs/Streamly-External-ByteString-La…
2021-10-29 16:42:44 +0200peterhil(~peterhil@mobile-access-5672f1-161.dhcp.inet.fi) (Ping timeout: 260 seconds)
2021-10-29 16:42:48 +0200 <merijn> adamCS: I mean, bytestring being faster than Text is kinda obvious, though? You save a lot of effort if you don't bother decoding the data
2021-10-29 16:42:59 +0200 <maerwald> merijn: not necessarily
2021-10-29 16:42:59 +0200Vajb(~Vajb@n8vwdu04eps78g521-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer)
2021-10-29 16:43:09 +0200 <maerwald> the reason it's faster is only because we use `elemIndex` and nothing else
2021-10-29 16:43:09 +0200 <merijn> maerwald: Not necessarily what?
2021-10-29 16:43:15 +0200 <maerwald> which uses memchr
2021-10-29 16:43:21 +0200 <adamCS> merijn: But I do decode it, after it's broken into lines as ByteString
2021-10-29 16:43:23 +0200 <maerwald> some other bytestring functions don't
2021-10-29 16:43:47 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-10-29 16:43:50 +0200 <maerwald> in fact, most bytestring functions have their own hot loop with pointer aritmetic
2021-10-29 16:43:55 +0200 <maerwald> which is much slower than memchr
2021-10-29 16:44:33 +0200 <maerwald> abusing elemIndex is also how chris made the fast xml parser: https://chrisdone.com/posts/fast-haskell-c-parsing-xml/
2021-10-29 16:44:46 +0200 <maerwald> which is faster than most C implementations even
2021-10-29 16:45:02 +0200 <maerwald> now... if we could trick streamly into using elemIndex in our parser
2021-10-29 16:45:21 +0200 <maerwald> that would be really cool... because then we have the speed of the xeno approach, but with an API that doesn't suck
2021-10-29 16:45:48 +0200 <maerwald> (internal API, but still... did you look at the xeno code? ugh.)
2021-10-29 16:47:21 +0200 <maerwald> but I'm susprised that a very simple char-by-char Fold in streamly is faster than attoparsec
2021-10-29 16:47:30 +0200surgeon[m](~surge9nma@2001:470:69fc:105::f585)
2021-10-29 16:47:38 +0200max22-(~maxime@2a01cb08833598004910fadca795f245.ipv6.abo.wanadoo.fr)
2021-10-29 16:47:51 +0200 <maerwald> but it's true this feels more like experimentation than a stable API
2021-10-29 16:48:41 +0200 <adamCS> Yeah. I'm going to be sad if Unfold disappears. Is to be replaced by "Producer" or something else? Just the move from 0.7 to 0.8 was sorta painful. My own fault for using all sorts of "Internal" modules.
2021-10-29 16:49:20 +0200peterhil(~peterhil@mobile-access-5672f1-161.dhcp.inet.fi)
2021-10-29 16:49:21 +0200 <maerwald> they don't have funding for streamly... this is something HF should address imo
2021-10-29 16:49:31 +0200peterhil(~peterhil@mobile-access-5672f1-161.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-10-29 16:49:31 +0200 <maerwald> it needs a lot of work
2021-10-29 16:49:53 +0200peterhil(~peterhil@mobile-access-5672f1-161.dhcp.inet.fi)
2021-10-29 16:50:58 +0200myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net)
2021-10-29 16:51:07 +0200 <adamCS> And I find the performance good but mysterious. I worked for a bit yesterday to take a thing I do a lot: load from csv to Text lines, turn each text line into a Vinyl record, transform the record into a different record, possibly filtering, so (Record rs -> Maybe (Record rs')) and then load that into Frames in-core AoS representation.
2021-10-29 16:51:57 +0200 <adamCS> Each step is streamly, unfold to Text, scan to process headers and then tokenize and convert the lines, map to do the transformation and then a fold into the AoS structure.
2021-10-29 16:52:05 +0200kn07_(~kn07_@86.121.23.168) (Quit: Leaving)
2021-10-29 16:52:32 +0200 <adamCS> But the version that uses separate functions is faster. Which is inexplicable to me unless I have an inlining issue. Which I probably do.
2021-10-29 16:52:49 +0200vpan(~0@212.117.1.172) (Quit: Leaving.)
2021-10-29 16:53:12 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com)
2021-10-29 16:58:45 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
2021-10-29 17:00:08 +0200mc47(~mc47@xmonad/TheMC47)
2021-10-29 17:05:35 +0200 <maerwald> adamCS: I still think there's a problem that needs to be solved in streamly. Namely chunked parsing... because you can only say "backtrack an entire element", but you can't say "drop the element, but then prepend this to the input of the next parser"
2021-10-29 17:06:09 +0200 <maerwald> I think this is due to how nested backtracking works
2021-10-29 17:06:32 +0200 <maerwald> I briefly lookd at the code and it doesn't seem there's an easy hack
2021-10-29 17:06:46 +0200 <adamCS> Yes. That seems like it would be useful, that the next element you process should be produced by a function of the current state and the next element in the stream.
2021-10-29 17:07:42 +0200 <maerwald> my suspicion is that using elemIndex within chunk boundaries and then forwarding to the next chunk will be as fast as the same on lazy ByteString
2021-10-29 17:08:32 +0200 <maerwald> also, Folds will get a monadic interface
2021-10-29 17:08:50 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
2021-10-29 17:08:51 +0200 <maerwald> they seem to be generally faster than parsers, probably due to lack of backtracking
2021-10-29 17:09:11 +0200 <maerwald> (even if you don't use the backtracking)
2021-10-29 17:20:38 +0200acidjnk_new(~acidjnk@p200300d0c7238d78f12f2b4aa168a17a.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2021-10-29 17:24:02 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:90ed:9a10:88ac:8dca)
2021-10-29 17:28:24 +0200cfricke(~cfricke@user/cfricke)
2021-10-29 17:31:43 +0200 <Boarders> is there a way to get around "Unrecognised pragma for {#- HLINT ignore #-} ?
2021-10-29 17:32:19 +0200 <merijn> Not currently
2021-10-29 17:32:27 +0200 <merijn> Besides "don't use the pragma syntax"
2021-10-29 17:32:50 +0200 <Boarders> I'll see if hlint has an option to turn off all checks in a module using yaml
2021-10-29 17:33:17 +0200 <Boarders> I think it does
2021-10-29 17:33:24 +0200fizzsegfaultbuzz(~segfaultf@135-180-0-138.static.sonic.net)
2021-10-29 17:34:22 +0200 <monochrom> Which program is giving the "Unrecognised pragma" message? GHC? hlint?
2021-10-29 17:34:32 +0200 <Boarders> GHC via ghcid
2021-10-29 17:35:04 +0200 <merijn> GHC
2021-10-29 17:35:21 +0200 <geekosaur> it's a warning, I believe
2021-10-29 17:35:26 +0200 <merijn> Anything using the {-# #-} pragma syntax that GHC doesn't know produces a warning
2021-10-29 17:36:07 +0200 <merijn> There was a big discussion on how to handle tool pragmas like hlint a while (several years, possibly) ago, but not sure what the end conclusion was
2021-10-29 17:36:59 +0200peterhil(~peterhil@mobile-access-5672f1-161.dhcp.inet.fi) (Ping timeout: 264 seconds)
2021-10-29 17:37:22 +0200 <geekosaur> the battle between the tools folks and the LANGAUGE folks :þ
2021-10-29 17:37:38 +0200 <monochrom> haha
2021-10-29 17:38:01 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:90ed:9a10:88ac:8dca) (Remote host closed the connection)
2021-10-29 17:38:52 +0200 <remexre> am I understanding correctly if it seems like (in the "instance resolution is Prolog" metaphor) every rule has a cut?
2021-10-29 17:39:09 +0200peterhil(~peterhil@mobile-access-5672f1-161.dhcp.inet.fi)
2021-10-29 17:39:16 +0200 <monochrom> Yes.
2021-10-29 17:39:17 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:90ed:9a10:88ac:8dca)
2021-10-29 17:39:43 +0200 <remexre> is there a way to... not have that?
2021-10-29 17:39:50 +0200 <monochrom> No.
2021-10-29 17:40:59 +0200 <remexre> any suggestings for making a printf-like that "finally" returns an arbitrary MonadIO? Right now I have instances {-# OVERLAPPING #-} (LogFunction func, ToJSON a) => LogFunction (a -> func) and {-# OVERLAPPABLE #-} (MonadIO m, a ~ ()) => LogFunction (m a)
2021-10-29 17:41:00 +0200 <monochrom> Or yes if you reimagine Haskell to defer resolution to link time and therefore you enjoy a CWA therefore backtracking makes sense again.
2021-10-29 17:41:09 +0200 <remexre> CWA?
2021-10-29 17:41:15 +0200 <monochrom> closed-world assumption
2021-10-29 17:41:25 +0200 <monochrom> the anti-thesis to separate compilation
2021-10-29 17:41:39 +0200 <monochrom> You do know Prolog, right? RIGHT?
2021-10-29 17:41:49 +0200 <remexre> yes, but not for AI, for logic :P
2021-10-29 17:41:59 +0200Franciman(~Franciman@mx1.fracta.dev) (Remote host closed the connection)
2021-10-29 17:42:12 +0200 <monochrom> I learned CWA in the context of "prolog as a logic" too.
2021-10-29 17:42:42 +0200 <monochrom> It is why "negation" "makes" "sense" in Prolog.
2021-10-29 17:42:45 +0200 <remexre> I've heard the term (though idk if it was from Prolog or general AI stuff), but never seen the acronym before, prolog or otherwise... anyway
2021-10-29 17:42:47 +0200Franciman(~Franciman@mx1.fracta.dev)
2021-10-29 17:42:54 +0200 <remexre> I guess I'd need something to prevent a (MonadIO (r -> a)) instance from being written
2021-10-29 17:43:06 +0200 <remexre> er, (MonadIO ((->) r)))
2021-10-29 17:45:27 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-10-29 17:45:48 +0200 <monochrom> Often we create newtypes to get it going.
2021-10-29 17:45:56 +0200Raito_Bezarius(~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 245 seconds)
2021-10-29 17:47:36 +0200zer0bitz(~zer0bitz@dsl-hkibng31-54fae3-116.dhcp.inet.fi) (Ping timeout: 260 seconds)
2021-10-29 17:48:19 +0200 <remexre> hm, any way to do that without changing the signature? This works with a concrete IO instead of the MonadIO, but avoiding needing to use liftIO every time is "the point"
2021-10-29 17:49:26 +0200d0ku(~d0ku@178.43.150.25.ipv4.supernova.orange.pl) (Remote host closed the connection)
2021-10-29 17:52:28 +0200fendor_(~fendor@178.115.69.81.wireless.dyn.drei.com)
2021-10-29 17:54:15 +0200 <monochrom> onoes GHC 9.2.1
2021-10-29 17:54:20 +0200 <monochrom> I mean oyes :)
2021-10-29 17:54:55 +0200 <shapr> oyes!
2021-10-29 17:54:55 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-29 17:55:02 +0200fendor(~fendor@178.115.69.86.wireless.dyn.drei.com) (Ping timeout: 268 seconds)
2021-10-29 17:55:13 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-29 17:56:10 +0200 <monochrom> Haha GHC2021 in lieu of Haskell2021
2021-10-29 17:56:24 +0200dajoer(~david@user/gvx) (Quit: leaving)
2021-10-29 17:58:17 +0200 <monochrom> Ben ends the message with "happy testing". This is how confident the GHC devs are about this haha.
2021-10-29 17:59:00 +0200Raito_Bezarius(~Raito@wireguard/tunneler/raito-bezarius)
2021-10-29 17:59:01 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.3)
2021-10-29 17:59:14 +0200 <sprout> I can relate!
2021-10-29 17:59:28 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2021-10-29 17:59:36 +0200Midjak(~Midjak@82-65-111-221.subs.proxad.net) (Quit: This computer has gone to sleep)
2021-10-29 18:00:09 +0200monadfritz[m](~ahdytmatr@2001:470:69fc:105::e1f1) (Quit: You have been kicked for being idle)
2021-10-29 18:02:06 +0200 <monochrom> I am now tempted to end all my emails with "Good luck with that, \n <my name>"
2021-10-29 18:02:40 +0200 <monochrom> Example:
2021-10-29 18:02:51 +0200lbseale(~lbseale@user/ep1ctetus)
2021-10-29 18:03:36 +0200 <monochrom> A student emails me to ask "is it OK for me to use do-notation on the exam, even though you didn't teach it?"
2021-10-29 18:03:58 +0200 <monochrom> Reply: "Yes you may. \n \n Good luck with that, \n <my name>"
2021-10-29 18:04:55 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 258 seconds)
2021-10-29 18:11:04 +0200chele(~chele@user/chele) (Remote host closed the connection)
2021-10-29 18:11:05 +0200talismanick(~talismani@76.78.246.111) (Remote host closed the connection)
2021-10-29 18:12:48 +0200NinjaTrappeur(~ninja@user/ninjatrappeur) (Quit: WeeChat 3.3)
2021-10-29 18:15:00 +0200igghibu(~igghibu@37.120.201.125)
2021-10-29 18:16:55 +0200igghibu(~igghibu@37.120.201.125) ()
2021-10-29 18:20:11 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-10-29 18:20:11 +0200 <myShoggoth> "Govern yourself accordingly,"
2021-10-29 18:20:46 +0200hyiltiz(~quassel@31.220.5.250)
2021-10-29 18:21:39 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-29 18:23:07 +0200NinjaTrappeur(~ninja@user/ninjatrappeur)
2021-10-29 18:27:06 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-10-29 18:27:24 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-29 18:32:23 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-10-29 18:33:02 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-29 18:34:09 +0200MidAutumnMoon(~MidAutumn@user/midautumnmoon) (Quit: Ping timeout (120 seconds))
2021-10-29 18:34:10 +0200chexum_(~quassel@gateway/tor-sasl/chexum)
2021-10-29 18:34:20 +0200MidAutumnMoon(~MidAutumn@user/midautumnmoon)
2021-10-29 18:34:32 +0200son0p(~ff@181.136.122.143) (Ping timeout: 244 seconds)
2021-10-29 18:34:33 +0200mrianbloom(sid350277@ilkley.irccloud.com) (Ping timeout: 244 seconds)
2021-10-29 18:34:33 +0200vito(sid1962@user/vito) (Ping timeout: 244 seconds)
2021-10-29 18:34:33 +0200supersven(sid501114@ilkley.irccloud.com) (Ping timeout: 244 seconds)
2021-10-29 18:34:43 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2021-10-29 18:35:04 +0200S11001001(sid42510@ilkley.irccloud.com) (Ping timeout: 244 seconds)
2021-10-29 18:35:04 +0200JSharp(sid4580@lymington.irccloud.com) (Ping timeout: 244 seconds)
2021-10-29 18:35:04 +0200hendi(sid489601@lymington.irccloud.com) (Ping timeout: 244 seconds)
2021-10-29 18:35:10 +0200orcus(~orcus@user/brprice) (Quit: ZNC 1.8.1 - https://znc.in)
2021-10-29 18:35:30 +0200orcus(~orcus@user/brprice)
2021-10-29 18:35:35 +0200sa1(sid7690@ilkley.irccloud.com) (Ping timeout: 244 seconds)
2021-10-29 18:35:35 +0200bradparker(sid262931@uxbridge.irccloud.com) (Ping timeout: 244 seconds)
2021-10-29 18:36:36 +0200hendi(sid489601@id-489601.lymington.irccloud.com)
2021-10-29 18:36:37 +0200vito(sid1962@user/vito)
2021-10-29 18:36:44 +0200bradparker(sid262931@id-262931.uxbridge.irccloud.com)
2021-10-29 18:36:49 +0200sa1(sid7690@id-7690.ilkley.irccloud.com)
2021-10-29 18:36:56 +0200JSharp(sid4580@id-4580.lymington.irccloud.com)
2021-10-29 18:37:42 +0200supersven(sid501114@id-501114.ilkley.irccloud.com)
2021-10-29 18:37:43 +0200mrianbloom(sid350277@id-350277.ilkley.irccloud.com)
2021-10-29 18:38:14 +0200S11001001(sid42510@id-42510.ilkley.irccloud.com)
2021-10-29 18:38:27 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-10-29 18:39:46 +0200hiruji(~hiruji@user/hiruji) (Ping timeout: 252 seconds)
2021-10-29 18:40:45 +0200ft(~ft@shell.chaostreff-dortmund.de) (Ping timeout: 244 seconds)
2021-10-29 18:41:42 +0200ft(~ft@shell.chaostreff-dortmund.de)
2021-10-29 18:42:20 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
2021-10-29 18:42:41 +0200aegon(~mike@174.127.249.180)
2021-10-29 18:45:36 +0200zincy_(~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e)
2021-10-29 18:49:13 +0200burnsidesLlama(~burnsides@dhcp168-040.wadham.ox.ac.uk)
2021-10-29 18:55:13 +0200hendursa1(~weechat@user/hendursaga) (Quit: hendursa1)
2021-10-29 18:55:40 +0200hendursaga(~weechat@user/hendursaga)
2021-10-29 18:56:11 +0200fendor_fendor
2021-10-29 18:57:10 +0200Bleant(~Bleant@2804:7f7:d68c:6ec3:f145:b950:2a0e:7ea8)
2021-10-29 18:58:23 +0200lavaman(~lavaman@98.38.249.169)
2021-10-29 18:58:27 +0200Bleant(~Bleant@2804:7f7:d68c:6ec3:f145:b950:2a0e:7ea8) (Remote host closed the connection)
2021-10-29 18:59:57 +0200zincy_(~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e) (Remote host closed the connection)
2021-10-29 19:03:23 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
2021-10-29 19:04:12 +0200hiruji(~hiruji@user/hiruji)
2021-10-29 19:04:59 +0200Katarushisu5(~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net)
2021-10-29 19:05:51 +0200agander_m_(sid407952@id-407952.tinside.irccloud.com)
2021-10-29 19:05:52 +0200meinside_(uid24933@id-24933.helmsley.irccloud.com)
2021-10-29 19:05:52 +0200manicennui_(uid349235@id-349235.tinside.irccloud.com)
2021-10-29 19:05:52 +0200pepeiborra_(sid443799@id-443799.ilkley.irccloud.com)
2021-10-29 19:05:52 +0200aria_(sid380617@id-380617.lymington.irccloud.com)
2021-10-29 19:05:55 +0200dpratt__(sid193493@id-193493.helmsley.irccloud.com)
2021-10-29 19:06:15 +0200bongobrown(~bongobrow@cpe-76-185-215-2.satx.res.rr.com) (Ping timeout: 258 seconds)
2021-10-29 19:07:15 +0200carbolymer_(~carbolyme@dropacid.net)
2021-10-29 19:08:06 +0200cross_(~cross@spitfire.i.gajendra.net)
2021-10-29 19:08:20 +0200guniberas(~guniberas@42.191.188.121) (Ping timeout: 260 seconds)
2021-10-29 19:08:48 +0200motherfs1(~motherfsc@user/motherfsck)
2021-10-29 19:10:06 +0200Guest6(~Guest6@2a01cb0d04e290000a0027fffe32ed70.ipv6.abo.wanadoo.fr)
2021-10-29 19:11:20 +0200peterhil(~peterhil@mobile-access-5672f1-161.dhcp.inet.fi) (Ping timeout: 265 seconds)
2021-10-29 19:13:19 +0200motherfsck(~motherfsc@user/motherfsck) (*.net *.split)
2021-10-29 19:13:19 +0200Katarushisu(~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net) (*.net *.split)
2021-10-29 19:13:19 +0200Ekho(~Ekho@user/ekho) (*.net *.split)
2021-10-29 19:13:20 +0200carbolymer(~carbolyme@dropacid.net) (*.net *.split)
2021-10-29 19:13:20 +0200cross(~cross@spitfire.i.gajendra.net) (*.net *.split)
2021-10-29 19:13:20 +0200pepeiborra(sid443799@ilkley.irccloud.com) (*.net *.split)
2021-10-29 19:13:20 +0200manicennui(uid349235@tinside.irccloud.com) (*.net *.split)
2021-10-29 19:13:20 +0200aria(sid380617@lymington.irccloud.com) (*.net *.split)
2021-10-29 19:13:20 +0200meinside(uid24933@helmsley.irccloud.com) (*.net *.split)
2021-10-29 19:13:20 +0200agander_m(sid407952@tinside.irccloud.com) (*.net *.split)
2021-10-29 19:13:20 +0200dpratt_(sid193493@helmsley.irccloud.com) (*.net *.split)
2021-10-29 19:13:20 +0200Katarushisu5Katarushisu
2021-10-29 19:13:20 +0200dpratt__dpratt_
2021-10-29 19:13:20 +0200pepeiborra_pepeiborra
2021-10-29 19:13:20 +0200meinside_meinside
2021-10-29 19:13:20 +0200manicennui_manicennui
2021-10-29 19:13:20 +0200aria_aria
2021-10-29 19:15:00 +0200Ekho-(~Ekho@user/ekho)
2021-10-29 19:16:17 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-29 19:16:28 +0200zincy_(~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e)
2021-10-29 19:21:00 +0200zincy_(~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e) (Ping timeout: 265 seconds)
2021-10-29 19:23:11 +0200Pickchea(~private@user/pickchea)
2021-10-29 19:23:15 +0200econo(uid147250@user/econo)
2021-10-29 19:23:41 +0200Ekho-Ekho
2021-10-29 19:31:40 +0200lavaman(~lavaman@98.38.249.169)
2021-10-29 19:32:39 +0200 <lbseale> can I automatically derive NFData for an arbitrary record type?
2021-10-29 19:33:03 +0200 <maerwald> with Generic
2021-10-29 19:33:22 +0200 <lbseale> nice
2021-10-29 19:33:58 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:90ed:9a10:88ac:8dca) (Remote host closed the connection)
2021-10-29 19:34:34 +0200Kaiepi(~Kaiepi@156.34.44.192)
2021-10-29 19:34:40 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: djvksd)
2021-10-29 19:35:46 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Ping timeout: 258 seconds)
2021-10-29 19:39:48 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-29 19:40:00 +0200lavaman(~lavaman@98.38.249.169)
2021-10-29 19:40:58 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-10-29 19:41:11 +0200hiruji(~hiruji@user/hiruji) (Ping timeout: 264 seconds)
2021-10-29 19:41:46 +0200chomwitt(~chomwitt@2a02:587:dc12:b600:12c3:7bff:fe6d:d374)
2021-10-29 19:43:14 +0200jil(~user@160.155.45.49)
2021-10-29 19:43:19 +0200 <jil> hello
2021-10-29 19:44:29 +0200 <jil> I'm a begginer, learning haskell and I would like to define a type for different sets of digit.
2021-10-29 19:46:43 +0200 <pavonia> Welcome
2021-10-29 19:47:57 +0200 <jil> I could do `data Digit2 = Zero | One` or `data Digit6 = Zero | One | ... | Five` but I would like a more generic approche using Exiting Int or Char. For exemple `data Digits n` would be '0' | '1' | ... | nth -1 symbol of a predefined sequence
2021-10-29 19:48:17 +0200Guest6(~Guest6@2a01cb0d04e290000a0027fffe32ed70.ipv6.abo.wanadoo.fr) (Ping timeout: 256 seconds)
2021-10-29 19:49:20 +0200 <jil> How do I do that ? and Why can't I do `data Digit2 = 0 | 1` ? I want a Digit2 to be an Int and it's successor .
2021-10-29 19:49:29 +0200 <jil> hello pavonia
2021-10-29 19:49:58 +0200zincy_(~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e)
2021-10-29 19:50:06 +0200 <jil> or Digit2 to be two successive Char
2021-10-29 19:50:47 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-10-29 19:51:10 +0200 <yrlnry> `Data` defines a new data type. If it let you `data Digit2 = 0 | 1`, then when the Haskell compiler saw a `0` in your code, it wouldn't know whether you meant the Data2 value 0 or the integer value 0.
2021-10-29 19:52:40 +0200 <yrlnry> You can do `Data2 = D0 | D1`. Or you can tell Haskell that `Data2` is an instance of `Num`, and then define a `fromInteger` function for it that says how Haskell should interpret a `0` or a `1` that is being used in a place where it expected a `Digit2`.
2021-10-29 19:53:16 +0200 <dsal> That gets partial if it's not modular, though. Because what does `4 :: Digit2` mean?
2021-10-29 19:53:35 +0200 <awpr> it means "good luck debugging this with no stack trace" :)
2021-10-29 19:53:54 +0200 <awpr> partial Num instances cause unbounded pain
2021-10-29 19:53:58 +0200 <yrlnry> Presumably for this application partial is acceptable, it should complain `4 is not a permitted digit` or something.
2021-10-29 19:54:41 +0200 <dsal> Partial functions are more desirable in the beginning. :)
2021-10-29 19:54:47 +0200 <monochrom> Worse than that. Most Num methods make no sense for the "digit" concept.
2021-10-29 19:55:14 +0200 <awpr> an error sounds okay at first glance, but there's no way to find out where the problem came from without making a profiling build and using the RTS' stack traces
2021-10-29 19:55:34 +0200 <yrlnry> What would be a better approach?
2021-10-29 19:55:41 +0200 <awpr> not having a Num instance
2021-10-29 19:55:57 +0200 <monochrom> Don't make the digit type a Num instance in the first place.
2021-10-29 19:56:05 +0200 <jil> ok
2021-10-29 19:56:07 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-10-29 19:56:07 +0200 <dsal> You can make an e-Num type. That's more high tech anyway.
2021-10-29 19:56:12 +0200 <monochrom> Enum ought to be enough for that.
2021-10-29 19:56:42 +0200 <awpr> I wrote this entire library and GHC plugin fueled by frustration with exactly this problem: https://hackage.haskell.org/package/dependent-literals-plugin
2021-10-29 19:57:03 +0200 <yrlnry> Enum is probably a better idea, thanks.
2021-10-29 19:57:16 +0200 <awpr> to make it possible to make numeric literals work with Fin, without ruining somebody's week whenever someone uses an out-of-range literal
2021-10-29 19:57:48 +0200 <monochrom> Enum is precisely for "my type is just 10 constructors flat".
2021-10-29 19:57:55 +0200 <awpr> (incidentally, `DigitN` is `Fin N`)
2021-10-29 19:58:25 +0200zincy_(~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e) (Ping timeout: 260 seconds)
2021-10-29 19:59:00 +0200burnsidesLlama(~burnsides@dhcp168-040.wadham.ox.ac.uk) (Remote host closed the connection)
2021-10-29 19:59:03 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:d4e:dbb8:1851:3894)
2021-10-29 19:59:31 +0200burnsidesLlama(~burnsides@dhcp168-040.wadham.ox.ac.uk)
2021-10-29 20:00:11 +0200hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-10-29 20:00:57 +0200 <monochrom> Haha now I understand the e-Num joke.
2021-10-29 20:02:30 +0200hololeap(~hololeap@user/hololeap)
2021-10-29 20:03:41 +0200 <pavonia> @quote beginner
2021-10-29 20:03:41 +0200 <lambdabot> JohnHughes says: I would guess that the majority if compiler runs for beginners (and perhaps for the rest of us too!) end in a type error
2021-10-29 20:04:15 +0200burnsidesLlama(~burnsides@dhcp168-040.wadham.ox.ac.uk) (Ping timeout: 260 seconds)
2021-10-29 20:04:46 +0200 <pavonia> Wasn't there a quote about beginners asking an innocent question and being overwhelmed with type theory answers?
2021-10-29 20:04:55 +0200awprhides
2021-10-29 20:06:00 +0200yrlnry(~mjd@pool-74-109-22-90.phlapa.fios.verizon.net) (Ping timeout: 260 seconds)
2021-10-29 20:07:53 +0200max22-(~maxime@2a01cb08833598004910fadca795f245.ipv6.abo.wanadoo.fr) (Ping timeout: 264 seconds)
2021-10-29 20:07:54 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-29 20:08:20 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-29 20:08:31 +0200Farzad(~FarzadBek@37.49.150.10)
2021-10-29 20:08:42 +0200 <geekosaur> @quote type.theory
2021-10-29 20:08:42 +0200 <lambdabot> ggVGc says: haskell also has the gotcha of starting to write a program and ending up with a ultra-generic library for some new type theory concepts you just learnt
2021-10-29 20:08:49 +0200 <geekosaur> @quote type.theory
2021-10-29 20:08:49 +0200 <lambdabot> ggVGc says: haskell also has the gotcha of starting to write a program and ending up with a ultra-generic library for some new type theory concepts you just learnt
2021-10-29 20:08:53 +0200 <geekosaur> hm
2021-10-29 20:09:57 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-10-29 20:09:58 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-29 20:10:08 +0200 <shapr> @quote first-year
2021-10-29 20:10:08 +0200 <lambdabot> TacticalGrace says: #haskell in action: discussion about first-year teaching turns into an argument about CT and Kan extensions
2021-10-29 20:10:11 +0200 <shapr> that one?
2021-10-29 20:10:23 +0200mbuf(~Shakthi@171.61.174.60) (Quit: Leaving)
2021-10-29 20:10:34 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-29 20:10:57 +0200 <shapr> @quote category theory
2021-10-29 20:10:57 +0200 <lambdabot> No quotes for this person. You untyped fool!
2021-10-29 20:11:00 +0200 <shapr> @quote category.theory
2021-10-29 20:11:00 +0200 <lambdabot> mjrosenb says: <3 #haskell; "why doesn't this program typecheck?" ; 5 hours of category theory later, op left 4 hours ago
2021-10-29 20:11:05 +0200 <shapr> @quote category.theory
2021-10-29 20:11:05 +0200 <lambdabot> Botje says: the line between madness and category theory is a fine one indeed.
2021-10-29 20:11:13 +0200 <shapr> too many category theory quotes
2021-10-29 20:11:32 +0200lavaman(~lavaman@98.38.249.169)
2021-10-29 20:11:54 +0200 <earthy> there's no such thing as to many category theory... is there? :)
2021-10-29 20:12:30 +0200 <monochrom> 2-many 2-category theory
2021-10-29 20:14:14 +0200hololeap(~hololeap@user/hololeap) (Read error: Connection reset by peer)
2021-10-29 20:14:17 +0200 <jil> awpr it's not clear exactly how to use you librari but I will try. I think It answer my question.
2021-10-29 20:14:54 +0200 <pavonia> shapr: Hhm, maybe it was this first-year quote
2021-10-29 20:15:08 +0200 <jil> I have another innocent beginner question.
2021-10-29 20:15:13 +0200 <awpr> tbh it's probably too complicated for this use case if you're not willing to go to great lengths to get literals working
2021-10-29 20:15:31 +0200 <jil> how do yo know in what package to find a specific function ?
2021-10-29 20:15:33 +0200hololeap(~hololeap@user/hololeap)
2021-10-29 20:16:11 +0200 <geekosaur> hoogle
2021-10-29 20:16:17 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
2021-10-29 20:16:17 +0200 <awpr> hmm, if I added a `Wrapped Finite` impl, it might actually become easy...
2021-10-29 20:16:27 +0200 <jil> in ghci :doc read will point to readMaybe. If one does not have acess to internet how can he find readMaybe is in Data.Text (from memory)
2021-10-29 20:17:13 +0200 <awpr> `data Digit2 = D0 | D1 deriving Generic deriving Finite via Wrapped Generic Digit2 deriving HasIntLiterals via Wrapped Finite Digit2` isn't too bad.
2021-10-29 20:17:25 +0200 <sm> jil, you can do what you just said, in ghci ?
2021-10-29 20:17:27 +0200 <jil> wouhao !
2021-10-29 20:17:33 +0200 <sm> you can also set up hoogle to work locally
2021-10-29 20:18:00 +0200 <awpr> but I still think dependent-literals is overkill for this, honestly. I'd probably just use D0 and D1 directly
2021-10-29 20:18:25 +0200 <jil> awpr but what about Fin 16, Fin 32 ect..
2021-10-29 20:18:33 +0200 <jil> :doc read
2021-10-29 20:19:00 +0200 <jil> points to readMaybe
2021-10-29 20:19:06 +0200 <sm> or you can set up a more fancy local docs tool like `dash` or similar
2021-10-29 20:19:11 +0200 <awpr> yeah, those are a bit more meaningful. if you want a lot of different radixes, I'd maybe find an existing Fin library (e.g. `fin-int` is one I maintain)
2021-10-29 20:20:06 +0200 <jil> sm ok, I need a better IDE setup. any suggestion for a ghci runing in emacs ?
2021-10-29 20:20:21 +0200 <sm> M-x shell, ghci
2021-10-29 20:20:29 +0200 <jil> I'm not familliar with dash.
2021-10-29 20:20:36 +0200 <awpr> that comes with dependent-literals support, but you can also just say `fin 5` if you don't want to deal with the plugin. (and that has a HasCallStack constraint, so if you call it on an out-of-range number, it'll at least tell you where)
2021-10-29 20:20:37 +0200 <jil> sm That's what I use
2021-10-29 20:20:50 +0200 <sm> also don't miss ghcid, it's great
2021-10-29 20:21:10 +0200 <jil> ok sm. Thank you.
2021-10-29 20:23:20 +0200 <sm> jil I also recommend spending a half hour to skim the haddocks for all of base and a few other main libraries (containers, mtl, text, safe, ...) - most of us did not do it and it can save a lot of time
2021-10-29 20:23:41 +0200 <sm> likewise for the GHC user guide
2021-10-29 20:24:45 +0200thblt(~thblt@user/thblt)
2021-10-29 20:24:47 +0200 <jil> :) ok.
2021-10-29 20:24:56 +0200 <sm> oh and the stack and cabal user guides :)
2021-10-29 20:25:08 +0200 <sm> THEN you'll be fine
2021-10-29 20:26:30 +0200 <thblt> Is there a file manipulation library in Haskell that signals errors with types rather than exceptions? (Eg open :: FilePath -> IO (Either FileError Handle))
2021-10-29 20:27:16 +0200 <monochrom> You can use Control.Exception's "try".
2021-10-29 20:27:17 +0200 <jil> sm I'm trying to finish Hutton_G_Programming_in_Haskell-Cambridge_University_Press_2018.pdf
2021-10-29 20:27:39 +0200 <sm> good one
2021-10-29 20:27:59 +0200 <sm> he has more recent lessons on youtube also
2021-10-29 20:28:48 +0200 <sm> @where HTAC
2021-10-29 20:28:48 +0200 <sm> is also good
2021-10-29 20:29:22 +0200 <sm> @where HTAC , I say
2021-10-29 20:29:22 +0200 <lambdabot> "Haskell Tutorial and Cookbook" by Mark Watson in 2017-09-04 at <https://leanpub.com/haskell-cookbook>
2021-10-29 20:30:22 +0200oxide(~lambda@user/oxide) (Quit: oxide)
2021-10-29 20:31:48 +0200alx741(~alx741@186.178.109.79)
2021-10-29 20:34:29 +0200unit73e(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
2021-10-29 20:35:16 +0200 <thblt> monochrom: thanks
2021-10-29 20:36:03 +0200zincy_(~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e)
2021-10-29 20:36:24 +0200max22-(~maxime@2a01cb0883359800df57ac14517550fc.ipv6.abo.wanadoo.fr)
2021-10-29 20:37:40 +0200ubert(~Thunderbi@178.115.53.120.wireless.dyn.drei.com)
2021-10-29 20:39:47 +0200burnsidesLlama(~burnsides@dhcp168-040.wadham.ox.ac.uk)
2021-10-29 20:44:37 +0200burnsidesLlama(~burnsides@dhcp168-040.wadham.ox.ac.uk) (Ping timeout: 268 seconds)
2021-10-29 20:45:59 +0200motherfs1(~motherfsc@user/motherfsck) (Quit: quit)
2021-10-29 20:47:15 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
2021-10-29 20:49:14 +0200ubert1(~Thunderbi@178.115.53.120.wireless.dyn.drei.com)
2021-10-29 20:49:39 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:d4e:dbb8:1851:3894) (Remote host closed the connection)
2021-10-29 20:59:06 +0200zincy_(~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e) (Remote host closed the connection)
2021-10-29 21:01:43 +0200vicfred(~vicfred@user/vicfred)
2021-10-29 21:01:54 +0200motherfsck(~motherfsc@user/motherfsck)
2021-10-29 21:02:03 +0200 <maerwald> whats the conversion from `NominalDiffTime` to `EpochTime`? fromIntegral?
2021-10-29 21:04:01 +0200 <monochrom> I have a feeling that realToFrac is closer.
2021-10-29 21:04:10 +0200 <maerwald> doesn't work
2021-10-29 21:04:23 +0200 <maerwald> No Instance for Fractional Epochtime
2021-10-29 21:04:35 +0200zincy_(~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e)
2021-10-29 21:04:48 +0200 <monochrom> Ah right. But NominalDiffTime is not Integral either.
2021-10-29 21:07:00 +0200 <monochrom> Perhaps truncate or round. NominalDiffTime is sub-seconds, but its integral part means seconds.
2021-10-29 21:07:06 +0200Null_A(~null_a@2601:645:8700:2290:19ff:7d99:67c6:79e3)
2021-10-29 21:07:43 +0200 <maerwald> that doesn't sound too sure :D
2021-10-29 21:08:06 +0200 <maerwald> there's `nominalDiffTimeToSeconds`, but then I got Pico, wtf
2021-10-29 21:08:15 +0200 <monochrom> Well, in the first place, I am not sure that NominalDiffTime and EpochTime stand for the same idea.
2021-10-29 21:09:24 +0200 <monochrom> One is a duration, the other is an absolute point.
2021-10-29 21:09:44 +0200 <monochrom> Although you could wing it and say "I just mean CTime"
2021-10-29 21:09:45 +0200 <maerwald> well, type POSIXTime = NominalDiffTime
2021-10-29 21:10:05 +0200 <maerwald> I have UTCTime and want EpochTime (which is CTime)
2021-10-29 21:10:12 +0200 <maerwald> so: utcTimeToPOSIXSeconds :: UTCTime -> POSIXTime
2021-10-29 21:10:18 +0200 <maerwald> then I'm stuck with NominalDiffTime
2021-10-29 21:10:43 +0200 <maerwald> CTime is Real and Num
2021-10-29 21:10:44 +0200 <monochrom> Pico is just another Fractional instance that you can use truncate/round on.
2021-10-29 21:11:38 +0200 <maerwald> well, then I have an Integral
2021-10-29 21:11:40 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2021-10-29 21:11:50 +0200 <maerwald> CTime isn't
2021-10-29 21:11:52 +0200 <monochrom> Well, on all known GHC platforms that have System.Posix, CTime is also just a newtype around Int64.
2021-10-29 21:12:28 +0200 <maerwald> I wish there was a time library that isn't awful
2021-10-29 21:12:56 +0200 <monochrom> Plus, "According to POSIX, it shall be an integer type." from a linux man page about time_t
2021-10-29 21:13:03 +0200hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-10-29 21:13:04 +0200zincy_(~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e) (Remote host closed the connection)
2021-10-29 21:13:17 +0200 <monochrom> Me, I wish there were no pretended abstractions like this.
2021-10-29 21:13:32 +0200 <maerwald> `fromInteger . floor . nominalDiffTimeToSeconds . utcTimeToPOSIXSeconds`
2021-10-29 21:13:38 +0200 <maerwald> but now I really have no idea what that does
2021-10-29 21:13:46 +0200 <monochrom> "Oh CTime is platform-dependent we can't tell you it's an integer". Platform-dependent my ass.
2021-10-29 21:14:00 +0200 <maerwald> I'm just gonna assume it's correct
2021-10-29 21:14:17 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:d4e:dbb8:1851:3894)
2021-10-29 21:14:30 +0200hololeap(~hololeap@user/hololeap)
2021-10-29 21:14:52 +0200yrlnry(~mjd@pool-74-109-22-90.phlapa.fios.verizon.net)
2021-10-29 21:15:18 +0200 <maerwald> this is where I miss javascript
2021-10-29 21:15:30 +0200 <maerwald> don't care, just throw it in, it'll be fine!
2021-10-29 21:17:36 +0200 <monochrom> Pretty sure you don't need nominalDiffTimeToSeconds
2021-10-29 21:18:01 +0200 <monochrom> NomimalDiffTime is just a newtype around Pico. nominalDiffTimeToSeconds just unwraps.
2021-10-29 21:18:29 +0200 <monochrom> This is why whereas Pico is Fractional, so is NominalDiffTime.
2021-10-29 21:20:28 +0200 <maerwald> those are all really interesing things... but why can't we have a simple tables with those conversions, which also clearly indicates if you lose precision etc.
2021-10-29 21:21:30 +0200 <monochrom> FWIW why do you have UTCTime in the first place? If you called getCurrentTime, perhaps replace with epochTime?
2021-10-29 21:22:11 +0200 <maerwald> EpochTime is unix-specific isn't it?
2021-10-29 21:22:22 +0200 <maerwald> I want to be cross-platform
2021-10-29 21:23:08 +0200 <monochrom> OK, you are converting something to EpochTime for cross-platform?
2021-10-29 21:23:30 +0200 <maerwald> yes, that's the unix module
2021-10-29 21:23:36 +0200 <maerwald> but the type must not leak
2021-10-29 21:23:38 +0200 <monochrom> I would think sticking to UTCTime and NominalDiffTime was the cross-platform way.
2021-10-29 21:23:45 +0200 <monochrom> Ah OK.
2021-10-29 21:24:09 +0200burnsidesLlama(~burnsides@dhcp168-040.wadham.ox.ac.uk)
2021-10-29 21:24:47 +0200 <maerwald> I'm becoming a fan of DList
2021-10-29 21:24:57 +0200 <monochrom> Oh well yeah use rounding and use the "forbidden" knowledge that EpochTime = CTime = newtype of Int32/64/doesn't matter.
2021-10-29 21:25:19 +0200 <maerwald> `fromInteger . floor . utcTimeToPOSIXSeconds` typechecks
2021-10-29 21:25:38 +0200 <maerwald> users will tell me if it does the correct thing after their systems crashed
2021-10-29 21:27:23 +0200emf(~emf@2620:10d:c090:400::5:5ca4) (Ping timeout: 264 seconds)
2021-10-29 21:27:23 +0200 <monochrom> But yeah a table would be nice.
2021-10-29 21:27:47 +0200 <maerwald> DList.toList is nicely lazy, so you can append in O(1) in your fold and then turn it back almost zero-cost, right?
2021-10-29 21:28:04 +0200 <maerwald> neglecting the memory overhead
2021-10-29 21:29:05 +0200 <monochrom> Yes, to a large extent, all those "ByteString.Builder" "Text.Builder" "Foo.Builder" "Bar.Builder" are DLists.
2021-10-29 21:29:30 +0200emf(~emf@c-73-97-137-43.hsd1.wa.comcast.net)
2021-10-29 21:29:36 +0200emf(~emf@c-73-97-137-43.hsd1.wa.comcast.net) (Client Quit)
2021-10-29 21:31:00 +0200Farzad(~FarzadBek@37.49.150.10) (Quit: Leaving)
2021-10-29 21:34:03 +0200 <hololeap> I'm running on Gentoo with the haskell repo and so I have all of my packages installed at a system level (ultimately using cabal packages converted to gentoo packages)
2021-10-29 21:34:27 +0200 <hololeap> I'm experimenting with running hoogle as a systemd service
2021-10-29 21:35:05 +0200 <hololeap> when a package is done installing, I have a hook that runs: /usr/bin/hoogle generate --local -- $n
2021-10-29 21:35:16 +0200 <hololeap> where $n is the name of the cabal package
2021-10-29 21:35:25 +0200 <shapr> hololeap: I'm running hoogle in nix and working my way towards nix-copy-closure to 'deploy' the server.
2021-10-29 21:36:01 +0200 <hololeap> the problem is that hoogle crashes when I try to connect after this and only resumes after doing a full generate
2021-10-29 21:36:02 +0200 <shapr> and yeah, a systemd service for restarting
2021-10-29 21:36:39 +0200 <shapr> hololeap: I switched to nix because stack hoogle things have several layers of broken
2021-10-29 21:36:42 +0200 <shapr> are you using cabal?
2021-10-29 21:37:11 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 246 seconds)
2021-10-29 21:37:20 +0200zincy_(~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e)
2021-10-29 21:37:27 +0200 <hololeap> shapr: sort of kind of? gentoo uses Setup.hs behind the scenes to run configure, build, test, etc
2021-10-29 21:38:36 +0200 <hololeap> I'm wondering how hoogle.haskell.org updates when there is a new version/package pushed to hackage
2021-10-29 21:38:56 +0200 <hololeap> because it doesn't seem to like this style of incremental update
2021-10-29 21:39:02 +0200 <shapr> We have 500kloc (excluding whitespace lines) of Haskell in our monorepo, a hoogle server makes it easier to find things.
2021-10-29 21:39:26 +0200 <shapr> oh, your question is whether hoogle supports incremental updates?
2021-10-29 21:39:31 +0200 <shapr> I always have to do a full rebuild.
2021-10-29 21:39:35 +0200 <hololeap> more or less
2021-10-29 21:39:50 +0200 <monochrom> I don't know hoogle, but I would think the safe default thing to do is: kill the server before generate, start the server after.
2021-10-29 21:40:04 +0200 <shapr> I'd bet changing haddocks could be done incrementally, but I don't know about reindexing to build the hoogle db
2021-10-29 21:41:34 +0200 <hololeap> monochrom: the package manager doesn't have permission to do this, I don't think. maybe that could be changed...
2021-10-29 21:41:34 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-10-29 21:41:59 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-10-29 21:42:03 +0200 <hololeap> *to kill/start the hoogle server running through systemd
2021-10-29 21:42:44 +0200 <hololeap> actually the hook system must be running as root
2021-10-29 21:43:14 +0200 <hololeap> I could try it, but so far it seems like you have to re-index _everything_ after something has been changed
2021-10-29 21:45:47 +0200 <monochrom> I'm thinking of this other Goldberg machine: The hoogle server is watched over by a watchdog, this watchdog waits for DB change and restarts the hoogle server.
2021-10-29 21:46:12 +0200 <monochrom> With some luck, this watchdog can be written in systemd syntax too.
2021-10-29 21:46:34 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:d4e:dbb8:1851:3894) (Remote host closed the connection)
2021-10-29 21:46:34 +0200 <monochrom> or s/can be written/may be writable/
2021-10-29 21:46:51 +0200 <hololeap> monochrom: that's kind of how I have it set up now, just because it crashes after I update a single package
2021-10-29 21:47:03 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-10-29 21:48:27 +0200 <monochrom> Hrm haha, do you mean that I can skip the step "wait for changes"? >:)
2021-10-29 21:49:00 +0200 <hololeap> pretty much
2021-10-29 21:49:04 +0200zincy_(~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e) (Remote host closed the connection)
2021-10-29 21:49:05 +0200 <monochrom> "the server crashes" serves as notification for "now is a good time to respawn"
2021-10-29 21:49:35 +0200xff0x(~xff0x@2001:1a81:529e:f300:b22f:69e6:aa77:fd2f) (Ping timeout: 264 seconds)
2021-10-29 21:49:43 +0200 <monochrom> This is consistent with my policy of "don't work until it's really urgent" >:)
2021-10-29 21:50:37 +0200 <hololeap> https://github.com/gentoo-haskell/gentoo-haskell/blob/bb70927ef3bc753bc899f589b69586b34b90d0f9/dev…
2021-10-29 21:50:44 +0200 <hololeap> https://github.com/gentoo-haskell/gentoo-haskell/blob/bb70927ef3bc753bc899f589b69586b34b90d0f9/dev…
2021-10-29 21:51:21 +0200 <hololeap> since I have Restart=always and Requires=hoogle-generate.service, when hoogle crashes it regenerates the DB and restarts the service
2021-10-29 21:51:29 +0200hiruji(~hiruji@user/hiruji)
2021-10-29 21:52:17 +0200zincy_(~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e)
2021-10-29 21:53:35 +0200 <hololeap> but this takes longer and longer each time I add a new package to the system
2021-10-29 21:54:21 +0200 <hololeap> I asked in #haskell-infrastructure ... maybe someone in there knows how the main hoogle service operates
2021-10-29 22:05:11 +0200juhp(~juhp@128.106.188.220) (Ping timeout: 264 seconds)
2021-10-29 22:07:01 +0200juhp(~juhp@128.106.188.220)
2021-10-29 22:08:25 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2021-10-29 22:09:07 +0200acidjnk_new(~acidjnk@p200300d0c7238d89cc95ba723fa3afc9.dip0.t-ipconnect.de)
2021-10-29 22:14:05 +0200xff0x(~xff0x@2001:1a81:529e:f300:b22f:69e6:aa77:fd2f)
2021-10-29 22:15:41 +0200alx741(~alx741@186.178.109.79) (Ping timeout: 264 seconds)
2021-10-29 22:17:11 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:d4e:dbb8:1851:3894)
2021-10-29 22:21:20 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-10-29 22:25:04 +0200zincy_(~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e) (Remote host closed the connection)
2021-10-29 22:25:35 +0200zincy_(~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e)
2021-10-29 22:25:55 +0200waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
2021-10-29 22:27:19 +0200fluffyballoon(~user@131.93.208.196)
2021-10-29 22:29:10 +0200alx741(~alx741@181.196.69.253)
2021-10-29 22:46:11 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:d4e:dbb8:1851:3894) (Remote host closed the connection)
2021-10-29 22:46:17 +0200OscarH(~OscarH@90.201.86.195) (Ping timeout: 264 seconds)
2021-10-29 22:46:54 +0200 <shapr> hololeap: this is brilliant and sneaky, I love it
2021-10-29 22:47:22 +0200 <hololeap> shapr: it wasn't really intentional, I swear D:
2021-10-29 22:47:28 +0200 <dsal> Is DeriveAnyClass a terrible idea?
2021-10-29 22:47:56 +0200 <hololeap> no, but it can be misused to a certain extent
2021-10-29 22:48:23 +0200 <dsal> I file like it makes thing slightly better in this one case.
2021-10-29 22:48:39 +0200 <hololeap> it's basically the same as `instance Blah T` without the `where` or the following definition block
2021-10-29 22:49:15 +0200 <shapr> hololeap: if only it would crash as soon as you update a package instead of when you next speak to the hoogle server
2021-10-29 22:49:28 +0200 <hololeap> so for some classes, it makes sense... for instance Exception
2021-10-29 22:50:12 +0200 <geekosaur> also for any class that can use a Generic instance in its default implementation, which is IIRC the intended use case
2021-10-29 22:50:53 +0200 <hololeap> ^ beat me to it
2021-10-29 22:51:00 +0200 <hpc> i forsee a https://xkcd.com/1172/ style bug report in hoogle's future
2021-10-29 22:51:27 +0200 <dsal> Well, hlint won't me do it. That's lame.
2021-10-29 22:52:22 +0200Guest17(~Guest17@94-255-217-215.cust.bredband2.com)
2021-10-29 22:52:23 +0200 <hololeap> it won't let you?
2021-10-29 22:53:17 +0200 <dsal> Precommit hook with a bunch of predefined decisions.
2021-10-29 22:54:11 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 260 seconds)
2021-10-29 22:54:16 +0200 <hololeap> hm, bummer. it forbids that extension?
2021-10-29 22:55:04 +0200 <dsal> Yeah. I guess someone did a thing somewhere and it was wrong or something.
2021-10-29 22:55:30 +0200 <dsal> It's unfortunate it covers several syntaxes. I'm using deriving strategies here and I'd think that'd be OK because, you know, I meant to do it.
2021-10-29 22:55:44 +0200 <dsal> I think there's something about newtype vs. any doing something different for aeson or something.
2021-10-29 22:55:54 +0200 <hololeap> I suppose it makes sense, because you can shoot yourself in the foot if you aren't paying attention. if you want to use it, it's a good idea to have DerivingStrategies enabled and use them everywhere
2021-10-29 22:56:06 +0200 <dsal> Yeah, I don't know if we can say that.
2021-10-29 22:56:38 +0200 <geekosaur> yeh, strategies exist because if DeriveAnyClass is enabled it overrides GeneralisedNewtypeDeriving
2021-10-29 22:56:54 +0200 <geekosaur> so you get something other than what you intended for a newtype
2021-10-29 22:58:54 +0200 <dsal> Oh interesting. Yeah, I guess there needed to be a tie breaker.
2021-10-29 22:59:26 +0200Guest17(~Guest17@94-255-217-215.cust.bredband2.com) (Quit: Client closed)
2021-10-29 23:01:12 +0200ubert1(~Thunderbi@178.115.53.120.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
2021-10-29 23:02:08 +0200ubert(~Thunderbi@178.115.53.120.wireless.dyn.drei.com) (Ping timeout: 268 seconds)
2021-10-29 23:04:14 +0200proboscis(~proboscis@115-189-129-117.mobile.spark.co.nz)
2021-10-29 23:05:24 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2021-10-29 23:06:57 +0200proboscis(~proboscis@115-189-129-117.mobile.spark.co.nz) (Client Quit)
2021-10-29 23:08:30 +0200proboscis(~proboscis@115-189-129-117.mobile.spark.co.nz)
2021-10-29 23:09:25 +0200Farzad(~FarzadBek@37.49.150.10)
2021-10-29 23:27:53 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:d4e:dbb8:1851:3894)
2021-10-29 23:30:35 +0200michalz(~michalz@185.246.204.109) (Remote host closed the connection)
2021-10-29 23:30:52 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-10-29 23:31:17 +0200chomwitt(~chomwitt@2a02:587:dc12:b600:12c3:7bff:fe6d:d374) (Ping timeout: 246 seconds)
2021-10-29 23:40:11 +0200nehsou^(~nehsou@wsip-98-188-242-6.mc.at.cox.net)
2021-10-29 23:41:56 +0200zincy_(~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e) (Remote host closed the connection)
2021-10-29 23:44:11 +0200Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 264 seconds)
2021-10-29 23:45:11 +0200zincy_(~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e)
2021-10-29 23:47:08 +0200zincy_(~zincy@2a00:23c8:970c:4801:45df:961b:bdc0:266e) (Remote host closed the connection)
2021-10-29 23:47:57 +0200kn07_(~kn07_@86.121.23.168)
2021-10-29 23:52:32 +0200xsperry(~xs@user/xsperry) (Ping timeout: 260 seconds)
2021-10-29 23:53:04 +0200Farzad(~FarzadBek@37.49.150.10) (Quit: Leaving)
2021-10-29 23:53:05 +0200shailangsa(~shailangs@host217-39-45-200.range217-39.btcentralplus.com) (Remote host closed the connection)
2021-10-29 23:59:44 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Remote host closed the connection)