2024-04-19 00:04:53 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-04-19 00:04:56 +0200 | mima | (~mmh@aftr-62-216-211-247.dynamic.mnet-online.de) (Ping timeout: 252 seconds) |
2024-04-19 00:16:22 +0200 | target_i | (~target_i@user/target-i/x-6023099) (Quit: leaving) |
2024-04-19 00:28:54 +0200 | rekahsoft | (~rekahsoft@bras-base-orllon1103w-grc-13-184-148-6-204.dsl.bell.ca) (Ping timeout: 268 seconds) |
2024-04-19 00:29:27 +0200 | titibandit | (~titibandi@user/titibandit) (Remote host closed the connection) |
2024-04-19 00:31:22 +0200 | sudden | (~cat@user/sudden) (Ping timeout: 268 seconds) |
2024-04-19 00:32:40 +0200 | acidjnk | (~acidjnk@p200300d6e714dc535c809f2764050d89.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2024-04-19 00:41:45 +0200 | tzh | (~tzh@c-73-164-206-160.hsd1.or.comcast.net) (Remote host closed the connection) |
2024-04-19 00:44:01 +0200 | <duncan> | specifically though APL's thing is arrays, is Clojure designed around arrays in the same way? |
2024-04-19 00:44:33 +0200 | <duncan> | you can call a lot of things 'data-based', but it's sort of selling APL short if you have to generalise it… |
2024-04-19 00:44:43 +0200 | int-e | (~noone@int-e.eu) (Quit: leaving) |
2024-04-19 00:45:26 +0200 | int-e | (~noone@int-e.eu) |
2024-04-19 00:45:58 +0200 | <geekosaur> | Clojure's designed around hashes, no? |
2024-04-19 00:49:07 +0200 | <monochrom> | This is just both left wing people and right wing people claiming they are about freedom and/or liberty all over again. |
2024-04-19 00:52:03 +0200 | gmg | (~user@user/gehmehgeh) (Quit: Leaving) |
2024-04-19 00:55:25 +0200 | sudden | (~cat@user/sudden) |
2024-04-19 00:58:08 +0200 | vgtw_ | (~vgtw@user/vgtw) (Ping timeout: 260 seconds) |
2024-04-19 01:02:59 +0200 | mei | (~mei@user/mei) (Remote host closed the connection) |
2024-04-19 01:05:23 +0200 | mei | (~mei@user/mei) |
2024-04-19 01:05:35 +0200 | puke | (~puke@user/puke) |
2024-04-19 01:08:22 +0200 | xff0x | (~xff0x@2405:6580:b080:900:746b:6d2b:7905:31b8) (Ping timeout: 246 seconds) |
2024-04-19 01:09:17 +0200 | raehik | (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 240 seconds) |
2024-04-19 01:09:36 +0200 | trev | (~trev@user/trev) (Ping timeout: 268 seconds) |
2024-04-19 01:11:22 +0200 | trev | (~trev@user/trev) |
2024-04-19 01:11:41 +0200 | yin | (~yin@user/zero) (Ping timeout: 256 seconds) |
2024-04-19 01:13:19 +0200 | yin | (~yin@user/zero) |
2024-04-19 01:15:40 +0200 | <sm> | @where+ static-musl-build-posts https://www.extrema.is/blog/2022/03/24/ghc-musl-part-1 |
2024-04-19 01:15:41 +0200 | <lambdabot> | Nice! |
2024-04-19 01:18:15 +0200 | <probie> | geekosaur: when you say "designed around hashes" do you mean actual hashes, or do you mean maps/dictionaries/associative arrays/etc.? |
2024-04-19 01:18:59 +0200 | <geekosaur> | the latter |
2024-04-19 01:20:16 +0200 | nullobject | (~josh@user/nullobject) |
2024-04-19 01:21:55 +0200 | <c_wraith> | I think clojure tends towards HAMTs. But really, what's the difference? |
2024-04-19 01:24:51 +0200 | TonyStone | (~TonyStone@user/TonyStone) (Remote host closed the connection) |
2024-04-19 01:26:15 +0200 | <probie> | c_wraith: one is a number produced by a hashing function, and the other is a collection, and I'll never forgive Ruby for popularising the name "hash" for "hashmaps" |
2024-04-19 01:26:52 +0200 | <c_wraith> | HAMTs absolutely use hashes. that's what the H stands for. |
2024-04-19 01:27:07 +0200 | <monochrom> | #hashtags |
2024-04-19 01:27:43 +0200 | <probie> | I think one of us might be misinterpreting the thread of conversation here |
2024-04-19 01:28:17 +0200 | <monochrom> | No, I'm just making dad jokes. |
2024-04-19 01:29:34 +0200 | <monochrom> | But Ruby does a lot of unforgivable things. |
2024-04-19 01:29:48 +0200 | xff0x | (~xff0x@2405:6580:b080:900:746b:6d2b:7905:31b8) |
2024-04-19 01:30:13 +0200 | <probie> | I wanted to know if geekosaur was asking about whether Clojure was designed around the "output of hashing functions" or whether it was designed some kind of associative array, because whilst I assumed he meant the latter, Clojure refers to them as maps, so I wanted to confirm |
2024-04-19 01:30:52 +0200 | Square2 | (~Square4@user/square) |
2024-04-19 01:31:24 +0200 | <probie> | s/designed some/designed around some/ |
2024-04-19 01:31:35 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
2024-04-19 01:31:50 +0200 | <geekosaur> | hashes, maps, associative arrays, whatever |
2024-04-19 01:32:42 +0200 | waldo | (~waldo@user/waldo) |
2024-04-19 01:34:16 +0200 | Square | (~Square@user/square) (Ping timeout: 268 seconds) |
2024-04-19 01:35:43 +0200 | sawilagar | (~sawilagar@user/sawilagar) (Ping timeout: 255 seconds) |
2024-04-19 01:45:44 +0200 | <probie> | geekosaur: I'm not sure if this answers the question of whether clojure is designed around hashes, but; idiomatic clojure makes heavy use of maps, however, if you removed them, you'd still have a perfectly usable programming language (although some core macros and functions would need to change from taking maps to taking association lists as done in common lisp) |
2024-04-19 01:46:26 +0200 | <monochrom> | I think it's a good answer. |
2024-04-19 01:46:41 +0200 | yin | (~yin@user/zero) (Ping timeout: 252 seconds) |
2024-04-19 01:53:28 +0200 | <tcard> | @sm If you are looking into building static executables using Alpine/musl, you might want to check out https://gitlab.com/benz0li/ghc-musl , which is well maintained. |
2024-04-19 01:53:28 +0200 | lambdabot | puts on her slapping gloves, and slaps If you are looking into building static executables using Alpine/musl, you might want to check out https://gitlab.com/benz0li/ghc-musl , which is well |
2024-04-19 01:53:28 +0200 | <lambdabot> | maintained. |
2024-04-19 01:53:49 +0200 | <tcard> | (I have not had time to start contributing to this project yet, but I plan on doing so. My understanding is that Utku is deprecating his project in favor of this one.) |
2024-04-19 01:54:50 +0200 | random-jellyfish | (~developer@2a02:2f04:11e:c600:81d5:c278:7d49:e345) |
2024-04-19 01:54:51 +0200 | random-jellyfish | (~developer@2a02:2f04:11e:c600:81d5:c278:7d49:e345) (Changing host) |
2024-04-19 01:54:51 +0200 | random-jellyfish | (~developer@user/random-jellyfish) |
2024-04-19 01:55:32 +0200 | <masaeedu> | demon-cat: I can definitely relate. when it works out well, Haskell programming can be quite relaxing |
2024-04-19 01:55:35 +0200 | TonyStone | (~TonyStone@user/TonyStone) |
2024-04-19 01:56:30 +0200 | dsrt^ | (~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Remote host closed the connection) |
2024-04-19 02:00:31 +0200 | <sm> | could lambdabot's owner please disable the smack feature ? I don't like seeing it every time someone @'s me. Is it mauke perhaps ? |
2024-04-19 02:01:13 +0200 | <sm> | tcard, thanks! And thanks for those great 2022 posts. |
2024-04-19 02:01:34 +0200 | <sm> | I had found both https://github.com/utdemir/ghc-musl and https://gitlab.com/benz0li/ghc-musl, but was mixing them up. |
2024-04-19 02:01:35 +0200 | <geekosaur> | int-e |
2024-04-19 02:01:47 +0200 | <sm> | how about it int-e ? |
2024-04-19 02:02:00 +0200 | tcard | bows |
2024-04-19 02:02:25 +0200 | califax | (~califax@user/califx) (Remote host closed the connection) |
2024-04-19 02:03:15 +0200 | <geekosaur> | I don't recall off the top of my head which plugin @slap comes from |
2024-04-19 02:03:57 +0200 | califax | (~califax@user/califx) |
2024-04-19 02:03:59 +0200 | <tcard> | https://github.com/lambdabot/lambdabot/blob/master/lambdabot-novelty-plugins/src/Lambdabot/Plugin/… |
2024-04-19 02:04:19 +0200 | <geekosaur> | yeh, just found that in my local source |
2024-04-19 02:05:20 +0200 | <sm> | I was fixing my static build yesterday and now I'm wondering: why does building static executables with stack seems to require a special docker image, or at least a special GHC build (+ Alpine); while cabal needs only a single command line flag (+ Alpine) ? Or is it that I'm cabal building with ghcup's ghc on Alpine, which has the same special sauce for musl ? |
2024-04-19 02:05:26 +0200 | <geekosaur> | (I used to run an instance, and I have some actual command documentation sitting in a PR) |
2024-04-19 02:06:13 +0200 | <jackdk> | you cannot get true static builds using glibc, because even if you statically link against libc, glibc will want to dlopen stuff for e.g. nsswitch |
2024-04-19 02:06:55 +0200 | <geekosaur> | I'm not sure that justifies a custom ghc though, glibc vs. musl should be a link time choice not a special compiler |
2024-04-19 02:07:02 +0200 | <sm> | jackdk: yes, that's why alpine is used |
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:08:14 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
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:14:01 +0200 | vgtw | (~vgtw@user/vgtw) |
2024-04-19 02:16:08 +0200 | peterbecich | (~Thunderbi@47.229.123.186) |
2024-04-19 02:16:14 +0200 | yin | (~yin@user/zero) |
2024-04-19 02:16:22 +0200 | demon-cat | (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) |
2024-04-19 02:17:04 +0200 | n8n | (n8n@user/n8n) (Quit: WeeChat 4.2.2) |
2024-04-19 02:20:48 +0200 | demon-cat | (~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) (Ping timeout: 252 seconds) |
2024-04-19 02:21:01 +0200 | n8n | (n8n@user/n8n) |
2024-04-19 02:23:05 +0200 | masaeedu | (~masaeedu@user/masaeedu) (Read error: Connection reset by peer) |
2024-04-19 02:28:57 +0200 | masaeedu | (~masaeedu@user/masaeedu) |
2024-04-19 02:38:05 +0200 | kilolympus | (~kilolympu@31.205.200.246) (Read error: Connection reset by peer) |
2024-04-19 02:38:19 +0200 | tok | (~user@user/tok) (Remote host closed the connection) |
2024-04-19 02:46:47 +0200 | tdammers | (~tdammers@219-131-178-143.ftth.glasoperator.nl) (Ping timeout: 264 seconds) |
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:48:51 +0200 | tzh | (~tzh@c-73-164-206-160.hsd1.or.comcast.net) |
2024-04-19 02:50:26 +0200 | tv | (~tv@user/tv) (Ping timeout: 268 seconds) |
2024-04-19 02:56:49 +0200 | dehsou^ | (~cd@c-98-242-74-66.hsd1.ga.comcast.net) |
2024-04-19 02:58:35 +0200 | tdammers | (~tdammers@41-138-178-143.ftth.glasoperator.nl) |
2024-04-19 03:01:00 +0200 | itscaleb | (~itscaleb@user/itscaleb) (away) |
2024-04-19 03:03:16 +0200 | tv | (~tv@user/tv) |
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: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:12:16 +0200 | <masaeedu> | s/don't// |
2024-04-19 03:12:21 +0200 | <jackdk> | WDYM? |
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: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: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:15:52 +0200 | <monochrom> | No, I would think the forest version is even more problematic than the single tree version. |
2024-04-19 03:16:23 +0200 | <monochrom> | Because singleTreeVersion = head . forestVersion . (: []) |
2024-04-19 03:16:56 +0200 | <monochrom> | OK more accurately singleTreeVersion pred = head . forestVersion pred . (: []) |
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:17:43 +0200 | <c_wraith> | the forest version usually results in a forest with more trees than the input |
2024-04-19 03:17:51 +0200 | <monochrom> | OK I see. Then it is not weird at all. |
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: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:19:18 +0200 | waldo | (~waldo@user/waldo) (Quit: waldo) |
2024-04-19 03:19:40 +0200 | <masaeedu> | monochrom: `head` is not a total function |
2024-04-19 03:20:57 +0200 | xff0x | (~xff0x@2405:6580:b080:900:746b:6d2b:7905:31b8) (Ping timeout: 268 seconds) |
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:22:02 +0200 | madeleine-sydney | (~madeleine@c-76-155-235-153.hsd1.co.comcast.net) |
2024-04-19 03:22:27 +0200 | <monochrom> | In fact, I bet not an obvious semantics either. |
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:25:19 +0200 | <masaeedu> | the key is in what you require of `f` |
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:27:34 +0200 | <tcard> | Thanks! |
2024-04-19 03:42:59 +0200 | otto_s | (~user@p4ff271d1.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
2024-04-19 03:44:46 +0200 | otto_s | (~user@p5de2fb1c.dip0.t-ipconnect.de) |
2024-04-19 03:51:47 +0200 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) (Ping timeout: 268 seconds) |
2024-04-19 04:01:22 +0200 | phma | (~phma@2001:5b0:211c:2a68:1f1d:320b:b7fc:f1a0) (Read error: Connection reset by peer) |
2024-04-19 04:01:38 +0200 | raehik | (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) |
2024-04-19 04:01:49 +0200 | phma | (~phma@2001:5b0:211c:2a68:1f1d:320b:b7fc:f1a0) |
2024-04-19 04:02:47 +0200 | mei | (~mei@user/mei) (Remote host closed the connection) |
2024-04-19 04:05:11 +0200 | mei | (~mei@user/mei) |
2024-04-19 04:05:51 +0200 | ridcully | (~ridcully@p508acfbb.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2024-04-19 04:06:31 +0200 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
2024-04-19 04:06:37 +0200 | ridcully | (~ridcully@pd951f456.dip0.t-ipconnect.de) |
2024-04-19 04:25:05 +0200 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 268 seconds) |
2024-04-19 04:26:48 +0200 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |