Home liberachat/#haskell: Logs Calendar

Logs on 2021-08-11 (liberachat/#haskell)

00:00:08 × potato_dev quits (~potato_to@elara.whatbox.ca) (Quit: ZNC - https://znc.in)
00:00:38 machinedgod joins (~machinedg@24.105.81.50)
00:01:05 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 248 seconds)
00:01:38 <lechner> Also, is there an XML library, please, that can parse known data similar to the way aeson or yaml do (and does not use a generic DOM data model)?
00:03:27 × pe200012 quits (~pe200012@113.105.10.33) (Ping timeout: 245 seconds)
00:03:35 pe200012_ joins (~pe200012@218.107.49.28)
00:04:58 Cajun joins (~Cajun@user/cajun)
00:04:58 cladur joins (~cladur@user-5-173-146-9.play-internet.pl)
00:05:01 × cladur quits (~cladur@user-5-173-146-9.play-internet.pl) (Remote host closed the connection)
00:05:50 × ec quits (~ec@gateway/tor-sasl/ec) (Quit: ec)
00:11:16 lavaman joins (~lavaman@98.38.249.169)
00:11:29 <dsal> I use wreq for simple http stuff. I don't do all that much xml. I've integrated some junk in the past, but I used SAX-like stuff.
00:11:54 <dsal> Looks like I used xeno for that.
00:12:54 × Guest9632 quits (~chris@81.96.113.213) (Remote host closed the connection)
00:14:56 <lechner> dsal: thanks!
00:15:29 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 248 seconds)
00:17:47 chris joins (~chris@81.96.113.213)
00:17:51 chris is now known as Guest2402
00:18:20 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
00:18:51 × skykanin quits (~skykanin@115.81-166-221.customer.lyse.net) (Quit: WeeChat 3.2)
00:21:01 × shailangsa quits (~shailangs@host86-185-58-139.range86-185.btcentralplus.com) (Ping timeout: 268 seconds)
00:21:53 × eltonpinto quits (~eltonpint@169.109.136.34.bc.googleusercontent.com) (Quit: WeeChat 2.3)
00:22:50 × Guest2402 quits (~chris@81.96.113.213) (Ping timeout: 272 seconds)
00:23:08 lavaman joins (~lavaman@98.38.249.169)
00:23:29 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 268 seconds)
00:23:49 derelict joins (~derelict@user/derelict)
00:23:55 <davean> janus: I did
00:30:29 × spruit11 quits (~quassel@2a02:a467:ccd6:1:90c7:da5b:b845:b6e9) (Ping timeout: 268 seconds)
00:30:48 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
00:30:48 allbery_b joins (~geekosaur@xmonad/geekosaur)
00:30:52 allbery_b is now known as geekosaur
00:31:53 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:34:21 chris joins (~chris@81.96.113.213)
00:34:25 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
00:34:25 chris is now known as Guest6722
00:34:26 × Guest366 quits (~Guest3@221.124.9.182) (Quit: Client closed)
00:35:24 spruit11 joins (~quassel@2a02:a467:ccd6:1:cc2:35ba:cbc2:b281)
00:38:25 Matthias_ joins (~Matthias1@2603-8001-b545-4900-6964-f050-e27a-a1cb.res6.spectrum.com)
00:38:43 × Matthias_ quits (~Matthias1@2603-8001-b545-4900-6964-f050-e27a-a1cb.res6.spectrum.com) (Remote host closed the connection)
00:38:47 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
00:38:47 × sim590 quits (~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 258 seconds)
00:38:54 Matthias_ joins (~Matthias1@2603-8001-b545-4900-6964-f050-e27a-a1cb.res6.spectrum.com)
00:40:39 × Matthias_ quits (~Matthias1@2603-8001-b545-4900-6964-f050-e27a-a1cb.res6.spectrum.com) (Remote host closed the connection)
00:41:01 Matthias_ joins (~Matthias1@2603-8001-b545-4900-6964-f050-e27a-a1cb.res6.spectrum.com)
00:41:05 × Matthias1 quits (~Matthias1@2603-8001-b545-4900-9150-e432-def8-8add.res6.spectrum.com) (Ping timeout: 258 seconds)
00:43:55 pschorf joins (~user@c-73-77-28-188.hsd1.tx.comcast.net)
00:44:22 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 272 seconds)
00:46:43 <lechner> Hi, is it possible to import just the operator ^. from Control.Lens, please?
00:46:55 <Axman6> import Control.Lens ((^.))
00:47:29 euouae joins (~euouae@user/euouae)
00:47:33 × slack1256 quits (~slack1256@181.203.126.41) (Ping timeout: 268 seconds)
00:47:42 <euouae> Hello, how can I read base's docs offline?
00:48:01 <euouae> I looked under ~/.cabal/share/doc, etc but nothing was found there other than license files
00:48:21 <euouae> and `cabal haddock base` said `Up to date`, but I can't find where they're stored
00:48:32 slack1256 joins (~slack1256@191.126.23.98)
00:50:35 norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
00:50:57 <lechner> Axman6: Thanks!
00:51:39 sim590 joins (~simon@modemcable090.207-203-24.mc.videotron.ca)
00:58:14 <Axman6> has anyone ever had an issue where compiling using cabal on macOS just stops? I have two clang processes which are just sitting there doing nothing
01:01:14 <lechner> Axman6: are they detached?
01:02:39 <monochrom> euouae: If you know where you have installed GHC, all docs that come with GHC are somewhere along the line of <prefix>/share/doc/ghc-<version>/html/index.html
01:03:29 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
01:04:29 <euouae> monochrom: Great, thanks. I actually tried reading the man page of ghc but it wasn't listed there I believe
01:04:38 <Axman6> lechner: detached how?
01:04:49 <monochrom> Right, I think the man page doesn't talk about it.
01:04:50 × Matthias_ quits (~Matthias1@2603-8001-b545-4900-6964-f050-e27a-a1cb.res6.spectrum.com) (Remote host closed the connection)
01:05:19 <lechner> Axman6: is cabal blocking your terminal?
01:05:34 <Axman6> what do you mean by blocking my terminal
01:05:45 Matthias1 joins (~Matthias1@2603-8001-b545-4900-6964-f050-e27a-a1cb.res6.spectrum.com)
01:05:57 <lechner> are they otherwise done doing?
01:06:00 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
01:06:20 <lechner> runaway or blocked?
01:06:38 <lechner> what are they doing?
01:08:02 <lechner> Hi, what is a good way to parse this sitemap, please (except a lot longer)? Ideally, I would like to end up with a list of urls (strings alone are okay, or the record). Thanks! https://dpaste.org/WROr
01:08:11 <sm> not using cpu ? not using enough memory to cause swapping ?
01:08:40 <lechner> or just zombies?
01:08:48 <geekosaur> actually I'd be interested in knowing why clang is involved. I think that's normally used only for embedded C code in a package, or to run ld
01:09:08 Matthias_ joins (~Matthias1@2603-8001-b545-4900-090b-633c-a15a-3f3b.res6.spectrum.com)
01:09:22 <euouae> lechner, with an xml parser?
01:09:31 <sm> any network or usb drives involved ?
01:10:05 × emliunix quits (~emliunix@2a09:bac0:23::815:bca) (Remote host closed the connection)
01:10:20 × Matthias1 quits (~Matthias1@2603-8001-b545-4900-6964-f050-e27a-a1cb.res6.spectrum.com) (Ping timeout: 272 seconds)
01:10:23 emliunix joins (~emliunix@103.138.75.119)
01:13:00 <monochrom> FD_SET(read_fdset, fd_for_downloading_RAM); for (;;) { select(read_fdset, NULL, NULL, NULL); ...
01:13:02 <monochrom> >:)
01:14:57 euouae parts (~euouae@user/euouae) ()
01:15:19 × xsperry quits (~as@user/xsperry) ()
01:18:28 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
01:18:48 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
01:21:54 × Matthias_ quits (~Matthias1@2603-8001-b545-4900-090b-633c-a15a-3f3b.res6.spectrum.com) (Remote host closed the connection)
01:22:48 Matthias1 joins (~Matthias1@2603-8001-b545-4900-090b-633c-a15a-3f3b.res6.spectrum.com)
01:24:32 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
01:27:28 × Matthias1 quits (~Matthias1@2603-8001-b545-4900-090b-633c-a15a-3f3b.res6.spectrum.com) (Ping timeout: 258 seconds)
01:27:46 × _________ quits (~nobody@user/noodly) (Ping timeout: 240 seconds)
01:27:55 <Axman6> Sorry, needed to get some #work do. cabal is just stopped, and the last lines in the cabal build log are: configure: WARNING: unrecognized options: --with-compiler
01:27:56 <Axman6> Preprocessing library for network-3.1.2.2..
01:28:12 <Axman6> clang is involved because "gcc" on macos is clang
01:28:19 <lechner> yes
01:28:32 <Axman6> no swapping happening, I've got 64GB and plenty free
01:29:24 _________ joins (~nobody@user/noodly)
01:29:31 <geekosaur> yes, but it still shouldn't be used directly for anything but embedded C code or linking
01:29:37 <geekosaur> or possibly -XCPP
01:29:38 <Axman6> geekosaur: it is the network package which is being compiled, so compiling C is almost certainly involved right?
01:30:32 × berberman quits (~berberman@user/berberman) (Ping timeout: 258 seconds)
01:30:51 berberman joins (~berberman@user/berberman)
01:31:09 × Jonno_FTW quits (~come@api.carswap.me) (Quit: Reconnecting)
01:31:17 Jonno_FTW joins (~come@api.carswap.me)
01:31:31 × Jonno_FTW quits (~come@api.carswap.me) (Changing host)
01:31:31 Jonno_FTW joins (~come@user/jonno-ftw/x-0835346)
01:31:49 <geekosaur> there are 5 small C files in the network package; mostly it binds to libc network functions
01:31:53 <Axman6> https://paste.tomsmeding.com/FzQv35dp is the contents of the log
01:31:54 <lechner> Axman6: The warning may not be what tripped them up https://github.com/commercialhaskell/stack/issues/1121
01:32:03 <Axman6> after hitting ^C to stop the build
01:32:13 <Axman6> the last bit about the failure only happens after the ^C
01:32:45 <geekosaur> hm, that's hhsc2hs freezing
01:32:54 <geekosaur> I think that might be known
01:33:00 <lechner> Failed to remove file dist/build/Network/Socket/ByteString/hsc2hscall8328-0.rsp; error= dist/build/Network/Socket/ByteString/hsc2hscall8328-0.rsp: removeLink: does not exist (No such file or directory)
01:34:33 <lechner> is that a test suite looking for the network?
01:34:59 <Axman6> it's "Building network-3.1.2.2 (all, legacy fallback)"
01:35:05 <geekosaur> https://github.com/haskell/hsc2hs/issues/62
01:36:05 euouae joins (~euouae@user/euouae)
01:36:15 <euouae> So here's the thing about reading types that doesn't always elucidate behavior
01:36:16 <Axman6> yep that looks like the one
01:36:30 <euouae> I'm looking at Control.Monad.sequence :: (Traversable t, Monad m) => t (m a) -> m (t a)
01:36:50 <euouae> There's no way to know that `>>` is being used between monadic actions. It may very well had been without `>>`
01:37:56 <euouae> and, looking at the source code is not very helpful, I don't understand, sequence needs sequenceA, which needs traverse, which is implemented using sequenceA?
01:37:57 <Axman6> well, there's an infinite number of implementations of that type, so yes, there's no way to know
01:38:20 <Axman6> yes, to impolemente the Traversable class, you need to implement one of those functions and you get the others for free
01:38:24 <Axman6> implement*
01:38:29 <euouae> Axman6: "Evaluate each monadic action in the structure from left to right, and collect the results. For a version that ignores the results see sequence_."
01:38:45 <euouae> Axman6: That docstring also does not hint at `>>` :P
01:38:57 <Axman6> why do you think it even uses >>?
01:39:12 × euouae quits (~euouae@user/euouae) (Quit: Client closed)
01:39:17 <Axman6> I would guess 90% of all Traversable implementation don't use that at all
01:39:42 euouae joins (~euouae@user/euouae)
01:40:17 <Axman6> most (all?) implementation of Traversable only need Applicative
01:41:30 <euouae> Axman6: I mean that a reference implementation could use >>
01:41:42 <euouae> It must use something akin to >>, it feeds the results of one action into another e.g. `sequence [Nothing, Just 1] == Nothing`
01:42:10 <Axman6> I'm not sure I agree
01:42:26 pe200012 joins (~pe200012@113.105.10.33)
01:42:33 cladur joins (~cladur@user-5-173-146-9.play-internet.pl)
01:43:01 <euouae> Ok I'm not taking a hard line here
01:43:02 <Axman6> > (:) <$> Nothing <*> ((:) <$> Just 1 <*> pure []))
01:43:03 × pe200012_ quits (~pe200012@218.107.49.28) (Ping timeout: 268 seconds)
01:43:04 <lambdabot> <hint>:1:49: error: parse error on input ‘)’
01:43:06 <Axman6> > (:) <$> Nothing <*> ((:) <$> Just 1 <*> pure [])
01:43:07 <lambdabot> Nothing
01:43:39 <euouae> Ok you're arguing between Monad and Applicative
01:43:53 <euouae> That's fine, but I'm talking about the lack of documentation for `sequence` :P
01:45:05 <Axman6> I still don't see what your point is, there's no >> in sequence for most types
01:45:43 <euouae> My point is, if you note the documentation of sequence, it is only illustrated in the last example that sequence has 'short-circuit behavior' as they call it
01:46:52 <Axman6> what does that have to do with >>?
01:46:54 <euouae> I'm looking at `evalState (sequence $ repeat $ do { n <- get; put (n*2); return n }) 1` which as I understand feeds the previous state into the next computation
01:47:36 <euouae> from Control.Monad.Trans.State.Lazy
01:47:45 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 248 seconds)
01:48:17 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Remote host closed the connection)
01:48:23 <Axman6> what does short circuit behaviour have to do with >>?
01:48:45 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
01:48:45 geekosaur joins (~geekosaur@xmonad/geekosaur)
01:49:04 adam1 joins (~adam@220-136-101-108.dynamic-ip.hinet.net)
01:49:07 <euouae> Well, `Nothing >> Just 1` gives `Nothing`
01:49:41 × alx741 quits (~alx741@181.196.68.193) (Quit: alx741)
01:49:43 <Axman6> yes, but it's not the only thing which does
01:50:00 <Axman6> importantly, (<*>) does too
01:50:41 <Axman6> so the behaviour of traverse matches the behaviour of the applicative instance for m and the traversal ordering of t
01:51:05 <euouae> m and t being?
01:51:10 <euouae> Maybe and [] ?
01:51:15 <Axman6> yes
01:51:27 <euouae> But sequence takes a monad
01:51:30 <euouae> Not an applicative
01:52:10 <Axman6> it days that, but almost always it's only using the Applicative instance, since all Monads are Applicatives
01:52:25 <Axman6> and the type is mostly a historical artefact
01:52:31 <euouae> It may be, but why is that important?
01:52:44 <euouae> Why are you protesting about my mention of `>>`?
01:52:44 <dsal> :t sequenceA
01:52:45 <lambdabot> (Traversable t, Applicative f) => t (f a) -> f (t a)
01:52:51 <Axman6> you tell me, I still don't know what your point is
01:53:04 <dsal> I don't understand what >> has to do with traverse. They seem unrelated.
01:53:15 <euouae> Ok look, a while ago you admitted sequence can have many implementations
01:53:24 <Axman6> because you will almost certainly never see any use of >> in any implementation of Traversable
01:53:24 <euouae> I'm saying that the one implementation the sequence has is not well-documented to distinguish it from all others
01:53:49 <dsal> @src sequenceA
01:53:49 <lambdabot> Source not found. :(
01:53:51 <dsal> @src sequence
01:53:51 <lambdabot> sequence [] = return []
01:53:51 <lambdabot> sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs)
01:53:51 <lambdabot> --OR
01:53:51 <lambdabot> sequence xs = foldr (liftM2 (:)) (return []) xs
01:54:13 <euouae> There you go, it uses `do` which uses `>>` right?
01:54:18 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 258 seconds)
01:54:24 <dsal> @undo do v <- x; vs <- sequence xs; return (v:vs)
01:54:24 <lambdabot> x >>= \ v -> sequence xs >>= \ vs -> return (v : vs)
01:54:27 geekosaur joins (~geekosaur@xmonad/geekosaur)
01:54:34 <Axman6> I don't think there are many law abiding implementations of sequence which don't do what we've talked about
01:55:07 <euouae> To be law abiding you need laws written down
01:55:14 <Axman6> like, traverse pure = pure ensures the structure is kept intact and the order of elements can't change
01:55:15 <euouae> Where's the laws for sequence documented?
01:55:27 × xff0x quits (~xff0x@2001:1a81:53d2:1c00:df20:e0ed:5860:3ed0) (Ping timeout: 258 seconds)
01:55:30 <dsal> https://en.wikibooks.org/wiki/Haskell/Traversable#The_Traversable_laws
01:55:54 <euouae> but can't sequence have many different implementations?
01:56:02 <davean> also https://hackage.haskell.org/package/base-4.15.0.0/docs/Data-Traversable.html#g:10
01:56:12 <euouae> couldn't you throw away the result of the action of v <- x; and just collect v instead?
01:56:16 <davean> euouae: all that follow those laws
01:56:43 <dsal> You could try, but if you're implementing Traversable, you should run your implementation against checkers and see if you've made any mistakes.
01:57:07 <euouae> so you're saying that the above example of `evalState (sequence $ repeat $ do { n <- get; put (n*2); return n }) 1`
01:57:17 <euouae> is forced to produce [1,2,4,8,...] because of Traversable?
01:57:18 xff0x joins (~xff0x@2001:1a81:53fa:2600:8056:588e:c971:d9df)
01:57:28 <euouae> Could it not had been [1,1,1,...] ?
01:57:57 <Axman6> yes
01:58:06 <euouae> got it
01:58:45 euouae needs to think about this more
02:01:23 <dsal> One easy way to think about it is to try to make the thing that you think is bad and then verify it's lawful.
02:01:55 <euouae> unlawful?
02:03:11 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
02:03:25 <dsal> Well, if you make a lawful type that does something you think is bad, then it's a concrete discussion point.
02:03:48 <euouae> Ok
02:05:29 Matthias1 joins (~Matthias1@2603-8001-b545-4900-aca4-b81a-fb11-e9da.res6.spectrum.com)
02:05:51 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds)
02:06:09 × Matthias1 quits (~Matthias1@2603-8001-b545-4900-aca4-b81a-fb11-e9da.res6.spectrum.com) (Remote host closed the connection)
02:07:20 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
02:07:35 lavaman joins (~lavaman@98.38.249.169)
02:07:42 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
02:12:23 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
02:14:30 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 268 seconds)
02:16:00 zebrag joins (~chris@user/zebrag)
02:16:58 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds)
02:17:17 <Axman6> hat's the type whose Applicative instance is something like (Foo mf) <*> (Foo ma) = Foo ((\x f -> f a) <$> ma <*> mf)?
02:18:06 <Axman6> What's*
02:18:59 <pavonia> Is that supposed to be (\a f -> f a)?
02:19:11 <Axman6> uh yes
02:19:13 × td_ quits (~td@muedsl-82-207-238-245.citykom.de) (Ping timeout: 248 seconds)
02:19:50 <Axman6> the Applicative with the order of effects reversed basically
02:20:16 <pavonia> Hhm, no idea
02:21:06 td_ joins (~td@muedsl-82-207-238-098.citykom.de)
02:21:51 <geekosaur> https://downloads.haskell.org/ghc/latest/docs/html/libraries/transformers-0.5.6.2/Control-Applicative-Backwards.html
02:22:06 <Axman6> <3
02:27:41 shailangsa joins (~shailangs@host86-145-14-24.range86-145.btcentralplus.com)
02:28:02 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:28:02 FinnElija is now known as Guest2839
02:28:02 finn_elija is now known as FinnElija
02:31:46 × Guest2839 quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 268 seconds)
02:32:23 <dibblego> @type flip (<**>)
02:32:24 <lambdabot> Applicative f => f (a -> b) -> f a -> f b
02:33:47 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 258 seconds)
02:36:54 × remexre quits (~nathan@user/remexre) (Ping timeout: 250 seconds)
02:38:28 lavaman joins (~lavaman@98.38.249.169)
02:40:56 pe200012_ joins (~pe200012@113.105.10.33)
02:41:01 × pe200012 quits (~pe200012@113.105.10.33) (Ping timeout: 268 seconds)
02:43:26 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
02:46:47 × epolanski quits (uid312403@id-312403.brockwell.irccloud.com) (Quit: Connection closed for inactivity)
02:49:16 polyphem joins (~polyphem@2a02:810d:640:776c:5d1:5727:1484:7756)
02:49:53 × Guest6722 quits (~chris@81.96.113.213) (Remote host closed the connection)
02:56:32 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
02:59:27 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
03:00:04 VoidNoir0 joins (~VoidNoir0@72.80.203.52)
03:02:25 remexre joins (~nathan@user/remexre)
03:02:33 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:05:59 × hiruji quits (~hiruji@user/hiruji) (Ping timeout: 258 seconds)
03:06:45 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 258 seconds)
03:06:47 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
03:09:06 × dermato quits (~dermatobr@154.21.23.75) (Remote host closed the connection)
03:09:30 wrengr is now known as wrengr_away
03:09:31 MidAutumnHotaru5 joins (~MidAutumn@user/midautumnmoon)
03:09:48 × MidAutumnHotaru quits (~MidAutumn@user/midautumnmoon) (Read error: Connection reset by peer)
03:09:49 MidAutumnHotaru5 is now known as MidAutumnHotaru
03:11:21 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
03:18:28 hiruji joins (~hiruji@user/hiruji)
03:19:57 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Read error: Connection reset by peer)
03:30:23 xsperry joins (~as@user/xsperry)
03:30:47 dermato joins (~dermatobr@154.21.23.75)
03:33:16 × euouae quits (~euouae@user/euouae) (Quit: Ping timeout (120 seconds))
03:33:36 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
03:37:07 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
03:38:11 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
03:39:16 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
03:43:29 × slack1256 quits (~slack1256@191.126.23.98) (Ping timeout: 248 seconds)
03:53:13 Matthias1 joins (~Matthias1@2603-8001-b545-4900-c172-9f24-99f4-d24a.res6.spectrum.com)
03:54:31 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
03:54:31 allbery_b joins (~geekosaur@xmonad/geekosaur)
03:54:36 allbery_b is now known as geekosaur
03:56:00 × abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving)
03:59:29 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 248 seconds)
04:00:30 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
04:03:32 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
04:04:07 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
04:06:47 geekosaur joins (~geekosaur@xmonad/geekosaur)
04:07:37 × adam1 quits (~adam@220-136-101-108.dynamic-ip.hinet.net) (Read error: Connection reset by peer)
04:08:01 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 248 seconds)
04:13:08 dmwit joins (~dmwit@pool-108-28-26-143.washdc.fios.verizon.net)
04:15:05 lavaman joins (~lavaman@98.38.249.169)
04:16:08 × sim590 quits (~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 258 seconds)
04:19:08 × shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit)
04:19:35 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 258 seconds)
04:20:15 shriekingnoise joins (~shrieking@186.137.144.80)
04:27:37 × lbseale quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
04:31:36 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
04:35:45 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 248 seconds)
04:41:24 × pe200012_ quits (~pe200012@113.105.10.33) (Remote host closed the connection)
04:41:49 pe200012_ joins (~pe200012@113.105.10.33)
04:48:33 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
04:49:08 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
04:49:43 euouae joins (~euouae@user/euouae)
04:51:50 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
04:55:06 × thaumavorio quits (~thaumavor@thaumavor.io) (Quit: ZNC 1.8.2 - https://znc.in)
04:56:01 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 248 seconds)
04:56:52 dyeplexer joins (~dyeplexer@user/dyeplexer)
04:57:26 thaumavorio joins (~thaumavor@thaumavor.io)
04:59:50 × amanr quits (~therojjha@20.204.87.0) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
05:01:49 × Matthias1 quits (~Matthias1@2603-8001-b545-4900-c172-9f24-99f4-d24a.res6.spectrum.com) (Read error: Connection reset by peer)
05:02:24 Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
05:07:24 × euouae quits (~euouae@user/euouae) (Quit: Ping timeout (120 seconds))
05:08:28 × zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 272 seconds)
05:21:37 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 248 seconds)
05:22:50 <siraben> How do I load .o files from GHCi?
05:23:53 adam1 joins (~adam@2001-b011-4007-2ff3-652c-fd1e-24cd-c39c.dynamic-ip6.hinet.net)
05:24:29 <janus> siraben: .o files typically need linking before you can 'load' them. do you mean a .so file?
05:24:45 <siraben> I have a `.o` file created by `clang -c stub.c`
05:24:53 <siraben> I want this command `ghci -ghci-script compat.ghci party.hs ../stub.o`
05:24:55 <siraben> https://crypto.stanford.edu/~blynn/compiler/module.html
05:25:03 <siraben> but I can't seem to load stub.o while in GHCi
05:25:58 <siraben> I'm using haskell-mode in Emacs so ideally I want to do it without breaking out to the terminal
05:26:59 <janus> oh, i didn't even know you could provide objects to link to ghci
05:27:15 × pottsy quits (~pottsy@2400:4050:b560:3700:38eb:29ba:72bf:9791) (Quit: Leaving)
05:27:56 <janus> i would use capi with cbits and c2hs, but i realize that is totally different approach. sorry
05:29:02 sim590 joins (~simon@modemcable090.207-203-24.mc.videotron.ca)
05:31:58 <siraben> I see. This is for debugging and development purposes only because the Haskell files would get compiled by blynn's Haskell compiler.
05:32:06 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:33:08 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:37:02 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
05:38:36 × sim590 quits (~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 268 seconds)
05:38:45 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
05:43:56 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
05:45:20 michalz joins (~michalz@185.246.204.37)
05:53:03 Guest71 joins (~Guest71@46.97.169.79)
05:54:32 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
05:57:58 ubert joins (~Thunderbi@91.141.49.166.wireless.dyn.drei.com)
06:02:42 × favonia quits (~favonia@user/favonia) (Ping timeout: 258 seconds)
06:03:17 curiousgay joins (~curiousga@77-120-186-48.kha.volia.net)
06:05:38 × Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection)
06:07:36 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
06:09:24 Matthias1 joins (~Matthias1@2603-8001-b545-4900-c870-813e-66c7-5f1f.res6.spectrum.com)
06:15:01 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
06:16:07 × adam1 quits (~adam@2001-b011-4007-2ff3-652c-fd1e-24cd-c39c.dynamic-ip6.hinet.net) (Ping timeout: 258 seconds)
06:27:33 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
06:28:46 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 258 seconds)
06:28:48 Lord_of_Life_ is now known as Lord_of_Life
06:32:36 × ubert quits (~Thunderbi@91.141.49.166.wireless.dyn.drei.com) (Ping timeout: 258 seconds)
06:33:11 <[exa]> siraben: if you just want to have the object loaded, you may have luck with compiling to `.so` and supplying LD_PRELOAD or something
06:33:23 lavaman joins (~lavaman@98.38.249.169)
06:33:44 <[exa]> siraben: but that's quite crude. why would you need that linked?
06:37:12 mei joins (~mei@user/mei)
06:37:22 × pe200012_ quits (~pe200012@113.105.10.33) (Quit: Konversation terminated!)
06:37:26 <siraben> [exa]: so I can run main, because it calls out to the custom RTS
06:37:53 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 248 seconds)
06:38:24 <[exa]> ok you need .so for sure
06:38:33 <[exa]> after that just use unix dlopen
06:38:48 <[exa]> https://hackage.haskell.org/package/unix-2.7.2.2/docs/System-Posix.html#v:dlopen
06:38:51 <[exa]> and all it with FFI
06:39:34 <[exa]> `man 3 dlsym` should have the details
06:39:40 <[exa]> *call
06:39:52 <siraben> Heh, I'm on macOS
06:39:56 <siraben> Should be the same with dylib I tihnk
06:40:02 akronymus joins (~akronymus@85.31.8.181)
06:40:14 <[exa]> even macos should have dl
06:40:54 × curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 268 seconds)
06:42:14 Cajun9 joins (~Cajun@user/cajun)
06:44:31 × Cajun quits (~Cajun@user/cajun) (Ping timeout: 246 seconds)
06:44:37 Cajun9 is now known as Cajun
06:45:45 lep- is now known as lep
06:46:10 jneira joins (~jneira@212.8.115.226)
06:53:20 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
06:54:40 vysn joins (~vysn@user/vysn)
06:58:10 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds)
06:58:51 Pickchea joins (~private@user/pickchea)
07:00:38 lortabac joins (~lortabac@2a01:e0a:541:b8f0:fe6f:ef7e:c421:8ab8)
07:01:22 acidjnk_new joins (~acidjnk@p200300d0c72b9574c56a490b8c03a837.dip0.t-ipconnect.de)
07:03:51 dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be)
07:13:04 epolanski joins (uid312403@id-312403.brockwell.irccloud.com)
07:14:18 curiousgay joins (~curiousga@77-120-186-48.kha.volia.net)
07:14:24 MorrowM joins (~Morrow@176.12.208.59)
07:17:10 thyriaen joins (~thyriaen@dynamic-078-054-169-242.78.54.pool.telefonica.de)
07:18:14 × shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit)
07:28:01 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
07:30:11 adam1 joins (~adam@2001-b011-4007-0cae-c534-472f-0009-0a8c.dynamic-ip6.hinet.net)
07:34:40 Boomerang joins (~Boomerang@xd520f68c.cust.hiper.dk)
07:34:47 × bitmapper quits (uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity)
07:37:27 Matthias_ joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
07:37:41 <Axman6> macos might have other tools, like otool or something
07:38:57 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:39:45 × azeem quits (~azeem@dynamic-adsl-84-220-236-17.clienti.tiscali.it) (Ping timeout: 248 seconds)
07:40:16 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
07:40:50 × Matthias1 quits (~Matthias1@2603-8001-b545-4900-c870-813e-66c7-5f1f.res6.spectrum.com) (Ping timeout: 258 seconds)
07:42:22 azeem joins (~azeem@dynamic-adsl-84-220-236-17.clienti.tiscali.it)
07:42:57 × MorrowM quits (~Morrow@176.12.208.59) (Ping timeout: 248 seconds)
07:49:58 × Guest71 quits (~Guest71@46.97.169.79) (Ping timeout: 246 seconds)
07:54:16 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
07:54:41 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 248 seconds)
07:54:50 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
07:59:50 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds)
08:02:09 Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
08:04:17 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
08:05:27 hendursa1 joins (~weechat@user/hendursaga)
08:06:29 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
08:08:30 × hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds)
08:10:41 yoctocell joins (~user@h87-96-130-155.cust.a3fiber.se)
08:11:32 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds)
08:17:37 allbery_b joins (~geekosaur@xmonad/geekosaur)
08:17:37 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
08:17:40 allbery_b is now known as geekosaur
08:19:05 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
08:19:32 amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
08:19:43 <kuribas> Is it bad to write a function memoize :: (a -> IO b) -> IO (a -> b)?
08:19:57 gehmehgeh joins (~user@user/gehmehgeh)
08:20:24 <Taneb> A little
08:20:30 <kuribas> as opposed to (a -> IO b) -> IO (a -> IO b)?
08:20:50 <Taneb> It pretty much forces you to have effects happen in pure code
08:21:22 <merijn> kuribas: You can't write that function
08:21:29 <merijn> kuribas: I know, because I have tried
08:21:36 <kuribas> hmm
08:21:37 <merijn> Over and over and over and over and over and over and over
08:21:51 <kuribas> hehe
08:21:53 <merijn> Which makes sense
08:22:03 <merijn> because the IO can depend on the value of the input 'a'
08:22:12 <merijn> So you can't "do the IO first" and get back a function
08:22:25 <merijn> That requires proving the IO in "a -> IO b" doesn't depend on 'a'
08:22:34 <merijn> And I dunno the abstraction for that
08:22:36 <kuribas> I can use unsafePerformIO?
08:22:41 <merijn> How?
08:22:53 <merijn> I mean, sure
08:23:00 <kuribas> ah wait...
08:23:14 <merijn> You can do "\f -> return (\x -> unsafePerformIO (f x))" but that's not what you meant, right?
08:23:35 <merijn> Might as well skip the return if you do that :p
08:24:08 × thyriaen quits (~thyriaen@dynamic-078-054-169-242.78.54.pool.telefonica.de) (Remote host closed the connection)
08:24:37 <kuribas> that's what I meant...
08:25:30 spirit_ joins (~spirit@122.164.113.81)
08:26:11 × jneira quits (~jneira@212.8.115.226) (Quit: Client closed)
08:26:12 <kuribas> like this? https://gist.github.com/kuribas/6d63a4b9be2ac210162b4c9ee2ab10ca
08:27:48 jneira joins (~jneira@212.8.115.226)
08:29:04 × jneira quits (~jneira@212.8.115.226) (Client Quit)
08:29:24 jneira joins (~jneira@212.8.115.226)
08:29:28 <merijn> kuribas: Why even bother with the wrapping code returning IO at that point
08:29:39 <merijn> Just, like, unsafePerformIO the whole thing and call it a day
08:29:55 <kuribas> merijn: because it is still somewhat morally acceptable...
08:30:26 <Taneb> kuribas: I don't think it's that morally acceptable
08:30:45 <kuribas> Because IO is returning a function whos value depends on future IO. But there is no contract that says IO cannot do this right?
08:31:04 <kuribas> The contract is that a pure function should be pure, that is, return the same value for the same inputs.
08:31:05 <merijn> kuribas: Eh, yes there is
08:31:18 <merijn> kuribas: Like, this violates literally *every* part of purity in *many* horrific ways
08:31:26 <kuribas> No it doesn't?
08:31:28 <Taneb> If I use that I can now pass a pure function as an argument to another function, such that when I call the supposedly pure function IO effects might mysteriousl happen
08:31:28 <kuribas> IO isn't pure...
08:31:33 <merijn> kuribas: Yes it is
08:31:39 <merijn> kuribas: That's the entire freaking point of having IO
08:32:00 <kuribas> I mean, executing an IO action isn't pure...
08:32:21 <merijn> kuribas: executing IO is guaranteed to be ordered with respect to other
08:32:24 <merijn> *IO*
08:32:42 <merijn> You have completely ripped any sense of ordering out of the execution model
08:32:48 <kuribas> execpt if you have threads?
08:32:51 <kuribas> except for lazy IO?
08:32:58 <merijn> And made it so that a pure function "a -> b" can execute IO
08:33:08 <kuribas> I mean, IO code can call C that has a timer and does an action at a random time...
08:33:11 <Taneb> kuribas: memoize2 (\x -> putStrLn x >> length x) >>= \f -> print (f "hello" == f "hello"); what does this print
08:33:14 <merijn> kuribas: Lazy IO violates purity and there's a reason why it's called* *unsafe*InterleaveIO
08:33:20 <merijn> kuribas: Because lazy IO *is* unsafe
08:33:33 <merijn> kuribas: Threads are still well ordered with respect to IO in the same thread
08:33:34 <Cajun> isnt IO the way of purely (in the language representation) dealing with impure concepts?
08:34:04 <kuribas> yes
08:34:05 <merijn> Like, I don't mind people doing *wildly* unsafe things
08:34:15 <merijn> but don't kid yourself that this code is not *wildly* unsafe
08:34:18 <kuribas> There is no garantee of safety in IO, which is why IO exists.
08:34:29 <merijn> kuribas: IO guarantees lots of safety
08:34:36 <Taneb> kuribas: this makes there no guarantee of safety in some later not-IO
08:34:38 <Cajun> i would say as a rule of thumb avoid unsafePerformIO unless its provably pure
08:34:38 <merijn> There is no guarantee of safety in code using/doing unsafe things
08:34:44 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
08:34:53 <kuribas> Taneb: yes it does. The resulting function is pure.
08:35:50 <Taneb> No it isn;t
08:35:56 <kuribas> yes it is.
08:35:58 <Taneb> It can randomly do side effects
08:36:01 <Taneb> It just pretends to be pure
08:36:32 <kuribas> Taneb: It's the IO which does the side-effects.
08:36:49 <merijn> kuribas: That resulting function is not pure
08:36:56 <merijn> kuribas: For any sensible or common definition of pure
08:37:04 <Cajun> youre *always* doing IO when you use unsafePerformIO correct?
08:37:13 <Taneb> kuribas: the IO tag is long gone when the side effects can happen
08:37:18 <merijn> Cajun: "maybe"
08:37:24 <kuribas> Taneb: true
08:37:30 × cawfee quits (~root@2406:3003:2077:2758::babe) (Ping timeout: 240 seconds)
08:37:38 <merijn> Cajun: You should consider "unsafePerformIO" to mean "I'm ok with this happening 0, 1, or more times"
08:37:55 <Cajun> does linearTypes not solve that?
08:38:03 <merijn> Cajun: Since it might end up getting completely optimised away :p
08:38:03 <kuribas> Taneb: but that can be true of any IO action.
08:38:03 mc47 joins (~mc47@xmonad/TheMC47)
08:38:06 <Cajun> or whatever the new thing was called that means it can only be used once
08:38:10 <merijn> kuribas: No
08:38:21 <merijn> kuribas: That is true of any *code* (IO or no) that uses unsafeX
08:38:42 <merijn> kuribas: Which is why you should not use unsafeX unless you know what you're doing, since it completely invalidates all safety
08:38:53 <Cajun> ST monad uses unsafePerformIO and is entirely type safe
08:39:04 <merijn> Cajun: It does not
08:39:25 <merijn> Cajun: At least, not last time I looked at all the implementation
08:39:30 <merijn> Cajun: It would make no sense, anyway
08:39:57 <merijn> Cajun: Both ST and IO are implemented using the same ST# (i.e. primitive ST) monad inside GHC
08:40:12 <Cajun> ah yeah it doesnt, it does use unsafe functions but not that specific one
08:40:15 pilyn joins (~pilyn@user/pilyn)
08:40:23 <merijn> Cajun: It doesn't use unsafe functions, afaik
08:40:31 <merijn> Cajun: It doesn't have to, because it's not unsafe
08:40:43 × hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
08:40:45 <merijn> ST is perfectly fine and cromulent
08:40:49 <kuribas> merijn: we can debate this, but "memoize2 :: (Eq a, Hashable a) => (a -> IO b) -> (a -> b)" is far, far worse.
08:41:09 <merijn> kuribas: Not really
08:41:11 <kuribas> and far less predictable.
08:41:16 <merijn> kuribas: No
08:41:19 <merijn> It's really not
08:41:40 <merijn> It superficially looks less safe than your current version
08:41:50 <merijn> But practically speaking it's exactly as bad as what you have now
08:42:25 <Cajun> merijn: it does define some unsafe functions but thats for lazy deference of the monad well i know you can implement a typesafe version of the ST monad in normal haskell (not GHC nonsense :P ) using unsafePerformIO
08:42:55 <Cajun> those two sentences didnt meld together well but i hope you get the idea lol
08:46:04 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
08:46:44 Pickchea joins (~private@user/pickchea)
08:47:04 fendor joins (~fendor@213162073240.public.t-mobile.at)
08:49:16 img joins (~img@user/img)
08:50:12 burnsidesLlama joins (~burnsides@client-8-91.eduroam.oxuni.org.uk)
08:53:39 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
08:55:37 <kuribas> merijn: I don't disagree that it's unsafe, I disagree that IO has to be safe, or that its effects have to be momentarily.
08:56:20 <kuribas> For example, and IO action returns a value, and no side effects will happen after returning that value.
08:56:36 <kuribas> It's a good property to have, but it's not a property that IO is garanteed to have.
08:56:42 <merijn> That's 100% in the absence of threading
08:56:58 ubert joins (~Thunderbi@91.141.49.166.wireless.dyn.drei.com)
08:57:17 <kuribas> what about interupts, timers?
08:57:42 <merijn> Can't set interrupt or timers that (visibly) affect non-IO code
08:57:59 drd joins (~drd@93-39-151-19.ip76.fastwebnet.it)
08:57:59 cheater joins (~Username@user/cheater)
08:57:59 <merijn> Timers, interrupts, and async exceptions are only visible within IO
08:58:10 <merijn> Pure code can't notice them
08:58:27 chomwitt joins (~chomwitt@2a02:587:dc02:6400:12c3:7bff:fe6d:d374)
09:00:11 <kuribas> merijn: you cannot "see" the effects of the IO in my signature above. From IO, yes, but not from pure code.
09:01:29 <kuribas> hmm, well maybe you can
09:01:34 <kuribas> with lazyIO...
09:01:40 <merijn> Anyway, I'm bored of this discussion
09:01:46 × burnsidesLlama quits (~burnsides@client-8-91.eduroam.oxuni.org.uk) (Remote host closed the connection)
09:02:21 burnsidesLlama joins (~burnsides@client-8-91.eduroam.oxuni.org.uk)
09:02:24 <merijn> I'll pre-emptively give you my "I told you so", feel free to cash it in at any later point when things blow up :p
09:02:26 <kuribas> yeah, I am not sure I'll use it anyway...
09:02:43 <kuribas> merijn: sure :)à
09:05:07 montxero joins (~user@149.167.149.74)
09:06:41 × burnsidesLlama quits (~burnsides@client-8-91.eduroam.oxuni.org.uk) (Ping timeout: 248 seconds)
09:08:31 cawfee joins (~root@2406:3003:2077:2758::babe)
09:10:44 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
09:11:51 silasfox joins (~silasfox@62.159.27.1)
09:12:03 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
09:13:59 adam1 is now known as gfunk
09:15:30 gfunk is now known as adam1
09:20:44 × adam1 quits (~adam@2001-b011-4007-0cae-c534-472f-0009-0a8c.dynamic-ip6.hinet.net) (Quit: WeeChat 3.2)
09:22:31 adam1 joins (~adam@2001-b011-4007-0cae-c534-472f-0009-0a8c.dynamic-ip6.hinet.net)
09:26:05 × silasfox quits (~silasfox@62.159.27.1) (Quit: Connection closed)
09:28:32 silasfox joins (~silasfox@62.159.27.1)
09:30:24 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:fe6f:ef7e:c421:8ab8) (Quit: WeeChat 2.8)
09:34:32 × silasfox quits (~silasfox@62.159.27.1) (Quit: Connection closed)
09:36:23 burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk)
09:37:16 silasfox joins (~silasfox@62.159.27.1)
09:40:16 × cods quits (~fred@82-65-232-44.subs.proxad.net) (Ping timeout: 250 seconds)
09:40:26 × montxero quits (~user@149.167.149.74) (Read error: No route to host)
09:40:37 cods joins (~fred@82-65-232-44.subs.proxad.net)
09:40:57 × burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 268 seconds)
09:43:07 × chomwitt quits (~chomwitt@2a02:587:dc02:6400:12c3:7bff:fe6d:d374) (Ping timeout: 258 seconds)
09:44:13 × adam1 quits (~adam@2001-b011-4007-0cae-c534-472f-0009-0a8c.dynamic-ip6.hinet.net) (Quit: WeeChat 3.2)
09:47:03 Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com)
09:56:31 <Gurkenglas> Is there a library that wraps all the reasonable uses of unsafePerformIO, or is there folk knowledge to the effect that you could never cover exactly the reasonable usecases?
09:57:00 × cods quits (~fred@82-65-232-44.subs.proxad.net) (Ping timeout: 276 seconds)
09:57:26 cods joins (~fred@82-65-232-44.subs.proxad.net)
09:57:36 chomwitt joins (~chomwitt@2a02:587:dc02:6400:12c3:7bff:fe6d:d374)
09:57:37 MorrowM joins (~Morrow@176.12.208.59)
09:57:55 <Gurkenglas> (but even so - is there a library that wraps many reasonable usecases but not all, and perhaps another module that wraps all the reasonable usecases and then some, to find a tighter upper bound on the unattainable?)
09:58:58 burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk)
09:59:35 <Gurkenglas> (Same for unsafeCoerce, of course, where Gödel says we can at most do the latter nested interval sequence)
10:02:17 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
10:02:26 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:03:14 fendor_ joins (~fendor@212095005136.public.telering.at)
10:04:24 × fendor quits (~fendor@213162073240.public.t-mobile.at) (Ping timeout: 268 seconds)
10:05:43 lortabac joins (~lortabac@2a01:e0a:541:b8f0:3164:2b89:620b:cb12)
10:07:29 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 248 seconds)
10:07:33 montxero joins (~user@149.167.149.74)
10:07:48 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
10:08:24 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:12:28 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
10:15:47 × davros quits (~davros@host86-184-180-96.range86-184.btcentralplus.com) (Remote host closed the connection)
10:16:16 × akronymus quits (~akronymus@85.31.8.181) (Ping timeout: 246 seconds)
10:18:48 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
10:19:58 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:21:04 × acidjnk_new quits (~acidjnk@p200300d0c72b9574c56a490b8c03a837.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
10:25:17 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
10:25:37 × Pickchea quits (~private@user/pickchea) (Ping timeout: 248 seconds)
10:25:43 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:30:57 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 248 seconds)
10:30:58 × fendor_ quits (~fendor@212095005136.public.telering.at) (Read error: Connection reset by peer)
10:31:05 akronymus joins (~akronymus@85.31.8.181)
10:31:30 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:32:08 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
10:32:15 oxide joins (~lambda@user/oxide)
10:35:01 lavaman joins (~lavaman@98.38.249.169)
10:35:17 × burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Read error: Connection reset by peer)
10:35:43 burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk)
10:37:04 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
10:37:13 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:39:29 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 248 seconds)
10:43:13 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 248 seconds)
10:43:45 bin_ joins (~bin@user/bin/x-1583188)
10:43:52 × _bin quits (~bin@user/bin/x-1583188) (Ping timeout: 268 seconds)
10:45:15 OscarH_ joins (~OscarH@97e48a81.skybroadband.com)
10:45:58 × OscarH quits (~OscarH@97e48a81.skybroadband.com) (Ping timeout: 272 seconds)
10:47:21 × jneira quits (~jneira@212.8.115.226) (Quit: Client closed)
10:47:54 jneira joins (~jneira@212.8.115.226)
10:48:01 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 248 seconds)
10:48:31 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:52:21 Pickchea joins (~private@user/pickchea)
10:53:43 × norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 268 seconds)
10:56:27 × burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection)
10:56:57 burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk)
10:57:37 × drd quits (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 248 seconds)
10:58:39 Guest46 joins (~Guest46@2a01:4b00:8099:2b00:a808:2632:c145:d901)
10:58:39 <Guest46> hi
10:59:17 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
10:59:28 <Guest46> how nice is purescript frontend + haskell backend as a development experience?
11:00:08 <Guest46> i was thinking of making a website that lets you run code online but ties into the compiler for integration/tips or maybe language server
11:00:20 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:00:24 <Guest46> is it better to do everything on the backend and have a very dumb front end?
11:01:01 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
11:01:44 × burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 268 seconds)
11:03:42 <maerwald[m]> Guest46: typescript + haskell is better
11:03:55 <Guest46> could you explain please?
11:04:17 akronymus parts (~akronymus@85.31.8.181) ()
11:04:33 × MorrowM quits (~Morrow@176.12.208.59) (Ping timeout: 248 seconds)
11:04:50 <maerwald[m]> purescript isn't popular, lacks documentation, requires effort to integrate with certain js libraries, etc etc
11:04:56 <maerwald[m]> doesn't bring much to the table compared to typescript
11:05:14 <Guest46> is elm better?
11:05:43 <Guest46> i tried Rust with Seed (web assembly frontend) and found a bunch of strange runtime problems
11:06:06 <maerwald[m]> have never used elm... not sure why I would choose that over typescript either
11:06:35 × Vajb quits (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer)
11:06:44 Vajb joins (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
11:06:44 <maerwald[m]> the language isn't even exciting (unlike purescript)
11:08:02 × Guest46 quits (~Guest46@2a01:4b00:8099:2b00:a808:2632:c145:d901) (Quit: Client closed)
11:08:15 Guest46 joins (~Guest46@2a01:4b00:8099:2b00:a808:2632:c145:d901)
11:09:50 <Guest46> hmm maybe typescript is best
11:09:56 <Guest46> i'm guessing that asterius is still not usable??
11:10:04 × Vajb quits (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer)
11:10:54 × Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Ping timeout: 258 seconds)
11:15:42 Vajb joins (~Vajb@2001:999:252:4e3c:27f9:d93:655e:583)
11:15:49 <nf> int-e: hi! would you consider releasing a new lambdabot version please?
11:18:48 <int-e> oh wow, has it been a year already?
11:21:01 × jneira quits (~jneira@212.8.115.226) (Ping timeout: 246 seconds)
11:22:41 × azeem quits (~azeem@dynamic-adsl-84-220-236-17.clienti.tiscali.it) (Remote host closed the connection)
11:22:51 azeem joins (~azeem@dynamic-adsl-84-220-236-17.clienti.tiscali.it)
11:23:19 × Arsen quits (~arsen@managarm/dev/Arsen) (Quit: Quit.)
11:24:12 Arsen joins (~arsen@managarm/dev/Arsen)
11:29:12 burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk)
11:30:01 <Guest46> int-e sorry if this is a dumb question but how does lambda bot ensure it is secure? like running random bits of code off the internet
11:30:09 <Guest46> not that the expressions are complicated
11:31:57 <int-e> Guest46: well, it leverages SafeHaskell and the type system to avoid running arbitrary IO. But I've also sandboxed mueval (which is what compiles and runs the Haskell code for lambdabot)...
11:33:25 <merijn> Guest46: Yahb doesn't bother with safe haskell at all and relies on just sandboxing
11:33:39 <merijn> % readFile "/etc/passwd" >>= putStrLn
11:33:40 <yahb> merijn: *** Exception: /etc/passwd: openFile: does not exist (No such file or directory)
11:33:50 <Guest46> huh interesting so like a linux container
11:33:53 <Guest46> or virtual machine?
11:34:07 <merijn> That or something like a BSD jail, yeah
11:34:10 × burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 272 seconds)
11:34:16 <merijn> With limited network access, presumably
11:34:25 <merijn> > print True
11:34:26 <lambdabot> <IO ()>
11:34:32 <merijn> Lambdabot refuses to run IO
11:34:34 <merijn> % print True
11:34:34 <yahb> merijn: True
11:34:38 × Cajun quits (~Cajun@user/cajun) (Quit: Client closed)
11:35:26 <Guest46> that's very intriguing two different approaches. i suppose i'd always need a sandbox because of memory leaks
11:35:53 <merijn> And possible bugs :p
11:36:03 <Guest46> 'possible' is optimistic haha
11:36:09 <Guest46> at least for me
11:36:16 <merijn> lambdabot certainly had issues in the past
11:36:41 <merijn> But it's also been around for a *long* ass time and most obvious (and obscure) exploits have been tried already :p
11:37:02 <Guest46> i don't really know what i'm doing so i guess i'll just run my code in as strict a sandbox that runs the code without internet
11:37:03 <merijn> For sure lambdabot was already around when I started somewhere around 2007-2009, I think
11:37:19 <merijn> Guest46: In general the best approach is "don't run untrusted code" :p
11:37:25 <Guest46> ahh
11:37:30 <Guest46> well the idea is an educational haskell site
11:37:34 <Guest46> it is pretty much part of the premise
11:39:22 <Guest46> i also think it would be pretty fun to figure out how to do it, thanks i'll look into mueval :) have a nice day
11:39:28 × markpythonicbitc quits (~markpytho@2601:647:5a00:35:9c61:394:eb0f:e1ed) (Quit: My MacBook has gone to sleep. ZZZzzz…)
11:39:37 <merijn> Guest46: RIP your sanity, then ;)
11:40:00 <merijn> Guest46: Well, one thing to ask yourself is whether you need/want to, support using IO for one thing
11:40:08 norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
11:40:51 <Guest46> i'll err on the side of caution and avoid running arbitrary IO until I have to
11:41:53 × oxide quits (~lambda@user/oxide) (Ping timeout: 248 seconds)
11:42:24 futty joins (~futty@c83-252-75-55.bredband.tele2.se)
11:43:03 × Pickchea quits (~private@user/pickchea) (Ping timeout: 268 seconds)
11:44:46 favonia joins (~favonia@user/favonia)
11:45:01 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
11:45:32 Guest8443 joins (~Guest84@2406:3003:2006:447e:71a7:e07d:4b0e:e66e)
11:47:51 lep is now known as lep-
11:48:26 <futty> The use of the words "variant" and "invariant" is of importance in defining/designing recursion in my Haskell course and I have an understanding of them. But I cant quite define what they are, can anyone help me out?
11:48:46 oxide joins (~lambda@user/oxide)
11:49:25 <Guest46> do you have a specific example that you are confused about?
11:49:34 <Guest46> that may help narrow down any confusions
11:49:50 <merijn> futty: An "invariant" doesn't, well, vary. i.e. it's a property that is true for all possible executions
11:50:58 × chomwitt quits (~chomwitt@2a02:587:dc02:6400:12c3:7bff:fe6d:d374) (Ping timeout: 240 seconds)
11:51:02 <merijn> futty: I'm not sure I see "variant" very often in Haskell, tbh
11:51:13 <merijn> futty: Other than it's normal English usage
11:51:20 × MidAutumnHotaru quits (~MidAutumn@user/midautumnmoon) (Quit: Leaving for a break - theLounge)
11:51:23 <merijn> But yeah, context would be useful
11:53:17 MidAutumnHotaru joins (~MidAutumn@user/midautumnmoon)
11:53:54 <futty> myReplicate :: Integer -> a -> [a]
11:53:54 <futty> --variant: n
11:53:55 <futty> myReplicate 0 toRep = []
11:53:55 <futty> myReplicate n toRep = toRep : myReplicate (n-1) toRep
11:54:31 <futty> I have a better understanding of a variant, it is literally varying and eventually pattern matching aganst a base case. That ensures function termination.
11:55:13 <futty> I cant really understand invariant, it is for example found in the algorithm book when describing a sorting algorithm.
11:56:21 <unrooted> Can I still somehow continue 'Stack install' even if I get 'warning: - Wdeprecations'?
11:56:34 <futty> https://imgur.com/PeJvwvc
11:56:35 × Vajb quits (~Vajb@2001:999:252:4e3c:27f9:d93:655e:583) (Read error: Connection reset by peer)
11:56:50 kor1 joins (~kor1@user/kor1)
11:56:53 × Guest46 quits (~Guest46@2a01:4b00:8099:2b00:a808:2632:c145:d901) (Quit: Client closed)
11:56:58 <futty> The example of invariant. It is described in such formal language that I cant quite grasp what it is.
11:57:10 <merijn> futty: A loop invariant is a property that is true for every iteration of the loop
11:57:29 <merijn> futty: A property whose truth doesn't change, regardless of which iteration we're in
11:57:40 <futty> If I say this:
11:58:04 Vajb joins (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
11:58:18 <futty> A variant ensures termination in a recursive function and an invariant ensures the correctness? of the algorithm in a function, would that be a correct description?
11:59:30 <merijn> futty: An invariant doesn't ensure anything, it just is
11:59:45 <merijn> Proving that a property is invariant my simplify other proofs
12:00:11 <futty> alright, thank you guys
12:00:14 × Vajb quits (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer)
12:00:27 Vajb joins (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
12:01:18 Pickchea joins (~private@user/pickchea)
12:01:58 × ubert quits (~Thunderbi@91.141.49.166.wireless.dyn.drei.com) (Quit: ubert)
12:02:16 × spirit_ quits (~spirit@122.164.113.81) (Remote host closed the connection)
12:02:22 ubert joins (~Thunderbi@91.141.49.166.wireless.dyn.drei.com)
12:02:41 jneira joins (~jneira@212.8.115.226)
12:05:13 × Guest8443 quits (~Guest84@2406:3003:2006:447e:71a7:e07d:4b0e:e66e) (Quit: Client closed)
12:05:35 burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk)
12:06:29 × Pickchea quits (~private@user/pickchea) (Ping timeout: 268 seconds)
12:07:18 markpythonicbitc joins (~markpytho@50.228.44.6)
12:08:20 × curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 268 seconds)
12:09:16 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
12:09:17 tomd99 joins (~a@p200300ef97023872a00237f9722b67dc.dip0.t-ipconnect.de)
12:10:23 <tomd99> Is a lambda function more strict than a normal function?
12:10:29 <tomd99> > x = id True
12:10:31 <tomd99> > y = (\a -> a) True
12:10:31 <lambdabot> <hint>:1:3: error: parse error on input ‘=’
12:10:32 <lambdabot> <hint>:1:3: error: parse error on input ‘=’
12:10:33 <tomd99> > :sprint x y
12:10:34 <lambdabot> <hint>:1:1: error: parse error on input ‘:’
12:10:35 <tomd99> x = _
12:10:37 <tomd99> y = True
12:13:08 <lortabac> tomd99: "normal" function declarations are just syntactic sugar for lambdas
12:13:10 Guest71 joins (~Guest71@46.97.169.79)
12:13:46 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
12:15:07 <lortabac> tomd99: you can try `id' = \x -> x; z = id' True` and then :sprint z
12:15:11 × mc47 quits (~mc47@xmonad/TheMC47) (Read error: Connection reset by peer)
12:15:50 viluon joins (uid453725@id-453725.brockwell.irccloud.com)
12:17:01 <tomd99> lortabac: So naming a function adds additional indirection?
12:17:56 <hpc> it's actually top-level definitions in ghci that are odd
12:18:51 <hpc> when you do something like "a = True", a starts fully evaluated
12:18:52 drd joins (~drd@93-39-151-19.ip76.fastwebnet.it)
12:19:08 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 272 seconds)
12:19:20 <hpc> and you need that additional layer of id to get back to what you would normally see in a program (minus optimizations)
12:20:34 tlaxkit joins (~hexchat@170.253.40.255)
12:20:58 <hpc> how far it goes with that evaluation seems to stop at free variables?
12:21:50 _73 joins (~user@pool-96-233-64-53.bstnma.fios.verizon.net)
12:22:00 <hpc> y = (\z x -> x z) True (\x -> x)
12:22:04 <hpc> y = True
12:22:07 <hpc> y = (\z x -> x $ z) True (\x -> x)
12:22:11 <hpc> y = _
12:22:57 × MidAutumnHotaru quits (~MidAutumn@user/midautumnmoon) (Quit: Leaving for a break - theLounge)
12:23:07 MidAutumnHotaru joins (~MidAutumn@user/midautumnmoon)
12:23:08 qwedfg joins (~qwedfg@user/qwedfg)
12:23:56 <hpc> yeah, it still does "x = _" even if you define "id' = \x -> x"
12:24:03 <hpc> so that's what's happening i suspect
12:24:03 × MidAutumnHotaru quits (~MidAutumn@user/midautumnmoon) (Client Quit)
12:24:13 MidAutumnHotaru joins (~MidAutumn@user/midautumnmoon)
12:25:23 _73 parts (~user@pool-96-233-64-53.bstnma.fios.verizon.net) ()
12:25:42 × MidAutumnHotaru quits (~MidAutumn@user/midautumnmoon) (Client Quit)
12:25:53 MidAutumnHotaru joins (~MidAutumn@user/midautumnmoon)
12:26:28 × Guest71 quits (~Guest71@46.97.169.79) (Ping timeout: 246 seconds)
12:27:42 × MidAutumnHotaru quits (~MidAutumn@user/midautumnmoon) (Client Quit)
12:27:56 <viluon> hi, is it possible to `stack clean` build artifacts for a package my project depends on?
12:28:09 MidAutumnHotaru joins (~MidAutumn@user/midautumnmoon)
12:29:40 × MidAutumnHotaru quits (~MidAutumn@user/midautumnmoon) (Client Quit)
12:32:24 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 268 seconds)
12:32:57 MidAutumnHotaru joins (~MidAutumn@user/midautumnmoon)
12:33:15 MidAutumnHotaru is now known as MidAutumnMoon
12:35:47 × kmein quits (~weechat@user/kmein) (Quit: ciao kakao)
12:36:05 kmein joins (~weechat@user/kmein)
12:36:21 <viluon> I believe I may have run into a Cabal or Stack bug (suggested here https://stackoverflow.com/questions/54156236/how-to-resolve-however-the-given-installed-package-instance-does-not-exist-in) after a failed compilation in an ASCII locale. I switched to UTF-8 and regenerated the locales and am stuck with "dependencies were requested... however the given installed package instance does not exist" errors.
12:36:26 lavaman joins (~lavaman@98.38.249.169)
12:36:30 <viluon> Stack config and logs are here (https://paste.tomsmeding.com/deuH2dqX), this is being compiled with a fork of GHC but it's believed to work
12:38:33 <viluon> repo is here (https://github.com/viluon/ghc-wpc-sample-programs). I'd like to retain the compilation artifacts for anything that did build successfully since it's a large project. Hence my query about `stack clean`.
12:41:12 <nf> int-e: time flies
12:42:07 lep- is now known as lep
12:42:16 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
12:43:26 × burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection)
12:43:52 <kuribas> ugh, I wish I could turn of shadowing warnings locally...
12:43:58 burnsidesLlama joins (~burnsides@client-8-91.eduroam.oxuni.org.uk)
12:47:11 × yoctocell quits (~user@h87-96-130-155.cust.a3fiber.se) (Remote host closed the connection)
12:47:42 chomwitt joins (~chomwitt@ppp-2-85-147-24.home.otenet.gr)
12:48:16 × burnsidesLlama quits (~burnsides@client-8-91.eduroam.oxuni.org.uk) (Ping timeout: 258 seconds)
12:49:53 bitmapper joins (uid464869@id-464869.tooting.irccloud.com)
12:50:01 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
12:50:09 × cladur quits (~cladur@user-5-173-146-9.play-internet.pl) (Ping timeout: 248 seconds)
12:52:34 × barrucadu quits (~barrucadu@carcosa.barrucadu.co.uk) (Quit: leaving)
12:53:59 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 268 seconds)
12:57:02 yourname_ joins (~barrucadu@carcosa.barrucadu.co.uk)
12:57:50 fendor joins (~fendor@213162073059.public.t-mobile.at)
12:57:51 yourname_ is now known as barrucadu
12:58:56 × hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1)
12:58:59 × jneira quits (~jneira@212.8.115.226) (Quit: Client closed)
12:59:37 hendursaga joins (~weechat@user/hendursaga)
12:59:39 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 276 seconds)
13:00:40 × fendor quits (~fendor@213162073059.public.t-mobile.at) (Remote host closed the connection)
13:00:51 enoq joins (~enoq@194-208-179-35.lampert.tv)
13:01:06 alx741 joins (~alx741@181.196.68.193)
13:03:28 lep is now known as lep-
13:08:13 jtomas joins (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net)
13:08:28 × jtomas quits (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Client Quit)
13:08:51 jtomas joins (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net)
13:09:42 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
13:09:49 × emliunix quits (~emliunix@103.138.75.119) (Remote host closed the connection)
13:12:07 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
13:15:27 <int-e> Oh sigh, bit rot... ghc-9.0.1 broke knob, which lambdabot depends on via misfortune... Okay, no 9.0.1 support today.
13:15:39 geekosaur joins (~geekosaur@xmonad/geekosaur)
13:16:07 <int-e> nf: anyway: working on it, see https://github.com/lambdabot/lambdabot/pull/200
13:16:35 <nf> cool, thanks
13:18:54 × jtomas quits (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection)
13:18:58 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
13:19:25 jtomas joins (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net)
13:22:20 × oxide quits (~lambda@user/oxide) (Ping timeout: 268 seconds)
13:23:00 × jtomas quits (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection)
13:26:57 jtomas joins (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net)
13:27:22 justsomeguy joins (~justsomeg@user/justsomeguy)
13:27:37 × jtomas quits (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection)
13:30:21 × pilyn quits (~pilyn@user/pilyn) (Quit: Leaving)
13:30:39 jtomas joins (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net)
13:34:51 slack1256 joins (~slack1256@181.203.38.2)
13:39:34 × tomd99 quits (~a@p200300ef97023872a00237f9722b67dc.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
13:40:40 shriekingnoise joins (~shrieking@186.137.144.80)
13:41:01 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Remote host closed the connection)
13:42:03 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
13:42:28 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Remote host closed the connection)
13:43:00 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
13:43:26 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
13:45:24 chris joins (~chris@81.96.113.213)
13:45:28 chris is now known as Guest4990
13:47:05 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:3164:2b89:620b:cb12) (Quit: WeeChat 2.8)
13:48:57 simon1 joins (~simon@modemcable090.207-203-24.mc.videotron.ca)
13:50:07 timCF joins (~timCF@200-149-20-81.sta.estpak.ee)
13:53:54 <timCF> Hello guys! I have a problem with `thread blocked indefinitely in an MVar operation` error. In my case at some point there is possibility that all threads which can write to the MVar are dead, and in this case Haskell runtime raises this async exception. To protect my program from this, I'm using `tryTakeMVar :: MVar a -> IO (Maybe a)` function instead of `takeMVar` to handle deadlock situations. But async
13:54:00 <timCF> exception still happens from time to time. What I'm doing wrong?
13:55:47 slowButPresent joins (~slowButPr@user/slowbutpresent)
13:56:07 × vysn quits (~vysn@user/vysn) (Ping timeout: 258 seconds)
13:56:15 × silasfox quits (~silasfox@62.159.27.1) (Quit: Connection closed)
13:56:39 <int-e> timCF: Hard to say, but note that the exception can arise from putMVar as well
13:57:25 <timCF> int-e: I'm using `tryPutMVar` to avoid this error case.
13:57:58 <int-e> "Hard to say"--we'll need more details to narrow things down.
13:59:14 <merijn> timCF: If at some point all threads who can write are dead, then how would you ever recover?
14:00:05 <merijn> timCF: What are you using the MVar for?
14:00:09 <timCF> int-e: I can send a link to source code, maybe code explains itself better than me
14:00:12 <timCF> https://github.com/coingaming/lnd-client/blob/1a45d5fa731f39f73243a8a624d583a5858729b3/src/LndClient/RPC/Silent.hs#L131-L143
14:01:01 <merijn> timCF: Why not use an actual channel?
14:01:19 <timCF> merijn: Just to detect that something happened in spawned thread. In case where all processes are dead, tryTakeMVar will be always nothing and retry counter will run into zero
14:02:16 <timCF> merijn: you mean TChan instead of MVar?
14:03:10 <timCF> Is there any advantage in TChan vs MVar for case where it's needed just to detect once that something happened?
14:03:12 <merijn> That means wrapping with extra STM to check if it's closed, though
14:03:25 <merijn> timCF: hm
14:03:35 <merijn> timCF: You just have N workers and wanna know if they're all dead, yeah?
14:03:46 <merijn> timCF: Don't you just want QSemN?
14:06:45 <timCF> merijn: No, I have an gRPC subscription procedure which should return something from a server stream in case of success. So I'm providing to stream handler link to MVar to fill in. And then spawning subscription processes, trying to read this MVar in main process and hope for the best
14:07:38 <timCF> In case this "stream callback MVar" was not filled in 10 attempts - all procedure fails.
14:08:12 Sgeo joins (~Sgeo@user/sgeo)
14:09:51 <kuribas> Is there a validation transformer?
14:09:56 × Vajb quits (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer)
14:10:39 <timCF> Spawned gRPC procedure might die before calling stream callback, which results in no active MVar references, but it should be fine because I'm using `tryPutMVar` and `tryTakeMVar` to avoid deadlock detection of Haskell runtime.
14:10:56 <justsomeguy> When installing stack manually, using the staic binary, as listed here https://docs.haskellstack.org/en/stable/install_and_upgrade/#manual-download_2, how do I check the gpg signature of the tar file? I don't see a signed checksum file anywhere. ...
14:12:29 <kuribas> hmm, I can just Compose Validation I guess...
14:13:53 <merijn> kuribas: Yeah, Applicatives don't need transformers due to Compose
14:14:19 yoctocell joins (~user@h87-96-130-155.cust.a3fiber.se)
14:14:58 mc47 joins (~mc47@xmonad/TheMC47)
14:16:00 × amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 268 seconds)
14:16:12 mattil joins (~mattilinn@62-113-178-139.bb.dnainternet.fi)
14:18:04 × mattil quits (~mattilinn@62-113-178-139.bb.dnainternet.fi) (Max SendQ exceeded)
14:18:23 <int-e> timCF: how do you know which MVar is causing this?
14:18:58 mattil joins (~mattilinn@62-113-178-139.bb.dnainternet.fi)
14:20:07 <kuribas> ugh, validation depends on lens, and brings in the kitchen sink...
14:20:35 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
14:20:49 × drd quits (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 248 seconds)
14:21:07 <timCF> int-e: yes, this one https://github.com/coingaming/lnd-client/blob/1a45d5fa731f39f73243a8a624d583a5858729b3/src/LndClient/RPC/Silent.hs#L128
14:24:42 × yoctocell quits (~user@h87-96-130-155.cust.a3fiber.se) (Remote host closed the connection)
14:26:58 <nf> int-e: thanks for the release!
14:27:32 yoctocell joins (~user@h87-96-130-155.cust.a3fiber.se)
14:29:28 <int-e> nf: thanks for the prod!
14:31:08 Vajb joins (~Vajb@2001:999:252:4e3c:27f9:d93:655e:583)
14:31:34 <int-e> timCF: that didn't answer my question, fwiw
14:32:13 <int-e> Then again I'm not sure I can help anyway. AFAIUI, try{Put,Take}MVar *can't* cause this exceptions because they can never block at all.
14:33:14 <int-e> Which strongly suggests that the actual MVar that's causing this is somewhere else, maybe in a dependency.
14:33:24 ec joins (~ec@gateway/tor-sasl/ec)
14:35:20 lortabac joins (~lortabac@2a01:e0a:541:b8f0:3164:2b89:620b:cb12)
14:35:46 <timCF> int-e: Hmm. Thanks for reply anyway! Maybe implementation of these functions was different before. I'm using not the latest version of Base, from lts-14.27
14:36:30 <int-e> these have been dedicated primops for a very long time
14:37:23 drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
14:38:06 tomd99 joins (~a@p200300ef97023872a00237f9722b67dc.dip0.t-ipconnect.de)
14:38:06 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
14:40:06 geekosaur joins (~geekosaur@xmonad/geekosaur)
14:41:41 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
14:43:21 <int-e> Since early 2001, when tryPutMVar was added in the first place (tryTakeMVar already existed at that point)
14:46:53 × Skyfire quits (~pyon@user/pyon) (Quit: WeeChat 3.2)
14:48:48 × tomd99 quits (~a@p200300ef97023872a00237f9722b67dc.dip0.t-ipconnect.de) (Quit: WeeChat 3.0.1)
14:49:37 ec joins (~ec@gateway/tor-sasl/ec)
14:50:10 × rmoe quits (~rmoe@c-71-236-207-44.hsd1.wa.comcast.net) (Ping timeout: 258 seconds)
14:51:15 MorrowM joins (~Morrow@176.12.208.59)
14:53:25 × Vajb quits (~Vajb@2001:999:252:4e3c:27f9:d93:655e:583) (Read error: Connection reset by peer)
14:53:45 amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
14:53:49 Vajb joins (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
14:58:54 Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com)
15:02:25 × chomwitt quits (~chomwitt@ppp-2-85-147-24.home.otenet.gr) (Ping timeout: 248 seconds)
15:02:40 × dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2)
15:03:35 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
15:03:35 × Boomerang quits (~Boomerang@xd520f68c.cust.hiper.dk) (Ping timeout: 258 seconds)
15:08:31 Skyfire joins (~pyon@user/pyon)
15:12:01 × MorrowM quits (~Morrow@176.12.208.59) (Ping timeout: 258 seconds)
15:14:42 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 258 seconds)
15:15:07 emliunix joins (~emliunix@103.138.75.119)
15:17:17 × polyphem quits (~polyphem@2a02:810d:640:776c:5d1:5727:1484:7756) (Remote host closed the connection)
15:17:24 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:3164:2b89:620b:cb12) (Quit: WeeChat 2.8)
15:17:43 Sap joins (~Sap@68.92-220-148.customer.lyse.net)
15:18:01 × Sap quits (~Sap@68.92-220-148.customer.lyse.net) (Client Quit)
15:19:08 Sap joins (~Sap@68.92-220-148.customer.lyse.net)
15:20:34 × Sap quits (~Sap@68.92-220-148.customer.lyse.net) (Client Quit)
15:20:46 Sap joins (~Sap@68.92-220-148.customer.lyse.net)
15:21:03 × Sap quits (~Sap@68.92-220-148.customer.lyse.net) (Client Quit)
15:24:23 <amesgen[m]> kuribas: there is monad-validate: https://hackage.haskell.org/package/monad-validate-1.2.0.0/docs/Control-Monad-Validate.html
15:24:23 <amesgen[m]> It has a slightly unlawful Monad instance, which is documented in great detail
15:24:53 <kuribas> amesgen[m]: I wrote my own ValidateT, which is only an Applicative.
15:25:29 <kuribas> then I use "fromExceptT :: Functor m => ExceptT e m a -> ValidationT e m a"
15:25:42 <kuribas> So I can easily write functionality using mtl...
15:26:33 <amesgen[m]> yeah, monad-validate is an alternative where you don't have to convert from ExceptT all the time, at the cost that it is not a completely valid monad
15:26:59 <amesgen[m]> from the haddocks: "To put it another way, ValidateT provides “best effort” error reporting: it will never return fewer errors than an equivalent use of ExceptT, but it might return more."
15:27:09 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
15:32:08 ec joins (~ec@gateway/tor-sasl/ec)
15:33:59 × emliunix quits (~emliunix@103.138.75.119) (Remote host closed the connection)
15:34:16 emliunix joins (~emliunix@103.138.75.119)
15:34:50 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 272 seconds)
15:35:52 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
15:36:59 artem joins (uid512590@highgate.irccloud.com)
15:37:06 zmt00 joins (~zmt00@user/zmt00)
15:40:44 econo joins (uid147250@user/econo)
15:40:57 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
15:41:06 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
15:43:59 oxide joins (~lambda@user/oxide)
15:45:58 × emliunix quits (~emliunix@103.138.75.119) (Remote host closed the connection)
15:45:59 doyougnu joins (~user@c-73-25-202-122.hsd1.or.comcast.net)
15:49:02 polyphem joins (~polyphem@2a02:810d:640:776c:5d1:5727:1484:7756)
15:49:35 × qrpnxz quits (~qrpnxz@user/qrpnxz) (Ping timeout: 258 seconds)
15:50:49 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
15:56:26 × ubert quits (~Thunderbi@91.141.49.166.wireless.dyn.drei.com) (Remote host closed the connection)
15:58:33 lbseale joins (~lbseale@user/ep1ctetus)
16:01:18 Natch joins (~natch@c-e070e255.014-297-73746f25.bbcust.telenor.se)
16:01:33 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
16:01:51 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
16:02:49 qrpnxz joins (abc4f95c31@user/qrpnxz)
16:06:14 × mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
16:07:39 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
16:11:35 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
16:11:57 chomwitt joins (~chomwitt@ppp-2-85-147-24.home.otenet.gr)
16:12:12 × xff0x quits (~xff0x@2001:1a81:53fa:2600:8056:588e:c971:d9df) (Ping timeout: 258 seconds)
16:12:49 × tlaxkit quits (~hexchat@170.253.40.255) (Ping timeout: 248 seconds)
16:13:03 xff0x joins (~xff0x@2001:1a81:53fa:2600:743d:308e:abb:126)
16:16:39 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
16:19:21 × enoq quits (~enoq@194-208-179-35.lampert.tv) (Quit: enoq)
16:19:24 ec joins (~ec@gateway/tor-sasl/ec)
16:19:45 × Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Ping timeout: 248 seconds)
16:22:27 × mc47 quits (~mc47@xmonad/TheMC47) (Read error: Connection reset by peer)
16:24:22 emliunix joins (~emliunix@8.38.148.66)
16:24:26 × oxide quits (~lambda@user/oxide) (Ping timeout: 256 seconds)
16:26:07 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
16:26:19 MorrowM joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net)
16:26:53 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:30:01 <tomsmeding> maerwald: do you happen to know what ModTime is supposed to take in libarchive? https://hackage.haskell.org/package/libarchive-3.0.2.1/docs/Codec-Archive.html#t:ModTime
16:32:42 <tomsmeding> ah, looks like (POSIXTime, nanoseconds)
16:36:46 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:36:49 kayprish joins (~kayprish@cable-188-2-229-172.dynamic.sbb.rs)
16:37:25 tlaxkit joins (~hexchat@170.253.40.255)
16:38:43 lavaman joins (~lavaman@98.38.249.169)
16:38:52 × polyphem quits (~polyphem@2a02:810d:640:776c:5d1:5727:1484:7756) (Ping timeout: 245 seconds)
16:39:29 × tlaxkit quits (~hexchat@170.253.40.255) (Remote host closed the connection)
16:43:48 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
16:50:19 × Matthias_ quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection)
16:51:08 Atum_ joins (~IRC@user/atum/x-2392232)
16:54:22 Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
16:54:28 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
16:56:15 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
16:56:34 mnrmnaugh is now known as awk
16:59:10 mastarija joins (~mastarija@78-3-210-70.adsl.net.t-com.hr)
17:00:45 awk is now known as mnrmnaugh
17:01:32 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
17:02:45 ec joins (~ec@gateway/tor-sasl/ec)
17:04:35 Pickchea joins (~private@user/pickchea)
17:07:52 <bbhoss> is there a way to use record wildcards in a function header but also assign the entire record to a binding?
17:08:09 <bbhoss> like `hello foo=MyRecord{..}`
17:08:32 <geekosaur> hello foo@MyRecord{..}
17:09:20 <bbhoss> nice thanks
17:09:59 <monochrom> Generally the @-pattern allows naming the whole thing and prescribing a detailed pattern at the same time. f wholeList@(x:xs) = ...
17:10:27 <bbhoss> awesome, I'm surprised I made it this far without knowing
17:10:39 <dsal> I experience that regularly.
17:11:07 <monochrom> You can call it "as". "whole list as x:xs" actually sounds nice in English. In fact SML uses "as", "f (wholeList as (x:xs)) = ..."
17:11:36 vicfred joins (~vicfred@user/vicfred)
17:13:10 curiousgay joins (~curiousga@77-120-186-48.kha.volia.net)
17:14:54 burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk)
17:15:37 <janus> i'd expect the deconstructed form to come before "as", hmmm
17:16:06 <janus> usually, in english, when you use 'as', the 'new name' comes after, right? here it comes before
17:16:24 <geekosaur> same in SQL for that matter
17:16:39 <geekosaur> <expression> AS newName
17:19:11 mr-red joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
17:19:12 <geekosaur> but that's not what SML chose, and Haskell probably followed SML there
17:21:52 × drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 272 seconds)
17:27:29 × azeem quits (~azeem@dynamic-adsl-84-220-236-17.clienti.tiscali.it) (Ping timeout: 248 seconds)
17:28:15 azeem joins (~azeem@176.200.246.189)
17:28:30 <davean> bbhoss: read the report :)
17:34:26 polyphem joins (~polyphem@2a02:810d:640:776c:5d1:5727:1484:7756)
17:36:32 × azeem quits (~azeem@176.200.246.189) (Read error: Connection reset by peer)
17:36:50 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
17:37:03 azeem joins (~azeem@dynamic-adsl-84-220-236-17.clienti.tiscali.it)
17:41:08 × Clint quits (~Clint@user/clint) (Ping timeout: 258 seconds)
17:41:58 hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com)
17:42:37 × polyphem quits (~polyphem@2a02:810d:640:776c:5d1:5727:1484:7756) (Quit: CoreIRC for Android - www.coreirc.com)
17:42:40 Clint joins (~Clint@user/clint)
17:42:49 polyphem joins (~polyphem@2a02:810d:640:776c:5d1:5727:1484:7756)
17:44:09 × MorrowM quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Read error: Connection reset by peer)
17:45:02 ec joins (~ec@gateway/tor-sasl/ec)
17:45:56 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
17:46:20 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
17:48:13 ytg_ joins (~ytg@89-139-118-202.bb.netvision.net.il)
17:50:32 × azeem quits (~azeem@dynamic-adsl-84-220-236-17.clienti.tiscali.it) (Read error: Connection reset by peer)
17:50:57 × Pickchea quits (~private@user/pickchea) (Ping timeout: 245 seconds)
17:51:40 azeem joins (~azeem@dynamic-adsl-84-220-236-17.clienti.tiscali.it)
17:51:47 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 245 seconds)
17:52:11 × ytg_ quits (~ytg@89-139-118-202.bb.netvision.net.il) (Client Quit)
17:52:27 ytg_ joins (~ytg@89-139-118-202.bb.netvision.net.il)
17:52:45 Erutuon joins (~Erutuon@user/erutuon)
17:53:10 × ytg_ quits (~ytg@89-139-118-202.bb.netvision.net.il) (Client Quit)
17:53:25 ytg_ joins (~ytg@89-139-118-202.bb.netvision.net.il)
17:53:41 × ytg_ quits (~ytg@89-139-118-202.bb.netvision.net.il) (Client Quit)
17:56:32 wanko joins (~wanko@51.15.4.226)
18:01:02 Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
18:01:37 MoC joins (~moc@user/moc)
18:06:15 Guest84 joins (~Guest84@2406:3003:2006:447e:9d85:ae5b:bc5f:9191)
18:07:14 × Tuplanolla quits (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
18:07:14 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 268 seconds)
18:08:35 pmk joins (~user@2a02:587:941a:35d9:8f9c:6cb6:67dc:f5e3)
18:15:00 × mr-red quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 272 seconds)
18:21:04 jakalx parts (~jakalx@base.jakalx.net) ()
18:21:19 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Remote host closed the connection)
18:21:20 × curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 272 seconds)
18:22:56 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
18:28:18 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
18:29:26 × Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) ()
18:32:45 <mastarija> Can someone help me out with Neovim LSP and HLS?
18:32:57 <mastarija> I'm having trouble getting the Hover functionality to work
18:33:46 <mastarija> Basically, when ever I try to activate it I get "man.vim: no manual entry for SomeSymbol"
18:34:02 <mastarija> SomeSymbol being what ever I'm hovering over at the moment
18:34:32 <mastarija> It worked once for a short period of time, but then it stopped :D
18:34:52 <mastarija> I have very minimal Lua init script: https://pastebin.com/i7RNs5BG
18:35:11 × kayprish quits (~kayprish@cable-188-2-229-172.dynamic.sbb.rs) (Read error: Connection reset by peer)
18:35:44 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
18:40:35 × Guest84 quits (~Guest84@2406:3003:2006:447e:9d85:ae5b:bc5f:9191) (Quit: Client closed)
18:42:58 ec joins (~ec@gateway/tor-sasl/ec)
18:45:37 × viluon quits (uid453725@id-453725.brockwell.irccloud.com) (Quit: Connection closed for inactivity)
18:49:08 allbery_b joins (~geekosaur@xmonad/geekosaur)
18:49:08 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
18:49:11 allbery_b is now known as geekosaur
18:49:33 <tomsmeding> mastarija: are you passing the on_active function to the .setup{} call for hls correctly?
18:50:40 <tomsmeding> o wait I'm blind
18:53:23 __monty__ joins (~toonn@user/toonn)
18:53:27 <tomsmeding> mastarija: try moving the setup{} call _below_ the definition of the on_attach function
18:53:36 <tomsmeding> that seems to make a difference for me
18:53:55 <tomsmeding> lua isn't insensitive to declaration order like haskell is :)
18:54:08 <mastarija> I think I tried it both ways
18:54:28 <mastarija> I mean, it is reacting to defined shortcuts
18:54:50 <mastarija> But someone from #neovim suggested I'v forgotten to setup haddock
18:54:57 <mastarija> I'm working on that now
18:55:36 <mastarija> https://haskell-language-server.readthedocs.io/en/latest/features.html?highlight=haddock#features
18:56:23 <tomsmeding> mastarija: I don't have that haddock in my cabal flags and hls hover info has worked for me always
18:56:52 <mastarija> Yes, it worked for me for one moment.
18:56:56 <mastarija> But then nothing
18:57:09 stiell joins (~stiell@gateway/tor-sasl/stiell)
18:57:16 curiousgay joins (~curiousga@77-120-186-48.kha.volia.net)
18:57:20 <mastarija> tomsmeding, do you maybe know where HLS stores its intermediate files?
18:57:30 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:57:39 <tomsmeding> no idea, but I would guess dist-newstyle
18:57:58 <mastarija> I've deleted dist-newstyle from my project, but now I see HLS is initializing happily without regenerating
18:58:03 <tomsmeding> mastarija: what happens if you replace your mapping of KK in that lua function with :echo "hi"<CR>
18:58:14 <tomsmeding> does that make KK print 'hi'
18:58:25 × Atum_ quits (~IRC@user/atum/x-2392232) (Remote host closed the connection)
18:58:59 <carter> sup!
18:59:07 <tomsmeding> hls is up :)
18:59:29 <carter> i just like having a working text editor and cabal build invoked every time i save :)
18:59:43 Atum_ joins (~IRC@user/atum/x-2392232)
19:00:31 <tomsmeding> mastarija: for completeness, this is the lua fragment in my init script, very minorly modified from the current readme (I switched to nvim's native lsp today :) ) : https://paste.tomsmeding.com/6sYW5XOr
19:01:07 <tomsmeding> carter: having a working text editor is certainly a prerequisite :)
19:01:13 × mattil quits (~mattilinn@62-113-178-139.bb.dnainternet.fi) (Quit: Leaving)
19:01:36 <mastarija> tomsmeding, yes, that looks like the config from readme
19:01:50 <mastarija> I've tried that, but I had same problem
19:01:53 gethuen_ joins (uid502979@id-502979.stonehaven.irccloud.com)
19:01:57 <tomsmeding> mastarija: this works for me, and K stops working if I put the loop above the function declaration
19:02:09 <tomsmeding> odd
19:02:37 <mastarija> tomsmeding, this might be because you assigned anonymous function to a variable name
19:02:47 <mastarija> I've changed that to function definition
19:03:01 <tomsmeding> ah right
19:03:10 <tomsmeding> mastarija: there is some stuff in ~/.cache/hie-bios
19:03:13 <mastarija> I'm switching back to that now, maybe it makes a difference :/
19:03:31 × gethuen_ quits (uid502979@id-502979.stonehaven.irccloud.com) (Client Quit)
19:04:01 gethuen_ joins (uid502979@id-502979.stonehaven.irccloud.com)
19:04:36 × gethuen_ quits (uid502979@id-502979.stonehaven.irccloud.com) (Client Quit)
19:04:49 <mastarija> tomsmeding, thanks, I've deleted it, now it's regenerating
19:04:54 <mastarija> hopefully it'll be a success
19:05:02 × mei quits (~mei@user/mei) (Read error: Connection reset by peer)
19:05:12 Cajun joins (~Cajun@user/cajun)
19:06:08 jakalx joins (~jakalx@base.jakalx.net)
19:06:27 Guest84 joins (~Guest84@2406:3003:2006:447e:9d85:ae5b:bc5f:9191)
19:06:41 × emliunix quits (~emliunix@8.38.148.66) (Remote host closed the connection)
19:07:04 emliunix joins (~emliunix@8.38.148.66)
19:12:25 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
19:13:19 ec joins (~ec@gateway/tor-sasl/ec)
19:13:20 <mastarija> tomsmeding, omg, I'm an idiot
19:13:32 <mastarija> instead of on_attach I've written on_active
19:13:47 <monochrom> :)
19:14:10 <tomsmeding> this makes me scared of lua
19:14:13 <mastarija> yes
19:14:17 <tomsmeding> seems to be even worse than javascript
19:14:17 × jneira_ quits (~jneira_@28.red-80-28-169.staticip.rima-tde.net) (Ping timeout: 258 seconds)
19:14:23 <mastarija> Records ftw
19:14:45 <tomsmeding> not only that, referring to an undefined variable and getting no error
19:14:52 endlesseditions joins (~zane@205.220.252.162)
19:14:55 <mastarija> I'm not used to checking my self for misnamed vars
19:15:30 × montxero quits (~user@149.167.149.74) (Read error: Connection reset by peer)
19:15:44 <mastarija> damn, I feel like an idiot now
19:15:45 montxero joins (~user@149.167.149.74)
19:15:48 <mastarija> so much wasted time
19:16:04 <tomsmeding> your mistake was assuming that lua is nice to haskell users
19:16:52 <tomsmeding> you know, what saves me in cases like this is that I have no idea how lua works, so I copy-paste everything
19:17:39 <mastarija> I've read the lua manual this morning so I was overconfident
19:20:35 Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com)
19:20:41 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
19:21:31 ikex1 joins (~ash@user/ikex)
19:23:33 × mcglk quits (~mcglk@131.191.49.120) (Read error: Connection reset by peer)
19:23:45 × favonia quits (~favonia@user/favonia) (Ping timeout: 248 seconds)
19:23:52 × ikex quits (ash@user/ikex) (Ping timeout: 258 seconds)
19:23:53 ikex1 is now known as ikex
19:24:20 mcglk joins (~mcglk@131.191.49.120)
19:27:19 acidjnk_new joins (~acidjnk@p200300d0c72b9540687e52e56cad208d.dip0.t-ipconnect.de)
19:28:49 <carter> hrmmm, ComposeT in MMorph seems like something that'd be nice in base or transformers
19:28:56 <carter> or is there a good reason to not use it sometimes?
19:29:03 <carter> cc edwardk :) ?
19:30:39 × Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
19:30:40 × markpythonicbitc quits (~markpytho@50.228.44.6) (Read error: Connection reset by peer)
19:31:22 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
19:32:06 markpythonicbitc joins (~markpytho@50.228.44.6)
19:34:42 × endlesseditions quits (~zane@205.220.252.162) (Remote host closed the connection)
19:37:51 <carter> Hecate: https://gitlab.haskell.org/ghc/ghc/-/issues/20223 not sure if i found a bug in the docs for deriving via or deriving via
19:37:59 ec joins (~ec@gateway/tor-sasl/ec)
19:39:06 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
19:39:56 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
19:41:33 drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
19:44:23 × phma_ quits (phma@2001:5b0:211f:5fe8:78b1:ef72:430f:1b2b) (Read error: Connection reset by peer)
19:46:31 × azeem quits (~azeem@dynamic-adsl-84-220-236-17.clienti.tiscali.it) (Ping timeout: 268 seconds)
19:47:34 azeem joins (~azeem@176.200.246.189)
19:48:25 favonia joins (~favonia@user/favonia)
19:51:51 × norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 258 seconds)
19:54:33 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
19:55:00 phma_ joins (phma@2001:5b0:212a:e878:afe7:6ceb:226:dcbd)
19:56:19 Guest822 joins (~Guest82@176.88.30.49)
19:56:50 <Guest822> @undo [x | Just x <- xs]
19:56:50 <lambdabot> concatMap (\ a -> case a of { Just x -> [x]; _ -> []}) xs
19:58:06 <Guest822> @undo picks (x:xs) = (x,xs):[(y,x:ys) | (y,ys) <- picks xs]
19:58:06 <lambdabot> picks (x : xs) = (x, xs) : concatMap (\ (y, ys) -> [(y, x : ys)]) (picks xs)
19:58:25 × azeem quits (~azeem@176.200.246.189) (Ping timeout: 248 seconds)
19:58:49 azeem joins (~azeem@dynamic-adsl-84-220-236-17.clienti.tiscali.it)
19:59:04 MQ-17J joins (~MQ-17J@8.6.144.209)
19:59:23 × phma_ quits (phma@2001:5b0:212a:e878:afe7:6ceb:226:dcbd) (Read error: Connection reset by peer)
20:00:16 lavaman joins (~lavaman@98.38.249.169)
20:00:28 jpds1 is now known as jpds
20:03:27 × Skyfire quits (~pyon@user/pyon) (Ping timeout: 245 seconds)
20:04:03 × Guest822 quits (~Guest82@176.88.30.49) (Quit: Client closed)
20:04:05 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
20:05:16 × juhp quits (~juhp@128.106.188.220) (Ping timeout: 258 seconds)
20:05:33 Skyfire joins (~pyon@user/pyon)
20:05:35 phma_ joins (phma@2001:5b0:211b:9608:8da1:6cde:bf81:5b9c)
20:07:23 juhp joins (~juhp@128.106.188.220)
20:09:38 × drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 272 seconds)
20:09:44 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
20:10:00 × emliunix quits (~emliunix@8.38.148.66) (Remote host closed the connection)
20:10:09 × matijja quits (~matijja@193.77.181.201) (Ping timeout: 248 seconds)
20:10:22 emliunix joins (~emliunix@8.38.148.66)
20:11:48 benin036932 joins (~benin@183.82.205.178)
20:12:19 ec joins (~ec@gateway/tor-sasl/ec)
20:12:28 matijja joins (~matijja@193.77.181.201)
20:15:14 × retro_ quits (~retro@5ec19a54.skybroadband.com) (Ping timeout: 258 seconds)
20:21:36 × burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection)
20:28:14 vysn joins (~vysn@user/vysn)
20:28:53 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
20:30:45 × matijja quits (~matijja@193.77.181.201) (Quit: ZNC 1.8.1 - https://znc.in)
20:31:08 matijja joins (~matijja@193.77.181.201)
20:32:51 × MoC quits (~moc@user/moc) (Quit: Konversation terminated!)
20:36:37 ec joins (~ec@gateway/tor-sasl/ec)
20:44:29 pavonia joins (~user@user/siracusa)
20:47:47 × favonia quits (~favonia@user/favonia) (Remote host closed the connection)
20:48:00 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
20:49:45 jakalx joins (~jakalx@base.jakalx.net)
20:54:57 × markpythonicbitc quits (~markpytho@50.228.44.6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
20:55:53 ec joins (~ec@gateway/tor-sasl/ec)
20:59:39 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Quit: WeeChat 2.8)
21:02:00 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
21:04:14 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
21:04:17 × curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 245 seconds)
21:05:01 <maralorn> When I write `<(echo foo)` in shell it returns a file descriptor `/proc/self/fd/14` where now another process can read from. How can I achieve exactly that in Haskell?
21:05:58 <dsal> There are a lot of different things going on there. What are you trying to do?
21:06:06 <geekosaur> you want the file descriptor, or the pathname to it?
21:07:06 × bitmapper quits (uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity)
21:07:26 <maralorn> I want the pathname.
21:07:49 acidjnk_new3 joins (~acidjnk@p200300d0c72b954045cad12a4be3b29e.dip0.t-ipconnect.de)
21:08:04 <maralorn> Concretely I have a program that I want to call in my shakefile that wants a filename pointing to a file containing a password.
21:08:37 <monochrom> The shell creates a pipe, then finds out the FD of the read end, let's say it happens to be 14, then generates the string "/proc/self/fd/14" and passes it down as a command line argument.
21:08:39 <maralorn> But I don‘t want to write my password to disk or even the tmpfs.
21:09:06 <geekosaur> ah, the old hold-in-in-a-pipe trick
21:09:21 <maralorn> Yeah
21:09:33 acidjnk joins (~acidjnk@p200300d0c72b954099fc00439288b01d.dip0.t-ipconnect.de)
21:09:44 <geekosaur> which kinda fails with /proc/self/fd anyway
21:09:56 <geekosaur> or at least lost being safe even from root
21:10:27 <maralorn> Well, good enough. Also I am root.
21:10:54 jneira_ joins (~jneira_@28.red-80-28-169.staticip.rima-tde.net)
21:11:13 <maralorn> I guess I can do something like `withPipe` and then convert the read end handle to an FD?
21:11:22 × acidjnk_new quits (~acidjnk@p200300d0c72b9540687e52e56cad208d.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
21:11:44 <monochrom> And the "echo foo" part is run under output redirection too, its stdout is the write end of the pipe, say FD 15.
21:12:37 <monochrom> Which package does withPipe come from? (Certainly not what comes with GHC.)
21:12:58 × acidjnk_new3 quits (~acidjnk@p200300d0c72b954045cad12a4be3b29e.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
21:13:01 <sm> you could have your haskell program run a little bit of shell (bash), probably ?
21:13:27 <maralorn> monochrom: I can‘t find right now it tbh.
21:13:40 <geekosaur> @hoogle withPipe
21:13:40 <lambdabot> GI.GLib.Functions spawnAsyncWithPipes :: (HasCallStack, MonadIO m) => Maybe [Char] -> [[Char]] -> Maybe [[Char]] -> [SpawnFlags] -> Maybe SpawnChildSetupFunc -> m (Int32, Int32, Int32, Int32)
21:14:03 <maralorn> monochrom: https://hackage.haskell.org/package/shh-0.7.1.4/docs/Shh-Internal.html#v:withPipe
21:14:35 <maralorn> But I would feel a little bit stupid to get a dependency to shh just for doing that.
21:14:43 <monochrom> I have never heard of shh. I can't vouch for it.
21:14:57 <maralorn> Converting a handle to an fd is in base.
21:15:12 <maralorn> shh is more or less like shelly and it’s quite nice.
21:15:41 <maralorn> I guess I can have a look at the implementation there …
21:16:10 <sm> isn't there something suitable in https://hackage.haskell.org/package/process-1.6.13.2/docs/System-Process.html ?
21:16:10 <monochrom> Generally I would be super paranoid about detailed technical semantics of "converting" between Handle and FD.
21:16:41 <maralorn> sm: Yes
21:16:43 <maralorn> https://hackage.haskell.org/package/process-1.6.13.2/docs/System-Process.html#v:createPipe
21:16:48 <maralorn> Looks about right.
21:16:56 <monochrom> For example, after the Handle->FD "conversion", if you close that Handle, does that close the FD too? Is this consistent with what you want?
21:16:58 <maralorn> Or better https://hackage.haskell.org/package/process-1.6.13.2/docs/System-Process.html#v:createPipeFd
21:17:40 <monochrom> And do not sleep well if you don't write explicit code to close that Handle either. GC can close it behind your back.
21:19:31 sm confirms that `readCreateProcessWithExitCode (shell "ls <(echo test)") ""` does not work
21:19:56 <maralorn> It doesn‘t? Why not?
21:20:09 <sm> <() syntax is rejected by something
21:20:18 <sm> Prelude System.Process> readCreateProcessWithExitCode (shell "echo <(echo test)") ""
21:20:18 <sm> (ExitFailure 2,"","/bin/sh: -c: line 0: syntax error near unexpected token `('\n/bin/sh: -c: line 0: `echo <(echo test)'\n")
21:20:25 <sm> ah, it's not using bash
21:20:29 <maralorn> Might be a bashism?
21:20:32 <maralorn> yeah
21:20:49 <maralorn> Anyways, I believe I have my solution now.
21:21:07 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:21:21 <monochrom> Yes <(cmd) and >(cmd) are bashisms.
21:22:03 <sm> there was some discussion/doc about which shell `process` uses, I suspect it is POSIX sh only
21:22:51 <sm> aha! but there is a way
21:22:52 <sm> Prelude System.Process> readCreateProcessWithExitCode (shell "bash -c 'ls <(echo test)'") ""
21:22:52 <sm> (ExitSuccess,"/dev/fd/63\n","")
21:23:24 × Guest4990 quits (~chris@81.96.113.213) (Remote host closed the connection)
21:24:02 <monochrom> I painstakingly ban bashisms in my course because <(cmd) allows students to cargo-cult internet solutions and evade learning shell pipelines.
21:24:28 <monochrom> I have to remind them multiple times "if 'sh your_script' doesn't work then you are not done".
21:24:42 <monochrom> And then Mac defeats me because its "sh" is bash.
21:25:14 <monochrom> So now I also have to remind them "if it doesn't work on the school shell server then you are not done either, I don't care about what Mac says".
21:25:46 <sm> I think sh is too weak (with error checking eg), so I require bash
21:26:01 <glguy> I like using shellcheck to help me with that
21:26:49 <sm> I was reading yesterday that shellcheck helps you write valid sh, but doesn't help at all warning you about sh's many ambiguous cases. Not sure that's entirely true
21:27:26 <sm> shellcheck has made shell programming possible for me
21:27:38 Pickchea joins (~private@user/pickchea)
21:27:40 × MQ-17J quits (~MQ-17J@8.6.144.209) (Ping timeout: 268 seconds)
21:27:43 <sm> a haskell success story!
21:27:53 <koala_man> aww, I'm happy you've found it useful ^^
21:28:09 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
21:28:10 <sm> is that your project koala_man ?
21:28:13 <koala_man> yes
21:28:35 <monochrom> Nice.
21:28:39 <dsal> I've done this type of thing with dup2
21:28:49 <sm> let me thank you profusely on behalf of everyone. Thanks a lot, it is a fantastic tool.
21:29:11 <koala_man> aw shucks
21:30:10 <koala_man> monochrom: at least process substitutions are blocked in bash's sh mode
21:30:24 <sm> I don't know if you read your fan commentary online, but every time shell programming is mentioned anywhere on the the net someone quickly recommends shellcheck and several people say how great it is
21:31:23 <koala_man> I vanity search twitter now and then, the response has indeed been overwhelmingly positive
21:31:24 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
21:31:37 × slack1256 quits (~slack1256@181.203.38.2) (Remote host closed the connection)
21:31:48 × Guest84 quits (~Guest84@2406:3003:2006:447e:9d85:ae5b:bc5f:9191) (Quit: Client closed)
21:32:13 <sm> the haskell checkers (hls and its various addons) could take some inspiration from shellcheck. I think one of the things we like about it is how good the advice is (link to wiki page with full details, etc.)
21:32:37 <sm> hlint gives great advice, but not the background explanation AFAIK
21:32:58 chris joins (~chris@81.96.113.213)
21:33:01 chris is now known as Guest8327
21:33:30 <maerwald[m]> Hlint is 90% opinions
21:33:35 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
21:33:49 <maerwald[m]> Shellcheck helps you find actual bugs
21:34:33 <sm> koala_man: what's your thought on that comment about shellcheck not warning of all sh pitfalls ? (more so than bash)
21:34:48 <koala_man> do you have any examples?
21:35:11 <sm> unfortunately no, it was a HN comment yesterday. I'll share if I find it
21:36:03 <monochrom> Yeah shellcheck and clint are great. hlint is a dishonest name.
21:36:17 <monochrom> err of course s/clint/lint/
21:36:39 Clint coughs.
21:36:41 <koala_man> it must be hard to statically find bugs in Haskell code that compiles
21:36:44 <sm> why is everyone so down on hlint :)
21:37:04 <sm> Its advice is more subjective/stylistic because there are less dangerous error-causing sitiations to find.. yes
21:38:48 <monochrom> Therefore if it didn't call itself "hlint" I would leave it alone.
21:38:48 hexfive joins (~eric@50.35.83.177)
21:39:40 <sm> what does "lint" mean to you ?
21:40:02 lavaman joins (~lavaman@98.38.249.169)
21:40:06 <monochrom> It means if I write "if (c = 1) { ... }" it reminds me.
21:40:22 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
21:41:04 <monochrom> It means if I write "if (c == 1) \n {...}" it doesn't become nagware and say "why not put '{' on the same line as 'if'"
21:41:14 <monochrom> See, hlint does the latter only.
21:41:24 <monochrom> It is pure nagware.
21:41:37 <sm> that's silly. It is a configurable tool.
21:42:15 <sm> you don't like the defaults, ok
21:42:27 <monochrom> No, you should be pointing out that it's an optional tool, I don't have to use it if it doesn't fit me.
21:42:27 ec joins (~ec@gateway/tor-sasl/ec)
21:42:31 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
21:42:34 <sm> but "nagware" is not fair
21:42:44 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
21:42:48 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
21:43:06 <monochrom> The problem is, it has a dishonest name, so other people are deceived to believe that it has lint's status and purpose.
21:43:25 <monochrom> And the derivative problem is, because of that, lpaste.net imposed it.
21:43:37 <monochrom> hpaste.net, even
21:43:55 <sm> dishonest, deceived, nagware.. all of these seem a bit exaggerated and emotional to me. But as you like :)
21:43:58 <monochrom> Dishonest names are not fair.
21:44:07 × mnrmnaugh quits (~mnrmnaugh@68.162.206.56) (Remote host closed the connection)
21:44:30 mnrmnaugh joins (~mnrmnaugh@68.162.206.56)
21:44:32 <monochrom> It is very possible that if hpaste didn't inflict it, I would not complain at all.
21:44:52 <sm> hpaste.. what is that now.. still a thing ?
21:45:03 <monochrom> No.
21:45:54 × mnrmnaugh quits (~mnrmnaugh@68.162.206.56) (Remote host closed the connection)
21:46:13 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
21:47:08 mnrmnaugh joins (~mnrmnaugh@68.162.206.56)
21:47:25 <Clint> hpaste is oppressing everyone from beyond the grave
21:48:34 × mnrmnaugh quits (~mnrmnaugh@68.162.206.56) (Remote host closed the connection)
21:49:19 <sm> well, monochrom you have motivated me to try using hlint a bit and see if I can configure it to give a little bit of shellcheck-like feeling
21:49:21 × hexfive quits (~eric@50.35.83.177) (Quit: WeeChat 3.0)
21:49:23 mnrmnaugh joins (~mnrmnaugh@68.162.206.56)
21:49:52 × sander quits (~sander@user/sander) (Ping timeout: 268 seconds)
21:51:16 <sm> if not we should hire koala_man to build hscheck
21:51:19 phma_ is now known as phma
21:53:01 <dsal> main = putStrLn "If it compiles, it's probably fine."
21:53:20 <koala_man> the typechecker does most of that already, but I'd love to see a tool that suggests inefficient constructs, e.g. missed opportunities for list fusion
21:54:17 sander joins (~sander@user/sander)
21:57:30 finsternis joins (~X@23.226.237.192)
21:59:17 <sm> space leaks!
21:59:34 <sm> "inefficient code", generally
22:00:33 <monochrom> I bet it would take multiple PhD projects. It has become a full-blown static analysis problem, and a hard one even in that circle.
22:01:03 worp joins (~worp@221.124.9.182)
22:01:14 <monochrom> lint and hlint can afford to just reap low-hanging fruits which are merely local syntactic patterns.
22:01:52 <monochrom> s/local/peephole/
22:02:04 × mnrmnaugh quits (~mnrmnaugh@68.162.206.56) (Quit: Leaving)
22:02:25 mnrmnaugh joins (~mnrmnaugh@68.162.206.56)
22:02:49 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
22:03:38 × acidjnk quits (~acidjnk@p200300d0c72b954099fc00439288b01d.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
22:03:55 × mastarija quits (~mastarija@78-3-210-70.adsl.net.t-com.hr) (Quit: Leaving)
22:04:04 Guest84 joins (~Guest84@2406:3003:2006:447e:9d85:ae5b:bc5f:9191)
22:04:15 jakefromstatefar < https://libera.ems.host/_matrix/media/r0/download/libera.chat/d6ee8d82cce59eaf39c39990068061b95b4ce892/message.txt >
22:04:56 <monochrom> Use getLine. readLn is something else.
22:05:58 <jakefromstatefar> Thank you
22:06:28 <monochrom> Moreoever, if you expect "return 42" to cause, from the unix POV, the exit code of 42, you will be thoroughly disappointed.
22:09:25 <hololeap> does anyone use a text editor that correctly applies highlighting in the face of "ticked" types when using DataKinds? for instance '[] and ':
22:10:45 <hpc> vim perhaps?
22:10:55 <hololeap> the one I'm using thinks everything between the apostrophe is a literal or something
22:10:57 <hpc> at the very least, it doesn't start a giant unterminated purple quote
22:11:04 <monochrom> Would it be OK if my answer were "I disable highlighting so nothing goes wrong?" :)
22:11:33 <hololeap> monochrom: sure
22:11:38 <monochrom> In reality, I enable highlighting, but I haven't checked what it does to that scenerio.
22:12:00 <dsal> Emacs doesn't get confused very often for me
22:12:28 <hpc> the only thing emacs gets confused is the user :P
22:12:41 × srk quits (~sorki@user/srk) (Ping timeout: 268 seconds)
22:12:44 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
22:12:52 <jakefromstatefar> True tho
22:12:54 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
22:12:54 <hpc> hololeap: what editor are you currently using?
22:12:57 <monochrom> OK yeah I have just tried, emacs haskell-mode doesn't have that problem.
22:13:17 <monochrom> I understand that pastebin.com has that problem.
22:13:27 srk joins (~sorki@user/srk)
22:13:40 <monochrom> And the dark green colour, it may as well be redaction.
22:13:51 <hololeap> hpc: you're right, vim doesn't have any problem with that. it must be kde's syntax highlighting that is the problem
22:13:56 <hololeap> hpc: kate
22:14:02 <hpc> a lot of those use very generic syntax highlighting, where 'f' and "foo" are using the exact same string parser
22:14:10 <hpc> because that's how it is in most languages so they just enable that
22:14:20 <hpc> and maybe there's a different list of keywords to make yellow or blue
22:14:49 <hpc> it's how they "support" having a hundred or so languages in their dropdown picker
22:16:07 <hololeap> it's a little funny to me considering that skylighting uses kde's syntax highlighting framework and they push syntax changes upstream. you would think it would handle DataKinds correctly. oh well, maybe I'll submit a patch at some point
22:22:47 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 252 seconds)
22:24:55 × michalz quits (~michalz@185.246.204.37) (Remote host closed the connection)
22:25:07 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
22:28:04 geekosaur joins (~geekosaur@xmonad/geekosaur)
22:28:07 srk_ joins (~sorki@user/srk)
22:28:43 × srk quits (~sorki@user/srk) (Ping timeout: 268 seconds)
22:29:22 × Ananta-shesha quits (~pjetcetal@2.95.210.188) (Ping timeout: 256 seconds)
22:31:05 srk_ is now known as srk
22:31:55 Ananta-shesha joins (~pjetcetal@2.95.210.188)
22:32:13 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
22:33:52 × jess quits (~jess@libera/staff/jess) (Ping timeout: 600 seconds)
22:40:01 × amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 248 seconds)
22:43:23 × Guest84 quits (~Guest84@2406:3003:2006:447e:9d85:ae5b:bc5f:9191) (Quit: Client closed)
22:46:25 Guest84 joins (~Guest84@2406:3003:2006:447e:9d85:ae5b:bc5f:9191)
22:48:33 dextaa8 joins (~DV@user/dextaa)
22:49:24 × Cajun quits (~Cajun@user/cajun) (Quit: Client closed)
22:50:01 × dextaa quits (~DV@user/dextaa) (Read error: Connection reset by peer)
22:50:01 dextaa8 is now known as dextaa
22:52:01 jakalx joins (~jakalx@base.jakalx.net)
22:56:02 × Guest84 quits (~Guest84@2406:3003:2006:447e:9d85:ae5b:bc5f:9191) (Quit: Client closed)
22:57:49 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
23:00:17 × yoctocell quits (~user@h87-96-130-155.cust.a3fiber.se) (Ping timeout: 248 seconds)
23:00:42 lep joins (~lep@94.31.97.183)
23:01:21 × lep- quits (~lep@94.31.86.183) (Ping timeout: 248 seconds)
23:01:49 × chomwitt quits (~chomwitt@ppp-2-85-147-24.home.otenet.gr) (Remote host closed the connection)
23:04:31 lep- joins (~lep@94.31.86.183)
23:05:38 × lep quits (~lep@94.31.97.183) (Ping timeout: 256 seconds)
23:09:23 × futty quits (~futty@c83-252-75-55.bredband.tele2.se) (Quit: Connection closed)
23:10:26 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
23:21:21 Matthias1 joins (~Matthias1@2603-8001-b545-4900-84ac-de97-345e-66f4.res6.spectrum.com)
23:22:52 dextaa1 joins (~DV@user/dextaa)
23:23:45 × dextaa quits (~DV@user/dextaa) (Ping timeout: 248 seconds)
23:23:45 dextaa1 is now known as dextaa
23:30:41 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 248 seconds)
23:33:34 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
23:36:48 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
23:39:12 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
23:42:01 <DigitalKiwi> 22:12 hpc: the only thing emacs gets confused is the user :P
23:42:22 <DigitalKiwi> doom-emacs threatened to burn down my house while i was having a psychotic breakdown
23:42:59 <DigitalKiwi> it's funny now but at the time i believed it and it was terrifying :|
23:43:53 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
23:44:50 <monochrom> I guess it's similar to threatening to launch missiles and then rollback the transaction.
23:44:56 <hpc> lp0 on fire
23:45:04 <DigitalKiwi> https://www.nimh.nih.gov/health/topics/schizophrenia/raise/what-is-psychosis
23:46:00 <DigitalKiwi> https://github.com/hlissner/doom-emacs/blob/5b3f52f5fb98cc3af653b043d809254cebe04e6a/modules/ui/doom-quit/config.el#L9
23:46:13 <DigitalKiwi> https://github.com/hlissner/doom-emacs/blob/5b3f52f5fb98cc3af653b043d809254cebe04e6a/modules/ui/doom-quit/config.el#L17
23:46:42 <DigitalKiwi> rolled poorly on the RNG and got those :P
23:47:33 <monochrom> You know what, it looks like the author of those lines was psychotic too. WTF is with using lemons for arson.
23:47:37 <DigitalKiwi> (among others but i remember distingly those lol)
23:47:48 <hpc> those are pretty funny
23:47:54 <hpc> monochrom: it's from portal 2
23:48:02 <DigitalKiwi> not when you believe it lol
23:48:05 <hpc> the character saying it was definitely a bit nuts
23:48:12 <monochrom> True that.
23:48:23 <hpc> and his alternate-universe counterparts were sometimes VERY nuts
23:49:16 <DigitalKiwi> i started posting an issue about it (with a proposed fix; there's actually a documentation improvement i have lol) and then github suggested i click some link about code fences and deleted everything ;_;
23:51:04 <hpc> it did that thing where you click back in your history and it goes "too bad, here's a blank form"?
23:51:35 <DigitalKiwi> yeah normally when i click back it has what i had typed in the form
23:51:49 <DigitalKiwi> but it has MULTIPLE FORMS and they were blank ;_;
23:51:54 <DigitalKiwi> half an hour wasted
23:52:10 <DigitalKiwi> i have not filed the issue yet because of that ;(
23:53:36 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
23:53:58 × Matthias1 quits (~Matthias1@2603-8001-b545-4900-84ac-de97-345e-66f4.res6.spectrum.com) (Read error: Connection reset by peer)
23:54:33 Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
23:55:40 agua_pesada joins (~agua_pesa@2804:14c:8793:8e2f:311f:1da6:1cf6:61ea)
23:56:29 <DigitalKiwi> turns out disabling doom-quit disables the crazy man with the lemons (which are normally funny) but not the quit messages (which i want) https://github.com/hlissner/doom-emacs/blob/5b3f52f5fb98cc3af653b043d809254cebe04e6a/init.example.el#L32 it's not clear that quit messages are enabled even without this though
23:58:46 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)

All times are in UTC on 2021-08-11.