2024/04/19

Newest at the top

2024-04-19 03:44:46 +0200otto_s(~user@p5de2fb1c.dip0.t-ipconnect.de)
2024-04-19 03:42:59 +0200otto_s(~user@p4ff271d1.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2024-04-19 03:27:34 +0200 <tcard> Thanks!
2024-04-19 03:26:07 +0200 <sm> tcard: aha. Here's such a build, for example/testing: https://github.com/simonmichael/hledger/actions/runs/8744554461 , it used https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/9.8.2/ghc-9.8.2-x86_64-alpine3_12-linu…
2024-04-19 03:25:19 +0200 <masaeedu> the key is in what you require of `f`
2024-04-19 03:25:00 +0200 <masaeedu> probie: there's no formal content here to "obvious", but if you'd like me to be pedantic i can distinguish your function from what is intended quite easily
2024-04-19 03:22:27 +0200 <monochrom> In fact, I bet not an obvious semantics either.
2024-04-19 03:22:02 +0200madeleine-sydney(~madeleine@c-76-155-235-153.hsd1.co.comcast.net)
2024-04-19 03:22:00 +0200 <probie> However, I wouldn't say that there is "an obvious implementation of `(a -> Maybe b) -> [Tree a] -> [Tree b]`". You're probably unhappy with something along the lines of `\f -> map (:< []) . catMaybes . map f . flatten`
2024-04-19 03:20:57 +0200xff0x(~xff0x@2405:6580:b080:900:746b:6d2b:7905:31b8) (Ping timeout: 268 seconds)
2024-04-19 03:19:40 +0200 <masaeedu> monochrom: `head` is not a total function
2024-04-19 03:19:18 +0200waldo(~waldo@user/waldo) (Quit: waldo)
2024-04-19 03:19:13 +0200 <c_wraith> the real fun is when you turn the whole mess into the crazy forest thing used by priority queues optimized for Dijkstra's algorithm.
2024-04-19 03:18:15 +0200 <probie> I think the suggested semantics are that when a node is deleted, then all its children become its parent's children
2024-04-19 03:17:51 +0200 <monochrom> OK I see. Then it is not weird at all.
2024-04-19 03:17:43 +0200 <c_wraith> the forest version usually results in a forest with more trees than the input
2024-04-19 03:17:23 +0200 <c_wraith> that's only true if you enjoy throwing out nodes that the predicate accepted
2024-04-19 03:16:56 +0200 <monochrom> OK more accurately singleTreeVersion pred = head . forestVersion pred . (: [])
2024-04-19 03:16:23 +0200 <monochrom> Because singleTreeVersion = head . forestVersion . (: [])
2024-04-19 03:15:52 +0200 <monochrom> No, I would think the forest version is even more problematic than the single tree version.
2024-04-19 03:14:45 +0200 <masaeedu> but assuming `Tree` is e.g. `Cofree []`, (this works for anything Filterable), there is an obvious implementation of `(a -> Maybe b) -> [Tree a] -> [Tree b]`
2024-04-19 03:13:25 +0200 <c_wraith> jackdk: if you delete a node with two children, it's not obvious how to reconstruct a tree out of it. But it is obvious how to turn the remainder into a forest.
2024-04-19 03:13:23 +0200 <masaeedu> well, assuming `Tree` represents a tree with internal nodes, there isn't an obvious unique way to implement `(a -> Maybe b) -> Tree a -> Tree b`
2024-04-19 03:12:21 +0200 <jackdk> WDYM?
2024-04-19 03:12:16 +0200 <masaeedu> s/don't//
2024-04-19 03:12:01 +0200 <masaeedu> it's kind of weird how trees with internal nodes don't can't be sensibly filtered, but their forests can
2024-04-19 03:07:16 +0200 <tcard> That is great news! I see that ghcup installs unofficial builds (from https://downloads.haskell.org/ghcup/unofficial-bindists/ghc/) for recent versions of GHC, but it still installs the broken official builds for older versions (such as 9.2.4). I will investigate further when I get a chance.
2024-04-19 03:03:16 +0200tv(~tv@user/tv)
2024-04-19 03:01:00 +0200itscaleb(~itscaleb@user/itscaleb) (away)
2024-04-19 02:58:35 +0200tdammers(~tdammers@41-138-178-143.ftth.glasoperator.nl)
2024-04-19 02:56:49 +0200dehsou^(~cd@c-98-242-74-66.hsd1.ga.comcast.net)
2024-04-19 02:50:26 +0200tv(~tv@user/tv) (Ping timeout: 268 seconds)
2024-04-19 02:48:51 +0200tzh(~tzh@c-73-164-206-160.hsd1.or.comcast.net)
2024-04-19 02:46:59 +0200 <sm> tcard: I am guessing maerwald's ghcup is providing a fixed ghc on alpine. It seems to work for me at least
2024-04-19 02:46:47 +0200tdammers(~tdammers@219-131-178-143.ftth.glasoperator.nl) (Ping timeout: 264 seconds)
2024-04-19 02:38:19 +0200tok(~user@user/tok) (Remote host closed the connection)
2024-04-19 02:38:05 +0200kilolympus(~kilolympu@31.205.200.246) (Read error: Connection reset by peer)
2024-04-19 02:28:57 +0200masaeedu(~masaeedu@user/masaeedu)
2024-04-19 02:23:05 +0200masaeedu(~masaeedu@user/masaeedu) (Read error: Connection reset by peer)
2024-04-19 02:21:01 +0200n8n(n8n@user/n8n)
2024-04-19 02:20:48 +0200demon-cat(~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) (Ping timeout: 252 seconds)
2024-04-19 02:17:04 +0200n8n(n8n@user/n8n) (Quit: WeeChat 4.2.2)
2024-04-19 02:16:22 +0200demon-cat(~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net)
2024-04-19 02:16:14 +0200yin(~yin@user/zero)
2024-04-19 02:16:08 +0200peterbecich(~Thunderbi@47.229.123.186)
2024-04-19 02:14:01 +0200vgtw(~vgtw@user/vgtw)
2024-04-19 02:13:37 +0200 <tcard> Official Alpine builds of GHC have unfortunately not worked for a while, though. I have not had time to work on this recently, but the issue I have bookmarked (https://gitlab.haskell.org/ghc/ghc/-/issues/22237) is still open. Olivier's project works great because it builds GHC from source, and I think he might be using the gold linker if I remember correctly.
2024-04-19 02:08:14 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2024-04-19 02:07:28 +0200 <tcard> If building on Alpine, you can indeed create static executables directly. Stack's docker support just makes it easy to do so using an Apline container from distributions that are not musl-based.
2024-04-19 02:07:02 +0200 <sm> jackdk: yes, that's why alpine is used