Home liberachat/#haskell: Logs Calendar

Logs on 2021-07-21 (liberachat/#haskell)

00:00:03 <delYsid> yeah, those were the days.
00:00:19 Jeanne-Kamikaze joins (~Jeanne-Ka@69.4.234.80)
00:00:23 monochrom used to dabble a bit with peek, poke in basic and adding a bit of asm.
00:01:12 geekosaur remembers those days too
00:01:13 <schuelermine> hmm, I’m getting SHA256:lLbnuXcnp9ghlxu91KksYuFl3df74ItLmef30s2fktc.
00:01:46 <schuelermine> delYsid: Oh, I was using HJKL controls
00:02:16 <delYsid> yeah, SHA256:lLbnuXcnp9ghlxu91KksYuFl3df74ItLmef30s2fktc
00:02:26 <schuelermine> ok
00:02:38 Haskell9Liker6 joins (~Haskell9L@rrcs-69-75-173-34.west.biz.rr.com)
00:02:55 <delYsid> this is the first time ever someone asked me to verify a server key. And I am doing hpc admin work as a day job since 20 years. Its so sad.
00:03:14 <schuelermine> also, I’m starting to regret using Kitty as my terminal, I always need to write TERM=xterm-256color before any ssh…
00:03:23 <Haskell9Liker6> hi, is there a good place to go to get an idea of progress towards release of ghc 9.2.1?
00:04:03 <geekosaur> https://gitlab.haskell.org/ghc/ghc/-/milestones/365 supposedly
00:04:09 <schuelermine> Haskell9Liker6: I don’t think it’s release-ready yet
00:04:11 <delYsid> schuelermine: alias ssh='TERM=xterm-256color ssh'
00:04:20 <schuelermine> delYsid: maybe
00:04:23 <schuelermine> although
00:04:29 <geekosaur> they're still tracking down problems on aarch64-darwin
00:04:33 <schuelermine> maybe I should actually utilize fish abbreviations finally
00:04:58 <schuelermine> ’cause I have the terminfo file copied onto a dev server I use regularly
00:05:01 <schuelermine> so I don’t need it there
00:05:42 <delYsid> I never got why fish is the new hot thing. I am kind of stuck with bash.
00:05:52 <geekosaur> zsh!
00:05:56 <schuelermine> is it the hot new thing? idk
00:05:59 <schuelermine> I like it personally
00:06:10 <schuelermine> geekosaur: zsh sounds kinda good too
00:06:19 <delYsid> yeah, I even used zsh for many years, but somehow went back to bash because I am simply using too many machines on a daily basis.
00:07:05 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
00:07:26 <geekosaur> I have a somewhat evil config that makes what I need available on many shells
00:07:55 × shapr quits (~user@pool-108-28-144-11.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
00:08:01 <monochrom> onoes polygot .profile
00:08:03 <geekosaur> which dates back to when commercial unixes were a thing, so I don't use much in the way of fancy expansions and the like
00:08:57 favonia joins (~favonia@user/favonia)
00:09:00 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
00:09:14 <delYsid> I customize my local machine, but I try to run with the defaults on everything remote.
00:10:14 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
00:11:04 × dtman34 quits (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Quit: ZNC 1.7.2+deb3 - https://znc.in)
00:11:28 <schuelermine> oh that reminds
00:11:31 <schuelermine> me
00:11:46 <schuelermine> Does anybody know when WinIO will be made the default IO manager for NT?
00:11:55 <Cajun> so when i go to compile this, GHC "panics" and says its a bug, though im not sure if my code is even valid logically https://paste.tomsmeding.com/NGnr4zD8
00:12:01 <schuelermine> I remember being really frustrated with GHC back when I used Windows
00:13:09 <schuelermine> goodbye!
00:13:15 × schuelermine quits (~anselmsch@user/schuelermine) (Quit: WeeChat 3.2)
00:13:52 dtman34 joins (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net)
00:15:04 × Haskell9Liker6 quits (~Haskell9L@rrcs-69-75-173-34.west.biz.rr.com) (Quit: Client closed)
00:15:39 <pavonia> Is "type Label :: Type -> Symbol" legal code?
00:15:49 <Cajun> yes, its a type family thing
00:16:10 <Cajun> kind signature i think is the term, im new to it
00:16:28 <pavonia> I've never seen this
00:16:43 <Cajun> itll blow your mind, check out TypeFamilies if you havent
00:17:22 <pavonia> I know about type families, just not this part of the syntax
00:20:51 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
00:21:15 favonia joins (~favonia@user/favonia)
00:23:17 <pavonia> So (a :: Num a => a) is any type that has a kind which is an instance of Num, do I get that right?
00:24:16 aegon joins (~mike@174.127.249.180)
00:24:20 <Cajun> im still having difficulties with kinds, but yes that sounds fairly accurate
00:24:56 <h98> are you really supposed to be able to do that?
00:25:06 <pavonia> I think what you want is just (Num a => a)
00:25:34 <h98> ^ that gives "illegal qualified type" for me
00:26:01 <aegon> I'm trying to interface with the Gogol library but its doing some things that are over my head. Specifically theres a data definition in there called Env, I want to store an instance of that in a MonadReader but I cant get the type system to tell me what to call it. here's where the data is defined
00:26:06 <aegon> https://github.com/brendanhay/gogol/blob/797a2672b4652a1764d61a313939a2050ff0ed7f/gogol/src/Network/Google/Env.hs#L33
00:26:58 <Cajun> pavonia: that also gives me "illegal qualified type"
00:27:09 <h98> i'd be very surprised you could do anything like that honestly
00:27:17 <aegon> The closest I've come is IO Network.Google.Env.Env '["https://www.googleapis.com/auth/devstorage.read_write"]' but when i trie to make that the type ghc seems upset
00:27:18 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
00:27:20 Guest4 joins (~Guest4@50.47.115.102)
00:27:25 <h98> type families are supposed to be easy to resolve right?
00:27:56 <h98> putting constraints in there doesn't feel like it should work, though idk
00:28:19 <Cajun> there must be a way to match on multiple types like that. like instead of writing `instance Label Double/Int/Integer/etc. = ...` there must be some sorta shortcut right?
00:29:23 <Cajun> yeah it doesnt feel like it should work but i have no idea. that seems like it would be asking for a value instead of a type, which wouldnt make sense
00:31:15 <dsal> If you want to know a bit more about kinds and kind signatures and like watching videos: https://youtu.be/JleVecHAad4
00:31:41 <Cajun> ill check it out, thanks!
00:32:20 <aegon> here's a paste of the error https://dpaste.com/5LSAK2QBZ
00:33:18 <h98> i think if what you were trying to do were allowed, you could concoct a chicken-and-egg situation with a type family and a class where your code would depend on the order in which ghc compiles it
00:33:45 <dsal> aegon: I suspect you just want `newEnv`
00:34:19 <dsal> Just realized I've basically not used gogol. I've used amazonka quite a bit, though.
00:34:25 <aegon> dsal: I want to store it in record in a ReaderT so I need to give a type for it somewheres
00:35:40 <aegon> I want to have access to an Env within route of my app so I can interact with google storage, I think one way for this is to store the Google Env in a record in a ReaderT but this level of type work is over my head, maybe the way this is formed precludes that?
00:36:50 × Guest4 quits (~Guest4@50.47.115.102) (Quit: Client closed)
00:37:17 <Cajun> h98: that does seem accurate, but that makes me wonder why it isnt caught by a syntax checker of some kind and results in the GHC panic. ill submit the bug report if it appears it hasnt been submitted already
00:37:47 <dsal> aegon: You don't necessarily want to store that env. I'm trying to see what the equivalent in gogol is of some of the stuff I'm doing in amazonka
00:38:02 <geekosaur> just for grins and giggles: does it change if you rename the type?
00:38:38 <geekosaur> that is, (a :: Num b => b)
00:38:53 <h98> https://gitlab.haskell.org/ghc/ghc/-/issues/18714 might be relevant
00:39:35 <aegon> dsal: hmm, i thought i'd want to not create and tear down loggers / envs everytime i uplaod or download something from gcs but maybe it's lighterweight than i thought?
00:39:35 <Cajun> that doesnt do much of anything it appears geekosaur but nice idea lol
00:39:48 <Cajun> h98: it does appear to be relevant, thanks!
00:40:02 <aegon> dsal: thats for sure doing an env lookup and a disk read at the least but maybe Gogol caches that somewhere internal with an IORef
00:40:18 <dsal> aegon: yeah. In amazonka, there's an AWST you can use. I don't quite know where that is. But your type signature looks a bit weird there. Have you tried removing it and asking it what the type is?
00:40:21 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 265 seconds)
00:40:49 <aegon> dsal: yeah, with it removed GHC gives up, I thought maybe i was missing a language pragma so sprinkled some in :P
00:41:33 <aegon> gettin ga pastebin of the error
00:41:34 allbery_b joins (~geekosaur@xmonad/geekosaur)
00:41:34 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
00:41:37 allbery_b is now known as geekosaur
00:42:00 × adinf quits (~adinfinit@2600:6c40:653f:5f00:a650:d8d7:fe0b:8c1f) (Ping timeout: 255 seconds)
00:43:31 <aegon> dsal: here is the one https://dpaste.com/F98EU49GW
00:44:44 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
00:45:29 <dsal> Oh, well for the first, you probably just need the correct constraints. newEnv is `newEnv :: (MonadIO m, MonadCatch m, AllowScopes s) => m (Env s)`
00:45:37 <dsal> Your function is basically the same as that.
00:46:08 <dsal> I should write some code against gogol. I thought I had somewhere, but I guess not.
00:47:35 <aegon> dsal: hmm, but then when i get the Env s and i want to store that in a record, i need to provide the s type and i don't know how to tell the compiler what that is
00:48:22 <geekosaur> isn't the error message giving that to you?
00:48:45 × hiruji quits (~hiruji@user/hiruji) (Ping timeout: 255 seconds)
00:50:07 <aegon> geekosaur: i must be missing a language extension? i tried plugging that into it before an ghc didn't know how to parse '["thing"]' as part of the Env type signature
00:50:21 <aegon> it said somethign about a Kind mismatch
00:51:01 × Deide quits (~Deide@user/deide) (Quit: Seeee yaaaa)
00:51:48 <geekosaur> maybe provide that code and error? this is starting to sound like an xy problem
00:51:59 × lbseale quits (~lbseale@user/ep1ctetus) (Quit: Leaving)
00:52:45 <dsal> This code uses some fancy features and has a lot of bugs open begging for it to be updated and/or offering help to maintain it. :(
00:54:56 <aegon> working on getting a paste for that, I'm pretty unfamiliar with these extensions so it takes a bit to reorganize stuff and get back to the previous state
00:55:06 pesada joins (~agua@2804:18:4a:c35:1:0:3be5:8cb2)
00:55:16 adinf joins (~adinfinit@2600:6c40:653f:5f00:a650:d8d7:fe0b:8c1f)
00:55:57 <geekosaur> anyway kind mismatch is not usually a missing extension but some other problem
00:56:08 <dsal> DataKinds isn't too confusing, but it is leading to some monstrous types: type FilesCopyResource = "drive" :> ("v3" :> ("files" :> (Capture "fileId" Text :> ("copy" :> (QueryParam "ocrLanguage" Text :> (QueryParam "keepRevisionForever" Bool :> (QueryParam "supportsAllDrives" Bool :> (QueryParam "ignoreDefaultVisibility" Bool :> (QueryParam "supportsTeamDrives" Bool :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] File :> Post '[JSON]
00:56:08 <dsal> File)))))))))))
00:56:58 <geekosaur> the type there admittedly wouldn't have matched kinds *, so maybe you're missing PolyKinds
00:57:40 × agua quits (~agua@2804:18:4f:bc57:1:0:3808:8f6a) (Ping timeout: 246 seconds)
00:57:45 × oxide quits (~lambda@user/oxide) (Read error: Connection reset by peer)
00:58:36 <aegon> ooo, i got it down to a warning, i was screwing up the s part of the type by adding an extra ' at the end
00:58:43 <aegon> what extension or feature is the '["string"]
00:59:24 <geekosaur> that's a type-level list of Symbols
00:59:29 <h98> aegon https://stackoverflow.com/questions/54020335/what-is-and-in-haskell
01:00:57 <aegon> h98 reading that
01:01:09 <aegon> in the meanwhile here is the version with just a warning https://dpaste.com/6N2WZ3YVG
01:03:20 <dsal> That's a handy warning.
01:05:03 <aegon> yeah i fixed it, I need to read up on MonadCatch, so I need to do this init within a non IO monad, it doesn't work when I remove the constraint MonadCatch but the example i see is doing this in raw IO
01:05:35 <dsal> If you need to use this, you need to use it from something with a `MonadCatch` constraint.
01:06:07 <aegon> ooooh, the example is untyped and is eventually going through Google.Network.runGoogle
01:07:31 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
01:10:50 <aegon> and, IO is an instance of MonadCatch
01:13:22 chris_ joins (~chris@81.96.113.213)
01:13:34 <dsal> Yeah, IO has a lot of instances.
01:14:44 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 258 seconds)
01:15:21 <aegon> sorry for all the questions, I've read about transformers a lot, this is the first time trying to do something real with them and its quite different than reading, I'm still getting working on some intuition, i got the type down
01:15:45 <aegon> so if i'm understanding this correct theres a type definitions somewhere in google that uses that string as one of its representations
01:16:43 <dsal> This isn't transformers, this is DataKinds.
01:16:44 <aegon> or is '[] doing something special with the Symol definition that converts any sequence of strings into a matchable type parameter
01:16:50 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
01:18:39 <dsal> Symbol is for type literals: https://hackage.haskell.org/package/base-4.15.0.0/docs/GHC-TypeLits.html#t:Symbol
01:18:44 olive_ joins (~olive_@117.222.71.166)
01:19:31 oxide joins (~lambda@user/oxide)
01:19:43 × smichel17 quits (~smichel17@c-73-68-217-18.hsd1.ma.comcast.net) (Quit: smichel17)
01:20:05 <aegon> reading up on DataKinds / TypeLits
01:20:12 <dsal> Argh, these types require pastebins just to talk about
01:20:58 × xff0x_ quits (~xff0x@2001:1a81:52d5:1300:581a:587e:cc8c:4deb) (Ping timeout: 240 seconds)
01:20:59 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
01:21:24 <justsomeguy> That's one advantage of other kinds of chat platforms, like the fp discord or matrix.
01:21:45 <justsomeguy> (You can have an in-line text document, which can easily be hidden or expanded.)
01:22:50 <dsal> Heh. It's more of damning a type definition that's so long it requires that kind of feature to even look at.
01:22:56 xff0x_ joins (~xff0x@2001:1a81:530d:8900:36a5:b6bb:ee85:bc72)
01:22:56 <dsal> aegon: https://github.com/brendanhay/gogol/blob/develop/gogol-storage/gen/Network/Google/Resource/Storage/Objects/Get.hs#L206 <-- you can see how this is used here.
01:23:35 <dsal> The scope string is part of the type such that you get compile-time safety preventing you from calling a modification function with a read scope.
01:24:40 doyougnu joins (~user@c-73-25-202-122.hsd1.or.comcast.net)
01:26:11 <monochrom> Is that type-level URL meme
01:27:15 dsal creates type shortener service
01:27:34 <dsal> e.g.: https://github.com/brendanhay/gogol/blob/develop/gogol-storage/gen/Network/Google/Resource/Storage/Objects/Insert.hs#L55-L102
01:27:40 <monochrom> hee hee
01:28:28 <dsal> I think the indentation is probably quite misleading.
01:28:29 <h98> should've run the URLs through bit.ly first to make the types shorter
01:29:13 <dsal> echo type | gzip -9vc | gzip -9vc
01:29:30 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 256 seconds)
01:32:24 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds)
01:33:28 × eight quits (~eight@user/eight) (Quit: leaving)
01:33:52 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
01:34:00 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
01:39:04 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
01:42:14 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
01:43:47 × doyougnu quits (~user@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection)
01:43:55 <aegon> dsal: are you the author of gogol?
01:45:08 geekosaur joins (~geekosaur@xmonad/geekosaur)
01:49:04 <dsal> aegon: noooo.
01:49:11 <dsal> That dude seems busy
01:49:59 × jmorris quits (uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
01:50:18 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
01:50:27 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
01:50:32 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
01:52:46 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine)
01:56:02 × x_kuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer)
01:57:44 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
01:57:54 × derelict quits (~derelict@user/derelict) (Ping timeout: 240 seconds)
01:59:31 geekosaur joins (~geekosaur@xmonad/geekosaur)
02:00:09 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
02:01:51 zyklotomic parts (~ethan@2604:a880:800:10::79f:8001) (WeeChat 2.8)
02:05:37 <Boarders> is there some way to get from a type level list of types to the flattened tuple of each element?
02:06:51 geekosaur can't even imagine the type of such a function
02:07:42 <h98> Boarders do you have an example of the kind of signature you want?
02:07:54 × oxide quits (~lambda@user/oxide) (Ping timeout: 252 seconds)
02:07:59 <Boarders> it is a type family like: type Tuplify :: [Type] -> Type
02:08:26 <Boarders> the naive thing you would write is either left or right biased where you have a bunch of nested pairs
02:08:57 <Boarders> like I could write this as an open type family where I just write it all the way up to lists of length 63 or whatever GHC supports tuples for
02:09:00 <Boarders> in principle
02:09:06 <h98> if you want a flat tuple you almost certainly have to hardcode it, or use something like https://hackage.haskell.org/package/tuple-hlist
02:10:15 × td_ quits (~td@muedsl-82-207-238-004.citykom.de) (Ping timeout: 265 seconds)
02:11:14 jmorris joins (uid433911@id-433911.stonehaven.irccloud.com)
02:11:15 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds)
02:11:52 td_ joins (~td@muedsl-82-207-238-072.citykom.de)
02:13:02 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
02:13:48 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
02:14:12 Axman6 joins (~Axman6@user/axman6)
02:16:52 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
02:18:26 <dsal> % :k (,,,)
02:18:26 <yahb> dsal: * -> * -> * -> * -> *
02:18:43 <dsal> % :t (,,,)
02:18:44 <yahb> dsal: a -> b -> c -> d -> (a, b, c, d)
02:21:11 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 255 seconds)
02:27:23 <aegon> I'm trying to find the definition of Object in that library and I've been searching for 15 minutes, lol
02:32:42 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
02:34:10 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:34:10 FinnElija is now known as Guest222
02:34:10 finn_elija is now known as FinnElija
02:35:13 favonia joins (~favonia@user/favonia)
02:36:05 × Jeanne-Kamikaze quits (~Jeanne-Ka@69.4.234.80) (Quit: Leaving)
02:37:14 × Guest222 quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 252 seconds)
02:38:57 Jeanne-Kamikaze joins (~Jeanne-Ka@69.4.234.80)
02:44:06 <Boarders> is it possible to go from the k -> Type sort of things in GHC.Generics to the underlying type again (if that makes sense what I am saying)?
02:45:14 <Boarders> I guess you can write a type family to do it
02:49:20 <dsal> aegon: which Object? There's usually a link.
02:49:56 <c_wraith> aegon: if you're in the haddock, just hit "s" and then type "Object" into the window that pops up. No need to do work the computer can do for you.
02:50:08 <c_wraith> Or you can go to the index page
02:50:20 <dsal> aegon: this one? https://hackage.haskell.org/package/gogol-storage-0.5.0/docs/Network-Google-Storage-Types.html#g:51
02:50:22 × Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Ping timeout: 265 seconds)
02:50:28 <c_wraith> You should never *search* the haddocks.
02:51:45 <dsal> I didn't know about the `s` thing. When did computers gain capabilities?
02:52:34 × horatioh2 quits (~horatiohb@161.35.107.60) (Ping timeout: 268 seconds)
02:54:47 <c_wraith> in the big haddock output redesign a few years ago
02:54:58 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
02:55:58 Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
02:59:33 × alx741 quits (~alx741@186.178.108.174) (Quit: alx741)
03:00:06 × Null_A quits (~null_a@2601:645:8700:2290:51:7614:ed:3f42) (Remote host closed the connection)
03:03:40 chris_ joins (~chris@81.96.113.213)
03:04:22 pisenbig joins (~user@49.5.6.87)
03:05:22 <pisenbig> let i = Just "abc", how to `isPrefixOf "ab" i` get a Bool for if-else-then?
03:05:40 <pisenbig> isPrefixOf "ab" <$> i would get [Bool]
03:05:50 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
03:05:53 <pisenbig> and if-then-else need a Bool, not [Bool]
03:06:58 <pisenbig> and inside IO's do notation, can we use >>= for Maybe?
03:07:42 <pisenbig> main = do {let i = Nothing; i >>= (\n -> if isPrefixOf "ab" n then ...) } ok?
03:08:10 <h98> yes ish but probably not in the way you're thinking, >>= will work on the "top" monad layer if you have m1 ( m2 ( ...))
03:08:15 × guest720 quits (~user@49.5.6.87) (Ping timeout: 265 seconds)
03:08:30 <geekosaur> sometimes you just want to pattern match
03:08:36 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 268 seconds)
03:10:02 Erutuon joins (~Erutuon@user/erutuon)
03:10:38 pisenbig223 joins (~user@49.5.6.87)
03:10:47 <pisenbig223> would Nothing shortcircle whole IO's computation?
03:11:23 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.0.1)
03:11:48 <geekosaur> it would shortcircuit the isPrefixOf but not the IO
03:12:47 <pisenbig223> and what about if-then-else?
03:12:48 × pisenbig quits (~user@49.5.6.87) (Ping timeout: 258 seconds)
03:14:49 × Jeanne-Kamikaze quits (~Jeanne-Ka@69.4.234.80) (Quit: Leaving)
03:15:25 <geekosaur> again, sometimes you just want to pattern match. or use fromMaybe
03:15:28 × favonia quits (~favonia@user/favonia) (Ping timeout: 256 seconds)
03:16:03 <geekosaur> :t fromMaybe False (isPrefixOf "abc" <$> Just "a")
03:16:04 <lambdabot> Bool
03:16:27 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
03:17:01 lavaman joins (~lavaman@98.38.249.169)
03:17:08 <geekosaur> change the Flase to True if you want Nothing to evaluate to True
03:17:51 × pisenbig223 quits (~user@49.5.6.87) (Ping timeout: 268 seconds)
03:17:55 <geekosaur> *False
03:18:00 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
03:18:12 lavaman joins (~lavaman@98.38.249.169)
03:20:02 favonia joins (~favonia@user/favonia)
03:22:11 Codaraxis_ joins (~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
03:26:29 × Codaraxis quits (~Codaraxis@user/codaraxis) (Ping timeout: 268 seconds)
03:29:02 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
03:29:55 Hafydd joins (~Hafydd@user/hafydd)
03:30:29 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 250 seconds)
03:32:11 pisenbig222 joins (~user@49.5.6.87)
03:32:39 × juhp quits (~juhp@128.106.188.66) (Ping timeout: 268 seconds)
03:32:43 <pisenbig222> in IO's donation, how to shortcircle if-then-else?
03:34:32 ukari joins (~ukari@user/ukari)
03:35:43 × tubogram quits (~tubogram@user/tubogram) (Quit: See ya later!)
03:35:46 × drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 240 seconds)
03:36:02 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
03:37:05 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
03:38:09 <c_wraith> pisenbig222: are you typing on a phone? If so, you might want to watch out for autocorrect.
03:38:39 tubogram joins (~tubogram@user/tubogram)
03:40:09 <pisenbig222> c_wraith: sorry for that
03:40:10 × pisenbig222 quits (~user@49.5.6.87) (Quit: ERC (IRC client for Emacs 27.1))
03:41:33 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
03:42:19 chris_ joins (~chris@81.96.113.213)
03:46:16 derelict joins (~derelict@user/derelict)
03:50:53 × zebrag quits (~chris@user/zebrag) (Remote host closed the connection)
03:52:48 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
03:53:36 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
03:55:06 <albet70> how to get a from IO (Maybe a)?
03:55:22 <albet70> since there's no IOT
03:57:10 <h98> do (Just a <- ioMaybeA) is the dirty way
03:57:33 drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
03:57:35 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
03:59:27 <glguy> or better, do mb <- ioMaybeA; case mb of Nothing -> _; Just a -> _
04:00:57 oxide joins (~lambda@user/oxide)
04:02:51 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
04:03:51 <albet70> main = do {let a = return Nothing :: MaybeT IO Int; runMaybeT (a >>= (\n -> MaybeT $ print (n+1)))
04:04:01 <albet70> what's wrong with it?
04:04:28 <albet70> should n be Int?
04:04:40 <nshepperd2> return Nothing :: MaybeT IO Int is a type error
04:04:54 <albet70> oh
04:06:17 <nshepperd2> and so is MaybeT $ print (n+1)
04:06:45 × adinf quits (~adinfinit@2600:6c40:653f:5f00:a650:d8d7:fe0b:8c1f) (Ping timeout: 255 seconds)
04:09:40 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
04:10:05 Null_A joins (~null_a@2601:645:8700:2290:a92e:e23d:59b7:f2e9)
04:11:45 × Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection)
04:12:22 Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
04:12:32 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 265 seconds)
04:15:20 × lambdap quits (~lambdap@static.167.190.119.168.clients.your-server.de) (Quit: lambdap)
04:15:58 lambdap joins (~lambdap@static.167.190.119.168.clients.your-server.de)
04:16:49 × Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Ping timeout: 258 seconds)
04:16:50 × eL_Bart0- quits (eL_Bart0@dietunichtguten.org) (Read error: Connection reset by peer)
04:17:25 <albet70> :t MaybeT $ print 1
04:17:26 <lambdabot> error:
04:17:26 <lambdabot> • Data constructor not in scope: MaybeT :: IO () -> t
04:17:26 <lambdabot> • Perhaps you meant variable ‘maybe’ (imported from Data.Maybe)
04:18:25 <albet70> I forget Maybe in it
04:20:02 eL_Bart0 joins (eL_Bart0@dietunichtguten.org)
04:21:29 × tubogram quits (~tubogram@user/tubogram) (Quit: See ya later!)
04:25:23 tubogram joins (~tubogram@user/tubogram)
04:26:46 juhp joins (~juhp@128.106.188.220)
04:29:56 <aegon> c_wraith: dsal: omg, i had no clue there was a search in haddock, mind is blown
04:31:30 × drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 255 seconds)
04:31:56 michalz joins (~michalz@185.246.204.50)
04:37:57 slycelote joins (~slycelote@user/slycelote)
04:42:10 Codaraxis__ joins (~Codaraxis@193.138.218.171)
04:44:11 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
04:45:34 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
04:45:47 × aegon quits (~mike@174.127.249.180) (Quit: leaving)
04:45:56 × Codaraxis_ quits (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Ping timeout: 252 seconds)
04:50:11 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
04:51:27 aegon joins (~mike@174.127.249.180)
04:51:43 <aegon> is there a command line verision of the haddock search?
04:52:12 × xff0x_ quits (~xff0x@2001:1a81:530d:8900:36a5:b6bb:ee85:bc72) (Ping timeout: 255 seconds)
04:53:07 xff0x_ joins (~xff0x@2001:1a81:530d:8900:7b7c:d7d5:bd71:1e50)
04:55:10 <geekosaur> you can install haddock locally and this is in fact recommended if you want to index your own libraries, or everything you've installed with cabal, etc. it includes a command line utility
04:56:08 <geekosaur> @hackage haddock
04:56:08 <lambdabot> https://hackage.haskell.org/package/haddock
04:57:00 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 265 seconds)
04:57:17 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
05:07:30 × ablutor quits (~quassel@wasscher.com) (Quit: going for vitamine d)
05:08:22 ablutor joins (~quassel@wasscher.com)
05:10:18 × h98 quits (~h98@187.83.249.216.dyn.smithville.net) (Quit: Client closed)
05:10:45 dunkeln joins (~dunkeln@94.128.224.230)
05:21:48 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 268 seconds)
05:22:04 ptmxroot joins (~ptmxroot@191.13.28.194)
05:22:18 × ptmxroot quits (~ptmxroot@191.13.28.194) (Remote host closed the connection)
05:24:30 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
05:27:30 × MorrowM quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Quit: ZNC 1.8.2 - https://znc.in)
05:27:45 Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net)
05:28:55 Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
05:33:44 × Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Ping timeout: 265 seconds)
05:34:14 MasseR joins (~MasseR@51.15.143.128)
05:44:22 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:51:55 × Axman6 quits (~Axman6@user/axman6) (Quit: Ping timeout (120 seconds))
05:51:56 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 252 seconds)
05:53:55 <aegon> is there a stack way to do that automagically?
05:57:27 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 255 seconds)
05:58:02 Axman6 joins (~Axman6@user/axman6)
06:01:15 × Vajb quits (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
06:01:58 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
06:08:35 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
06:10:18 × sim590 quits (~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 240 seconds)
06:11:17 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
06:12:58 <sm> aegon: stack hoogle something something ?
06:13:34 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 252 seconds)
06:14:07 <jophish> I use https://gist.github.com/bc87359253777b0e223f25134bdc9092
06:14:17 × danso quits (~danso@23-233-111-52.cpe.pppoe.ca) (Ping timeout: 245 seconds)
06:14:17 <sm> can't figure out how that works
06:14:58 <jophish> better link: https://github.com/expipiplus1/dotfiles/blob/9e32d09b143a516655332713508cbec693f6e04f/config/nixpkgs/home/haskell.nix#L161-L169
06:15:06 <jophish> it watches package.yaml (or .cabal)
06:15:21 <jophish> and reloads a hoogle server when they change
06:15:53 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
06:16:51 × echoreply quits (~echoreply@2001:19f0:9002:1f3b:5400:ff:fe6f:8b8d) (Quit: WeeChat 2.8)
06:17:21 echoreply joins (~echoreply@45.32.163.16)
06:20:49 aman joins (~aman@user/aman)
06:24:11 × abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
06:25:07 × jlamothe quits (~jlamothe@198.251.60.157) (Ping timeout: 250 seconds)
06:25:17 sim590 joins (~simon@modemcable090.207-203-24.mc.videotron.ca)
06:25:46 × hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
06:25:59 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
06:29:02 danso joins (~danso@23-233-111-52.cpe.pppoe.ca)
06:29:09 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
06:30:56 dhil joins (~dhil@195.213.192.47)
06:31:18 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
06:32:32 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Read error: Connection reset by peer)
06:37:02 jlamothe joins (~jlamothe@104.158.48.100)
06:38:28 × jneira_ quits (~jneira_@28.red-80-28-169.staticip.rima-tde.net) (Quit: Ping timeout (120 seconds))
06:40:37 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
06:41:06 × dunkeln quits (~dunkeln@94.128.224.230) (Ping timeout: 255 seconds)
06:43:16 × danso quits (~danso@23-233-111-52.cpe.pppoe.ca) (Ping timeout: 252 seconds)
06:44:09 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
06:45:24 danso joins (~danso@23-233-111-52.cpe.pppoe.ca)
06:47:51 × sim590 quits (~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 258 seconds)
06:50:00 fendor joins (~fendor@91.141.40.76.wireless.dyn.drei.com)
06:50:49 × Axman6 quits (~Axman6@user/axman6) (Ping timeout: 246 seconds)
06:52:57 sagax joins (~sagax@213.138.71.146)
06:53:18 sim590 joins (~simon@modemcable090.207-203-24.mc.videotron.ca)
06:59:13 × xff0x_ quits (~xff0x@2001:1a81:530d:8900:7b7c:d7d5:bd71:1e50) (Ping timeout: 246 seconds)
06:59:19 × ukari quits (~ukari@user/ukari) (Remote host closed the connection)
07:00:19 xff0x_ joins (~xff0x@2001:1a81:530d:8900:cddd:a545:4e9e:a55d)
07:05:26 dunkeln joins (~dunkeln@94.128.224.230)
07:07:23 chomwitt joins (~chomwitt@2a02:587:dc0e:ef00:12c3:7bff:fe6d:d374)
07:07:41 × shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit)
07:08:10 ukari joins (~ukari@user/ukari)
07:09:17 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
07:09:39 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
07:11:04 Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
07:11:14 × dunkeln quits (~dunkeln@94.128.224.230) (Ping timeout: 258 seconds)
07:14:35 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
07:15:53 × Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Ping timeout: 268 seconds)
07:24:55 chele joins (~chele@user/chele)
07:24:58 qontinuum joins (qontinuum@user/qontinuum)
07:34:54 jespada joins (~jespada@90.254.247.46)
07:35:28 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
07:40:52 × frdy quits (~mcfrdy@user/mcfrdy) (Ping timeout: 246 seconds)
07:45:12 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:45:38 × aegon quits (~mike@174.127.249.180) (Remote host closed the connection)
07:47:01 × nurupo quits (~nurupo.ga@user/nurupo) (Quit: nurupo.ga)
07:47:22 nurupo joins (~nurupo.ga@user/nurupo)
07:47:37 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
07:48:05 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Quit: WeeChat 2.8)
07:50:04 zeenk joins (~zeenk@2a02:2f04:a008:d600:18f2:3421:bac6:8f38)
07:55:10 × jushur quits (~human@user/jushur) (Quit: ¯\_(ツ)_/¯)
08:00:44 Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
08:02:03 × Null_A quits (~null_a@2601:645:8700:2290:a92e:e23d:59b7:f2e9) ()
08:06:35 hendursa1 joins (~weechat@user/hendursaga)
08:10:04 × hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds)
08:12:17 gehmehgeh joins (~user@user/gehmehgeh)
08:14:38 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
08:17:00 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
08:17:34 allbery_b joins (~geekosaur@xmonad/geekosaur)
08:17:34 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
08:17:37 allbery_b is now known as geekosaur
08:19:48 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
08:21:35 acidjnk joins (~acidjnk@p200300d0c72b9575c508b842a8b97de2.dip0.t-ipconnect.de)
08:28:45 curiousgay_ joins (~curiousga@77-120-144-167.kha.volia.net)
08:28:48 × curiousgay quits (~curiousga@77-120-144-167.kha.volia.net) (Read error: Connection reset by peer)
08:36:55 ubert joins (~Thunderbi@178.165.168.116.wireless.dyn.drei.com)
08:42:59 ph88 joins (~ph88@ip5f5af6fd.dynamic.kabel-deutschland.de)
08:46:01 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
08:49:52 jippiedoe joins (~david@229-197-145-85.ftth.glasoperator.nl)
08:51:54 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
08:52:57 × azeem quits (~azeem@dynamic-adsl-94-34-39-251.clienti.tiscali.it) (Ping timeout: 255 seconds)
08:57:35 azeem joins (~azeem@176.201.43.80)
09:00:15 chris_ joins (~chris@81.96.113.213)
09:02:23 agua joins (~agua@2804:14c:8793:8e2f:3988:44e0:45e5:bd04)
09:02:33 viluon joins (uid453725@id-453725.brockwell.irccloud.com)
09:04:32 × pesada quits (~agua@2804:18:4a:c35:1:0:3be5:8cb2) (Ping timeout: 256 seconds)
09:05:12 m7zs3gzw joins (~m7zs3gzw@188.170.195.61)
09:05:40 × m7zs3gzw quits (~m7zs3gzw@188.170.195.61) (Remote host closed the connection)
09:07:33 <viluon> hello, is there a way to load a compiler plugin into GHCi? I'd like to debug a compiler plugin I'm working on
09:08:09 <viluon> oh, #ghc would probably be a better fit
09:09:04 <dminuoso> % :set -fplugin Foo -- viluon
09:09:04 <yahb> dminuoso: Some flags have not been recognized: --, viluon
09:09:08 <dminuoso> argh
09:09:10 <dminuoso> % :set -fplugin Foo
09:09:10 <yahb> dminuoso: Could not find module `Foo'; Use -v (or `:set -v` in ghci) to see a list of the files searched for.
09:10:50 <viluon> dminuoso: so that wouldn't work for source plugins, right? Those don't run in the interactive pipeline. Also, I'd like to debug the plugin itself during the compilation process, I don't need to debug a program while using a plugin
09:11:06 <dminuoso> Ah
09:13:08 × jippiedoe quits (~david@229-197-145-85.ftth.glasoperator.nl) (Ping timeout: 258 seconds)
09:14:05 dunkeln joins (~dunkeln@94.129.69.87)
09:15:08 × ph88 quits (~ph88@ip5f5af6fd.dynamic.kabel-deutschland.de) (Quit: Leaving)
09:15:56 <ph88_> how can i compile a static binary ? i tried this https://bpa.st/7L6Q
09:18:30 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
09:18:51 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Read error: Connection reset by peer)
09:18:58 × dunkeln quits (~dunkeln@94.129.69.87) (Ping timeout: 265 seconds)
09:21:07 Lord_of_Life_ is now known as Lord_of_Life
09:23:18 dunkeln_ joins (~dunkeln@94.129.69.87)
09:25:00 × haskl quits (~haskl@user/haskl) (Remote host closed the connection)
09:29:25 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
09:29:32 jippiedoe joins (~david@229-197-145-85.ftth.glasoperator.nl)
09:31:23 × ubert quits (~Thunderbi@178.165.168.116.wireless.dyn.drei.com) (Ping timeout: 255 seconds)
09:34:20 chris_ joins (~chris@81.96.113.213)
09:34:31 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
09:41:02 <Orbstheorem> What dates is Cadiz Lambda world usually around?
09:42:45 pesada joins (~agua@2804:18:4a:c35:1:0:3be5:8cb2)
09:45:09 × agua quits (~agua@2804:14c:8793:8e2f:3988:44e0:45e5:bd04) (Ping timeout: 255 seconds)
09:45:47 × derelict quits (~derelict@user/derelict) (Ping timeout: 255 seconds)
09:46:38 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
09:46:43 <ph88_> I found a solution here (have yet to try) to build static binary https://github.com/commercialhaskell/stack/issues/3420#issuecomment-481980763 seems a bit convoluted o_O
09:48:37 <ph88_> i see cabal has this nice flag https://cabal.readthedocs.io/en/3.4/setup-commands.html#cmdoption-runhaskell-Setup.hs-configure-enable-executable-static is there a way to let stack pass this flag to cabal ??
09:50:29 × aman quits (~aman@user/aman) (Quit: aman)
09:50:54 aman joins (~aman@user/aman)
09:51:05 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
09:54:06 <sm> ph88_: it seems to be WIP, https://github.com/commercialhaskell/stack/issues/3420
09:54:29 <sm> I also found https://www.fpcomplete.com/blog/2016/10/static-compilation-with-stack/, but it's old
09:54:46 <sm> oh, you found that issue already
09:55:48 × benin0369 quits (~benin@106.198.95.190) (Read error: Connection reset by peer)
09:56:27 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 258 seconds)
09:57:22 benin0369 joins (~benin@183.82.206.69)
09:58:49 <ph88_> sm, ye in that blog post they use a technique (hack) of which they say in the issue it's not necessary to do it that way
09:59:35 <sm> cabal UX ahead of stack here
10:00:05 <sm> I'd just use cabal for it, that's what I do right now
10:00:06 <ph88_> so im considering my options ... either use cabal (which i dont want) .. or put those link flags in the package.yaml file .. possibly have two different package.yaml files one for static and one for dynamic. Ma favorite option would be to do it using command line arguments .. but it seems its not possible
10:00:37 <ph88_> ye it's not the first thing of which i noticed cabal is making faster innovations than stack ^^ (like backpack support)
10:01:42 <sm> well, I don't know if I'd use the word fast for either.. they each have done unique things
10:01:47 <sm> backpack is quite a big and controversial feature
10:02:05 <ph88_> controversial how ?
10:02:20 <Franciman> because stack does not support it
10:02:22 <Franciman> ?
10:02:45 Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
10:02:46 <ph88_> eh that doesn't make much sense
10:02:54 <sm> s/big/impactful/. It adds complexity to haskell build/packaging that arguably we can't handle
10:03:02 <ph88_> stack maintainer is open to add backpack support
10:03:17 <Franciman> I personally am devoid of any package manager, I am so happy
10:03:23 <Franciman> I got fun back into programming in haskell
10:03:28 <ph88_> sm, do you think there is a problem with backpack support in cabal that it is not handled well ?
10:04:35 <sm> ph88_: I haven't tried it myself, I just know it adds complexity and most people are already struggling/maxed out with haskell build issues, which I assume is why it is so little used
10:07:51 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
10:08:17 × Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Ping timeout: 255 seconds)
10:08:49 agua joins (~agua@2804:14c:8793:8e2f:3988:44e0:45e5:bd04)
10:10:04 × azeem quits (~azeem@176.201.43.80) (Ping timeout: 252 seconds)
10:10:29 azeem joins (~azeem@176.201.43.80)
10:10:53 × pesada quits (~agua@2804:18:4a:c35:1:0:3be5:8cb2) (Ping timeout: 250 seconds)
10:13:27 × xsperry quits (~as@user/xsperry) (Remote host closed the connection)
10:22:44 × azeem quits (~azeem@176.201.43.80) (Ping timeout: 268 seconds)
10:23:39 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
10:25:01 × dunkeln_ quits (~dunkeln@94.129.69.87) (Ping timeout: 246 seconds)
10:25:36 azeem joins (~azeem@176.201.43.80)
10:26:58 dunkeln joins (~dunkeln@188.70.26.84)
10:30:58 × jmorris quits (uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
10:32:06 × AkechiShiro quits (~licht@user/akechishiro) (Ping timeout: 258 seconds)
10:32:35 × Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 255 seconds)
10:37:06 × azeem quits (~azeem@176.201.43.80) (Ping timeout: 240 seconds)
10:40:16 azeem joins (~azeem@176.201.43.80)
10:44:23 <maerwald> why is backpack controversial? I think it's just unergonomic and vague so that no one bothered until now
10:45:02 <dminuoso> I think its because its largely undocumented.
10:45:10 <maerwald> yeah
10:45:42 <dminuoso> When edward explained the bits he used to me, it seemed very cool - but when the only documentation is "go look at the dissertation..."
10:45:54 <dminuoso> Then that's not something I want to use.
10:45:56 <maerwald> classic haskell README
10:46:20 <maerwald> I'll be back when I've finished my PhD
10:46:25 <maerwald> 5 years later...
10:47:44 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:47:54 jmorris joins (uid433911@id-433911.stonehaven.irccloud.com)
10:48:27 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
10:48:52 × acidjnk quits (~acidjnk@p200300d0c72b9575c508b842a8b97de2.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
10:48:56 dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be)
10:50:43 <maerwald> soon you'll need a PhD to use base :p
10:50:55 chris_ joins (~chris@81.96.113.213)
10:51:11 <ph88_> lol
10:51:26 <maerwald> I'm only half joking
10:52:41 <Hecate> then it's our duty to make sure this never happens
10:52:57 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds)
10:53:59 <maerwald> then you should comment on the dependent types thread :p
10:55:00 <maerwald> but whenever you voice concerns about DT in Haskell, people think you argue against DT
10:55:07 <maerwald> so I gave up
10:55:58 <maerwald> just means more jobs for us, right?
10:56:14 yo joins (~0xfe0@2405:201:5502:d69:c32:8cab:cb7:332d)
11:02:54 mikail joins (~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f)
11:03:17 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
11:05:26 × dunkeln quits (~dunkeln@188.70.26.84) (Ping timeout: 252 seconds)
11:08:13 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
11:10:35 <DigitalKiwi> maerwald: i've never seen you say anything positive about haskell let alone DT in haskell so i'm not at all surprised they didn't like what you said about DT either
11:11:01 maerwald shrugs
11:11:41 <Franciman> I have one answer
11:12:01 <Franciman> S = k * log W
11:12:55 <Franciman> haskell is taking the entropy path to the hell
11:13:02 <Franciman> a cold hell
11:14:46 DNH joins (~DNH@2a02:8108:1100:16d8:a03c:ba96:6f1a:16fa)
11:14:57 <maerwald> Most people don't seem too concerned that we might end up like Scala or C++ and you need to jump on every hype train. The Go community is tilted in the other direction: they're so scared even of things like proper enums that they can't figure out whether it's reasonable to do it
11:15:18 <maerwald> there must be a balance
11:15:37 <Franciman> i think haskell has become quite experimental from the start
11:15:52 <maerwald> yes and I think it's time the language splits
11:16:15 <maerwald> the two forces fill just keep annoying each other and everything will be mush
11:16:18 <Franciman> I gotta say I agree, because I like the huge caos of the entropy path
11:16:29 <Franciman> and it would be cool to have periodic releases of the language
11:16:30 <maerwald> starting over is sometimes better, you can figure out interoperability as well
11:16:35 <Franciman> with the best of the last results from hell
11:16:59 dunkeln joins (~dunkeln@188.70.26.84)
11:17:09 <maerwald> why not create a superset of haskell... F* has done that with F#
11:17:19 × awth13 quits (~user@user/awth13) (Read error: Connection reset by peer)
11:17:49 <maerwald> if you need the entire proof machinery, you stay in the language, otherwise you compile to haskell and move on
11:18:06 <Franciman> isn't agda that
11:18:07 <Franciman> ?
11:18:09 <maerwald> maybe
11:18:09 <Franciman> tho
11:18:52 <maerwald> there are good solutions out there, but they already exist and maybe getting something like DT into haskell is more about fame and fancy?
11:19:15 ubert joins (~Thunderbi@178.165.188.94.wireless.dyn.drei.com)
11:19:29 <Franciman> i don't know, i.e. haskell has the biggest ecosystem in its niche
11:19:31 <maerwald> you know the story of the nail and the hammer
11:19:34 <Franciman> so for example in agda you can't really program
11:19:47 <maerwald> just because you're used to haskell, doesn't mean you should solve everything in haskell
11:19:55 <Franciman> liquid haskell on the other hand fuses advanced type checking with existing haskell
11:19:58 <Franciman> eheh damn tru!
11:20:45 <Franciman> the niche being: strongly typed functional language not running on jvm
11:20:46 <maerwald> I think it would be time to freeze the language, create another report, throw away base, redo it and fix all performance issues that exist.
11:21:11 smichel17 joins (~smichel17@c-73-68-217-18.hsd1.ma.comcast.net)
11:21:30 <maerwald> but it's less fame maybe
11:21:31 <maerwald> :p
11:21:38 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
11:21:54 <Franciman> didn't haskell start with the: avoid success at all cost?
11:22:09 <maerwald> it's too late
11:23:18 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
11:25:14 × azeem quits (~azeem@176.201.43.80) (Ping timeout: 255 seconds)
11:25:44 azeem joins (~azeem@176.201.19.41)
11:26:30 × _xor quits (~xor@74.215.232.67) (Quit: brb)
11:26:53 <Orbstheorem> How would I go about preventing the use of a constructor (i have provided a smart constructor) if I want other modules to be able to use newtype standalone deriving?
11:27:02 Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
11:28:09 chris_ joins (~chris@81.96.113.213)
11:28:25 <dminuoso> Intuitively I'd say you cant
11:28:53 <Orbstheorem> I called my module 'Internal' and documented why I export the constructor...
11:29:07 <Orbstheorem> (Also, the type and smart constructors are exported from the bigger module)
11:29:19 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
11:30:02 × chris_ quits (~chris@81.96.113.213) (Read error: Connection reset by peer)
11:30:21 chris_ joins (~chris@81.96.113.213)
11:32:13 AkechiShiro joins (~licht@user/akechishiro)
11:34:09 sciencentistguy joins (~sciencent@hacksoc/ordinary-member)
11:34:37 lavaman joins (~lavaman@98.38.249.169)
11:35:27 <maerwald> I think exporting the constructor in .Internal. modules is standard and fine
11:35:36 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
11:35:53 <maerwald> no need to babysit
11:36:12 acidjnk joins (~acidjnk@p200300d0c72b9516f180e3afe24121d7.dip0.t-ipconnect.de)
11:38:35 <dminuoso> Personally I consider it good style to export your internals via Internal modules.
11:39:29 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
11:44:11 × notzmv quits (~zmv@user/notzmv) (Remote host closed the connection)
11:44:46 × sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Quit: WeeChat 3.2)
11:45:22 × azeem quits (~azeem@176.201.19.41) (Ping timeout: 268 seconds)
11:46:50 azeem joins (~azeem@176.201.19.41)
11:48:26 × chomwitt quits (~chomwitt@2a02:587:dc0e:ef00:12c3:7bff:fe6d:d374) (Ping timeout: 252 seconds)
11:49:18 notzmv joins (~zmv@user/notzmv)
11:51:00 lavaman joins (~lavaman@98.38.249.169)
11:51:13 <maerwald> windows is lovely: you get "permission denied" exception on `removeFile` when a) file is locked or b) it's a directory
11:51:19 <maerwald> no way to distinguish
11:55:21 <nitrix> Should be happy that it has a defined behavior, considering the name of the function suggests it's just for files.
11:55:39 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 255 seconds)
11:57:35 <nitrix> I think "Permission denied" is a decent "no can do sir" catch-all for future additions to the file system... things like hard links, network resources, mounts and whatever.
12:00:01 <maerwald> well, less luck with renameFile, which now needs an explicit type check and is non-atomic
12:00:07 <Orbstheorem> Is there a way to prove it's impossible to write a function `m a -> (a -> t m b) -> t m b`, other than the fact I've been staring at my screen for 15min? x)
12:00:51 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
12:01:17 <Arahael> dminuoso: Had a chance to play more with the proto-lens, I haven't sent it over the wire yet, but it's working beautifully - generating the types and using them internally in teh app. Thanks again. :)
12:01:30 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 240 seconds)
12:08:52 <ph88_> maerwald, where is the DT thread ?
12:10:30 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
12:10:36 <maerwald> ph88_: https://github.com/ghc-proposals/ghc-proposals/pull/378
12:11:08 gentauro joins (~gentauro@user/gentauro)
12:11:12 <ph88_> and your comment is where ?
12:11:52 pesada joins (~agua@2804:18:4a:c35:1:0:3be5:8cb2)
12:12:50 adinf joins (~adinfinit@2600:6c40:653f:5f00:a650:d8d7:fe0b:8c1f)
12:14:38 × agua quits (~agua@2804:14c:8793:8e2f:3988:44e0:45e5:bd04) (Ping timeout: 268 seconds)
12:16:14 × adinf quits (~adinfinit@2600:6c40:653f:5f00:a650:d8d7:fe0b:8c1f) (Client Quit)
12:17:31 × dtman34 quits (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
12:20:34 drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
12:22:39 × azeem quits (~azeem@176.201.19.41) (Ping timeout: 255 seconds)
12:28:56 azeem joins (~azeem@176.201.19.41)
12:29:40 mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
12:31:15 × mikail quits (~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f) (Remote host closed the connection)
12:31:52 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
12:32:04 chexum joins (~quassel@gateway/tor-sasl/chexum)
12:32:59 × dunkeln quits (~dunkeln@188.70.26.84) (Ping timeout: 252 seconds)
12:35:54 mikail joins (~mikail@90.212.77.3)
12:38:17 dunkeln joins (~dunkeln@188.70.26.84)
12:39:09 hiruji joins (~hiruji@user/hiruji)
12:39:57 <jippiedoe> Orbstheorem: I assume there's some typeclasses involved?
12:40:11 olive__ joins (~olive_@117.222.65.182)
12:40:24 <Orbstheorem> Yes, `MonadTrans t` and `Monad m`.
12:41:15 <dminuoso> Orbstheorem: So you're looking for a MonadTransFix?
12:42:44 <dminuoso> (Or proving its impossibility thereof)
12:43:03 alx741 joins (~alx741@186.178.108.174)
12:43:15 Orbstheorem hoogles MonadTransFix
12:43:31 <Orbstheorem> I coudn't find `MonadTransFix` x)
12:43:32 × olive_ quits (~olive_@117.222.71.166) (Ping timeout: 255 seconds)
12:44:35 × hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1)
12:44:51 <dminuoso> Orbstheorem: I suppose key is finding a single transformer for which its impossible to write.
12:45:10 <dminuoso> This should be doable, consider that MonadFix is a sub-class of Monad to begin with
12:45:18 lavaman joins (~lavaman@98.38.249.169)
12:45:53 hendursaga joins (~weechat@user/hendursaga)
12:47:26 <Orbstheorem> I understand the principle of proving it impossible through a counter example, what I don't know if how to do the methodical logical reasoning to prove such equations.
12:49:30 × aman quits (~aman@user/aman) (Ping timeout: 256 seconds)
12:51:44 derelict joins (~derelict@user/derelict)
12:55:29 agua joins (~agua@2804:14c:8793:8e2f:3988:44e0:45e5:bd04)
12:55:30 × dunkeln quits (~dunkeln@188.70.26.84) (Ping timeout: 265 seconds)
12:56:37 Core2996 joins (~agua@2804:18:4a:c35:1:0:3be5:8cb2)
12:56:55 × pesada quits (~agua@2804:18:4a:c35:1:0:3be5:8cb2) (Read error: Connection reset by peer)
12:57:40 × zaquest quits (~notzaques@5.128.210.178) (Remote host closed the connection)
12:59:00 × hexfive quits (~eric@50.35.83.177) (Quit: WeeChat 3.0)
12:59:08 pesada joins (~agua@2804:14c:8793:8e2f:3988:44e0:45e5:bd04)
12:59:30 × agua quits (~agua@2804:14c:8793:8e2f:3988:44e0:45e5:bd04) (Ping timeout: 240 seconds)
12:59:31 __monty__ joins (~toonn@user/toonn)
13:00:12 <ddb> if you clarify your claim then it might be easier to see what about it is unsound
13:01:02 × Core2996 quits (~agua@2804:18:4a:c35:1:0:3be5:8cb2) (Ping timeout: 252 seconds)
13:02:48 <ddb> I am not that familiar with haskell, so when you say it's "impossible to write a function" and then you, apparently, write that function I get confused
13:04:30 <Orbstheorem> > you, apparently, write that function
13:04:30 <Orbstheorem> I'm not sure where suggested I wrote that function?
13:04:31 <lambdabot> <hint>:1:4: error: parse error on input ‘,’
13:04:57 <ddb> in your original statement you have some syntax that appears to describe a function
13:05:52 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
13:06:18 <ddb> m a -> (a -> t m b) -> t m b
13:10:32 <Orbstheorem> Yes, that's the signature of a function I think it is not possible to write, given `(Monad m, MonadTrans t)`
13:11:53 × juhp quits (~juhp@128.106.188.220) (Quit: juhp)
13:12:08 juhp joins (~juhp@128.106.188.220)
13:13:04 <ddb> can you give a simpler example of a signature for which no function exists?
13:13:32 xsperry joins (~as@user/xsperry)
13:14:09 <Orbstheorem> `(Monad m1, Monad m2) => m1 (m2 a) -> m2 (m1 a)`
13:15:08 <Orbstheorem> <dminuoso "This should be doable, consider "> I'm curious though, why did the particle 'Fix' come to mind?
13:15:15 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
13:15:40 <ddb> can you briefly describe the obstruction in this simpler case?
13:18:07 <haveo> Orbstheorem: I don't think you can find a law-obeying counter-example, the problem seems to be you can't prove `Monad (t m)' unless you use a very recent version of transformers
13:18:19 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:18:30 <Orbstheorem> I don't understand the algebraic foundations on monads enough to give a sound argument about why this doesn't work. That said, I think I can give a conbinatorial argument why given the operations available on any instance of Monad `(>>=), fmap, pure, mempty, <*>`, I cannot build such equation.
13:18:41 <dminuoso> haveo: At least lysxia seems to have some reasons why ContT wont yield a valid instance
13:19:28 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
13:19:51 <haveo> @type \x f -> lift x >>= f
13:19:52 <lambdabot> (MonadTrans t, Monad m, Monad (t m)) => m a -> (a -> t m b) -> t m b
13:20:38 <ddb> If monads are too abstract, can you rephrase the problem using a particular instance of a monad? Strings under concatenation come to mind, but I do not know if they count as haskell monads.
13:21:39 <ddb> ack, monoid not monad, retract that last comment
13:21:52 <haveo> `Monad (t m)' is guaranteed to exist (that's kind of the whole point) but you can't get it from (MonadTrans t, Monad m) for technical reasons (which are fixed now, but I haven't tested it)
13:23:18 <ddb> I think a simpler example for monads could be Maybe?
13:23:34 <ddb> so if it doesn't work for Maybe it definitely can't work for Monad.
13:23:58 chomwitt joins (~chomwitt@ppp-94-67-220-135.home.otenet.gr)
13:26:59 <haveo> dminuoso: I wasn't talking about MonadTransFix, just the function he's trying to build
13:28:09 dunkeln joins (~dunkeln@188.70.26.84)
13:29:24 zebrag joins (~chris@user/zebrag)
13:29:34 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
13:29:34 allbery_b joins (~geekosaur@xmonad/geekosaur)
13:29:37 allbery_b is now known as geekosaur
13:33:58 zaquest joins (~notzaques@5.128.210.178)
13:34:12 × azeem quits (~azeem@176.201.19.41) (Ping timeout: 255 seconds)
13:34:36 azeem joins (~azeem@176.201.19.41)
13:43:05 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
13:44:20 fef joins (~thedawn@user/thedawn)
13:48:09 × mikail quits (~mikail@90.212.77.3) (Ping timeout: 255 seconds)
13:48:18 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
13:50:48 MorrowM joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net)
13:51:26 × Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 258 seconds)
13:52:41 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
13:54:28 × azeem quits (~azeem@176.201.19.41) (Ping timeout: 252 seconds)
13:55:19 shriekingnoise joins (~shrieking@186.137.144.80)
13:59:27 azeem joins (~azeem@176.200.238.62)
14:07:03 × drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 250 seconds)
14:07:58 × azeem quits (~azeem@176.200.238.62) (Ping timeout: 246 seconds)
14:08:43 azeem joins (~azeem@176.200.238.62)
14:13:04 amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
14:13:17 × azeem quits (~azeem@176.200.238.62) (Ping timeout: 258 seconds)
14:15:31 dunj3 joins (~dunj3@2001:16b8:30c4:6b00:b2db:db95:c4f5:af2c)
14:15:32 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Quit: FinnElija)
14:17:09 azeem joins (~azeem@176.200.238.62)
14:17:32 × finsternis quits (~X@23.226.237.192) (Remote host closed the connection)
14:19:20 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
14:20:41 Sgeo joins (~Sgeo@user/sgeo)
14:20:54 × Xnuk quits (~xnuk@vultr.xnu.kr) (Quit: ZNC - https://znc.in)
14:21:09 × hendursaga quits (~weechat@user/hendursaga) (Remote host closed the connection)
14:21:12 Xnuk joins (~xnuk@vultr.xnu.kr)
14:21:33 hendursaga joins (~weechat@user/hendursaga)
14:23:48 _xor joins (~xor@74.215.232.67)
14:25:27 jneira_ joins (~jneira_@28.red-80-28-169.staticip.rima-tde.net)
14:26:00 × jippiedoe quits (~david@229-197-145-85.ftth.glasoperator.nl) (Ping timeout: 252 seconds)
14:28:12 agua joins (~agua@2804:18:4a:c35:1:0:3be5:8cb2)
14:29:06 × DNH quits (~DNH@2a02:8108:1100:16d8:a03c:ba96:6f1a:16fa) (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:29:14 × acidjnk quits (~acidjnk@p200300d0c72b9516f180e3afe24121d7.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
14:30:01 × slep quits (~slep@cpc150002-brnt4-2-0-cust437.4-2.cable.virginm.net) (Ping timeout: 268 seconds)
14:30:57 × pesada quits (~agua@2804:14c:8793:8e2f:3988:44e0:45e5:bd04) (Ping timeout: 245 seconds)
14:32:14 × juhp quits (~juhp@128.106.188.220) (Quit: juhp)
14:32:28 juhp joins (~juhp@128.106.188.220)
14:33:16 Ariakenom joins (~Ariakenom@c83-255-154-140.bredband.tele2.se)
14:33:32 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
14:33:55 DNH joins (~DNH@2a02:8108:1100:16d8:808b:9f4a:c222:7def)
14:34:03 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 255 seconds)
14:34:35 slep joins (~slep@cpc150002-brnt4-2-0-cust437.4-2.cable.virginm.net)
14:34:54 × oxide quits (~lambda@user/oxide) (Quit: oxide)
14:34:55 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Quit: Leaving)
14:41:27 <Taneb> Is there a common newtype on Maybe that makes Nothing compare as if it's it infinity?
14:47:12 <Cajun> are you saying `Just x < Nothing` for any x? also, im not sure how a newtype on maybe would work since maybe has 2 fields
14:47:36 hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com)
14:48:40 <Taneb> newtype Foo a = Foo { unFoo :: Maybe a }; instance Ord a => Ord (Foo a) where
14:48:51 <Taneb> And yeah, that's the ordering I'm after
14:50:09 <Rembane> Taneb: Use a custom sum type instead, it makes it much easier to read the code when you look at it again in three months.
14:50:31 <Taneb> Rembane: I'm being given a big old list of Maybes and want to do this in one place
14:50:40 curiousgay_ is now known as curiousgay
14:51:07 geekosaur joins (~geekosaur@xmonad/geekosaur)
14:51:39 × curiousgay quits (~curiousga@77-120-144-167.kha.volia.net) (Quit: Leaving)
14:51:41 <Rembane> Taneb: Okay, lets see what we can do then. :)
14:51:53 curiousgay joins (~curiousga@77-120-144-167.kha.volia.net)
14:51:58 <haveo> Taneb: you could use Down (Maybe (Down a))
14:52:33 <Taneb> haveo: that is certainly an option, I'll give you that
14:54:04 doyougnu joins (~user@c-73-25-202-122.hsd1.or.comcast.net)
14:54:52 <Cajun> using Down is likely much more convenient than defining your own instance of Maybe with reverse order
14:54:53 <Rembane> Taneb: Or use sortBy and write a sorting function that does what you want.
14:55:25 <Taneb> Rembane: I think that's what I'm going to end up doing
14:56:55 h98 joins (~h98@187.83.249.216.dyn.smithville.net)
14:57:45 <Rembane> Taneb: Good stuff.
14:59:44 × ubert quits (~Thunderbi@178.165.188.94.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
15:00:56 glassofethanol joins (~ethanmorg@cpc78471-cwma11-2-0-cust81.7-3.cable.virginm.net)
15:01:28 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
15:04:01 pesada joins (~agua@179.179.184.77)
15:05:45 slowButPresent joins (~slowButPr@user/slowbutpresent)
15:06:27 × agua quits (~agua@2804:18:4a:c35:1:0:3be5:8cb2) (Ping timeout: 255 seconds)
15:07:07 <delYsid> Does George Wilson show up here at times?
15:07:08 lavaman joins (~lavaman@98.38.249.169)
15:10:56 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
15:11:43 <SIben> Hi! I would like to test Haskell code that interacts with the file system (writes files, mainly). Is there a popular way of doing that? The most promising thing I have found thus far is to rewrite functions using a typeclass to constrain a type variable (that would replace IO), and then produce a mock version of it.
15:11:48 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
15:12:12 Bayes joins (~Bayes@ics177-97.icsincorporated.com)
15:12:20 × Bayes quits (~Bayes@ics177-97.icsincorporated.com) (Changing host)
15:12:20 Bayes joins (~Bayes@user/bayes)
15:13:04 × h98 quits (~h98@187.83.249.216.dyn.smithville.net) (Ping timeout: 246 seconds)
15:14:02 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
15:15:07 × xff0x_ quits (~xff0x@2001:1a81:530d:8900:cddd:a545:4e9e:a55d) (Ping timeout: 245 seconds)
15:15:33 <ph88_> how can i link with musl instead of glibc ?
15:16:26 <maerwald> ph88_: alpine
15:16:27 <yushyin> alpine linux docker image
15:16:54 <ph88_> can it be done on ubuntu without docker ?
15:16:55 xff0x_ joins (~xff0x@185.65.135.235)
15:17:24 <maerwald> yes, but if you ask that question you don't want to do it
15:17:34 <geekosaur> probably but it won't be easy to guarantee none of glibc gets in
15:17:53 × robertm quits (robertm@rojoma.com) (Quit: WeeChat 2.3)
15:18:10 ubert joins (~Thunderbi@178.165.188.94.wireless.dyn.drei.com)
15:18:36 <ph88_> is the RTS already precompiled ?
15:18:49 drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
15:19:40 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Read error: Connection reset by peer)
15:19:49 <geekosaur> it's more complex than that. (no, it's not already linked against glibc)
15:19:56 Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
15:20:42 robertm joins (robertm@rojoma.com)
15:21:11 nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
15:23:14 o1lo01ol1o joins (~o1lo01ol1@bl11-109-140.dsl.telepac.pt)
15:24:57 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
15:30:58 × jmorris quits (uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
15:31:41 × xff0x_ quits (~xff0x@185.65.135.235) (Ping timeout: 268 seconds)
15:32:26 rtjure joins (~rtjure@bras-79-132-1-103.comnet.bg)
15:32:39 agua joins (~agua@2804:18:4a:c35:1:0:3be5:8cb2)
15:33:18 xff0x_ joins (~xff0x@2001:1a81:530d:8900:cddd:a545:4e9e:a55d)
15:34:07 × Xnuk quits (~xnuk@vultr.xnu.kr) (Quit: ZNC - https://znc.in)
15:34:24 Xnuk joins (~xnuk@vultr.xnu.kr)
15:34:33 × jolly quits (~jolly@208.180.97.158) (Ping timeout: 258 seconds)
15:34:34 × pesada quits (~agua@179.179.184.77) (Ping timeout: 252 seconds)
15:35:55 × rtjure quits (~rtjure@bras-79-132-1-103.comnet.bg) (Read error: Connection reset by peer)
15:36:10 × oso quits (~oso@2601:58c:c080:a950:f275:2530:b398:680b) (Ping timeout: 246 seconds)
15:36:33 rtjure joins (~rtjure@bras-79-132-10-94.comnet.bg)
15:41:23 econo joins (uid147250@user/econo)
15:41:34 <ph88_> so do i need ghc itself to be linked to musl to build a static binary with musl ?
15:43:06 jolly joins (~jolly@63-97-42-210-ama.pathwayz.com)
15:43:10 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 246 seconds)
15:43:35 <geekosaur> no
15:43:57 <geekosaur> you will just find that glibc is wired in really deep and getting things to not link against it is difficult
15:44:05 <ph88_> this repo gave me that impression https://github.com/utdemir/ghc-musl "therefore can be used to create fully static Haskell binaries without glibc dependency"
15:44:17 <ph88_> i don't think that is true either
15:44:24 <geekosaur> it's far easier to start out with musl as the local libc, hence the docker image containing an OS based on musl
15:44:44 <maerwald> you don't need that image
15:44:49 <maerwald> you just need stock alpine image
15:45:35 <ph88_> strange that the haskell docker image doesn't offer an alpine flavor https://hub.docker.com/_/haskell
15:45:51 <maerwald> ph88_: just use stock alpine
15:45:59 <maerwald> and use ghcup to install whatever you need
15:46:59 <ph88_> what about i take the stock alpine image, and from that create my own Dockerfile that installs stack ?
15:47:11 <maerwald> ph88_: https://gist.github.com/hasufell/f0893abfbba63ac4ea40feb0520946ee
15:47:13 <maerwald> example
15:47:28 <ph88_> i never heard of ghcup before, i only used stack so far
15:47:28 <maerwald> although that can be simplified further
15:47:59 <maerwald> ph88_: well, stack doesn't support alpine GHC as much as ghcup does
15:48:03 <maerwald> unless they fixed it
15:48:10 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
15:48:19 <maerwald> so if you look at the link, it uses both ghcup and stack
15:48:37 <ph88_> im looking now
15:48:59 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
15:51:03 Null_A joins (~null_a@2601:645:8700:2290:9d5c:9f84:452e:3ad)
15:53:10 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
15:56:52 <ph88_> maerwald, in that Dockerfile you showed i think stack and ghc themselves are linked against musl .. but then they run under ubuntu which uses glibc. I'm confused with that .. i thought i needed to compile in an environment that uses musl
15:57:16 <maerwald> no, both are linked statically
15:57:25 <maerwald> that's the point of musl
15:57:44 <ph88_> sure .. but then you run the statically linked ghc/stack in an glibc environment
15:57:58 <maerwald> ghc is not statically linked afaik
15:58:02 <maerwald> stack and ghcup are
15:58:22 <maerwald> and no, the dockerfile doesn't run musl ghc under glibc
15:58:23 × dunkeln quits (~dunkeln@188.70.26.84) (Ping timeout: 255 seconds)
15:58:27 × olive__ quits (~olive_@117.222.65.182) (Quit: leaving)
15:58:57 <ph88_> so why switch back to ubuntu in that Dockerfile ?
15:59:29 <maerwald> because alpine is painful for everything else
15:59:29 × azeem quits (~azeem@176.200.238.62) (Read error: Connection reset by peer)
15:59:38 <geekosaur> compiles can be done on the host, only the final link needs to be done with musl
16:00:06 azeem joins (~azeem@dynamic-adsl-84-220-213-65.clienti.tiscali.it)
16:00:17 <ph88_> the final link would happen in ubuntu no ?
16:00:29 <geekosaur> no, that gets you glibc
16:01:01 <ph88_> pretty confusing Dockerfile ^^
16:02:01 <ph88_> https://gist.github.com/hasufell/f0893abfbba63ac4ea40feb0520946ee#file-dockerfile-L24 seems to have little benefit of having stack, ghcup and code explorer statically linked and then run under ubuntu
16:02:25 <maerwald> ph88_: huh?
16:02:28 × o1lo01ol1o quits (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Remote host closed the connection)
16:02:36 <maerwald> how do you build code-explorer statically on ubuntu?
16:02:54 <ph88_> you don't ? but why build it statically in the first place ?
16:03:15 <maerwald> no idea, I thought that's what you wanted
16:03:20 <ph88_> you install all your dependencies that you need on ubuntu anyway and can just use dynamic linking
16:03:27 o1lo01ol1o joins (~o1lo01ol1@bl11-109-140.dsl.telepac.pt)
16:03:45 <maerwald> you asked how you can link with musl
16:03:56 <ph88_> ah ok i get it now .. you were mainly refering to the alpine part of the build ^^
16:03:57 <maerwald> there it is... if you want to link dynamically with musl, you do it the same way
16:04:00 <maerwald> your question is answered
16:04:04 <ph88_> ok thanks
16:04:38 pesada joins (~agua@2804:14c:8793:8e2f:6091:e445:c3bf:d39e)
16:04:54 <ph88_> is that your username hasufell ?
16:05:59 <ph88_> i'm still gonna try installing stack directly on alpine without ghcup .. just to see what happens ^^
16:06:16 <maerwald> I remember that it simply doesn't install GHC
16:06:46 <maerwald> I also had to build several GHCs from scratch for alpine: https://downloads.haskell.org/~ghcup/unofficial-bindists/ghc/
16:06:50 <maerwald> these are all included in ghcup
16:07:06 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
16:07:12 × agua quits (~agua@2804:18:4a:c35:1:0:3be5:8cb2) (Ping timeout: 255 seconds)
16:07:23 <maerwald> recent GHCs have improved alpine support, olders not
16:07:37 × glassofethanol quits (~ethanmorg@cpc78471-cwma11-2-0-cust81.7-3.cable.virginm.net) (Quit: leaving)
16:07:53 Vajb joins (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01)
16:11:54 × jlamothe quits (~jlamothe@104.158.48.100) (Quit: leaving)
16:12:46 tremon joins (~tremon@217-63-61-89.cable.dynamic.v4.ziggo.nl)
16:13:16 h98 joins (~h98@187.83.249.216.dyn.smithville.net)
16:16:22 dunkeln joins (~dunkeln@188.70.26.84)
16:18:14 xkuru joins (~xkuru@user/xkuru)
16:21:44 abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
16:22:34 × juhp quits (~juhp@128.106.188.220) (Quit: juhp)
16:22:47 juhp joins (~juhp@128.106.188.220)
16:23:20 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
16:25:04 <dminuoso> ph88_: Disclaimer: If you want to do static builds, keep in mind the licensing implication if you dont also switch out libgmp. Namely, if you stick to libgmp (GHCs default), then that forces GPL onto your build product.
16:25:21 mr-red joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
16:25:35 <dminuoso> If this matters, be sure to also switch to integer-simple.
16:25:56 <ph88_> can i use it for proprietary binaries that are not distributed ?
16:26:13 × drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 246 seconds)
16:26:30 <maerwald> it's not AGPL, so the answer is probably yes
16:26:35 <geekosaur> licensing applies to distribution
16:27:47 × ukari quits (~ukari@user/ukari) (Remote host closed the connection)
16:28:47 ukari joins (~ukari@user/ukari)
16:29:05 <dminuoso> ph88_: For GPL, it only matters if you distribute code or programs.
16:31:41 Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
16:32:43 × chele quits (~chele@user/chele) (Remote host closed the connection)
16:32:57 × DNH quits (~DNH@2a02:8108:1100:16d8:808b:9f4a:c222:7def) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:33:35 × chomwitt quits (~chomwitt@ppp-94-67-220-135.home.otenet.gr) (Ping timeout: 258 seconds)
16:35:08 <ph88_> is it possible to remove Integer support alltogether ?
16:35:26 <maerwald> oh dear... I had a bug that caused recursive directory creation on windows (probably nested a few million times)... now windows is unable to remove any of that recursively due to path issues xD
16:35:32 <dminuoso> ph88_: Not reasonably, no.
16:36:05 <ph88_> maerwald, try powershell
16:36:09 <maerwald> I did
16:36:39 <geekosaur> isn't there a magic path prefix that evades the old path limits?
16:36:53 <maerwald> tried that too :D
16:37:41 <dminuoso> ph88_: You'd have to remove anything that transitively depends on it. base alone has several hundred references to Integer, you'd have to remove them all. If you have any library dependencies, you will reasonably need Integer.
16:37:56 <maerwald> this could be the most annoying malware on windows... just create insanely deeply nested directories everywhere and the user will go nuts trying to remove them
16:38:02 <yushyin> also gmp is dual licensed LGPLv3/GPLv2 and with lgpl you only need to provide linkable object files ( https://www.gnu.org/licenses/gpl-faq.html#LGPLStaticVsDynamic )
16:38:28 <ph88_> dminuoso, ya that sounds painful .. thought maybe could just swap it out on the very low level that all Integer are converted to i64 or what not
16:38:58 <maerwald> ph88_: would you really expect that to work?
16:39:00 <dminuoso> ph88_: integer-simple is a drop in replacement for libgmp :)
16:39:05 <h98> https://stackoverflow.com/questions/8460268/delete-a-very-very-deep-tree-of-subdirectories-on-windows do any of these help?
16:39:16 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:39:58 × mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Read error: No route to host)
16:39:58 <maerwald> h98: git bash also fails :D
16:40:01 <ph88_> thanks yushyin
16:40:09 <maerwald> "File name too long"
16:40:11 <dminuoso> yushyin: But you are right, I falsely thought it was GPL. But LGPL still might not be what they want.
16:40:17 <dminuoso> Besides, you can just use integer-simple and be done with it
16:40:23 mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
16:40:32 <geekosaur> \\?\fullPath
16:40:35 <dminuoso> As some have pointed out, often there's not a real performance difference, and sometimes integer-simple is even faster.
16:40:44 <maerwald> geekosaur: tried that already
16:40:46 <dminuoso> Most code isn't Integer crunching heavy.
16:40:46 <c_wraith> unless you're in one of those few cases where gmp is actually faster
16:41:03 <geekosaur> you managed to make it over 32k deep? wow
16:41:08 <maerwald> hehehe
16:41:25 <yushyin> dminuoso: all true, just wanted to mention this little thing, for the sake of clarity.
16:41:58 <dminuoso> Yes absolutely, it was good of you to correct me here
16:42:19 <h98> https://superuser.com/questions/416351/how-to-remove-an-infinitely-recurring-directory-tree/425666#425666 what about something like this?
16:43:10 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
16:45:45 <ph88_> yushyin, so i would have to compile my app code into a shared object and distribute that along ?
16:46:44 <dminuoso> ph88_: Why not just switch to integer-simple?
16:47:20 <ph88_> dminuoso, i'm not even in this scenario that i have to choose. I am writing this in a little documentation about what the options are just in case we do get into that scenario
16:47:36 <dminuoso> Alright.
16:48:20 <yushyin> ph88_: that would be a valid option under the LGPLv3, how feasible it is with the haskell toolchains? I don't know. Never done that.
16:49:23 <geekosaur> that's more or less what a package is, no?
16:49:27 <ph88_> ya
16:49:48 <geekosaur> so all you'fd need is a stub main that calls into the package, much like the default Setup.hs
16:50:23 × azeem quits (~azeem@dynamic-adsl-84-220-213-65.clienti.tiscali.it) (Ping timeout: 252 seconds)
16:51:18 <ph88_> that doesn't seem that complicated
16:51:35 <ph88_> might be a good way to do it for the cases that integer-simple is a lot slower
16:52:01 azeem joins (~azeem@176.201.2.247)
16:52:45 × nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
16:53:06 chris_ joins (~chris@81.96.113.213)
16:54:10 × azeem quits (~azeem@176.201.2.247) (Read error: Connection reset by peer)
16:54:24 azeem joins (~azeem@dynamic-adsl-84-220-213-65.clienti.tiscali.it)
16:59:29 × h98 quits (~h98@187.83.249.216.dyn.smithville.net) (Quit: Client closed)
17:03:14 nvmd joins (~nvmd@user/nvmd)
17:06:50 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Ping timeout: 265 seconds)
17:06:56 lbseale joins (~lbseale@user/ep1ctetus)
17:07:45 DNH joins (~DNH@2a02:8108:1100:16d8:808b:9f4a:c222:7def)
17:07:54 × juhp quits (~juhp@128.106.188.220) (Quit: juhp)
17:08:08 juhp joins (~juhp@128.106.188.220)
17:08:21 slowButPresent joins (~slowButPr@user/slowbutpresent)
17:10:30 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
17:10:58 fef joins (~thedawn@user/thedawn)
17:12:04 × ozzymcduff quits (~mathieu@81-234-151-21-no94.tbcn.telia.com) (Remote host closed the connection)
17:17:58 × Ariakenom quits (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 252 seconds)
17:23:18 × shailangsa quits (~shailangs@host86-186-142-108.range86-186.btcentralplus.com) (Ping timeout: 268 seconds)
17:24:31 nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
17:26:22 × hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
17:27:17 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 268 seconds)
17:27:34 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
17:29:06 × nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
17:31:37 <ph88_> can ghcup install different versions of GHC at the same time ?
17:32:50 chomwitt joins (~chomwitt@ppp-94-67-220-135.home.otenet.gr)
17:33:34 <geekosaur> yes, but you have to run them by full pathname or select one as current
17:33:45 mikail joins (~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f)
17:34:10 Erutuon joins (~Erutuon@user/erutuon)
17:36:13 <ph88_> is there a way that i can let stack select the right one automatically ?
17:36:43 <ph88_> or if that is not possible maybe provide a command line argument to stack where to find the right ghc version
17:37:12 × derelict quits (~derelict@user/derelict) (Ping timeout: 245 seconds)
17:37:45 <geekosaur> stack kinda actively deters that kind of usage, preferring its o9wn management
17:38:59 × Cajun quits (~Cajun@ip98-163-211-112.no.no.cox.net) (Quit: Client closed)
17:39:54 × dajoer quits (~david@user/gvx) (Quit: leaving)
17:41:01 Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com)
17:41:19 <arkanoid> hello! I'm new to haskell, and I plan to use the execism.io website to train. The website suggests to use "stack" tool, but I have already installed haskell-platform on ubuntu box. If I understand correctly the stack tool install a local version of haskell and apt package is not needed. Am I right?
17:41:58 <Lycurgus> you still need apt for the debian pkgs
17:42:20 <Lycurgus> haskell platform is antiquated and stack alone will suffice
17:42:52 <Lycurgus> haskell only does haskell, not general unix pkgs
17:43:57 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
17:44:29 <fendor> ph88_, maybe there is soon a stack hook for that: https://github.com/commercialhaskell/stack/pull/5585
17:45:18 <maerwald> ph88_: https://github.com/commercialhaskell/stack/pull/5585
17:45:20 <maerwald> with that yes
17:45:23 <maerwald> oops
17:45:25 <maerwald> :>
17:47:02 <arkanoid> I lost you with your "you still need apt for the debian pkgs"
17:47:46 <Lycurgus> igess you meant the haskell platform apt pkg
17:47:59 <arkanoid> yes
17:48:07 <Lycurgus> whereas I though you were talking about apt generally
17:48:24 <Lycurgus> the comment about haskell platform was covering though
17:48:31 <arkanoid> btw I've just deleted all haskell pkgs with sudo apt remove --autoremove 'haskell-*', and 'stack test' runs correctly
17:48:38 <Lycurgus> you could apt purge it
17:48:43 <Lycurgus> (i would)
17:48:55 <maerwald> yeah, avoid distro haskell packages in general
17:49:36 <maerwald> some distros do it right and only install GHC with nothing else, no haskell pkgs explicitly
17:50:09 <Lycurgus> *thought
17:50:29 <arkanoid> funny thing, haskell-platform dragged in 1GB of packages, uninstalling haskell-* with autoremove and purge freed 222MB
17:50:33 Codaraxis joins (~Codaraxis@user/codaraxis)
17:50:36 × dunkeln quits (~dunkeln@188.70.26.84) (Ping timeout: 252 seconds)
17:50:58 <arkanoid> btw, not a problem. I see that "stack" lives in my home now and it reads file in ~/.stack
17:51:12 × Null_A quits (~null_a@2601:645:8700:2290:9d5c:9f84:452e:3ad) (Remote host closed the connection)
17:51:14 <Lycurgus> yeah apt can pull dependencies which don't get purged
17:51:27 derelict joins (~derelict@user/derelict)
17:51:42 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
17:51:46 <Lycurgus> and the thing that supposedly removes unneeded pkgs is dangerous
17:51:57 Null_A joins (~null_a@2601:645:8700:2290:9d5c:9f84:452e:3ad)
17:53:13 Shailangsa_ joins (~shailangs@host86-186-196-233.range86-186.btcentralplus.com)
17:53:23 <Lycurgus> FOSS peopels (but not haskellers in general) sometimes distribute broken shit, like python pip is right now
17:53:24 × Codaraxis__ quits (~Codaraxis@193.138.218.171) (Ping timeout: 255 seconds)
17:53:31 <Lycurgus> *peoples
17:53:36 Guest68 joins (~Guest68@ppp046176105030.access.hol.gr)
17:53:41 <arkanoid> well, luckily I'm not on a production server. I can repair if needed. Thanks for the help! Also, I will probably ask some (hopefully good) question while learning
17:54:08 favonia joins (~favonia@user/favonia)
17:54:19 <Lycurgus> pip 20.3 and later introduced backtracking which they were apparently incompetent to do correctly
17:54:35 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
17:55:20 <maerwald> package management is NP hard :>
17:55:34 <arkanoid> As IDE to learn haskell I've installed spacevim + lang#haskell layer and codium + haskell extension. Are there better suited IDEs you'd suggest to use while learning?
17:56:16 <Lycurgus> code and hs lang server is hot these days
17:58:20 h98 joins (~h98@187.83.249.216.dyn.smithville.net)
17:59:14 <arkanoid> good! I saw it downloading it on first run. But seems not working (no build button anywhere). Maybe is not compatible with stack? let's see
17:59:15 × mikail quits (~mikail@2a02:c7f:bd83:fd00:55cf:122f:957a:f66f) (Quit: Leaving)
18:02:17 × viluon quits (uid453725@id-453725.brockwell.irccloud.com) (Quit: Connection closed for inactivity)
18:03:45 × nvmd quits (~nvmd@user/nvmd) (Ping timeout: 255 seconds)
18:05:06 × Vajb quits (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer)
18:05:28 nvmd joins (~nvmd@user/nvmd)
18:05:31 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
18:13:14 × juhp quits (~juhp@128.106.188.220) (Quit: juhp)
18:13:28 juhp joins (~juhp@128.106.188.220)
18:19:35 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:20:59 fluffyballoon joins (~fluffybal@pat-verona-l.epic.com)
18:22:41 zyklotomic joins (~ethan@2604:a880:800:10::79f:8001)
18:23:25 × o1lo01ol1o quits (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Remote host closed the connection)
18:23:34 × juhp quits (~juhp@128.106.188.220) (Quit: juhp)
18:23:47 juhp joins (~juhp@128.106.188.220)
18:23:54 × favonia quits (~favonia@user/favonia) (Ping timeout: 240 seconds)
18:25:22 × Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
18:25:42 moll joins (~user@93-181-35-213.dyn.estpak.ee)
18:26:59 integral_ is now known as integral
18:28:12 × ukari quits (~ukari@user/ukari) (Remote host closed the connection)
18:28:36 ukari joins (~ukari@user/ukari)
18:30:31 favonia joins (~favonia@user/favonia)
18:33:54 × juhp quits (~juhp@128.106.188.220) (Quit: juhp)
18:34:07 juhp joins (~juhp@128.106.188.220)
18:38:18 × favonia quits (~favonia@user/favonia) (Ping timeout: 252 seconds)
18:38:42 favonia joins (~favonia@user/favonia)
18:41:49 <sm> arkanoid: yes vs code + haskell extension is a good one. It's fine with stack
18:42:46 <arkanoid> sm: are you sure? I've stack [test, build, exec, ghci] perfectly working on vscode terminal, but extension complains "project requires GHC but it isn't installed"
18:43:44 <arkanoid> I do see binaries installed in ~/.stack/... and the environment just works at command line, but vscode extensions seems not good in realizing that stack should be used
18:43:54 <sm> yes I'm sure. I don't say setup issues are impossible, of course not
18:44:14 × juhp quits (~juhp@128.106.188.220) (Quit: juhp)
18:44:27 juhp joins (~juhp@128.106.188.220)
18:44:31 <arkanoid> k, so I need to find out how to read vscode logs
18:44:35 <sm> AFAIK it looks at various things in your project to autodetect.. you have a stack.yaml ? Maybe the Tasks -> Haskell pane has more info
18:46:34 fresheyeball joins (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net)
18:47:08 × mr-red quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 255 seconds)
18:47:10 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
18:47:52 <sm> OUTPUT -> Haskell pane, I meant
18:48:25 <arkanoid> yes I have stack.yml. I've downloaded the helloworld exercise from exercism.io and build and tests works correctly at command line. I do see the .stack env being populated separately for the desired version
18:49:02 <sm> the devs are in #haskell-language-server:libera.chat
18:49:33 <sm> maybe compare with a brand new project. In one of my projects I made a custom hie.yaml to help it IIRC
18:49:44 × azeem quits (~azeem@dynamic-adsl-84-220-213-65.clienti.tiscali.it) (Ping timeout: 252 seconds)
18:50:33 azeem joins (~azeem@176.201.2.247)
18:52:11 oso joins (~oso@2601:58c:c080:a950:f275:2530:b398:680b)
18:52:36 Deide joins (~Deide@user/deide)
18:53:04 <arkanoid> sm: I think I've found the issue and is related to how vscode find out the working path and relative stack.yaml
18:53:33 <arkanoid> I think I got it working now. Thanks for pointing me to the right direction
18:53:42 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
18:54:20 o1lo01ol1o joins (~o1lo01ol1@bl11-109-140.dsl.telepac.pt)
18:54:26 <sm> np
18:54:29 × Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection)
18:54:40 <sm> what caused it not to work ?
18:56:14 oso7 joins (~oso@2601:58c:c080:a950:f275:2530:b398:680b)
18:56:17 × oso quits (~oso@2601:58c:c080:a950:f275:2530:b398:680b) (Remote host closed the connection)
18:56:28 oso7 is now known as oso
18:57:20 bitmapper joins (uid464869@id-464869.tooting.irccloud.com)
18:58:07 dunkeln joins (~dunkeln@188.70.26.84)
18:58:14 cheater joins (~Username@user/cheater)
18:59:34 × juhp quits (~juhp@128.106.188.220) (Quit: juhp)
18:59:47 juhp joins (~juhp@128.106.188.220)
18:59:52 × dhil quits (~dhil@195.213.192.47) (Remote host closed the connection)
19:00:54 × o1lo01ol1o quits (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Ping timeout: 255 seconds)
19:01:29 hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com)
19:03:35 × azeem quits (~azeem@176.201.2.247) (Read error: Connection reset by peer)
19:04:40 <arkanoid> sm: that I had many exercises folder automatically downladed by exercism cli tool in my ~/exercism/haskell/*, like ~/exercism/haskell/helloworld. I opened vscode in ~/exercism/haskell and clicked on "helloworld/src/HelloWorld.hs", but that made ~/exercism/haskell/helloworld/stack.yml not read. So you cant have "many" haskell projects (at least out of the box) but just one
19:05:16 azeem joins (~azeem@dynamic-adsl-84-220-213-65.clienti.tiscali.it)
19:05:17 spirgel joins (spirgel@gateway/vpn/protonvpn/spirgel)
19:05:18 <sm> arkanoid: ah.. yes the nearest stack.yaml file defines the project
19:05:18 <arkanoid> by opening vscode in ~/exercism/haskell/helloword made it work
19:05:36 × cheater quits (~Username@user/cheater) (Remote host closed the connection)
19:05:54 <arkanoid> well, not the nearest. It would have worked otherwise
19:05:58 <sm> nearest in current directory or above
19:08:28 <arkanoid> I was editing ~/exercism/haskell/helloworld/src/HelloWord.hs, the working directory was ~/exercism/haskell and the stack.yml file was in ~/exercism/haskell/helloworld, so the extension doesn't look at the nearest stack.yml from the file being currently edited
19:08:35 lavaman joins (~lavaman@98.38.249.169)
19:09:02 <sm> it looks upward
19:09:20 <sm> like stack itself
19:09:27 <sm> as I understand it anyway. The devs will know more.
19:12:04 × amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Read error: Connection reset by peer)
19:12:51 ikex1 joins (~ash@user/ikex)
19:12:52 × Techcable quits (~Techcable@168.235.93.147) (Quit: ZNC - https://znc.in)
19:12:58 × ikex quits (ash@user/ikex) (Ping timeout: 240 seconds)
19:13:03 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 258 seconds)
19:13:27 amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
19:13:30 ikex1 is now known as ikex
19:14:51 × vk3wtf quits (~doc@124.168.198.139) (Ping timeout: 255 seconds)
19:15:37 vk3wtf joins (~doc@59-102-26-152.tpgi.com.au)
19:16:09 × ubert quits (~Thunderbi@178.165.188.94.wireless.dyn.drei.com) (Ping timeout: 268 seconds)
19:16:37 Techcable joins (~Techcable@168.235.93.147)
19:17:06 × favonia quits (~favonia@user/favonia) (Ping timeout: 256 seconds)
19:17:30 favonia joins (~favonia@user/favonia)
19:19:12 × sqrt2_ quits (~ben@80-108-18-7.cable.dynamic.surfer.at) (Ping timeout: 272 seconds)
19:19:54 × juhp quits (~juhp@128.106.188.220) (Quit: juhp)
19:20:07 juhp joins (~juhp@128.106.188.220)
19:21:54 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
19:26:06 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
19:27:52 × h98 quits (~h98@187.83.249.216.dyn.smithville.net) (Ping timeout: 246 seconds)
19:28:31 drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
19:29:29 × Shailangsa_ quits (~shailangs@host86-186-196-233.range86-186.btcentralplus.com) ()
19:32:31 favonia joins (~favonia@user/favonia)
19:38:18 × alx741 quits (~alx741@186.178.108.174) (Ping timeout: 240 seconds)
19:38:34 kayprish joins (~kayprish@cable-188-2-229-172.dynamic.sbb.rs)
19:39:58 finsternis joins (~X@23.226.237.192)
19:43:14 o1lo01ol1o joins (~o1lo01ol1@bl11-109-140.dsl.telepac.pt)
19:46:53 sqrt2 joins (~ben@tunnel330957-pt.tunnel.tserv6.fra1.ipv6.he.net)
19:47:12 × benin0369 quits (~benin@183.82.206.69) (Ping timeout: 252 seconds)
19:47:54 × favonia quits (~favonia@user/favonia) (Ping timeout: 240 seconds)
19:50:26 favonia joins (~favonia@user/favonia)
19:51:02 <ph88_> fendor, maerwald looks nice
19:51:25 <ph88_> is it possible to ask stack the ghc version that belongs to a resolver ?
19:52:03 <fendor> ph88_, maybe `stack path --resolver ... --compiler-exe`?
19:52:08 <fendor> not sure that works
19:52:50 alx741 joins (~alx741@186.178.108.210)
19:52:58 <fendor> that command will probably download the respective ghc version
19:53:05 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
19:54:38 × fendor quits (~fendor@91.141.40.76.wireless.dyn.drei.com) (Remote host closed the connection)
19:55:55 <maerwald> stack --no-install-ghc path --resolver lts-0.7 --compiler-exe
19:56:02 <maerwald> but that's not nicely parsable
19:58:40 <ph88_> i was thinking i can do then inside a project stack --no-install-ghc path --compiler-exe and then with that information do ghcup set system-ghc and then do stack build normally .. would that work ?
19:59:19 <maerwald> ph88_: use the patched stack we linked to earlier
19:59:38 <maerwald> https://github.com/commercialhaskell/stack/pull/5585
20:00:02 shailangsa joins (~shailangs@host86-186-196-233.range86-186.btcentralplus.com)
20:00:14 × juhp quits (~juhp@128.106.188.220) (Quit: juhp)
20:00:29 juhp joins (~juhp@128.106.188.220)
20:00:37 h98 joins (~h98@187.83.249.216.dyn.smithville.net)
20:00:59 <maerwald> a hook would look like this: https://paste.tomsmeding.com/PFL8aFLa
20:01:09 <maerwald> but for `whereis` you also need ghcup from master
20:01:47 × favonia quits (~favonia@user/favonia) (Ping timeout: 245 seconds)
20:02:24 <ph88_> what do you mean for whereis ?
20:02:31 <maerwald> see the paste
20:02:44 × amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 255 seconds)
20:03:08 <maerwald> you can also do `echo $HOME/.ghcup/ghc/$HOOK_GHC_VERSION/bin`
20:03:16 <ph88_> that's a bit probablametic right now to go on bleeding edge. Why not just parse and do ghcup set system-ghc ?
20:03:20 favonia joins (~favonia@user/favonia)
20:03:28 <maerwald> up to you
20:03:56 <ph88_> does ghcup install ghc into $HOME/.ghcup ?
20:04:08 <maerwald> it's cooler if you run `stack build` and it invokes ghcup
20:04:13 <maerwald> ph88_: yes
20:05:25 × juhp quits (~juhp@128.106.188.220) (Ping timeout: 250 seconds)
20:06:45 juhp joins (~juhp@128.106.188.220)
20:09:11 × doyougnu quits (~user@c-73-25-202-122.hsd1.or.comcast.net) (Quit: ERC (IRC client for Emacs 28.0.50))
20:13:52 × Null_A quits (~null_a@2601:645:8700:2290:9d5c:9f84:452e:3ad) (Remote host closed the connection)
20:13:58 Ariakenom joins (~Ariakenom@c83-255-154-140.bredband.tele2.se)
20:14:36 × jespada quits (~jespada@90.254.247.46) (Quit: Textual IRC Client: www.textualapp.com)
20:17:16 × h98 quits (~h98@187.83.249.216.dyn.smithville.net) (Quit: Client closed)
20:17:25 <ph88_> I think ghcup shows me this, what does that mean ? #5 3.256 [ Warn ] Could not get download info, trying cached version (this may not be recent!) #5 3.257 [ Error ] File "/root/.ghcup/cache/ghcup-0.0.4.yaml" does not exist.
20:17:53 <maerwald> means you're running an old version for starters
20:18:10 × Ariakenom quits (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 240 seconds)
20:19:41 <maerwald> and the download failed
20:20:16 × ukari quits (~ukari@user/ukari) (Remote host closed the connection)
20:21:01 ukari joins (~ukari@user/ukari)
20:22:24 <maerwald> you need curl or wget and a working internet connection
20:22:53 <maerwald> In a Dockerfile you can do sth like https://git.io/JlTtf
20:25:36 Ariakenom joins (~Ariakenom@c83-255-154-140.bredband.tele2.se)
20:27:15 × michalz quits (~michalz@185.246.204.50) (Remote host closed the connection)
20:27:29 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 255 seconds)
20:30:22 NiKaN joins (sid385034@id-385034.brockwell.irccloud.com)
20:32:37 <arkanoid> is it considered normal to not have "run" function in vscode + haskell extension by default? stack environment works nice via command line
20:33:03 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
20:35:00 × dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2)
20:35:28 Null_A joins (~null_a@c-98-210-133-39.hsd1.ca.comcast.net)
20:37:43 × hololeap quits (~hololeap@user/hololeap) (Quit: Bye)
20:39:19 <[exa]> arkanoid: I'd consider that to be a step to "normal"
20:39:36 <[exa]> most programs aren't normally executed by the green play button :D
20:40:24 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
20:42:42 × drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 240 seconds)
20:44:32 <ph88_> maerwald, an old version of what exactly ? i am making a dockerfile from alpine:latest o_O
20:44:53 <maerwald> ph88_: of ghcup
20:44:57 <ph88_> i did it like this wget https://downloads.haskell.org/~ghcup/x86_64-linux-ghcup -O /usr/local/bin/ghcup
20:45:05 <sm> arkanoid: what would it do.. "stack run" ?
20:45:11 <maerwald> ph88_: ya, that's a symlink that's not always updated
20:45:15 × Null_A quits (~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Remote host closed the connection)
20:45:18 <maerwald> see the link above
20:45:21 <ph88_> eh ok
20:46:00 viluon joins (uid453725@id-453725.brockwell.irccloud.com)
20:46:18 <maerwald> curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | BOOTSTRAP_HASKELL_NONINTERACTIVE=1 BOOTSTRAP_HASKELL_GHC_VERSION=8.10.5 BOOTSTRAP_HASKELL_CABAL_VERSION=3.4.0.0 sh
20:46:30 <sm> arkanoid: there is in fact a Haskell Runner extension
20:46:38 awth13 joins (~user@user/awth13)
20:47:05 acidjnk joins (~acidjnk@p200300d0c72b9516f180e3afe24121d7.dip0.t-ipconnect.de)
20:50:13 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
20:50:21 <ph88_> seems curl is a dependency of ghcup script, i better install that first then
20:51:13 <maerwald> ph88_: do you have wget?
20:51:44 <maerwald> but curl is better
20:52:34 <ph88_> i have wget, but i the script of ghcup itself calls curl i think .. because im not using curl atm
20:52:47 <monochrom> cabal-install likes curl too.
20:53:34 <monochrom> I haven't tried what happens to cabal-install if it can't find curl, but there was a time you had to add a non-default flag to tell it to use wget.
20:53:42 Null_A joins (~null_a@2601:645:8700:2290:5d44:532d:1cae:2f91)
20:54:17 <monochrom> Also it simply runs curl the exe not libcurl, and this inspired ghcup to do the same, and I had a hand in influencing that. >:)
20:54:51 <maerwald> if it can't find curl it falls back to wget even if you didn't specify wget
20:54:55 <monochrom> Someone else did try to use libcurl for a different project, probably even a C project per se. It was found to be total madness. Don't go there. :)
20:55:01 <maerwald> (cabal and ghcup)
20:55:22 <maerwald> but the bootstrap script doesn't support wget, so there's that
20:56:31 <maerwald> not sure why anyone would prefer wget, but many distros don't have curl pre-installed
20:56:51 <maerwald> curl is even running in space afaik!
20:58:12 × dunkeln quits (~dunkeln@188.70.26.84) (Quit: leaving)
20:58:23 <monochrom> I think I learned of wget before curl when I started using linux.
20:58:56 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
20:59:04 <maerwald> wget's default is maybe a little bit more intuitive... it's funny if you run curl on a binary without -O and have your terminal broken
20:59:20 <monochrom> But there was a time both were pre-installed. Omitting curl is fairly recent on Ubuntu, like 1-2 years ago.
20:59:43 × rtjure quits (~rtjure@bras-79-132-10-94.comnet.bg) (Quit: Leaving)
21:00:10 <monochrom> Yeah I have a feeling that wget syntax and default behaviour make more sense for human users.
21:00:10 × azeem quits (~azeem@dynamic-adsl-84-220-213-65.clienti.tiscali.it) (Read error: Connection reset by peer)
21:00:23 <maerwald> but it's more unix friendly to outilize stdout by default, piping and the like
21:00:26 <monochrom> only just a little bit more, to be sure.
21:00:35 <monochrom> Yeah
21:00:44 azeem joins (~azeem@dynamic-adsl-84-220-213-65.clienti.tiscali.it)
21:01:31 <monochrom> Hey "outilize" is a great portmanteau!
21:01:57 × oso quits (~oso@2601:58c:c080:a950:f275:2530:b398:680b) (Quit: Client closed)
21:02:12 <maerwald> it's just my joints snapping occasionally
21:02:50 <monochrom> utiline stdin, outilize stdout
21:04:12 × favonia quits (~favonia@user/favonia) (Ping timeout: 256 seconds)
21:04:39 <geekosaur> also there's this belief that curl == BSD, wget == GNU
21:05:06 favonia joins (~favonia@user/favonia)
21:05:37 <monochrom> Ah.
21:06:12 <monochrom> The human mind performs pincipal value analysis all the time especially when it shouldn't. :)
21:07:37 <monochrom> I need to teach a machine learning course in which I point out that humans are always making the same mistakes as machine learning algorithms and models. >:)
21:08:58 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 252 seconds)
21:09:03 <Franciman> monochrom: lol
21:11:51 × juhp quits (~juhp@128.106.188.220) (Quit: juhp)
21:12:04 juhp joins (~juhp@128.106.188.220)
21:12:34 <ph88_> monochrom, why was libcurl to be found total madness ?
21:15:47 × zebrag quits (~chris@user/zebrag) (Ping timeout: 268 seconds)
21:16:41 <geekosaur> monochrom, https://www.dropbox.com/s/345iszfohklw0sl/dnn.txt?dl=0
21:16:41 jumper149 joins (~jumper149@80.240.31.34)
21:16:56 cheater joins (~Username@user/cheater)
21:18:05 × Null_A quits (~null_a@2601:645:8700:2290:5d44:532d:1cae:2f91) (Remote host closed the connection)
21:18:28 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
21:19:57 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
21:20:08 × lbseale quits (~lbseale@user/ep1ctetus) (Quit: Client closed)
21:20:15 sheepduck joins (~sheepduck@user/sheepduck)
21:20:58 <maerwald> ph88_: you link to the library, for starters
21:21:13 <maerwald> if the distro breaks SONAME, you have your first problem
21:21:20 <maerwald> statically linking will break your neck too
21:21:52 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
21:22:08 <ph88_> maerwald, i thought that was all solved now with alpine :p
21:22:16 <maerwald> how so?
21:22:29 <maerwald> statically linking libcurl will require you to link openssl too
21:22:33 <maerwald> and that IS wrong
21:22:54 <ph88_> oh
21:23:31 <maerwald> even if you used something statically linking friendlier like mbedTLS... I think it's still wrong
21:24:18 <maerwald> you need a really good update channel and mechanisms that use gpg signatures on top to make this not insanely insecure
21:24:27 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 255 seconds)
21:24:27 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds)
21:24:30 <monochrom> geekosaur: Nice, thanks.
21:24:41 lbseale joins (~lbseale@user/ep1ctetus)
21:24:51 <maerwald> the distro will take care of fixing curl and openssl vulnerabilities
21:24:57 <maerwald> don't try to compete with that
21:25:16 × cheater quits (~Username@user/cheater) (Read error: Connection reset by peer)
21:26:33 <monochrom> My principal component analysis merges "alpine" with "docker" because when I learned docker its tutorials use alpine all the time and I get a feeling of "so alpine is so barebone no one uses it by hand but great for docker".
21:26:40 <monochrom> I mean, :)
21:26:47 mthvedt joins (uid501949@id-501949.stonehaven.irccloud.com)
21:27:17 <maerwald> I wrote an APKBUILD once and posted it to their ML for review. I never got an answer :>
21:27:35 <hpc> that's like saying windows is great for running virtualbox
21:27:39 <monochrom> So I interpret "solved by alpine" to mean "solved by docker" which is suddenly a tautology :)
21:28:00 cheater joins (~Username@user/cheater)
21:28:11 <maerwald> people run windows outside of virtualbox?
21:28:36 <monochrom> hpc: Hey, my brain has the converse association, "virtualbox is great when I'm stuck in windows"
21:28:40 <geekosaur> most people, even
21:28:48 × o1lo01ol1o quits (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Remote host closed the connection)
21:28:54 <dsal> I don't understand people's obsession with curl. I also don't understand why curl thinks it needs to "support" every protocol.
21:29:31 <maerwald> dsal: what's the alternative? Try haskell-tls and all those boys and see how it completely fails in the face of weird proxy and firewall configs
21:30:10 × radw quits (~radw@user/radw) (Ping timeout: 240 seconds)
21:30:23 <maerwald> I'm sure you would get it to work somehow on esoteric setups, but it's work. And curl has done it for you
21:30:33 × aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
21:30:54 × cheater quits (~Username@user/cheater) (Remote host closed the connection)
21:31:06 × jumper149 quits (~jumper149@80.240.31.34) (Quit: WeeChat 3.2)
21:31:11 <janus> dsal: just had an issue where a binary using network-bsd failed to look up the "tcp" protocol number because network doesn't support tcp natively :P https://hackage.haskell.org/package/network-3.1.2.2/docs/Network-Socket.html#v:socket
21:31:28 <dsal> I use network-conduit-tls, but I don't know what it uses on a lower level.
21:31:43 <glguy> I stopped using the Haskell TLS implementations after I found they weren't validating some certificates correctly. I don't remember what feature it was they had wrong (it's been years now) but I prefer trusting the more commonly used TLS implementations for that
21:32:00 <janus> you take a binary that uses network-bsd , it will depend on /etc/protocols. and then when you run without that file, it can't find the TCP protocol number
21:32:03 zangi joins (~zangi@103.154.230.230)
21:32:20 <janus> i think it is good enough to use defaultProtocol but i'd love to hear if somebody knows of a platform where that breaks
21:32:20 aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net)
21:32:44 <zangi> is there a language pragma that allows me to `type Foo = [(Int,a)]`
21:33:02 <dsal> zangi: what is a?
21:33:17 jespada joins (~jespada@90.254.247.46)
21:33:18 <glguy> janus: usually you wouldn't specify the protocol manually. That's getAddrInfo's job
21:33:25 cheater joins (~Username@user/cheater)
21:33:30 <zangi> dsal: any type
21:33:46 <dsal> zangi: It doesn't exist on the left side of the = though.
21:33:52 × sqrt2 quits (~ben@tunnel330957-pt.tunnel.tserv6.fra1.ipv6.he.net) (Ping timeout: 245 seconds)
21:33:58 <maerwald> RankNTypes
21:34:10 <maerwald> and then `type Foo = forall a. [(Int, a)]`
21:34:14 <maerwald> and then pain
21:34:25 <janus> glguy: aah ok, so you're saying the socket function linked should always be used with getAddrInfo like it is in the example?
21:34:38 <glguy> e.g. https://github.com/glguy/irc-core/blob/v2/hookup/src/Hookup.hs#L347-L352
21:34:40 <monochrom> Is there any reason why you reject `type Foo a = [(Int,a)]`?
21:35:26 <zangi> monochrom: woah, it exists, I thought I can only do that with `data Foo a`
21:35:39 <janus> aah ok that makes sense now. so the ProtocolNumber constructor should really be private, hmmm
21:35:44 <dsal> janus: That's how I end up doing it. getAddrInfo -> socket.
21:36:20 sqrt2 joins (~ben@80-108-18-7.cable.dynamic.surfer.at)
21:36:28 <dsal> Looking at this code... I'm suddenly wondering why I'm not using all the results from getAddrInfo
21:36:46 <glguy> dsal: you should be, it's not trivial to do so though
21:37:12 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 252 seconds)
21:37:14 <dsal> For this case, it's pretty easy. This program is just trying to see if it's possible to connect to a host. So if it can connect to any address, it succeeds.
21:37:23 <glguy> the module I linked to above has a bunch of logic for trying them all, gathering failures, doing that concurrently
21:37:23 × ph88_ quits (~ph88@ip5f5af6fd.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
21:37:51 <arkanoid> starter here on his first day with haskell. What's the best website to search for an existing function? For example split a string into list of strings by char or list of chars
21:37:52 <janus> is there a library that does happy eyeballs in haskell? seems like the good concurrency support could help with it
21:38:18 <glguy> janus: there are one or two approximations; nothing definitive
21:38:24 <sm> https://hoogle.haskell.org, arkanoid
21:38:32 <arkanoid> thanks
21:38:35 <glguy> janus: That module is as close as I got to the process
21:38:38 <dsal> arkanoid: You may want to read through the Data.List docs for what you're doing.
21:39:57 agua joins (~agua@2804:18:4e:2dda:1:0:4058:6b7c)
21:39:58 <Ariakenom> arkanoid: +1 for hoogle. you can search by type!
21:40:15 ph88 joins (~ph88@2a02:8109:9e00:7e5c:6daa:57bf:6d41:6cd9)
21:40:28 <dsal> @hoogle Char -> String -> [String]
21:40:29 <lambdabot> Distribution.Simple.Utils unintersperse :: Char -> String -> [String]
21:40:29 <lambdabot> Distribution.Utils.Generic unintersperse :: Char -> String -> [String]
21:40:29 <lambdabot> Util split :: Char -> String -> [String]
21:40:39 <dsal> "unintersperse"
21:40:39 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 255 seconds)
21:41:01 <sm> arkanoid: https://hoogle.haskell.org/?hoogle=%5Ba%5D+-%3E+%5Ba%5D+-%3E+%5B%5Ba%5D%5D&scope=set%3Astackage for example. The general type (a) gives better results than String in this case
21:41:04 <dsal> @hoogle unintercalate
21:41:04 <lambdabot> No results found
21:42:00 × pesada quits (~agua@2804:14c:8793:8e2f:6091:e445:c3bf:d39e) (Ping timeout: 255 seconds)
21:42:01 <janus> glguy: code looks very generic, cool, thanks
21:42:19 × Ariakenom quits (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Quit: Leaving)
21:42:20 drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
21:42:56 <glguy> janus: that's the code I needed for connecting my IRC client to an IRC server. It has a permissive license if you want to loot it. If there are missing features you need you can ping me and I'm happy to adapt it within reason.
21:42:59 × fluffyballoon quits (~fluffybal@pat-verona-l.epic.com) (Quit: Client closed)
21:43:45 <janus> one day i'll have to try out your irc client. problem is that irssi does the job... so far :P
21:43:53 <glguy> If it did the job I'd just use it!
21:44:10 <janus> what can i say, i am a modest man
21:44:20 <arkanoid> is there a general rule to expect the order of the arguments of an existing function? In this case is more probable to find "Char -> String -> [String]" or "String -> Char -> [String]"?
21:46:19 fluffyballoon joins (~fluffybal@pat-verona-l.epic.com)
21:46:42 <arkanoid> well of course it depends if the function I'm looking for is possible polymorphic or not
21:48:32 × drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Quit: ZNC 1.8.2 - https://znc.in)
21:48:40 <Logio> no general rules, but you can usually make a good guess based if you know what the function does
21:48:43 <glguy> arkanoid: the types of the arguments don't have much to do with the ordering
21:49:16 drd joins (~drd@93-39-151-19.ip76.fastwebnet.it)
21:50:11 <Logio> there are cases where there is some "natural" partial application of a function, which usually promotes some order
21:51:11 <Logio> but that's more an intuition you build when building your own functions, less one that helps you find functions
21:51:12 <arkanoid> I see that sm suggested a search by key "[a] -> [a] -> [[a]]" so that the first two parameters can be both [Char], but this is just by chance that I need actually a function that requires two lists as input
21:51:26 × ph88 quits (~ph88@2a02:8109:9e00:7e5c:6daa:57bf:6d41:6cd9) (Read error: Connection reset by peer)
21:51:33 × aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Read error: Connection reset by peer)
21:51:49 <arkanoid> got it, thanks. So I expect to learn the general way parameters are ordered on the way
21:52:23 aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net)
21:52:36 × mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 252 seconds)
21:53:02 <sm> arkanoid: usually the "thing to be operated on" is the last argument, so any other parameters come before that
21:54:05 radw joins (~radw@user/radw)
21:54:48 <arkanoid> I see. So that's exactly the opposite of the world I'm coming from
21:55:56 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:56:01 <sm> really ? what's an example from that world ?
21:56:22 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 245 seconds)
21:56:32 <sm> oh, fooobj.doSomething(a,b) ?
21:57:38 <arkanoid> yeah, classical procedural/OOB, independently from the call syntax the "main" argument is generally the first one
21:57:41 ph88 joins (~ph88@2a02:8109:9e00:7e5c:c502:f058:b589:c70c)
21:58:46 <monochrom> After you have done quite a bit of "map (logBase 2) [x, y, z]" you will prefer not to have "logBase x 2".
21:59:09 <sm> yes so in haskell you might often see fooDoSomething a b foo, because this plays well with partial application which Logio mentioned. Eg map (fooDoSomething a b) listoffoos works nicely.
21:59:16 <arkanoid> well, I see that exercism uses stack to hide packages, so I cannot "import Data.List.Stack". I'll have to reinvent the wheel! Good
21:59:35 × dunj3 quits (~dunj3@2001:16b8:30c4:6b00:b2db:db95:c4f5:af2c) (Remote host closed the connection)
21:59:45 <arkanoid> thanks for all the hints
22:00:12 <janus> arkanoid: do you know about 'flip' ?
22:00:35 <monochrom> or x.logBase(2)
22:01:45 <janus> or ",".join(array) hehehe
22:01:50 <sm> this probably works, but wouldn't be idiomatic: foo&fooDoSomething a b
22:01:51 <monochrom> haha
22:02:10 <janus> i think that ordering has probably caused the most bikeshedding, measured in hours. if you consider how popular python is
22:03:59 Null_A joins (~null_a@2601:645:8700:2290:5d44:532d:1cae:2f91)
22:04:25 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
22:05:09 × Guest68 quits (~Guest68@ppp046176105030.access.hol.gr) (Quit: Client closed)
22:06:22 Cajun joins (~Cajun@ip98-163-211-112.no.no.cox.net)
22:06:34 h98 joins (~h98@187.83.249.216.dyn.smithville.net)
22:08:14 × Bayes quits (~Bayes@user/bayes) (Quit: Connection closed)
22:11:27 pesada joins (~agua@191.177.175.57)
22:12:04 × agua quits (~agua@2804:18:4e:2dda:1:0:4058:6b7c) (Read error: Connection reset by peer)
22:12:08 Core2909 joins (~agua@2804:18:4e:2dda:1:0:4058:6b7c)
22:13:57 × Null_A quits (~null_a@2601:645:8700:2290:5d44:532d:1cae:2f91) (Remote host closed the connection)
22:14:00 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
22:15:29 × favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds)
22:15:45 × pesada quits (~agua@191.177.175.57) (Ping timeout: 255 seconds)
22:19:01 × kayprish quits (~kayprish@cable-188-2-229-172.dynamic.sbb.rs) (Remote host closed the connection)
22:19:21 favonia joins (~favonia@user/favonia)
22:19:44 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
22:19:53 Null_A joins (~null_a@2601:645:8700:2290:c911:1c05:b98d:d069)
22:20:18 <dsal> arkanoid: You can add packages, but I don't know what Data.List.Stack is, so it may not be actively hiding it from you.
22:20:45 <geekosaur> are you sure that's not Data.List.Split?
22:22:04 × zfnmxt quits (~zfnmxtzfn@2001:470:69fc:105::2b32) (Quit: Reconnecting)
22:22:21 zfnmxt joins (~zfnmxtzfn@2001:470:69fc:105::2b32)
22:22:34 <arkanoid> sorry, I mistyped, I just mean Data.List.Split
22:23:21 × zfnmxt quits (~zfnmxtzfn@2001:470:69fc:105::2b32) (Client Quit)
22:23:28 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
22:23:35 × tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 255 seconds)
22:23:37 zfnmxt joins (~zfnmxtzfn@2001:470:69fc:105::2b32)
22:23:57 <geekosaur> install the "split" package
22:23:58 × zfnmxt quits (~zfnmxtzfn@2001:470:69fc:105::2b32) (Changing host)
22:23:58 zfnmxt joins (~zfnmxtzfn@user/zfnmxt)
22:24:23 × zangi quits (~zangi@103.154.230.230) (Ping timeout: 265 seconds)
22:25:10 zangi joins (~zangi@103.154.230.230)
22:25:53 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 252 seconds)
22:26:22 × dextaa quits (~DV@37.201.214.197) (Ping timeout: 246 seconds)
22:27:45 <arkanoid> and also edit the .cabal file. I might be cheating, but that's ok
22:27:48 waleee joins (~waleee@h-98-128-228-119.na.cust.bahnhof.se)
22:27:56 <zangi> can I use monad to repeat f in this `(f . f . f . f) x`?
22:28:06 dextaa joins (~DV@aftr-37-201-214-197.unity-media.net)
22:28:52 ph88^ joins (~ph88@ip5f5af6fd.dynamic.kabel-deutschland.de)
22:30:22 <sm> it doesn't apparently require a monad
22:30:30 <sm> https://hoogle.haskell.org/?hoogle=Int+-%3E+%28a+-%3E+a%29+-%3E+a+-%3E+a&scope=set%3Astackage shows some implementations
22:30:40 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 265 seconds)
22:30:51 × drd quits (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 258 seconds)
22:30:58 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
22:32:08 × ph88 quits (~ph88@2a02:8109:9e00:7e5c:c502:f058:b589:c70c) (Ping timeout: 255 seconds)
22:33:16 <ph88^> i made this Dockerfile to build haskell static binary https://bpa.st/LNHQ when i run the command stack build --ghc-options '-static -optl-static -split-sections' --docker --docker-image "haskell-build" i get this message https://bpa.st/6OFA how can i make it work with the right version ?
22:33:41 <monochrom> Haha I found a typo in the Haskell 2010 Report. ascSymbol has U+22C6 ⋆ where it should have U+002A *
22:34:23 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
22:34:41 <ph88^> maerwald, ^ ?
22:35:09 <sm> what's your platform ph88^ ?
22:35:27 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
22:35:28 <ph88^> for building the docker image ? ubuntu 20.04 inside of virtualbox
22:35:30 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 265 seconds)
22:35:47 <zangi> sm: what if f in `nest n f x` has type `Monad m => a -> m a`
22:35:59 <sm> what does `arch` say ?
22:36:31 <sm> seems odd that there wouldn't be a ghc 8.10 binary. Is your stack up to date ?
22:37:00 <sm> maybe it's confused by this -ncurses6 suffix
22:37:55 <maerwald[m]> ph88^: I've never used stack --docker
22:38:03 <ph88^> sm arch run where ? Maybe you missed that i'm building from a docker container ?
22:38:10 tomboy64 joins (~tomboy64@user/tomboy64)
22:38:19 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
22:38:32 <ph88^> maerwald[m], what would you do ? download your project code and do the build with Dockerfile commands ?
22:38:34 <sm> ph88^: wherever you're running that stack command, run `arch` ?
22:38:50 <ph88^> sm x86_64
22:38:56 <maerwald[m]> ph88^: yeah
22:39:36 <maerwald[m]> I've done that before. It works.
22:40:38 <maerwald[m]> ph88^: also, you need to adjust PATH
22:41:04 × Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
22:41:28 <ph88^> maybe because i never ran this command, thus no system ghc was found inside docker container ? https://gist.github.com/hasufell/f0893abfbba63ac4ea40feb0520946ee#file-dockerfile-L10
22:41:57 <ph88^> maerwald[m], how to adjust path ?
22:42:20 <ph88^> i'm not sure between the difference of ghcup set ghc and these commands here https://github.com/haskell-works/cabal-cache/blob/66252484c7d0dbcb79b082ac95cb83213cdc892f/.circleci/config.yml#L71-L73
22:42:35 × Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection)
22:43:21 × shutdown_-h_now quits (~arjan@82-75-187-100.cable.dynamic.v4.ziggo.nl) (Ping timeout: 268 seconds)
22:43:45 × DNH quits (~DNH@2a02:8108:1100:16d8:808b:9f4a:c222:7def) (Quit: Textual IRC Client: www.textualapp.com)
22:43:57 <ph88^> building the container with ghcup seems to have gone well btw https://bpa.st/L3MA
22:45:38 × xff0x_ quits (~xff0x@2001:1a81:530d:8900:cddd:a545:4e9e:a55d) (Ping timeout: 255 seconds)
22:46:15 zebrag joins (~chris@user/zebrag)
22:46:32 xff0x_ joins (~xff0x@2001:1a81:530d:8900:7530:d6ba:9d47:69d1)
22:46:38 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Remote host closed the connection)
22:47:11 <maerwald[m]> You can also add BOOTSTRAP_HASKELL_INSTALL_STACK=yes
22:48:00 <maerwald[m]> /root/.ghcup/bin needs to be in PATH
22:48:18 <maerwald[m]> See the link earlier
22:48:38 agua joins (~agua@191.177.175.57)
22:49:08 <ph88^> not sure if i need stack to be installed in the container, when on the host stack is using the container to build stuff .. but ok
22:50:31 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer)
22:50:35 <maerwald[m]> I always forget how to set PATH in a docker build. There are always caveats.
22:50:44 Vajb joins (~Vajb@85-76-37-76-nat.elisa-mobile.fi)
22:51:18 <ph88^> ye i'm not even sure what shell alpine is running there .. i'm trying to find out .. everytime restarting the docker image build and download ghc over again o_O
22:51:32 lavaman joins (~lavaman@98.38.249.169)
22:52:12 × Core2909 quits (~agua@2804:18:4e:2dda:1:0:4058:6b7c) (Ping timeout: 245 seconds)
22:52:14 <maerwald[m]> Docker is amazing
22:52:17 <maerwald[m]> Lol
22:52:46 <yushyin> changed my mind
22:53:22 <arkanoid> try nix shell or nix + docker, it is even better
22:55:06 <dsal> nix + docker?
22:55:59 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 255 seconds)
22:56:05 <maerwald[m]> The worst of both worlds
22:58:21 shutdown_-h_now joins (~arjan@82-75-187-100.cable.dynamic.v4.ziggo.nl)
22:58:33 <arkanoid> Not really. It generates the smallest images. https://nixos.org/guides/building-and-running-docker-images.html
22:59:20 Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
22:59:45 <ph88^> seems alpine is running "ash" shell (never heard of) and only rc/profile file available by default lives under /etc/profile
23:00:19 <janus> there are many minimalist shells forcing people to avoid bashisms
23:00:19 <Arahael> arkanoid: even without nix, docker is small enough.
23:00:26 <janus> probably a secret plot of the BSDers
23:01:36 <arkanoid> Arahael: it depends on the context. Containers != docker, and they run on raspberry too.
23:03:15 <janus> so when you say nix+docker, what do you mean? using nix to build an OCI image?
23:03:44 aegon joins (~mike@174.127.249.180)
23:05:30 × Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Ping timeout: 240 seconds)
23:06:59 <janus> docker is a tricky term, very polymorphic :O
23:07:03 × terrorjack quits (~terrorjac@ec2-54-95-39-30.ap-northeast-1.compute.amazonaws.com) (Quit: Ping timeout (120 seconds))
23:07:06 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Quit: Ping timeout (120 seconds))
23:07:13 spirgel_ joins (spirgel@gateway/vpn/protonvpn/spirgel)
23:07:16 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
23:07:31 <arkanoid> use nix to build the minimum environment to run your process in a reproducible way, then pack it wherever you need. If you need to use layers, just take the dependency graph and draw a line where you need
23:07:45 × davl quits (~davl@207.154.228.18) (Read error: Connection reset by peer)
23:07:56 × haasn quits (~nand@haasn.dev) (Remote host closed the connection)
23:08:00 terrorjack joins (~terrorjac@ec2-54-95-39-30.ap-northeast-1.compute.amazonaws.com)
23:08:04 davl joins (~davl@207.154.228.18)
23:08:07 × connrs quits (~connrs@user/connrs) (Quit: ZNC 1.8.2 - https://znc.in)
23:08:07 × hexology quits (~hexology@user/hexology) (Quit: hex on you ...)
23:08:15 haasn joins (~nand@haasn.dev)
23:08:15 <arkanoid> https://grahamc.com/blog/nix-and-layered-docker-images
23:08:26 connrs joins (~connrs@user/connrs)
23:08:26 hexology joins (~hexology@user/hexology)
23:08:57 <Arahael> arkanoid: yeah, well, i'm referring to docker. :)
23:09:08 <ph88^> damn, i added the ghcup stuff to $PATH and still can't find ghc :(
23:09:50 pesada joins (~agua@2804:18:4e:2dda:1:0:4058:6b7c)
23:10:12 × zangi quits (~zangi@103.154.230.230) (Quit: zangi)
23:10:25 <janus> arkanoid: intersting post! thanks
23:10:26 × spirgel quits (spirgel@gateway/vpn/protonvpn/spirgel) (Ping timeout: 252 seconds)
23:12:37 jeetelongname joins (~jeet@host-89-241-98-229.as13285.net)
23:13:05 × agua quits (~agua@191.177.175.57) (Ping timeout: 255 seconds)
23:13:15 <janus> ph88^: did you remember to do "source ~/.bashrc" or the equivalent on your shell?
23:13:27 <arkanoid> I'm puzzled if a newcomer should prefer Text over String or not
23:13:33 <janus> ph88^: if i do "which ghci" , i get /home/janus/.ghcup/bin/ghci
23:14:36 cjb joins (~cjb@user/cjb)
23:14:42 <ph88^> janus, doesn't the profile get reloaded when the docker container is started ?
23:15:21 <geekosaur> if you described ash correctly earlier, it has to be run as a login shell to read /etc/profile
23:15:29 jeetelongname is now known as yeetaditya
23:15:38 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
23:15:52 <janus> right, maybe there is a way to inspect the ENTRYPOINT to check it... hmm
23:15:52 <arkanoid> also, are all literal strings always of String type? Do I have to Data.Text.pack them all?
23:16:11 <janus> arkanoid: there is an extension called OverloadedStrings
23:16:16 <geekosaur> arkanoid, see the OverloadedStrings extension
23:16:23 yeetaditya is now known as yeet
23:16:24 <ph88^> geekosaur, where would it look when running this shell not as login shell ?
23:16:29 <arkanoid> thanks!
23:16:53 yeet is now known as jeetelongname
23:17:00 <geekosaur> ph88^, if it's a minimalist Bourne-compatible shell, it doesn't have a startup file at all
23:17:08 × earthy quits (~arthurvl@2001:984:275b:1:ba27:ebff:fea0:40b0) (Ping timeout: 255 seconds)
23:17:42 <geekosaur> you would have to arrange for $PATH to be set some other way, or run it as a login shell (ash -l, one hopes)
23:17:48 <janus> ph88^: you could try "cat /proc/self/cmdline", and see if it has the -l param
23:17:55 <janus> % readFile /proc/self/cmdline
23:17:56 <yahb> janus: ; <interactive>:40:11: error: Variable not in scope: proc :: FilePath -> IO String; <interactive>:40:16: error: Variable not in scope: self :: FilePath -> IO String; <interactive>:40:21: error: Variable not in scope: cmdline :: FilePath -> IO String
23:18:02 <geekosaur> (if it's really minimalist you'd have to symlink it to -ash and run it that way)
23:18:31 <geekosaur> quotes are a thing, janus
23:18:52 × favonia quits (~favonia@user/favonia) (Ping timeout: 245 seconds)
23:18:52 <geekosaur> % readFile "/proc/self/cmdline"
23:18:53 <yahb> geekosaur: "/srv/sandbox/root/usr/lib/ghc-9.0.1/bin/ghc\NUL-B/srv/sandbox/root/usr/lib/ghc-9.0.1\NUL--interactive\NUL-v0\NUL-ghci-script\NUL/srv/sandbox/root/usr/lib/run/ghci-init\NUL-tmpdir\NUL/srv/sandbox/root/data/tmp/\NUL-odir\NUL/srv/sandbox/root/data/tmp/\NUL-hidir\NUL/srv/sandbox/root/data/tmp/\NUL-ignore-dot-ghci\NUL-package\NULghc\NUL+RTS\NUL-M200M\NUL-V0\NUL-C0\NUL-K100M\NUL"
23:19:50 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 255 seconds)
23:19:51 <geekosaur> you could also just start the list of commands with ". /etc/profile"
23:20:22 favonia joins (~favonia@user/favonia)
23:20:30 <janus> but it is a shell built-in, will that work? would be weird if docker knows the shell builtins
23:20:49 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
23:21:01 <janus> oooh ok it is an interactive shell, i get it
23:21:09 <janus> thought you meant putting it in the Dockerfile
23:21:51 <geekosaur> I did but you have a list of commands to be run in various contexts and I was suggesting putting that at the beginning of the list
23:22:16 <ph88^> maybe i should go with this rather than try to make my own Dockerfile https://hub.docker.com/r/fpco/alpine-haskell-stack
23:23:50 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
23:24:19 × shutdown_-h_now quits (~arjan@82-75-187-100.cable.dynamic.v4.ziggo.nl) (Ping timeout: 250 seconds)
23:24:43 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
23:24:57 × Cajun quits (~Cajun@ip98-163-211-112.no.no.cox.net) (Quit: Client closed)
23:26:31 × jeetelongname quits (~jeet@host-89-241-98-229.as13285.net) (Remote host closed the connection)
23:26:34 Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
23:26:46 jeetelongname joins (~jeet@host-89-241-98-229.as13285.net)
23:28:35 <Boarders> is there a lensy variant of the state function from the MonadState typeclass that operates on something you have a lens into
23:28:52 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 245 seconds)
23:28:59 × ski quits (~ski@ed-3358-10.studat.chalmers.se) (Ping timeout: 268 seconds)
23:29:37 ski joins (~ski@ed-3358-10.studat.chalmers.se)
23:30:11 shutdown_-h_now joins (~arjan@82-75-187-100.cable.dynamic.v4.ziggo.nl)
23:30:40 <Boarders> or alternatively is there a += that also returns the old value
23:31:52 <arkanoid> what's the quickest way to test a function in a module? I'm working with vscode + haskell extension, but I feel that adding a main is not the haskell way
23:32:34 <dsal> arkanoid: are you doing exercism? It comes with a test suite.
23:33:48 <Boarders> arkanoid: load in repl?
23:34:07 <dsal> @check (3 `notElem`)
23:34:09 <lambdabot> *** Failed! Falsifiable (after 13 tests and 4 shrinks):
23:34:09 <lambdabot> [2,-3,-12,-9,10,10,-10,3,-6,-10,12,11]
23:34:10 × dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 252 seconds)
23:34:11 <jeetelongname> arkanoid: yeah I was about to reccomend using ghci
23:34:21 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
23:34:33 <dsal> That's not the best shrinking. But super impressed how quickcheck proved me wrong when I thought 3 couldn't be in a list.
23:34:40 <arkanoid> dsal: yes, I do check the results of the required func with stack test. But if I add other funcs I should also modify the test case and so on. Not really so quick
23:34:51 <dsal> arkanoid: You can add to the test cases.
23:35:23 <dsal> But yeah, you can just pull up ghci (`stack ghci` should work) and `:r` whenever you change code.
23:35:30 <dsal> emacs will often do the right thing.
23:35:46 <arkanoid> dsal, thanks!
23:35:53 <dsal> I've been meaning to try hls again. It's a ridiculously complicated set of things for some reason.
23:36:12 × tremon quits (~tremon@217-63-61-89.cable.dynamic.v4.ziggo.nl) (Quit: getting boxed in)
23:36:15 <dsal> arkanoid: If you bring in quickcheck, you can do quick property tests even.
23:36:59 dibblego joins (~dibblego@122-199-1-30.ip4.superloop.com)
23:36:59 × dibblego quits (~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
23:36:59 dibblego joins (~dibblego@haskell/developer/dibblego)
23:37:00 <dsal> @check \x y -> let s = x + y in s > x && s > y
23:37:01 <lambdabot> *** Failed! Falsifiable (after 1 test):
23:37:01 <lambdabot> 0 0
23:37:08 <dsal> `0 0` to you, quickcheck
23:37:48 <arkanoid> if I do "stack ghci" I get prelude shell, but my functions seems not imported, even after :r
23:38:10 <dsal> Huh. Oh, are you writing them in the Main module?
23:38:33 <dsal> Does `:l app/Main.hs` work? I think it might not.
23:39:04 <dsal> When I'm being lazy, I'll just paste in stuff with GHCI multiline stuff: `:{\n` [paste] `:}\n`
23:39:18 <arkanoid> wait, I wan not exporting all the function in module declaration
23:39:26 <arkanoid> s/wan/was
23:40:06 <dsal> You can just get rid of the () thing in the declaration.
23:40:19 <arkanoid> now I got there, but literal strings are still converted to [Char], even if I do have {-# LANGUAGE OverloadedStrings #-} on top (and it works with stack test)
23:40:27 × Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection)
23:40:40 <dsal> Literal strings are [Char]
23:41:02 <dsal> Do you expect them to be something else? Or do you mean in your ghci session?
23:41:08 <dsal> `:set -X OverloadedStrings`
23:41:17 <dsal> There's not supposed to be a space there.
23:41:34 <dsal> `:set -XXXStraightEdgeXXX`
23:41:59 <arkanoid> i mean in the ghci session. With the build it works
23:42:13 <dsal> Yeah, so you need to set that for your GHCI session, not just the particular file you loaded.
23:42:25 <dsal> Different files often use different language features.
23:42:34 <arkanoid> yeah! it works
23:43:02 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 245 seconds)
23:43:20 <arkanoid> you were saying about quickcheck, it that a bot?
23:43:35 × chomwitt quits (~chomwitt@ppp-94-67-220-135.home.otenet.gr) (Remote host closed the connection)
23:43:48 <janus> @package QuickCheck
23:43:48 <lambdabot> https://hackage.haskell.org/package/QuickCheck
23:44:19 <jeetelongname> @help
23:44:19 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
23:44:24 <jeetelongname> @list
23:44:24 <lambdabot> What module? Try @listmodules for some ideas.
23:44:24 × acidjnk quits (~acidjnk@p200300d0c72b9516f180e3afe24121d7.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
23:44:40 <arkanoid> oh! Monkey test but monkeys have phds!
23:44:54 <dsal> arkanoid: QuickCheck is ye olde property testing. It's a religion.
23:45:01 × retroid_ quits (~retro@97e2ba5d.skybroadband.com) (Ping timeout: 268 seconds)
23:45:16 <janus> damn straight, and since it involves lawless typeclasses, it is heresy :O
23:45:49 <dsal> Back in the day, people used to write tests by thinking about input and output to their stuff and writing code that would take that input and verify they got the output they expected. Such madness.
23:46:21 <janus> in that what grandpa meant when he said "unit test"?
23:46:48 <dsal> Yeah. They'd test like, one thing and be done. Rarely writing tests like this:
23:46:49 <dsal> @check \x -> abs (x :: Int8) >= 0
23:46:51 <lambdabot> +++ OK, passed 100 tests.
23:46:53 <dsal> yay!
23:46:54 <dsal> @check \x -> abs (x :: Int8) >= 0
23:46:56 <lambdabot> *** Failed! Falsifiable (after 74 tests):
23:46:56 <lambdabot> -128
23:47:09 <dsal> oh no! It turns out the absolute value of a number isn't always >= 0!
23:47:34 <janus> aah, so a unit test is a property test parameterized by unit, aka (). got it
23:47:51 <dsal> @check (== ())
23:47:53 <lambdabot> +++ OK, passed 100 tests.
23:47:57 <dsal> Yay! My unit tests pass.
23:47:58 <arkanoid> I'm having those kind of insight while reading "category theory for programmers". I feel like I should have read this back when I was an university students. Now it's kinda late and I've too much python in my veins and I need a complete reformat
23:48:06 × aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
23:48:29 × lbseale quits (~lbseale@user/ep1ctetus) (Quit: Client closed)
23:48:42 <dsal> arkanoid: There's a variety of videos like this: https://www.youtube.com/watch?v=hXnS_Xjwk2Y
23:49:16 <janus> arkanoid: i tried reading it when i was a university student doing python and i didn't have the patience for it :P
23:49:43 aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net)
23:49:57 <dsal> arkanoid: I did something like this in python in... the past: http://dustin.sallings.org/2010/10/27/breakdancer.html
23:50:13 <dsal> TL;DR: if you only write tests for things you think of, your customers find your bugs.
23:50:53 × aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Client Quit)
23:51:03 aplainze1akind joins (~johndoe@captainludd.powered.by.lunarbnc.net)
23:51:24 <arkanoid> I've been a videogame programmer for the majority of my professional life. I kinda know what real users can test that internal testing won't even think possible doing
23:51:46 <geekosaur> human fuzzers unite!
23:52:01 <dsal> I'd *really* like coverage directed fuzzing for my property tests.
23:52:25 <dsal> I think go might get that soon. I've used some of the early versions of it. It's terribly slow and a terrible API, but I think they may have figured it out.
23:52:45 <janus> are you referring to afl?
23:53:43 <dsal> Yeah, it might be related to that. It's abstracted away at work so I don't actually know what the mechanism was.
23:54:13 <dsal> It's incredibly slow and the API was incredibly bad, but you could do things that are super difficult to even think about.
23:55:23 × mrkajetanp_ quits (~mrkajetan@2a01:4b00:ea36:6c00:7994:941c:3f5d:2b88) (Ping timeout: 255 seconds)
23:55:32 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
23:55:42 mrkajetanp joins (~mrkajetan@2a01:4b00:ea36:6c00:7994:941c:3f5d:2b88)
23:55:57 × zgrep quits (~zgrep@user/zgrep) (Quit: It's a quitter's world.)
23:56:36 zgrep joins (~zgrep@user/zgrep)

All times are in UTC on 2021-07-21.