Home liberachat/#haskell: Logs Calendar

Logs on 2022-05-22 (liberachat/#haskell)

00:00:07 × gurkenglas quits (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) (Ping timeout: 260 seconds)
00:02:10 × pfharlock quits (~pfharlock@cpe-74-138-169-108.kya.res.rr.com) (Ping timeout: 240 seconds)
00:04:52 dcoutts__ joins (~duncan@host86-150-41-206.range86-150.btcentralplus.com)
00:07:10 × dcoutts_ quits (~duncan@host86-150-41-206.range86-150.btcentralplus.com) (Ping timeout: 240 seconds)
00:10:48 × romesrf quits (~romes@185.5.8.134) (Quit: WeeChat 3.4.1)
00:14:42 × alp quits (~alp@user/alp) (Ping timeout: 260 seconds)
00:15:20 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
00:17:44 <sm> jackdk: I saw your https://www.reddit.com/r/haskell/comments/uuevb1/reflexbackendsocket0201_released_ghc_902_support :
00:17:45 <sm> > makes Reflex an interesting potential choice for MUD servers
00:18:27 <sm> of course, now I must ask, are you running a haskell MUD somewhere ?
00:19:00 <sm> surely it's time for the haskell MUD
00:20:33 <EvanR> MUDs work by having a lot of scheduled or scheduled then rescheduled events that are dispatched at the correct time
00:20:55 <EvanR> not in response to any event at that time
00:21:07 <EvanR> as I understood it, it's not something reflex just does
00:21:18 <EvanR> could work if you try hard enough though xD
00:26:35 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 260 seconds)
00:27:08 <exarkun> I finally started porting my Python MUD server to Haskell a couple weeks ago
00:27:29 <exarkun> And I found a few simple student projects in that space as I was thinking about how to get started
00:27:38 <exarkun> Who wouldn't want a Haskell MUD server
00:29:59 <exarkun> I don't know Reflex but wouldn't an Inform-like system work well as an FRP system?
00:30:18 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
00:37:34 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 272 seconds)
00:37:58 <sm> go exarkun!
00:38:33 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
00:38:43 <sm> isn't Inform more about modelling using an amazing natural language DSL, than concurrency architecture ?
00:39:32 <sm> it would be quite interesting to hear your ongoing python vs haskell experiences
00:40:23 <sm> MUD-like things sure seem to love highly dynamic, hot reloading systems
00:40:36 wroathe joins (~wroathe@user/wroathe)
00:43:28 <EvanR> yes the best is when a section can be reloaded without kicking everyone offline
00:43:55 <EvanR> either globally, in that area or both
00:44:42 <EvanR> or the MOO way and everything is sourced from a persistent database and edited in real time
00:45:41 <sm> multi-user adventure as a wiki. That certainly sounds possible in haskell
00:46:40 <sm> what would be the safe scripting language you'd let users go wild with ?
00:46:55 <EvanR> haskell!!!!111
00:47:03 <sm> you maniac
00:47:05 <EvanR> ok. idris
00:47:16 <sm> lol
00:47:30 <jackdk> sm: it has been on my to-do list for ages, but no. reflex-libtelnet is built on a non-reflex binding: https://hackage.haskell.org/package/libtelnet so that could be good. I feel like reflex's `Dynamic` type is good for reloading data, but hot-loading code is hard. I never managed to write a hotboot server in straight Haskell though
00:47:31 <sm> I would like to see that
00:47:49 <jackdk> I think I would play with scripting mobs, etc, using hslua
00:48:00 <sm> yeah
00:48:25 <sm> when it gets to that point I start thinking python sounds pretty good!
00:49:08 × mmhat quits (~mmh@p200300f1c742cc01ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
00:50:14 <jackdk> I really liked hslua when I played with it the other week, and you can use fennel if you want FP in your scripting
00:50:32 <EvanR> python D:
00:50:36 <EvanR> in a haskell MUD
00:51:12 <sm> fennel you say... can you use that with hslua ?
00:51:17 <EvanR> I used lua for a lot of mud code and... it got old
00:53:18 <sm> "the speed, simplicity, and reach of Lua with the flexibility of a lisp syntax and macro system... Anywhere you can run Lua code, you can run Fennel code"
00:54:50 × spacenautx quits (~spacenaut@user/spacenautx) (Ping timeout: 240 seconds)
00:55:08 × Topsi quits (~Topsi@dyndsl-095-033-022-188.ewe-ip-backbone.de) (Read error: Connection reset by peer)
00:56:30 benin joins (~benin@183.82.31.141)
01:02:46 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
01:03:03 img joins (~img@user/img)
01:03:15 <jackdk> sm: http://jackkelly.name/blog/archives/2022/05/01/haskell_lua_and_fennel/index.html
01:04:09 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 276 seconds)
01:05:03 mmhat joins (~mmh@p200300f1c744a725ee086bfffe095315.dip0.t-ipconnect.de)
01:05:08 <exarkun> EvanR: At worst you just hand your file descriptors to a new process.
01:05:32 <sm> jackdk: very cool
01:07:12 × Kaiepi quits (~Kaiepi@156.34.47.253) (Ping timeout: 260 seconds)
01:09:12 Infinite joins (~Infinite@49.39.122.125)
01:09:39 jmdaemon joins (~jmdaemon@user/jmdaemon)
01:14:08 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
01:22:22 × mmhat quits (~mmh@p200300f1c744a725ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
01:23:53 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
01:30:12 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
01:32:31 dcoutts joins (~duncan@host86-150-41-206.range86-150.btcentralplus.com)
01:36:00 × dcoutts__ quits (~duncan@host86-150-41-206.range86-150.btcentralplus.com) (Ping timeout: 276 seconds)
01:36:47 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
01:38:17 mmhat joins (~mmh@p200300f1c74601d3ee086bfffe095315.dip0.t-ipconnect.de)
01:38:43 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
01:39:15 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Client Quit)
01:42:02 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
01:50:48 andrey_ joins (~andrey@p200300dbcf4855005f41c91a08d0b9aa.dip0.t-ipconnect.de)
01:53:34 × andrey__ quits (~andrey@p200300dbcf35b9009a0ab587690af4b8.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
01:55:27 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
01:55:28 nate1 joins (~nate@98.45.169.16)
01:55:50 × euandreh quits (~euandreh@2804:14c:33:9fe5:2165:73d6:1630:f174) (Quit: WeeChat 3.5)
01:56:20 × stackdroid18 quits (14094@user/stackdroid) (Quit: hasta la vista... tchau!)
01:57:00 × mjacob quits (~mjacob@adrastea.uberspace.de) (Ping timeout: 260 seconds)
01:57:24 mjacob joins (~mjacob@adrastea.uberspace.de)
01:57:38 × Infinite quits (~Infinite@49.39.122.125) (Ping timeout: 252 seconds)
01:57:59 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
02:00:10 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds)
02:00:11 × Cale quits (~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com) (Read error: Connection reset by peer)
02:00:22 Cale joins (~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com)
02:00:25 zebrag joins (~chris@user/zebrag)
02:06:34 euandreh joins (~euandreh@2804:14c:33:9fe5:2165:73d6:1630:f174)
02:17:52 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37) (Remote host closed the connection)
02:22:12 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37)
02:30:37 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
02:33:25 aliabrar[m] joins (~aliabrarm@2001:470:69fc:105::1:2730)
02:33:51 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 276 seconds)
02:34:17 dsrt^ joins (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net)
02:34:39 aliabrar[m] parts (~aliabrarm@2001:470:69fc:105::1:2730) ()
02:39:18 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
02:44:13 × mmhat quits (~mmh@p200300f1c74601d3ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.5)
02:46:51 × xff0x quits (~xff0x@b133147.ppp.asahi-net.or.jp) (Ping timeout: 276 seconds)
02:52:14 × Midjak quits (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
02:59:31 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
02:59:31 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:59:31 finn_elija is now known as FinnElija
03:03:06 × benin quits (~benin@183.82.31.141) (Ping timeout: 276 seconds)
03:16:56 frost joins (~frost@user/frost)
03:18:31 × frost quits (~frost@user/frost) (Client Quit)
03:18:32 xff0x joins (~xff0x@b133147.ppp.asahi-net.or.jp)
03:22:34 frost joins (~frost@user/frost)
03:24:29 coot joins (~coot@213.134.190.95)
03:25:24 yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net)
03:27:50 Guest54 joins (~Guest54@modemcable048.16-160-184.mc.videotron.ca)
03:30:50 <Guest54> Can someone explain me what <> do ? is it the same as ++ to concatenate two lists ?
03:31:02 <Guest54> > [1,2,3] <> [4,5,6]
03:31:05 <lambdabot> [1,2,3,4,5,6]
03:31:12 <Guest54> > [1,2,3] ++ [4,5,6]
03:31:15 <lambdabot> [1,2,3,4,5,6]
03:31:46 <pavonia> (<>) is more general
03:32:06 <pavonia> > Just [1,2,3] <> Just [4,5,6]
03:32:08 <lambdabot> Just [1,2,3,4,5,6]
03:35:14 <Guest54> it can also be used for ordering ?
03:35:26 <Guest54> instance Semigroup Ordering where
03:35:26 <Guest54>     LT <> _ = LT
03:35:27 <Guest54>     EQ <> y = y
03:35:27 <Guest54>     GT <> _ = GT
03:36:48 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
03:37:05 × mokee quits (~mokee@37.228.215.63) (Quit: off)
03:37:44 mokee joins (~mokee@37.228.215.63)
03:37:46 gehmehgeh joins (~user@user/gehmehgeh)
03:38:48 × dsrt^ quits (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 244 seconds)
03:39:11 × coot quits (~coot@213.134.190.95) (Quit: coot)
03:40:50 <pavonia> You can build more interesting sortings using that, but I forgot how that was done
03:42:01 dsrt^ joins (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net)
03:42:40 <pavonia> > sortBy (comparing head <> comparing length) [ [7], [4,5,6], [8,9], [1,2,3] ]
03:42:42 <lambdabot> [[1,2,3],[4,5,6],[7],[8,9]]
03:43:06 <pavonia> Err
03:43:35 <pavonia> Not the best example, but you see the point
03:44:52 coot joins (~coot@213.134.190.95)
03:44:54 <Guest54> Thanks !!
03:46:19 <Guest54> I m actually trying to solve a problem and i m using <> in the compare. I ll try to describe the problem and give my try so it can be more clear
03:48:04 <Guest54> Supposing my list defined as [[Id, time, priority] , [Id, time, priority], [Id, time, priority] ... ]
03:48:04 <Guest54> In This exemple, i want to order my lists in an increasing way depending on the priorities and if I have two equal priorities I order them depending on the time (whoever has the greatest time comes first):
03:48:05 <Guest54> From this : [["43525", "5", "2"],["25545", "7", "5"],["7455", "3", "4"],["3586", "8", "2"]]
03:48:05 <Guest54> To this : [[3586, 8, 2], [43525, 5, 2], [7455, 3, 4], [25545, 7, 5]]
03:48:06 <Guest54> My try :
03:48:06 <Guest54> First, I convert all the strings to Int using read fucntion and mapping on all elements :
03:48:07 <Guest54> toSort = map (map (read :: String -> Int)) [["43525", "5", "2"],["25545", "7", "5"],["7455", "3", "4"],["3586", "8", "2"]]
03:48:07 <Guest54> Then i sort the lists:
03:48:08 <Guest54> sortLGT x y = compare (x!!2) (y!!2) -- compare priorities
03:48:08 <Guest54>     <> compare (y!!1) (x!!1) -- compare time in descending order
03:55:41 <dsal> Guest54: Just put priority first.
03:55:48 <dsal> Then use sort.
03:57:04 × gehmehgeh quits (~user@user/gehmehgeh) (Ping timeout: 240 seconds)
03:57:24 × dka quits (~code-is-a@ns3059207.ip-193-70-33.eu) (Quit: My Ex-Girlfriend once told me: I'm not a slut, I'm just popular)
03:57:53 <dsal> Also, you most certainly shouldn't be using lists that way. I'm not 100% sure what you've got going on, but this looks like a case of "use the right data types and you don't have to write any code"
03:58:04 gehmehgeh joins (~user@user/gehmehgeh)
03:58:06 dka joins (~code-is-a@ns3059207.ip-193-70-33.eu)
03:59:35 × coot quits (~coot@213.134.190.95) (Quit: coot)
04:00:07 coot joins (~coot@213.134.190.95)
04:00:16 × yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Read error: Connection reset by peer)
04:01:02 yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net)
04:04:25 <mjrosenb> ok, I have a ghcjs question. I have some code like {on button click $ do my_code}
04:05:10 <mjrosenb> my_code has a bunch of dom manipulation in it, and some print statements
04:05:16 <mjrosenb> but the print statements never get executed.
04:05:24 <mjrosenb> and for the life of me, I can not figure out why.
04:06:58 <mjrosenb> technically, the print statements are {lift (putStrLn "logging")}
04:08:39 <mjrosenb> since for some reason I haven't 100% grokked, that bit of code is in the ReaderT foo IO monad, not just the IO monad
04:09:28 <mjrosenb> more confusingly, {lift (putStrLn (trace "logging" "LOGGING"))} outputs logging, but not LOGGING.
04:10:44 <mjrosenb> as for what I'm actually trying to do, I'm appending a bunch of nodes to a div, and I want them to appear at least somewhat incrementally
04:11:07 <mjrosenb> but fro whatever godawful reason, they only appear after all of the data has been put into them.
04:12:54 × mvk quits (~mvk@2607:fea8:5ce3:8500::ba9a) (Ping timeout: 272 seconds)
04:14:50 × coot quits (~coot@213.134.190.95) (Quit: coot)
04:16:28 <EvanR> should it be liftIO
04:16:52 <EvanR> if lift type checks... probably should also work
04:18:16 <tabemann> Guest54: that sounds like something that should use a priority queue
04:18:35 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 244 seconds)
04:19:16 × mokee quits (~mokee@37.228.215.63) (Quit: off)
04:19:32 mokee joins (~mokee@37.228.215.63)
04:25:34 × yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
04:26:56 × mokee quits (~mokee@37.228.215.63) (Quit: off)
04:27:25 mokee joins (~mokee@37.228.215.63)
04:29:09 <mjrosenb> EvanR: I just tried with liftIO, and it compiled as well, but also didn't execute the putStrLn.
04:29:59 <mjrosenb> I also tried {on button click $ lift $ do my_code}, assuming there was something fishy going on with the reader monad being equivalent to const for sequencing actions
04:30:08 <mjrosenb> but that didn't fix anything.
04:30:42 <EvanR> so nothing appears in the dev console, nothing appears in the terminal, and nothing appears in a random file named "stdout"
04:37:56 vicfred joins (~vicfred@user/vicfred)
04:41:52 × dcoutts quits (~duncan@host86-150-41-206.range86-150.btcentralplus.com) (Ping timeout: 260 seconds)
04:45:29 × noteness quits (~noteness@user/noteness) (Remote host closed the connection)
04:45:46 noteness joins (~noteness@user/noteness)
04:47:31 × dsrt^ quits (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 246 seconds)
04:50:07 dsrt^ joins (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net)
04:51:21 × Guest54 quits (~Guest54@modemcable048.16-160-184.mc.videotron.ca) (Quit: Client closed)
05:15:25 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 244 seconds)
05:18:47 gurkenglas joins (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de)
05:26:46 Infinite joins (~Infinite@49.39.115.237)
05:30:19 coot joins (~coot@213.134.190.95)
05:30:25 nate1 joins (~nate@98.45.169.16)
05:31:56 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
05:40:18 jakalx parts (~jakalx@base.jakalx.net) ()
05:44:32 × coot quits (~coot@213.134.190.95) (Quit: coot)
05:49:03 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
05:50:25 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
05:51:37 × raym quits (~raym@user/raym) (Quit: kernel update, rebooting...)
05:55:30 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 272 seconds)
06:00:02 jakalx joins (~jakalx@base.jakalx.net)
06:00:39 raym joins (~raym@user/raym)
06:00:44 _mokee_ joins (~mokee@37.228.215.63)
06:01:03 × _mokee_ quits (~mokee@37.228.215.63) (Client Quit)
06:03:25 ashpil joins (~ashpil@98.42.126.67)
06:04:55 slack1256 joins (~slack1256@191.125.227.212)
06:06:37 <ashpil> So I recently started learning Haskell after wanting to do so for a while, and honestly having heard that learning it will "change the way you think about programming", after reading the first few chapters of "Learn you a Haskell", I'm feeling a bit... underwhelmed. It's possible I just haven't dove deep enough yet, but the thing is, I do have
06:06:37 <ashpil> somewhat significant prior functional programming experience -- not in pure languages I guess, but I've done a decent amount of OCaml, Rust, and Elixir, relying quite heavily on their functional parts. Is it possible that Haskell just doesn't have all that much to offer (in terms of learning about new ways to think as a programmer or PL design) to
06:06:38 <ashpil> someone like me?
06:07:59 <slack1256> Yeah, I think that if you already know OCAML, then haskell is not that big of a jump.
06:09:09 × dsrt^ quits (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 244 seconds)
06:09:35 slac72117 joins (~slack1256@191.125.99.74)
06:09:56 <dsal> ocaml isn't pure. Learning purity helps quite a bit.
06:10:18 <dsal> Haskell also is a lot… taller? Much nicer high level abstractions.
06:11:45 <ashpil> I understand the languages I've used aren't pure, but at least OCaml I've only ever used completely purely so I think I've had that perspective
06:12:10 × slack1256 quits (~slack1256@191.125.227.212) (Ping timeout: 240 seconds)
06:12:15 slac62079 joins (~slack1256@181.43.226.229)
06:12:17 <dsal> I've not heard great things about LYAH, and haven't read it myself, but I'd had production ocaml a decade or so before I started doing anything serious in Haskell.
06:12:26 dsrt^ joins (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net)
06:12:48 slac62079 is now known as slack1256
06:14:10 × slac72117 quits (~slack1256@191.125.99.74) (Ping timeout: 240 seconds)
06:14:34 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
06:15:52 <dsal> I don't know what kind of work you do or what's important to you. I've kind of settled on Haskell just because it's easier than anything else I've done.
06:17:46 <ashpil> I guess I just wanted to learn it for this claimed "new way to think about programming" or even just from a perspective of being interested in PL design and implementation, thought it might teach me something new. But maybe I just have to dig deeper for that
06:18:12 <dsal> I don't know what you know, so it's hard to know how to tell what might help you. :)
06:19:22 sabry joins (~sabry@197.37.144.70)
06:20:09 <dsal> Do you feel that you have a pretty good understanding of some of the base classes like Functor, Applicative, Foldable, and Traversable? That stuff will get you super far.
06:20:43 <dsal> Oh, and Semigroup/Monoid.
06:21:47 <dsal> I see so much boilerplate in other languages because people can't express simple common things like `fold`
06:21:48 <dsal> :t fold
06:21:49 <lambdabot> (Foldable t, Monoid m) => t m -> m
06:22:12 <dsal> :t traverse
06:22:14 <lambdabot> (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
06:23:15 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
06:24:21 <dsal> :t dimap
06:24:22 <lambdabot> Profunctor p => (a -> b) -> (c -> d) -> p b c -> p a d
06:27:13 <ashpil> Hmm I guess I'll keep digging deeper, then! Thanks
06:27:40 <dsal> I write a lot of parsers. One of the parsers I work on at work groks fixed-width format files with fixed-width fields within a fixed line. The parser is constructed such that the data type contains the length of a line such that the *implementation* of a row parser composes field parsers whose length must equal the total length of the line.
06:29:11 <dsal> e.g., `parseRow :: Parser 30; parseRow = parseFifteenCharacterField *> parseTenCharacterField` won't compile because the sum of those field parsers won't consume 30 characters.
06:30:04 <dsal> Same for serialization. If you try to emit something other than 30 characters, you'd get a compiler error. That stuff is nice.
06:31:18 <dsal> It's controversial, but I like slightly non-trivial profunctor lenses, as well. Seeing how that stuff's defined and how they compose is pretty hard to do elsewhere.
06:31:54 × ashpil quits (~ashpil@98.42.126.67) (Ping timeout: 252 seconds)
06:34:08 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 272 seconds)
06:46:16 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Remote host closed the connection)
06:53:44 acidjnk joins (~acidjnk@p200300d0c7068b45e4e7c1a76966715b.dip0.t-ipconnect.de)
06:58:30 × Chai-T-Rex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
06:58:46 × dsrt^ quits (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 246 seconds)
07:01:34 Chai-T-Rex joins (~ChaiTRex@user/chaitrex)
07:04:44 Tuplanolla joins (~Tuplanoll@91-159-68-39.elisa-laajakaista.fi)
07:06:00 dsrt^ joins (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net)
07:14:29 × zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection)
07:15:36 zaquest joins (~notzaques@5.130.79.72)
07:25:54 × slack1256 quits (~slack1256@181.43.226.229) (Remote host closed the connection)
07:26:50 × dsrt^ quits (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 240 seconds)
07:29:46 yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net)
07:31:29 dsrt^ joins (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net)
07:36:03 × dsrt^ quits (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 256 seconds)
07:37:48 syntactic_sugar joins (~amoljha@2601:644:8000:6640::d839)
07:39:12 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
07:43:27 × syntactic_sugar quits (~amoljha@2601:644:8000:6640::d839) (Quit: WeeChat 3.4.1)
07:46:00 coot joins (~coot@213.134.190.95)
07:48:15 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
07:49:58 dsrt^ joins (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net)
07:50:01 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
07:50:13 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
07:55:12 × dsrt^ quits (~dsrt@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 272 seconds)
08:06:15 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37) (Remote host closed the connection)
08:07:33 benin joins (~benin@183.82.31.141)
08:10:17 takuan joins (~takuan@178-116-218-225.access.telenet.be)
08:10:34 × lagooned quits (~lagooned@108-208-149-42.lightspeed.hstntx.sbcglobal.net) (Ping timeout: 244 seconds)
08:20:50 × mokee quits (~mokee@37.228.215.63) (Quit: off)
08:21:20 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
08:22:23 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
08:28:43 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 246 seconds)
08:33:09 cyphase joins (~cyphase@user/cyphase)
08:33:28 × sabry quits (~sabry@197.37.144.70) (Quit: Client closed)
08:38:06 jgeerds joins (~jgeerds@d53604b0.access.ecotel.net)
08:38:23 <sm> you know how haskell programs usually fail with text decoding errors, if you read non-ascii text with LANG= or so ?
08:39:20 <sm> on linux, that is easy to reproduce. On mac today I can't seem to break it this way, no matter what I set LANG or LC_ALL to. Any idea why that could be ?
08:39:21 <Hecate> sm: hmm, Bodigrim opened a ticket about the message on the GHC tracker not so long ago
08:39:31 <Hecate> hmm
08:40:05 <Hecate> for mac I'm unable to help in a practical way, I don't own one
08:41:23 <sm> some magic on mac ? I should check #ghc maybe
08:41:45 <sm> oops already did
08:42:41 Kaiepi joins (~Kaiepi@156.34.47.253)
08:45:15 <Hecate> sm: does "strace" reveal something?
08:45:57 <sm> unfortunately that's not a usable thing on mac
08:48:18 <Rembane> Is there a mactrace on mac?
08:48:26 <sm> ok I got dtruss to run, but no it doesn't reveal anything (to me)
08:51:03 emad joins (~emad@156.214.61.111)
08:52:12 <sm> ok yes I think this shows ghc locale is unaffected by the usual env vars, on mac:
08:52:13 <sm> $ LC_ALL= ghc -e 'import System.IO' -e 'print localeEncoding'
08:52:13 <sm> UTF-8
08:52:42 <jackdk> sm: someone made a with-utf8 package to do all the magic twiddling, if you wrap `main` with it
08:53:18 <sm> I just started using that, it's exactly what I want to test (I hope to see it fail with the old code and pass with the new)
08:53:47 <sm> ironic, this has been breaking for so many years now I can't break it
08:56:46 <sm> the encoding seems to be read from c here: https://hackage.haskell.org/package/base-4.16.1.0/docs/src/GHC-IO-Encoding-Iconv.html#localeEncodingName
08:57:52 wootehfoot joins (~wootehfoo@user/wootehfoot)
08:59:18 chomwitt joins (~chomwitt@2a02:587:dc1e:cc00:630a:df82:afd2:eb70)
09:00:17 × yosef36 quits (~yosefweis@2001:470:69fc:105::1:e501) (Quit: You have been kicked for being idle)
09:02:04 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
09:02:14 Vajb joins (~Vajb@2001:999:231:409f:b036:bb6b:e334:8a8e)
09:02:33 mokee joins (~mokee@37.228.215.63)
09:03:08 × shriekingnoise_ quits (~shrieking@201.231.16.156) (Quit: Quit)
09:04:31 × mokee quits (~mokee@37.228.215.63) (Client Quit)
09:04:32 <Maxdamantus> sm: what happens when you set `LC_ALL=C` ?
09:05:05 <sm> $ LC_ALL=C ghc -e 'import System.IO' -e 'print localeEncoding'
09:05:05 <sm> UTF-8
09:05:35 <Maxdamantus> Maybe LC_ALL is a glibc thing.
09:06:40 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37)
09:09:18 <Maxdamantus> Hm, no, it seems to be standardised in POSIX.
09:11:02 <Maxdamantus> What happens if you do `echo 'á' | LC_ALL=C grep -o ^.`?
09:11:50 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37) (Ping timeout: 272 seconds)
09:13:08 <sm> $ echo 'á' | LC_ALL=C grep -o ^.
09:13:08 <sm>
09:13:28 <Maxdamantus> So it works there.
09:13:39 <amongas666[m]> @compose pl undo [ [ x | x <- xs, even x ] | xs <- xxs]
09:13:40 <lambdabot> (line 1, column 29):
09:13:40 <lambdabot> unexpected "{"
09:13:40 <lambdabot> expecting variable, "(", operator or ")"
09:13:58 <sm> yeah.. that's a C program. It's ghc-compiled programs I seem to be having trouble with
09:16:42 <sm> oh well, time to sleep. Thanks, all
09:18:25 × benin quits (~benin@183.82.31.141) (Ping timeout: 246 seconds)
09:19:10 MajorBiscuit joins (~MajorBisc@86-88-79-148.fixed.kpn.net)
09:19:31 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
09:19:55 romesrf joins (~romes@185.5.8.134)
09:22:19 _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl)
09:24:36 × Infinite quits (~Infinite@49.39.115.237) (Ping timeout: 252 seconds)
09:25:59 × gurkenglas quits (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) (Quit: leaving)
09:28:53 mokee joins (~mokee@37.228.215.63)
09:29:50 × jgeerds quits (~jgeerds@d53604b0.access.ecotel.net) (Ping timeout: 240 seconds)
09:31:47 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 260 seconds)
09:38:18 christiansen joins (~christian@83-95-137-75-dynamic.dk.customer.tdc.net)
09:39:10 × MajorBiscuit quits (~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 240 seconds)
09:44:36 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 244 seconds)
09:48:34 × mokee quits (~mokee@37.228.215.63) (Quit: off)
09:49:18 king_gs joins (~Thunderbi@187.201.97.18)
09:52:43 MajorBiscuit joins (~MajorBisc@86-88-79-148.fixed.kpn.net)
09:54:37 mokee joins (~mokee@37.228.215.63)
09:59:54 × king_gs quits (~Thunderbi@187.201.97.18) (Quit: king_gs)
10:02:19 × mokee quits (~mokee@37.228.215.63) (Quit: off)
10:02:35 mokee joins (~mokee@37.228.215.63)
10:06:46 co-JOMBLO-38-CAR joins (~co-JOMBLO@92.223.85.241)
10:07:50 × MajorBiscuit quits (~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 240 seconds)
10:07:54 mmhat joins (~mmh@p200300f1c74601d3ee086bfffe095315.dip0.t-ipconnect.de)
10:15:26 <[exa]> if I for whatever wicked reason want to build dynamic executables with cabal, what's the way to go? I found `executable-dynamic: True` but that just doesn't do anything despite documented
10:16:12 <sm> isn't that the default kind of build ?
10:16:24 <[exa]> ok solved, I needed to pass it to `cabal configure` as a flag.
10:16:42 <[exa]> thanks #haskell for rubberducking :]
10:16:55 <[exa]> sm: I thought everything is built as static by default, no?
10:17:04 <sm> I thought the reverse
10:17:08 <[exa]> (at least the binary sizes kinda tell that tale
10:17:18 <sm> usually people are working hard to make things static
10:17:58 <[exa]> weird
10:18:09 <sm> I guess the usual default is somewhere in the middle.. neither fully dynamic nor fully static
10:18:17 <[exa]> yeah I'd suspect that
10:18:38 Midjak joins (~Midjak@82.66.147.146)
10:18:44 sm installs ghc 9.4 alpha with amazing ease, thanks ghcup!
10:18:44 sm https://discourse.haskell.org/t/ghc-9-4-1-alpha1-is-now-available/4455/6?u=simonmic
10:19:26 <[exa]> ah yeah really, it only packs the haskell libraries as static, and system/C-ish stuff stays dynamic
10:19:53 <[exa]> mildly confusing, thanks for clarification :]
10:20:24 <maerwald> static is the default (for haskell libraries)
10:20:32 <maerwald> C libraries is a different topic
10:20:58 <[exa]> btw what's new in 9.4?
10:21:19 <sm> https://discourse.haskell.org/t/ghc-9-4-1-alpha1-is-now-available/4455 tells
10:21:29 <[exa]> maerwald: yeah on the second look it is perfectly logical this way, one only kinda doesn't assume the half-static state
10:21:57 <sm> and by the way discourse is awesome, I don't know why I'm still messing around with reddit
10:21:59 <maerwald> yes, because C has stable ABI
10:22:46 × mmhat quits (~mmh@p200300f1c74601d3ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
10:25:54 <[exa]> oh lovely, 150kb binary
10:26:10 <sm> woah
10:26:26 <[exa]> (I've got a pandoc on the same system image, so 99.9% of libraries are really shared)
10:29:10 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
10:32:50 × co-JOMBLO-38-CAR quits (~co-JOMBLO@92.223.85.241) (Remote host closed the connection)
10:35:58 cosmos1 joins (cosmos@user/cosmos1)
10:39:47 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
10:40:43 azimut joins (~azimut@gateway/tor-sasl/azimut)
10:45:32 <maerwald> [exa]: shipping dynamically linked haskell binaries isn't too hard either
10:45:59 <maerwald> but doesn't make much sense for most cases
10:50:13 <[exa]> yeah, I'm building completely closed and intact system images actually, and they should be small so copying the static libs would be a complete waste
10:51:01 benin joins (~benin@183.82.31.141)
10:55:31 zincy joins (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313)
11:05:46 mmhat joins (~mmh@p200300f1c74601d3ee086bfffe095315.dip0.t-ipconnect.de)
11:07:14 Infinite joins (~Infinite@49.39.118.171)
11:07:54 × yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection)
11:08:46 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37)
11:09:20 yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net)
11:13:30 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37) (Ping timeout: 260 seconds)
11:27:07 × yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection)
11:32:05 cosmos1_ joins (cosmos@user/cosmos1)
11:32:28 dcoutts joins (~duncan@host213-122-143-3.range213-122.btcentralplus.com)
11:33:04 × acidjnk quits (~acidjnk@p200300d0c7068b45e4e7c1a76966715b.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
11:34:10 × cosmos1 quits (cosmos@user/cosmos1) (Ping timeout: 240 seconds)
11:41:19 × Vajb quits (~Vajb@2001:999:231:409f:b036:bb6b:e334:8a8e) (Read error: Connection reset by peer)
11:41:43 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
11:58:03 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
12:02:43 × Infinite quits (~Infinite@49.39.118.171) (Quit: Client closed)
12:15:07 × christiansen quits (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) (Ping timeout: 260 seconds)
12:17:00 alp joins (~alp@user/alp)
12:20:42 × Unicorn_Princess quits (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection)
12:22:23 machinedgod joins (~machinedg@24.105.81.50)
12:28:22 christiansen joins (~christian@83-95-137-75-dynamic.dk.customer.tdc.net)
12:38:30 × zincy quits (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313) (Remote host closed the connection)
12:48:00 Infinite joins (~Infinite@49.39.123.254)
12:55:40 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
12:55:53 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
13:02:48 × causal quits (~user@50.35.83.177) (Quit: WeeChat 3.5)
13:10:20 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37)
13:11:58 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
13:14:53 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37) (Ping timeout: 244 seconds)
13:18:08 yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net)
13:18:15 × yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection)
13:18:57 yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net)
13:22:02 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
13:23:00 × alp quits (~alp@user/alp) (Ping timeout: 260 seconds)
13:23:46 × yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
13:30:46 × xff0x quits (~xff0x@b133147.ppp.asahi-net.or.jp) (Ping timeout: 246 seconds)
13:33:31 xff0x joins (~xff0x@b133147.ppp.asahi-net.or.jp)
13:38:09 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 276 seconds)
13:43:39 yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net)
13:44:02 × mmhat quits (~mmh@p200300f1c74601d3ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.5)
13:47:34 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
13:47:41 azimut_ joins (~azimut@gateway/tor-sasl/azimut)
13:51:54 × coot quits (~coot@213.134.190.95) (Quit: coot)
13:59:32 Josh joins (~Josh@216.154.3.96)
14:00:18 <raehik> Where's the definition for Natural in GHC pre-9.2? New one is in ghc-bignum in GHC.Num.Natural
14:00:59 <raehik> ahh found it, GHC.Natural
14:08:13 mc47 joins (~mc47@xmonad/TheMC47)
14:08:46 × mokee quits (~mokee@37.228.215.63) (Quit: off)
14:09:09 mokee joins (~mokee@37.228.215.63)
14:10:07 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
14:10:18 × mokee quits (~mokee@37.228.215.63) (Client Quit)
14:12:40 ubert joins (~Thunderbi@p200300ecdf3b995b118dba1cd1127f24.dip0.t-ipconnect.de)
14:13:19 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37)
14:13:26 mokee joins (~mokee@37.228.215.63)
14:14:23 × mokee quits (~mokee@37.228.215.63) (Client Quit)
14:15:52 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
14:17:50 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37) (Ping timeout: 260 seconds)
14:25:42 <Bulby[m]> why is `foo *> pure bar` equivilant to `foo $> bar`
14:25:57 <Bulby[m]> or why does hlint suggest it
14:28:29 <hpc> :t \foo bar -> foo *> pure bar
14:28:30 <lambdabot> Applicative f => f a -> b -> f b
14:28:34 <hpc> :t \foo bar -> foo $> bar
14:28:35 <lambdabot> error:
14:28:35 <lambdabot> • Variable not in scope: ($>) :: t -> t1 -> t2
14:28:35 <lambdabot> • Perhaps you meant one of these:
14:29:10 <hpc> @let import Data.Functor
14:29:11 <hpc> :t \foo bar -> foo $> bar
14:29:12 <lambdabot> Defined.
14:29:13 <lambdabot> Functor f => f a -> b -> f b
14:29:34 <Bulby[m]> ah, so basically the same...
14:29:40 <hpc> yep
14:29:44 <Bulby[m]> :t \foo bar -> foo *> bar
14:29:45 <lambdabot> Applicative f => f a -> f b -> f b
14:30:18 <Bulby[m]> `$>` just takes a normal value
14:30:57 <Bulby[m]> they behave the same right? `fmap . const` doesn't sound identical to `foo *> pure bar`
14:31:35 <Franciman> :t fmap . const
14:31:37 <lambdabot> Functor f => b -> f a -> f b
14:31:48 <hpc> :t (*>)
14:31:49 <lambdabot> Applicative f => f a -> f b -> f b
14:32:05 <hpc> (*>) already has that const-ish behavior
14:32:11 <Franciman> yes
14:32:13 <hpc> you just need to take a thing of type b (or a)
14:32:16 <hpc> and make it fit f b
14:32:22 <Franciman> `fmap . const` seems equal to (<$)
14:32:29 <Franciman> :t (<$)
14:32:30 <lambdabot> Functor f => a -> f b -> f a
14:33:04 <Bulby[m]> wait, so `[1, 2, 3] *> pure 4 -- [4, 4, 4]` is correct?
14:33:51 <Franciman> it should be [4] i think?
14:33:56 <Bulby[m]> it is!
14:34:00 <Franciman> > [1, 2, 3] *> pure 4
14:34:02 <lambdabot> [4,4,4]
14:34:08 <Franciman> you are correct Bulby[m]
14:34:21 <Bulby[m]> wow, they are identical! amazing
14:34:26 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
14:35:39 <Bulby[m]> which is why i assume hlint always reccomends replacing `foo *> pure bar` with `foo $> bar`
14:35:46 <Franciman> yes
14:38:18 coot joins (~coot@213.134.190.95)
14:38:25 <Bulby[m]> is that a convention?
14:38:36 <Franciman> wait, which one?
14:38:43 <Bulby[m]> it's not stated in docs
14:38:48 <Bulby[m]> them being equivilant
14:38:48 <Franciman> using $> over foo *> pure bar
14:38:53 <Franciman> ah
14:38:55 <Franciman> uhm
14:39:00 <hpc> yeah, more or less
14:39:14 <hpc> if two things are the same, prefer the more generic one
14:39:20 <hpc> plus it's just simpler to write
14:39:36 <Franciman> https://hackage.haskell.org/package/base-4.16.1.0/docs/Data-Functor.html#v:-60--36-
14:39:45 <Franciman> it's written here that the default efinition of <$ is fmap . const
14:39:51 <hpc> :t mapM
14:39:52 <lambdabot> (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b)
14:40:00 <Franciman> but you can change it, yeah
14:40:04 <Franciman> this is true
14:40:08 <Bulby[m]> I don't see the signifigance of that lol
14:40:19 <Bulby[m]> :t fmap . const
14:40:20 <lambdabot> Functor f => b -> f a -> f b
14:40:27 <Franciman> (<$) = fmap . const
14:40:35 <Franciman> by default
14:40:41 <Franciman> if you implement a functor instance
14:40:45 <Franciman> and define fmap
14:40:52 <hpc> :t liftM -- rather
14:40:53 <Franciman> then (<$) = fmap . const, by default
14:40:53 <lambdabot> Monad m => (a1 -> r) -> m a1 -> m r
14:40:57 <hpc> :t liftA
14:40:59 <lambdabot> Applicative f => (a -> b) -> f a -> f b
14:40:59 <hpc> :t fmap
14:41:01 <lambdabot> Functor f => (a -> b) -> f a -> f b
14:41:22 <hpc> each of those is the same function, but using fmap is recommended because more types are Functor than are Monad
14:41:32 <hpc> and every Monad is also Functor
14:42:04 <Bulby[m]> liftA looks like it is described to only be used for deriving a Functor instance from a Applicative instance
14:42:58 <geekosaur> liftA is more or less generalized liftM, which historicallyexisted only to recover a Functor from a Monad because it wasn't a superclass yet
14:43:20 <geekosaur> and completes the liftAn set
14:43:49 <Bulby[m]> i'm saying it's docs say it's used for making a functor instance from an applicative instance
14:44:32 <geekosaur> that doesn't actually make any sense because anything that is Applicative is also functor (and has been for the entire existence of Applicative)
14:44:58 <Bulby[m]> ... why does liftA exist at all then
14:45:01 <geekosaur> guessing the doc was copied from liftM where that was true for s/Applicative/Monad/
14:46:11 hololeap can't wait for the release of liftA4
14:46:19 <Bulby[m]> \o/
14:46:32 <hpc> someday when we have the technology for it, we might even get liftA5
14:46:48 <hololeap> O_O
14:46:51 <Bulby[m]> ez `liftA4 f a b c d = liftA3 f a b c <*> d`
14:47:04 <hololeap> stop that sorcery
14:47:25 <hpc> yeah, what do you think we do here, functional programming? :P
14:47:40 <Bulby[m]> `liftA5 f a b c d e = liftA4 f a b c d <*> e`
14:47:59 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
14:48:00 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
14:48:00 wroathe joins (~wroathe@user/wroathe)
14:48:33 <hololeap> Bulby[m]: plz stop, you're scaring me :(
14:48:35 <Bulby[m]> https://hackage.haskell.org/package/base-4.16.1.0/docs/Control-Monad.html#v:liftM5 explain this
14:48:36 kenaryn joins (~aurele@89-88-44-27.abo.bbox.fr)
14:49:22 <hololeap> I assume liftM5 is a holdover from before (<*>) was a thing
14:50:31 <Bulby[m]> we have fun here
14:51:23 <hpc> you could still use `ap` but much like lisp and perl programmers, we love pressing the shfit key :D
14:55:52 romes[m] joins (~romesmatr@2001:470:69fc:105::2:1660)
14:58:43 zebrag joins (~chris@user/zebrag)
14:58:54 × yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection)
14:59:29 <geekosaur> yeh, Monad goes up to liftM6, but also had `ap` which became `<*>` when Applicative arrived
14:59:43 yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net)
15:00:05 × emad quits (~emad@156.214.61.111) (Remote host closed the connection)
15:06:53 jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
15:09:02 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
15:10:25 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37)
15:11:57 off^ joins (~off@c-24-126-228-147.hsd1.ga.comcast.net)
15:13:59 tubogram44 joins (~tubogram@user/tubogram)
15:14:02 alp joins (~alp@user/alp)
15:14:44 × tubogram4 quits (~tubogram@user/tubogram) (Ping timeout: 240 seconds)
15:14:44 tubogram44 is now known as tubogram4
15:15:59 × yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection)
15:16:48 yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net)
15:18:57 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
15:19:05 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: Textual IRC Client: www.textualapp.com)
15:20:29 jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
15:21:51 × yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
15:21:51 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
15:22:08 × fryguybo1 quits (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) (Quit: leaving)
15:25:49 × romesrf quits (~romes@185.5.8.134) (Ping timeout: 256 seconds)
15:27:12 gensyst joins (gensyst@user/gensyst)
15:27:50 <gensyst> How can this code possibly be type-checking? (Why can I wrap a pointer to something into that something all over again??) let e = (C.Cairo (undefined :: Ptr C.Cairo) :: C.Cairo)
15:29:20 <geekosaur> because Ptr is not really a pointer to something in the C sense
15:29:50 <geekosaur> it's a pointer to some value from C, and the type is more of a tag than anything else
15:29:51 yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net)
15:29:53 <Bulby[m]> it's a magic type basically iirc
15:30:03 machinedgod joins (~machinedg@24.105.81.50)
15:30:22 <geekosaur> the actual thing it's pointing to is some C structure that you typically can't represent directly in Haskell
15:30:58 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
15:31:11 <geekosaur> (well, in this case it's pointing to nothing because it's using `undefined`, so you can think of it as a null pointer)
15:31:57 jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
15:32:05 sabry joins (~sabry@197.37.144.70)
15:32:05 <gensyst> wtf lol
15:32:21 <Bulby[m]> i hate C externs
15:32:30 jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
15:32:34 <Bulby[m]> in all sorts of languages they are nothing but witchcraft
15:32:41 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
15:33:00 <gensyst> geekosaur, so what is e in my example? the underlying thing being pointed at?
15:33:26 <geekosaur> I don't know what C.Cairo is, aside from "a constructor"
15:33:53 <geekosaur> the constructor contains what amounts to a null pointer
15:34:21 <Bulby[m]> you are never supposed to make your own pointers I think
15:34:34 <Bulby[m]> you just use `Ptr` as a type sig for extern functions
15:34:53 <geekosaur> it's valid to pass a Ptr around.
15:35:09 <geekosaur> I would question why it uses undefined instead of nullPtr, but that's just me
15:35:10 × off^ quits (~off@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 240 seconds)
15:35:25 <Bulby[m]> yes, but you shouldn't create them manually, aside from in C
15:35:32 <geekosaur> unless they want an exception if it's touched, which might be reasonable
15:35:33 <gensyst> geekosaur, if I write this instead, let e = (C.Cairo (undefined :: Ptr Int) :: C.Cairo) I get the error "Couldn't match type ‘Int’ with ‘C.Cairo’". So we know this C.Cairo constructor is indeed expecting a Ptr C.Cairo lol?
15:35:40 × frost quits (~frost@user/frost) (Ping timeout: 252 seconds)
15:35:40 <gensyst> it's expecting a pointer to itself!
15:35:44 × jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Client Quit)
15:35:45 <geekosaur> like I told you, it's a tag
15:35:47 <Bulby[m]> It's a phantom type
15:35:55 <geekosaur> no, it is not pointing to itself
15:35:57 <Bulby[m]> or a tag
15:36:01 <geekosaur> a Ptr Foo is not a Foo
15:36:33 <geekosaur> its representation is the address of something. the type is ignored except for type checking purposes
15:36:44 <geekosaur> so you can't mix it with a Ptr Int
15:37:17 <Bulby[m]> C pointers are similar, no? you can (unsafely) cast them however your heart desires
15:37:33 <geekosaur> there is an unsafe cast operation, in fact
15:37:51 <geekosaur> but in the normal case you can't in Haskell, the type must match
15:37:51 <Bulby[m]> unsafe coerce in haskell right
15:38:06 <geekosaur> don't even need that, there is castPtr
15:38:18 <Bulby[m]> oh
15:38:21 <Bulby[m]> yuck
15:38:50 <Bulby[m]> i'm proud of myself, I wrote C++ externs that don't segfault
15:39:11 off^ joins (~off@c-24-126-228-147.hsd1.ga.comcast.net)
15:39:19 <gensyst> Thanks for the above! I'll have to sleep on this a bit and get back to this when I'm more focused.
15:40:01 <Bulby[m]> Polysemy is being mean - it isn't letting me use `note` even though the Sem I return has `Error` in it's members list
15:40:21 <Bulby[m]> `polysemyHelp :: P.Sem [P.Fail, P.Error T.Text] VersionInfo`
15:40:51 <Bulby[m]> this is a helper function btw
15:40:58 <Bulby[m]> which is why it's hardcodec
15:41:01 <Bulby[m]> s/hardcodec/hardcoded/
15:41:05 <Bulby[m]> NO I EDITED IT
15:41:18 <Bulby[m]> sorry for any garbage on the irc end
15:43:03 <geekosaur> gensyst, consider https://play-haskell.tomsmeding.com/play/paste/YMxHdqaS/1
15:43:56 <geekosaur> single edits are usually okay, we get the point. it's when you do a bunch of them or replacing the whole line or etc. that it gets messy
15:45:16 × yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection)
15:45:34 gpncarl joins (~gpncarl@120.244.220.74)
15:45:50 yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net)
15:47:58 <Bulby[m]> ah, it's another case of polysemy being insane
15:48:08 <Bulby[m]> thankfully polysemy-plugin fixes insanity (mostly)
15:50:46 × yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
15:51:00 fryguybob joins (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com)
15:52:55 yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net)
15:55:09 <gensyst> geekosaur, should I then just view such a constructor C.Cairo :: Ptr C.Cairo -> C.Cairo as a weird artifact of the way C.Cairo has chosen to do FFI?
15:55:25 <geekosaur> yes
15:55:41 <gensyst> but can nothing more be said? as in, could C.Cairo have done this differently?
15:55:50 <gensyst> this is so weird lol
15:56:04 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds)
15:56:04 <geekosaur> it could have created a distinct type to represent the pointer to a C struct
15:56:11 <gensyst> It's like the C.Cairo inside the Ptr is not the same as the outer C.Cairo
15:56:27 <geekosaur> it's not
15:56:33 <geekosaur> it's some C value
15:56:41 jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
15:56:43 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
15:56:45 <geekosaur> but there's no good reason to do so and you can't take a Ptr to a Haskell value, so why not reuse the Haskell type?
15:56:46 __monty__ joins (~toonn@user/toonn)
15:56:59 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 256 seconds)
15:57:04 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds)
15:57:12 <gensyst> geekosaur, good question! So is this commonly done when doing FFI?
15:57:32 <geekosaur> if there are a bunch of different C values to keep track of, yes
15:57:33 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
15:57:48 <gensyst> ok thanks! this is key intel
15:57:53 <geekosaur> since this is probably a binding to libcairo, that would seem likely
15:58:01 <geekosaur> it's what I've been trying to tell you :)
15:59:11 <gensyst> :D
15:59:43 <geekosaur> more correctly you can take a pointer to a Haskell value if you try hard enough, but the garbage collector won't update it if it moves the value around so it's useless and eventually dangerous
16:00:01 <maerwald> I still don't understand why Haskellers are eager to use effects systems that have fishy semantics. But that reinforces my suspicion that abstraction is valued more than correctness in Haskell, generally.
16:00:12 hololeap joins (~hololeap@user/hololeap)
16:00:13 × off^ quits (~off@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 244 seconds)
16:01:01 <maerwald> trying out research ideas in production... let's go :D
16:02:20 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
16:04:20 gurkenglas joins (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de)
16:04:44 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
16:06:11 andai joins (~andai@86.32.39.178)
16:06:37 × andai quits (~andai@86.32.39.178) (Client Quit)
16:07:44 andai joins (~andai@86.32.39.178)
16:11:57 nattiestnate joins (~nate@202.138.250.17)
16:12:50 × andai quits (~andai@86.32.39.178) (Quit: Connection closed)
16:14:18 × gensyst quits (gensyst@user/gensyst) (Quit: Leaving)
16:16:07 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
16:16:34 andai joins (~andai@86.32.39.178)
16:16:40 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
16:17:45 jpds joins (~jpds@gateway/tor-sasl/jpds)
16:19:26 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
16:19:53 gpncarl parts (~gpncarl@120.244.220.74) (WeeChat 3.4.1)
16:20:55 × cosmos1_ quits (cosmos@user/cosmos1) (Quit: Lost terminal)
16:21:15 <monochrom> I don't think any programming community prioritize correctness, really.
16:22:13 <sm> ada ?
16:22:33 <maerwald> you mean agda?
16:23:00 <sm> no, I mean the ada language community
16:23:50 <sm> they take a certain kind of correctness very seriously. But of course there are multiple kinds of correctness and they also care about results too
16:25:30 × cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds)
16:27:35 × Kaiepi quits (~Kaiepi@156.34.47.253) (Ping timeout: 256 seconds)
16:27:48 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 276 seconds)
16:30:11 geekosaur joins (~geekosaur@xmonad/geekosaur)
16:31:17 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
16:31:33 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
16:31:48 eggplant_ joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
16:31:50 andai48 joins (~andai@89.205.139.77)
16:32:34 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds)
16:32:55 andai48 is now known as andaii
16:33:28 × andai quits (~andai@86.32.39.178) (Ping timeout: 246 seconds)
16:33:47 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:84c:3a94:a15f:5a37) (Ping timeout: 240 seconds)
16:34:57 × eggplant_ quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:35:02 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
16:35:39 hololeap joins (~hololeap@user/hololeap)
16:36:11 <hpc> there's a joke about https://www.youtube.com/watch?v=RqTsUtQLRFk in there somewhere
16:36:54 × wolfshappen quits (~waff@irc.furworks.de) (Quit: later)
16:37:22 wolfshappen joins (~waff@irc.furworks.de)
16:40:33 Kaiepi joins (~Kaiepi@156.34.47.253)
16:43:11 abiss27 joins (~abiss27@user/abiss)
16:44:38 phuegrvs[m] joins (~phuegrvsm@2001:470:69fc:105::1:65e4)
16:45:18 × christiansen quits (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) (Ping timeout: 272 seconds)
16:46:45 × yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection)
16:47:37 yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net)
16:49:18 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
16:51:50 × abiss27 quits (~abiss27@user/abiss) (Quit: hasta la vista... tchau!)
16:53:02 abiss27 joins (~abiss27@user/abiss)
16:53:13 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
16:57:01 <hololeap> what was the magic to add to cabal.project.local so that you can point cabal to a package that exists locally, but not on hackage?
16:57:57 <hololeap> point cabal to the source dir of dependency that isn't on hackage
16:58:35 <hpc> https://cabal.readthedocs.io/en/3.4/cabal-project.html#specifying-the-local-packages looks like
16:59:54 <hololeap> yeah, I tried adding the line `packages: . ../parsable/`, but I get the error "TODO: add support for multiple packages in a directory."
17:00:04 cheater joins (~Username@user/cheater)
17:01:30 stackdroid18 joins (14094@user/stackdroid)
17:02:15 × cheater quits (~Username@user/cheater) (Client Quit)
17:02:30 <hpc> hmm
17:02:57 cheater joins (~Username@user/cheater)
17:03:14 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:03:17 <hpc> oh, i was wrong
17:03:19 <hpc> https://cabal.readthedocs.io/en/3.4/cabal-project.html#cfg-field-extra-packages
17:03:22 <maerwald> `packages: dir1 dir2` works
17:03:33 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
17:03:58 <maerwald> hololeap: is there a cabal file in ../parsable/?
17:04:49 <hololeap> yeah
17:04:56 <maerwald> then that should work
17:05:04 zeenk joins (~zeenk@2a02:2f04:a104:ef00:10:581:f80f:b980)
17:05:49 Sqaure is now known as Square
17:07:18 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
17:07:37 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
17:08:36 <hololeap> yeah, I don't get it: http://sprunge.us/N0p7UW
17:09:58 <geekosaur> what's in cabal.project? I think it might be combined with cabal.project.local
17:10:00 Enrico63 joins (~Enrico63@81.109.143.226)
17:10:12 <geekosaur> the packages field at least
17:10:47 <hololeap> there is no cabal.project file
17:10:55 <monochrom> Is there ../cabal.project ?
17:11:07 <hololeap> no
17:11:35 <sclv> You should put all this in cabal.project, not cabal.project.local fwiw
17:12:01 <hololeap> well, this is so I can develop without having to push parsable to hackage first
17:12:49 × Enrico63 quits (~Enrico63@81.109.143.226) (Client Quit)
17:14:15 <maerwald> hololeap: when you omit cabal.project, an implicit cabal.project will be used
17:14:48 <maerwald> which is something like 'packages: ./*.cabal' I think
17:15:11 <hololeap> oh, ok
17:15:14 × Square quits (~a@user/square) (Quit: ZNC 1.6.3+deb1 - http://znc.in)
17:15:27 × yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Remote host closed the connection)
17:15:37 Square joins (~a@user/square)
17:15:45 jakalx joins (~jakalx@base.jakalx.net)
17:15:50 <hololeap> yeah, making a cabal.project with just "packages: ." and then "packages: ../parsable/" in cabal.project.local worked
17:16:00 Unicorn_Princess joins (~Unicorn_P@93-103-228-248.dynamic.t-2.net)
17:16:52 <hololeap> in fact, removing cabal.project and leaving cabal.project.local as that works as well
17:16:56 <hololeap> thanks for the tip, maerwald
17:17:57 econo joins (uid147250@user/econo)
17:23:50 × abiss27 quits (~abiss27@user/abiss) (Ping timeout: 240 seconds)
17:26:14 × Josh quits (~Josh@216.154.3.96) (Quit: Connection closed)
17:26:31 yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net)
17:31:17 × yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
17:33:31 <hololeap> is there a way to use GeneralizedNewtypeDeriving for IsList?
17:34:04 <hololeap> I don't see a way to define Item without making an instance block
17:38:56 zincy joins (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313)
17:39:56 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 244 seconds)
17:40:26 zincy_ joins (~zincy@2a00:23c8:970c:4801:5ce3:174f:85c3:8411)
17:41:15 × andaii quits (~andai@89.205.139.77) (Quit: Connection closed)
17:44:07 × zincy quits (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313) (Ping timeout: 240 seconds)
17:47:48 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
17:47:50 iqubic joins (~iqubic@2601:602:9502:c70:922d:79af:4ac2:afe3)
17:48:46 <iqubic> Does anyone here use The Haskell Language Server? I'm running into this bug: https://github.com/haskell/haskell-language-server/issues/1971
17:49:04 <geekosaur> there's a #haskell-language-server channel
17:49:14 <iqubic> I didn't know that.
17:53:55 × ircbrowse_tom quits (~ircbrowse@2a01:4f8:1c1c:9319::1) (ZNC 1.7.5+deb4 - https://znc.in)
18:10:02 ircbrowse_tom joins (~ircbrowse@static.162.49.55.162.clients.your-server.de)
18:10:02 × fiddlerwoaroof quits (~fiddlerwo@user/fiddlerwoaroof) (Ping timeout: 260 seconds)
18:10:05 Server sets mode +Cnt
18:10:10 defanor joins (~defanor@tart.uberspace.net)
18:10:18 bcoppens joins (~bartcopp@vpn2.bartcoppens.be)
18:11:09 × madnight_ quits (~madnight@static.59.103.201.195.clients.your-server.de) (Ping timeout: 276 seconds)
18:11:33 madnight joins (~madnight@static.59.103.201.195.clients.your-server.de)
18:11:39 <Bulby[m]> it's been 5 minutes and sinkLazy still hasn't finished
18:12:10 hexology joins (~hexology@user/hexology)
18:13:34 geekosaur suspects the "lazy" part is relevant
18:13:37 × zincy_ quits (~zincy@2a00:23c8:970c:4801:5ce3:174f:85c3:8411) (Remote host closed the connection)
18:13:40 × toluene quits (~toluene@user/toulene) (Quit: The Lounge - https://thelounge.chat)
18:13:49 <Bulby[m]> 😳
18:14:23 <Bulby[m]> well you see, toArchive wants a lazy bytestring
18:15:22 <geekosaur> i.e. something has to demand it (via demanding the result of that extractFilesFromArchive, and quite possibly trying to access one of the extracted files won't be enough)
18:15:55 <Bulby[m]> won't `toArchive` demand it
18:16:06 wz1000 joins (~zubin@static.11.113.47.78.clients.your-server.de)
18:16:07 Lycurgus joins (~juan@user/Lycurgus)
18:16:17 × coot quits (~coot@213.134.190.95) (Quit: coot)
18:16:20 × azimut_ quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
18:16:28 <Bulby[m]> altho it takes in a lazy bs
18:16:39 <geekosaur> that, and it's pure
18:16:48 azimut joins (~azimut@gateway/tor-sasl/azimut)
18:16:49 <Bulby[m]> 😳
18:16:57 <Bulby[m]> and what does that mean
18:17:08 × ncf quits (~n@monade.li) (Quit: Fairfarren.)
18:17:09 <geekosaur> extractFilesFromArchive is in IO and can actually demand execution
18:17:25 ncf joins (~n@monade.li)
18:17:28 <geekosaur> pure computations are more declarative, and inherently lazy
18:17:45 <Bulby[m]> if
18:17:46 <Bulby[m]> fllgihg;
18:18:02 <Bulby[m]> so...
18:18:08 <Bulby[m]> how would I fix this mess
18:18:19 <Lycurgus> many matrix nicks, the final ... uh evolution
18:19:27 <geekosaur> good question, I would have expected extractFilesFromArchive to demand it but apparently that's not enough. possibly because it's inside the conduit? my knowledge of conduit is pretty weak
18:19:27 <Bulby[m]> I don't want to pull it all into memory - that would defeat the point of using conduit
18:19:46 × Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt)
18:20:33 <geekosaur> right, but extracting files may do so anyway, unless it's designed to work with conduit. but somehow I would expect not having to do that sink etc. in that case
18:20:53 <Bulby[m]> hm, maybe I should try to find a zip conduit lib
18:21:01 <Bulby[m]> instead of mashing them together
18:22:13 <Bulby[m]> zip-stream looks promising (by promising I mean 3 entries below where I looked 🙃)
18:22:35 × zeenk quits (~zeenk@2a02:2f04:a104:ef00:10:581:f80f:b980) (Quit: Konversation terminated!)
18:23:46 <Bulby[m]> oh, it does it in memory. I want to save
18:25:35 zincy joins (~zincy@host86-160-236-152.range86-160.btcentralplus.com)
18:26:11 <geekosaur[m]> And I wasn't even using mine!
18:27:30 <Bulby[m]> i am going to commit murder
18:27:32 × off^ quits (~off@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 252 seconds)
18:27:38 <Bulby[m]> a good lib isn't on stack
18:30:14 <Bulby[m]> how do I lookup packages on stackage
18:30:53 <Clint> use the website
18:31:16 <Bulby[m]> the website uses hoogle which is not very conveinent for looking up packages
18:31:43 <maerwald> Bulby[m]: check out libarchive
18:32:19 <Bulby[m]> argh! i don't want to use hoogle! I just want to find package
18:32:24 × Infinite quits (~Infinite@49.39.123.254) (Ping timeout: 252 seconds)
18:32:50 <yushyin> https://www.stackage.org/lts-19.7 ctrl-f
18:32:52 <yushyin> ;D
18:33:19 <Bulby[m]> i know that's probably a joke but it didn't work
18:34:03 × nattiestnate quits (~nate@202.138.250.17) (Quit: WeeChat 3.5)
18:34:16 <Bulby[m]> what is a package repo with no dedicated search feature?
18:35:07 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
18:35:37 × zincy quits (~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Remote host closed the connection)
18:39:56 <yushyin> more of a joke since i don't use stack/stackage but nevertheless it should list all available packages for the lts-19.7, no?
18:40:22 <monochrom> and pretty searchable by ctrl-f
18:40:23 <Bulby[m]> well, it loads it while you scroll
18:40:28 <yushyin> https://hackage.haskell.org/packages/browse?terms=%28distro%3AStackage%29 maybe this works better for you
18:40:45 <Bulby[m]> \o/
18:42:33 <Bulby[m]> libarchive isn't on stack
18:42:56 × ubert quits (~Thunderbi@p200300ecdf3b995b118dba1cd1127f24.dip0.t-ipconnect.de) (Quit: ubert)
18:43:43 <Bulby[m]> zip-stream gives me flashbacks to haxe manually unzipping files
18:44:02 Kaipei joins (~Kaiepi@156.34.47.253)
18:44:45 <geekosaur> there's a libarchive-conduit but it's like 8 years old and therefore unlikely to be in any recent stackage lts
18:46:19 <geekosaur> oh, it's the wrong end of it
18:46:35 × iqubic quits (~iqubic@2601:602:9502:c70:922d:79af:4ac2:afe3) (Quit: Client closed)
18:46:59 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
18:47:11 off^ joins (~off@c-24-126-228-147.hsd1.ga.comcast.net)
18:48:10 × Kaiepi quits (~Kaiepi@156.34.47.253) (Ping timeout: 272 seconds)
18:51:51 iqubic joins (~iqubic@2601:602:9502:c70:922d:79af:4ac2:afe3)
18:52:35 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
18:56:09 <maerwald> Bulby[m]: so? Just add it
18:57:45 Guest60 joins (~Guest60@189.120.76.108)
19:01:35 × Guest60 quits (~Guest60@189.120.76.108) (Client Quit)
19:01:49 justsomeguy joins (~justsomeg@user/justsomeguy)
19:05:05 machinedgod joins (~machinedg@24.105.81.50)
19:09:19 christiansen joins (~christian@83-95-137-75-dynamic.dk.customer.tdc.net)
19:11:43 michalz joins (~michalz@185.246.204.122)
19:13:49 × bgamari quits (~bgamari@2001:470:e438::1) (Remote host closed the connection)
19:16:33 × off^ quits (~off@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 244 seconds)
19:18:01 <maerwald> sm: can you scrape project links from hackage DB?
19:20:53 <sm> maerwald: yes! I'd like that to be one of the next data sets. I plan to poll the rss feed for new links, but any thoughts on the easiest way to download the full set ?
19:21:15 <maerwald> you just download the actual hackage db and... dunno, parse it
19:21:21 <maerwald> it's some obscure binary format though
19:24:12 coot joins (~coot@213.134.190.95)
19:24:45 jmdaemon joins (~jmdaemon@user/jmdaemon)
19:25:31 × xstill- quits (xstill@fimu/xstill) (Ping timeout: 256 seconds)
19:25:31 × xsarnik quits (xsarnik@lounge.fi.muni.cz) (Ping timeout: 256 seconds)
19:27:05 <sm> sounds.. gun
19:27:19 <sm> oops, freudian slip. Fun.
19:27:30 <Bulby[m]> footgun?
19:27:53 <sm> bristling with footguns
19:28:28 × sabry quits (~sabry@197.37.144.70) (Quit: Client closed)
19:28:38 <sm> sclv, do you happen to know if there's an easier hackage api or snapshot for getting a list of package names ?
19:29:15 bgamari joins (~bgamari@2001:470:e438::1)
19:29:30 <Bulby[m]> does conduit/req have a rate limit or is my internet comically bad
19:30:58 <geekosaur> there's a rate limit (streamly is faster) but it's not *that* low
19:31:26 <Bulby[m]> can I have a ballpark estimate of that rate limit
19:31:56 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4)
19:32:58 <geekosaur> there isn't a fixed one
19:33:12 <geekosaur> it's just not as fast as it might potentially be
19:33:37 <geekosaur> (I don't have an estimate since my internet is throttled)
19:36:34 <Bulby[m]> i'm getting ~0.1MB/howeverlong it takes pcmanfm to update
19:37:03 <geekosaur> that seems *way* too slow
19:37:14 <Bulby[m]> hmm
19:39:08 <Bulby[m]> i'm running arch which doesn't do traffic shaping
19:39:38 sm uploaded an image: (156KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/ibdBqSDgfQxvufJJFtGUccAM/image.png >
19:39:56 × stackdroid18 quits (14094@user/stackdroid) (Quit: hasta la vista... tchau!)
19:40:00 sm uploaded an image: (380KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/FZemaZymqHBmxqOoOgelqjoC/image.png >
19:40:00 <Bulby[m]> i thought images don't work on irc?
19:40:29 <sm> ^ getting to the important stuff now
19:40:34 ubert joins (~Thunderbi@p200300ecdf3b995b6d3ba42fb5eab692.dip0.t-ipconnect.de)
19:40:40 <sm> they appear as links on irc
19:40:57 <hpc> the matrix bridge translates it into a /me
19:41:00 <hpc> * sm uploaded an image: (156KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/ibdBqSDgfQxvufJJFtGUccAM/image.png >
19:41:15 off^ joins (~off@c-24-126-228-147.hsd1.ga.comcast.net)
19:41:23 × off^ quits (~off@c-24-126-228-147.hsd1.ga.comcast.net) (Remote host closed the connection)
19:41:47 wroathe joins (~wroathe@50-205-197-50-static.hfc.comcastbusiness.net)
19:41:47 × wroathe quits (~wroathe@50-205-197-50-static.hfc.comcastbusiness.net) (Changing host)
19:41:47 wroathe joins (~wroathe@user/wroathe)
19:41:59 <Bulby[m]> hm, i defo need to add a progress thing of some kind
19:42:49 jmd_ joins (~jmdaemon@user/jmdaemon)
19:43:21 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 248 seconds)
19:43:32 <Bulby[m]> yeah lime (what I am downloading) is just absurdly large
19:44:04 <Bulby[m]> switching to hscript which is ~40kb makes it happy
19:45:44 <Bulby[m]> I assume my internet just sucks
19:50:49 × ubert quits (~Thunderbi@p200300ecdf3b995b6d3ba42fb5eab692.dip0.t-ipconnect.de) (Quit: ubert)
19:51:16 ubert joins (~Thunderbi@p200300ecdf3b995b6d3ba42fb5eab692.dip0.t-ipconnect.de)
19:52:15 × ubert quits (~Thunderbi@p200300ecdf3b995b6d3ba42fb5eab692.dip0.t-ipconnect.de) (Client Quit)
19:58:51 Sgeo joins (~Sgeo@user/sgeo)
19:59:17 <Bulby[m]> cool cli libs \o/
19:59:19 <Bulby[m]> ?
20:01:26 <sclv> sm maerwald the 01-index.tar.gz isnt an obscure binary format, its literally a tarball of cabal files
20:02:19 <sclv> with the stipulation that when multiples of the same name exist, last one is most recent revision… which was designed into the spec of tarfiles back in the 70s even!
20:02:26 stackdroid18 joins (14094@de1.hashbang.sh)
20:02:34 <sm> great, thanks sclv. Though large that sounds like the easiest source of package names then ? Do you remember the stable url ?
20:03:14 × stackdroid18 quits (14094@de1.hashbang.sh) (Client Quit)
20:03:19 <sclv> if you just want names, there’s other apis that might be easier too — follow the api link from hackage frontpqge
20:03:31 <sm> will do, thanks
20:04:05 <sm> https://hackage.haskell.org/api, this is great
20:04:13 <sclv> im on my phone so can’t give stable url at the moment — the reason 01-index may be better is because its the Source of Truth for package data in general
20:09:45 <Bulby[m]> for cli libs I will enact DO IT URSELF!
20:11:46 jgeerds joins (~jgeerds@d53604b0.access.ecotel.net)
20:12:34 notzmv joins (~zmv@user/notzmv)
20:13:12 × _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
20:13:25 Sgeo_ joins (~Sgeo@user/sgeo)
20:14:30 <wroathe> Hey guys, what would be the best way to do multiline strings for something like postgresql-simple? Like if I wanted multiline SQL for ease of reading
20:14:51 zincy joins (~zincy@2a00:23c8:970c:4801:5ce3:174f:85c3:8411)
20:15:47 <hpc> https://stackoverflow.com/a/22919011
20:15:49 <wroathe> Oh, ignore me. Seems there's a quasi quoter available
20:15:54 <hpc> heh, or that
20:15:55 <sm> Bulby: for command line parsing I like cmdargs, others here like optparse-applicative. Both are complicated but powerful. There are lots of more limited but easier alternatives, like docopts
20:15:58 × Sgeo quits (~Sgeo@user/sgeo) (Ping timeout: 244 seconds)
20:16:06 <geekosaur> quasiquoter or string gaps, yeh
20:16:36 <sm> docopt
20:16:39 <hpc> string gaps have the nice benefit of allowing you to preserve the whitespace of both haskell and sql
20:17:07 <hpc> the source code will be aligned with the surrounding function definitions, and the sql will be as if it started at column 0 with its own indentation intact
20:17:26 <hpc> if you need to print it in an error message or similar
20:17:48 <Bulby[m]> hm, I don't really like applicativeness
20:17:53 <Bulby[m]> with no monad
20:18:34 acidjnk joins (~acidjnk@p200300d0c7068b4571401365c1036792.dip0.t-ipconnect.de)
20:19:17 × abiss27 quits (~abiss27@user/abiss) (Quit: hasta la vista... tchau!)
20:19:39 <Bulby[m]> so I guess cmdargs?
20:21:55 <sm> this hackage api is great. Maybe could use hackage usernames as simple auth mechanism for voting.
20:22:20 <sm> Bulby: if you want lots of flexibility, yes
20:22:34 <sm> docopt if you want to get something going quickly with low boilerplate and don't mind a few rough edges
20:25:48 <Bulby[m]> well I need subcommands (i.e. `nylon install`, `nylon info`) and switches + more args
20:26:08 <Bulby[m]> are "modes" subcommands
20:29:08 <sm> yes
20:29:32 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
20:32:16 <Bulby[m]> hm, do I have to dip into `Explicit` to use them properly
20:34:04 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
20:34:23 <sm> I'm not sure.. that's the one I use
20:34:34 <Bulby[m]> noooo I want to use implicit
20:34:53 <sm> I believe in you!
20:34:58 <Bulby[m]> \o/
20:36:35 dcleonarski joins (~user@2804:d51:479c:4300:c312:71c1:ee9b:86ea)
20:39:27 azimut joins (~azimut@gateway/tor-sasl/azimut)
20:39:27 <sm> maerwald: I added the hackage packages (locally). That adds 16k rows to the current 1k table, and 5M to the page size, and makes the ui too slow on my fast laptop (m1) unfortunately. Some optimisations/restrictions and probably paging with ajax download will be needed I think.
20:40:24 <maerwald> Bulby[m]: why would applicative not be enough?
20:40:53 <sm> if anyone here can help with the necessary frontend changes, that would be most welcome
20:41:02 <maerwald> you only need monads to dynamically change parsing... which also means you cannot really automatically derive a --help text
20:41:34 <Bulby[m]> Idk, I just prefer monads
20:42:01 <maerwald> that's a bad habit then
20:42:13 <Bulby[m]> ☹️
20:42:42 <geekosaur> why would it even matter here
20:42:48 <Bulby[m]> ur right I should just enable applicative do and get on with it
20:42:59 <maerwald> uhm :D
20:43:09 <maerwald> applicative do is quite confusing, good luck
20:43:35 <Bulby[m]> I also dislike that it's named parser, when I am also using megaparsec
20:44:54 <sm> well it's definitely a parsing task (and a tricky one)
20:45:35 × vjoki quits (~vjoki@2a00:d880:3:1::fea1:9ae) (Quit: ...)
20:46:11 <Bulby[m]> i feel like I'm choosing between two sports teams (or something similar)
20:46:16 <Bulby[m]> no, picking the favorite child
20:47:45 <iqubic> I'm having cabal errors here, in this cabal file. "cabal build" is telling me there's an unexpected "h" here on line 12. Why? https://github.com/IQubic/TinyMod4Haskell/blob/main/TinyMod4.cabal#L12
20:48:25 × dcleonarski quits (~user@2804:d51:479c:4300:c312:71c1:ee9b:86ea) (Remote host closed the connection)
20:49:32 shriekingnoise joins (~shrieking@201.231.16.156)
20:51:47 <sm> iqubic: it doesn't want the .hs part
20:51:55 <iqubic> Thanks.
20:53:34 × christiansen quits (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) (Ping timeout: 272 seconds)
20:53:50 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
20:54:38 <Bulby[m]> lol optparse doesn't make immediate sense either - neither of them do
20:55:49 MajorBiscuit joins (~MajorBisc@80.146.187.107)
20:57:34 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds)
20:58:06 Guest9028 joins (~Guest90@139.47.6.251)
21:01:25 hololeap joins (~hololeap@user/hololeap)
21:01:44 × zincy quits (~zincy@2a00:23c8:970c:4801:5ce3:174f:85c3:8411) (Remote host closed the connection)
21:02:43 × MajorBiscuit quits (~MajorBisc@80.146.187.107) (Quit: WeeChat 3.4)
21:03:08 <sm> our last sports fans' discussion starts here: https://matrix.to/#/!hYueEvaBrsbfKxjshs:libera.chat/$8OBlk8aYRc2Gy3gamKHAuhnoMHi6Yxgcij1r0nFE2Sk
21:03:31 <Bulby[m]> haha I don't think I existed then
21:03:42 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 272 seconds)
21:03:59 <Bulby[m]> https://matrix.to/#/%23haskell%3Alibera.chat/%24qfXSiN9U5I40N0FbTeGEzUy8AdJI7ARu7vOPVN9kztE?via=matrix.org&via=libera.chat
21:04:12 <Bulby[m]> yeah if it did exist I would jump to it
21:04:13 <Bulby[m]> or nheko is being mean
21:04:48 <Bulby[m]> element is the same and I think it's much more stable so 🤷
21:05:14 <sm> actually just search the channel for "cmdargs", it seems a bit spread out
21:05:37 <sm> or try
21:05:37 <sm> @where ircbrowse
21:05:37 <lambdabot> https://ircbrowse.tomsmeding.com
21:06:04 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds)
21:06:14 <sm> oh is that no longer updated tomsmeding ? my bad
21:06:58 <geekosaur> you just got the landing page
21:07:03 <geekosaur> https://ircbrowse.tomsmeding.com/browse/lchaskell
21:07:34 <sm> oops I didn't notice the two #haskell links, clicked the wrong one
21:07:44 <geekosaur> right, the other is from freenode
21:07:47 <Bulby[m]> you can't search ☹️
21:07:56 <sm> consider putting those at the bottom tomsmeding ?
21:07:56 <geekosaur> yes, search is disabled
21:08:06 <Bulby[m]> disabled?
21:08:17 <geekosaur> it requires full text indexing to work
21:08:35 <geekosaur> which is something of an extra load
21:08:41 MajorBiscuit joins (~MajorBisc@80.146.187.107)
21:08:45 <Bulby[m]> "something"
21:09:38 <sm> despite the robots.txt excluding /browse, google does seem to index it: https://www.google.com/search?q=site%3Aircbrowse.tomsmeding.com
21:10:01 × Guest9028 quits (~Guest90@139.47.6.251) (Quit: Client closed)
21:10:02 Kaipei is now known as Kaiepi
21:10:48 <sm> though not terribly well.. https://www.google.com/search?q=site%3Aircbrowse.tomsmeding.com+cmdargs
21:11:34 <sm> actually, not bad when you click repeat the search with the omitted results included
21:11:50 <monochrom> Have you considered System.Console.GetOpt? It comes with GHC.
21:12:07 <sm> (I have been trying to figure out why google won't index the matrix logs at view.matrix.org, it's a big mystery)
21:12:48 <geekosaur> I think they want subcommands
21:13:09 <Bulby[m]> ^
21:16:02 hololeap joins (~hololeap@user/hololeap)
21:16:35 <Bulby[m]> not that I understand them 😉
21:17:40 pavonia joins (~user@user/siracusa)
21:18:51 dcleonarski joins (~user@2804:d51:479c:4300:c312:71c1:ee9b:86ea)
21:27:01 off^ joins (~off@c-24-126-228-147.hsd1.ga.comcast.net)
21:29:24 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 276 seconds)
21:30:36 × phma quits (~phma@host-67-44-208-86.hnremote.net) (Read error: Connection reset by peer)
21:31:04 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
21:31:09 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
21:31:28 azimut joins (~azimut@gateway/tor-sasl/azimut)
21:33:58 jpds joins (~jpds@gateway/tor-sasl/jpds)
21:34:34 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
21:36:42 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
21:41:40 phma joins (~phma@host-67-44-208-253.hnremote.net)
21:44:16 × phma quits (~phma@host-67-44-208-253.hnremote.net) (Read error: Connection reset by peer)
21:48:19 zeenk joins (~zeenk@2a02:2f04:a104:ef00:10:581:f80f:b980)
21:48:27 <Bulby[m]> how can I parse a specific arg with cmdargs
21:48:34 × coot quits (~coot@213.134.190.95) (Quit: coot)
21:48:45 <Bulby[m]> i have a type that I have a megaparsec for, how do I use it with cmdargs
21:50:26 <sm> maerwald: one issue is, hackage already does a good job of this: https://hackage.haskell.org/packages/search, https://hackage.haskell.org/packages/noscript-search
21:52:17 × off^ quits (~off@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 256 seconds)
21:53:39 <maerwald> sm: those are not project links
21:54:12 <maerwald> I can't search for homepage
21:54:37 off^ joins (~off@c-24-126-228-147.hsd1.ga.comcast.net)
21:54:50 × michalz quits (~michalz@185.246.204.122) (Remote host closed the connection)
21:55:58 <sm> I guess I misunderstood your idea, I am working on links to the hackage package page - you'd like to see links directly to the home page or github repo eh
21:56:48 <sm> I usually use the hackage page as my starting point, as it's reliable / in standard format..
21:57:17 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
21:58:15 <maerwald> yes, I mean homepage... I already have shortcuts for searching hackage
21:58:58 <sm> Bulby: you give a parsing function as flagValue I think.. https://hackage.haskell.org/package/cmdargs-0.10.21/docs/System-Console-CmdArgs-Explicit.html#t:Update
22:01:13 <sm> some examples here maybe: https://github.com/simonmichael/hledger/blob/master/hledger/Hledger/Cli/CliOptions.hs#L108
22:03:59 xsarnik joins (xsarnik@lounge.fi.muni.cz)
22:04:04 xstill- joins (xstill@fimu/xstill)
22:08:04 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
22:08:10 × Midjak quits (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
22:09:07 yauhsien joins (~yauhsien@61-231-39-34.dynamic-ip.hinet.net)
22:09:11 × ix quits (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Ping timeout: 252 seconds)
22:09:43 × gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection)
22:10:35 × benin quits (~benin@183.82.31.141) (Quit: The Lounge - https://thelounge.chat)
22:12:26 gehmehgeh joins (~user@user/gehmehgeh)
22:12:34 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
22:12:34 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds)
22:12:40 × hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection)
22:12:50 chexum joins (~quassel@gateway/tor-sasl/chexum)
22:13:33 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
22:13:37 × chomwitt quits (~chomwitt@2a02:587:dc1e:cc00:630a:df82:afd2:eb70) (Ping timeout: 260 seconds)
22:14:22 × yauhsien quits (~yauhsien@61-231-39-34.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
22:14:38 × acidjnk quits (~acidjnk@p200300d0c7068b4571401365c1036792.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
22:17:32 hololeap joins (~hololeap@user/hololeap)
22:17:55 stackdroid18 joins (14094@de1.hashbang.sh)
22:20:39 × stackdroid18 quits (14094@de1.hashbang.sh) (Changing host)
22:20:39 stackdroid18 joins (14094@user/stackdroid)
22:20:53 toluene joins (~toluene@user/toulene)
22:21:20 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
22:26:02 × Tuplanolla quits (~Tuplanoll@91-159-68-39.elisa-laajakaista.fi) (Quit: Leaving.)
22:28:47 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
22:29:10 × off^ quits (~off@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 240 seconds)
22:37:41 ix joins (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
22:40:39 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
22:48:00 P1RATEZ joins (piratez@user/p1ratez)
22:50:44 off^ joins (~off@c-24-126-228-147.hsd1.ga.comcast.net)
23:00:48 <hololeap> what are the chances of Apply ever making its way into base as a superclass of Applicative?
23:01:26 <geekosaur> I think edwardk has said some things about it
23:01:39 × MajorBiscuit quits (~MajorBisc@80.146.187.107) (Ping timeout: 240 seconds)
23:03:21 <geekosaur> I think Apply by itself might work, but iirc breaking Applicative down into Apply and Pointed won't because there's a difference between `(Apply f, Pointed f)` => and `Applicative f =>`
23:03:41 <geekosaur> sounded like a shortcoming of typeclasses to me
23:03:51 MajorBiscuit joins (~MajorBisc@80.146.187.107)
23:03:58 <geekosaur> or of System Fc's approach to them maybe
23:04:57 <geekosaur> oh, right, I remember. there may be many ways to be one, only one of which is valid for the other
23:05:19 <geekosaur> (this was in particular about Pointed, but may also apply to Apply, pun not intended)
23:06:20 <geekosaur> we have a law requiring Applicative and Monad instances to match, but that becomes more problematic the lower in the hierarchy you go because alternative instances are more likely to be useful
23:06:39 <jackdk> Yeah but Apply on its own is really handy because it gives you instances for things like maps where you can't have `pure`
23:09:27 <zebrag> System F strongly normalizing, so no fixed-point, right. But you must nevertheless be able to "iterate" over a recursive structure, like a list or an int? Is that "catamorphism"? How do you implement catamorphism in Haskell w/o general recursion? (I'm sure the question must have been answered many times, unless the answer is you can't)
23:10:04 × MajorBiscuit quits (~MajorBisc@80.146.187.107) (Quit: WeeChat 3.4)
23:10:12 machinedgod joins (~machinedg@24.105.81.50)
23:10:16 causal joins (~user@50.35.83.177)
23:11:58 <geekosaur> zebrag, I don't understand that question unless you are restricting this to fixpoint implementations of recursion
23:12:28 <jackdk> I think he means languages like Dhall, where you don't have general recursion but can fold over lists
23:12:48 <geekosaur> but then I don't see what System F has to do with it
23:12:56 <geekosaur> Dhall doesn't implement System F
23:13:01 <zebrag> I think system F doesn't have general recursion
23:13:15 <geekosaur> recursive *types*, no
23:13:32 <geekosaur> *values* are a different question
23:13:43 <monochrom> See Wadler's "recursive type for free!" https://homepages.inf.ed.ac.uk/wadler/topics/parametricity.html#free
23:14:13 <monochrom> The gist though is that church encoding is already the catamorphism.
23:14:15 <zebrag> but I think system F can't have a fixpoint operator at all
23:14:42 × gurkenglas quits (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) (Ping timeout: 276 seconds)
23:14:43 <zebrag> yes, church encoding is the catamorphism
23:14:48 <zebrag> okay got it
23:14:51 <geekosaur> not directly. we go through a newtype
23:15:11 × zeenk quits (~zeenk@2a02:2f04:a104:ef00:10:581:f80f:b980) (Quit: Konversation terminated!)
23:18:52 × xff0x quits (~xff0x@b133147.ppp.asahi-net.or.jp) (Ping timeout: 244 seconds)
23:19:37 × P1RATEZ quits (piratez@user/p1ratez) (Remote host closed the connection)
23:22:20 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
23:22:20 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
23:22:20 wroathe joins (~wroathe@user/wroathe)
23:23:01 [_] is now known as [itchyjunk]
23:23:03 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
23:25:11 × stackdroid18 quits (14094@user/stackdroid) (Quit: hasta la vista... tchau!)
23:26:06 × off^ quits (~off@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 244 seconds)
23:28:41 stackdroid18 joins (14094@user/stackdroid)
23:38:10 × joo-_ quits (~joo-_@fsf/member/joo--) (Ping timeout: 240 seconds)
23:39:46 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
23:40:07 joo-_ joins (~joo-_@80-62-117-27-mobile.dk.customer.tdc.net)
23:40:07 × joo-_ quits (~joo-_@80-62-117-27-mobile.dk.customer.tdc.net) (Changing host)
23:40:07 joo-_ joins (~joo-_@fsf/member/joo--)
23:43:36 drakonis parts (~drakonis@user/drakonis) (WeeChat 3.4)
23:49:49 benin joins (~benin@183.82.31.141)
23:54:35 cherries[m] joins (~cherriesm@2001:470:69fc:105::2:16c0)
23:55:19 × jgeerds quits (~jgeerds@d53604b0.access.ecotel.net) (Ping timeout: 240 seconds)
23:57:15 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:94c1:4c92:9000:ac28)
23:59:50 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 240 seconds)

All times are in UTC on 2022-05-22.