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.