| 2024-08-08 00:00:10 +0000 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
| 2024-08-08 00:07:44 +0000 | tabaqui | (~root@87.200.123.114) (Ping timeout: 260 seconds) |
| 2024-08-08 00:07:59 +0000 | tabemann | (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) |
| 2024-08-08 00:09:07 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 264 seconds) |
| 2024-08-08 00:22:13 +0000 | falafel | (~falafel@2a0c:5a87:3104:4c01::bfe0) (Ping timeout: 248 seconds) |
| 2024-08-08 00:48:41 +0000 | anpad | (~pandeyan@user/anpad) (Quit: ZNC 1.8.2 - https://znc.in) |
| 2024-08-08 00:50:02 +0000 | anpad | (~pandeyan@user/anpad) |
| 2024-08-08 00:58:47 +0000 | shoggouth | (uid607148@user/shoggouth) (Quit: Connection closed for inactivity) |
| 2024-08-08 01:02:52 +0000 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
| 2024-08-08 01:11:38 +0000 | oo_miguel | (~Thunderbi@78.10.207.46) (Ping timeout: 245 seconds) |
| 2024-08-08 01:14:37 +0000 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 2024-08-08 01:16:00 +0000 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 2024-08-08 01:22:04 +0000 | xff0x | (~xff0x@2405:6580:b080:900:bb9f:ea83:5088:5a06) (Ping timeout: 265 seconds) |
| 2024-08-08 01:22:55 +0000 | joeyadams | (~joeyadams@2603:6010:5100:2ed:3050:6687:6772:1195) |
| 2024-08-08 01:24:35 +0000 | nunggu | (~q@user/nunggu) |
| 2024-08-08 01:26:35 +0000 | tomku | (~tomku@user/tomku) (Ping timeout: 244 seconds) |
| 2024-08-08 01:32:11 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 2024-08-08 01:58:37 +0000 | waleee | (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 244 seconds) |
| 2024-08-08 01:58:58 +0000 | ZharMeny | (~user@user/ZharMeny) (Quit: Fatal error 11: Segmentation fault) |
| 2024-08-08 02:10:02 +0000 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 2024-08-08 02:10:19 +0000 | whatsupdoc | (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 2024-08-08 02:11:15 +0000 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
| 2024-08-08 02:11:29 +0000 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 2024-08-08 02:14:51 +0000 | gentauro | (~gentauro@user/gentauro) (Read error: Connection reset by peer) |
| 2024-08-08 02:18:30 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
| 2024-08-08 02:20:58 +0000 | gentauro | (~gentauro@user/gentauro) |
| 2024-08-08 02:30:39 +0000 | td_ | (~td@i5387090B.versanet.de) (Ping timeout: 260 seconds) |
| 2024-08-08 02:32:06 +0000 | td_ | (~td@i53870904.versanet.de) |
| 2024-08-08 02:51:46 +0000 | joeyadams | (~joeyadams@2603:6010:5100:2ed:3050:6687:6772:1195) (Quit: Leaving) |
| 2024-08-08 03:03:43 +0000 | aforemny | (~aforemny@2001:9e8:6cc6:2f00:b85e:457c:6740:c35) (Ping timeout: 244 seconds) |
| 2024-08-08 03:04:35 +0000 | aforemny | (~aforemny@i59F516DA.versanet.de) |
| 2024-08-08 03:08:45 +0000 | tomku | (~tomku@user/tomku) |
| 2024-08-08 03:09:30 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 2024-08-08 03:10:33 +0000 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
| 2024-08-08 03:10:57 +0000 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 244 seconds) |
| 2024-08-08 03:11:56 +0000 | Lord_of_Life_ | Lord_of_Life |
| 2024-08-08 03:34:49 +0000 | CrunchyFlakes | (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 2024-08-08 03:37:14 +0000 | CrunchyFlakes | (~CrunchyFl@146.52.130.128) |
| 2024-08-08 03:52:23 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 265 seconds) |
| 2024-08-08 04:01:55 +0000 | aforemny_ | (~aforemny@2001:9e8:6cec:9200:56df:dd94:8882:31ea) |
| 2024-08-08 04:03:08 +0000 | aforemny | (~aforemny@i59F516DA.versanet.de) (Ping timeout: 255 seconds) |
| 2024-08-08 04:10:55 +0000 | sawilagar | (~sawilagar@user/sawilagar) |
| 2024-08-08 04:26:57 +0000 | famubu | (~julinuser@user/famubu) |
| 2024-08-08 04:27:33 +0000 | <famubu> | Hi. I wished to use a package from hackage which provides a command invokable from the terminal. How can I install such a package? |
| 2024-08-08 04:28:06 +0000 | <famubu> | I only know how to install with cabal, but that seems to work only when the package is added to a particular project? |
| 2024-08-08 04:28:25 +0000 | <famubu> | Would `cabal get package-name` be the way to go? |
| 2024-08-08 04:29:04 +0000 | <Axman6> | cabal install foo will install the executables that that package defines |
| 2024-08-08 04:29:39 +0000 | <haskellbridge> | <bdub> but I believe the best way is too just insert as a dep in your .cabal rather than use cabal install correct me if I am wrong |
| 2024-08-08 04:30:08 +0000 | <geekosaur> | it's an executable, not a library |
| 2024-08-08 04:30:10 +0000 | <Axman6> | so `cabal install stylish-haskell` will install the stylish-haskell executable in ~/.cabal/bin/ |
| 2024-08-08 04:30:18 +0000 | <geekosaur> | `cabal install pkgname` is the right thing to do |
| 2024-08-08 04:31:41 +0000 | <geekosaur> | just make sure it's installing somewhere on your $PATH. if you're using old-style paths then it installs to ~/.cabal/bin; if XDG, it'll be ~/.local/bin |
| 2024-08-08 04:31:53 +0000 | <geekosaur> | you can change both of these in the cabal config file |
| 2024-08-08 04:32:10 +0000 | <geekosaur> | (~/.cabal/config or ~/.config/cabal/config) |
| 2024-08-08 04:32:25 +0000 | danse-nr3 | (~danse-nr3@user/danse-nr3) |
| 2024-08-08 04:36:18 +0000 | <famubu> | Thanks. |
| 2024-08-08 04:37:03 +0000 | <famubu> | I was trying to install this package: regex-genex. But cabal shows error when building one of its dependencies (stream-monad-0.3). I guess there's nothing to be done to fix that. |
| 2024-08-08 04:38:08 +0000 | <famubu> | This was the error: https://bpa.st/FGDA |
| 2024-08-08 04:38:10 +0000 | <haskellbridge> | <bdub> Never give into despair, the compiler is your friend |
| 2024-08-08 04:38:40 +0000 | <haskellbridge> | <bdub> I am new myself to Haskell but sounds like a build error with versions of what your trying to work with |
| 2024-08-08 04:39:16 +0000 | sawilagar | (~sawilagar@user/sawilagar) (Ping timeout: 265 seconds) |
| 2024-08-08 04:40:04 +0000 | <famubu> | Oh.. |
| 2024-08-08 04:40:43 +0000 | <haskellbridge> | <bdub> I am new myself so take that with a grain of salt |
| 2024-08-08 04:40:50 +0000 | <mauke> | oh, that's some old code |
| 2024-08-08 04:42:10 +0000 | <geekosaur> | yeh, it needs to be updated for MonadFail |
| 2024-08-08 04:42:49 +0000 | <geekosaur> | https://hackage.haskell.org/package/base-4.20.0.1/docs/Control-Monad-Fail.html |
| 2024-08-08 04:43:28 +0000 | <danse-nr3> | or switch to a different library famubu |
| 2024-08-08 04:43:38 +0000 | <danse-nr3> | good morning all o/ |
| 2024-08-08 04:43:49 +0000 | <mauke> | not exactly hard, but sucks if you're only trying to use some other package that has it as a dependency |
| 2024-08-08 04:45:08 +0000 | <mauke> | alternatively, get a ghc version 8.6 or older (?) |
| 2024-08-08 04:47:29 +0000 | <danse-nr3> | that seems an old version of regex-genex |
| 2024-08-08 04:47:56 +0000 | <danse-nr3> | 0.6.1 |
| 2024-08-08 04:48:46 +0000 | <danse-nr3> | well, not that old, but there is 0.7 |
| 2024-08-08 04:49:15 +0000 | <danse-nr3> | checking reverse dependencies on hackage and your list of packages to install, i guess you are depending on it directly |
| 2024-08-08 04:49:16 +0000 | <famubu> | Does anyone know of a similar library? I am looking for a way to generate strings corresponding a given regex. |
| 2024-08-08 04:52:05 +0000 | <danse-nr3> | hmm version 0.7 on github imports stream-monad without bounds https://github.com/audreyt/regex-genex/blob/master/regex-genex.cabal#L23 |
| 2024-08-08 04:53:40 +0000 | <danse-nr3> | but also last version of stream monad seems to derive monad fail without using MonadFail https://github.com/sebfisch/stream-monad/blob/master/src/Control/Monad/Stream.hs |
| 2024-08-08 04:54:33 +0000 | <danse-nr3> | issues from ten years ago https://github.com/sebfisch/stream-monad/issues?q=is%3Aopen+is%3Aissue |
| 2024-08-08 04:55:07 +0000 | <danse-nr3> | yeah different library i guess, but i cannot recommend one off the top of my head |
| 2024-08-08 05:00:36 +0000 | <famubu> | Found this list: https://stackoverflow.com/questions/274011/random-text-generator-based-on-regex/43377488#43377488 |
| 2024-08-08 05:00:43 +0000 | <famubu> | Going to try few of them. |
| 2024-08-08 05:03:31 +0000 | <danse-nr3> | corresponding category on hackage doesn't seem very promising https://hackage.haskell.org/packages/#cat:Regex |
| 2024-08-08 05:03:35 +0000 | michalz | (~michalz@185.246.207.217) |
| 2024-08-08 05:04:58 +0000 | down200 | (~down200@shell.lug.mtu.edu) (Ping timeout: 245 seconds) |
| 2024-08-08 05:05:17 +0000 | down200 | (~down200@shell.lug.mtu.edu) |
| 2024-08-08 05:10:00 +0000 | <probie> | Intrusive thought of the day, why write the verbose `foo x = let baz = bar x in quux baz` when you can just write `foo x|baz<-bar x=quux baz` |
| 2024-08-08 05:11:54 +0000 | <mauke> | foo (bar -> baz) = |
| 2024-08-08 05:12:19 +0000 | <danse-nr3> | foo = quux . bar |
| 2024-08-08 05:12:51 +0000 | <mauke> | map f ((f -> x) : (map f -> xs)) = x : xs |
| 2024-08-08 05:13:32 +0000 | <haskellbridge> | <bdub> f = q . b |
| 2024-08-08 05:13:33 +0000 | <haskellbridge> | <bdub> lol I have no idea wtf is going on LOL |
| 2024-08-08 05:13:34 +0000 | <haskellbridge> | <bdub> and I just said lol twice, that means its bedtime |
| 2024-08-08 05:13:44 +0000 | <danse-nr3> | you sure the first is the same as the second probie? |
| 2024-08-08 05:14:10 +0000 | <danse-nr3> | sleep well bdub |
| 2024-08-08 05:15:12 +0000 | <Axman6> | foo(bar->(quux->x))=x |
| 2024-08-08 05:16:03 +0000 | <Axman6> | C or Haskell? We'll never know |
| 2024-08-08 05:16:06 +0000 | chexum | (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 260 seconds) |
| 2024-08-08 05:16:07 +0000 | <probie> | % p = pure |
| 2024-08-08 05:16:07 +0000 | <yahb2> | <no output> |
| 2024-08-08 05:16:22 +0000 | <danse-nr3> | % :t pure |
| 2024-08-08 05:16:22 +0000 | <yahb2> | pure :: Applicative f => a -> f a |
| 2024-08-08 05:16:27 +0000 | <probie> | % do{n<-(+1);m<-(+2);p$n*m}$2 |
| 2024-08-08 05:16:27 +0000 | <yahb2> | 12 |
| 2024-08-08 05:16:46 +0000 | chexum | (~quassel@gateway/tor-sasl/chexum) |
| 2024-08-08 05:17:14 +0000 | <probie> | % k = const |
| 2024-08-08 05:17:14 +0000 | <yahb2> | <no output> |
| 2024-08-08 05:18:19 +0000 | <probie> | % do{n<-(+1);m<-(+2);a<-k$42;k$42+n*m}$2 |
| 2024-08-08 05:18:19 +0000 | <yahb2> | 54 |
| 2024-08-08 05:19:27 +0000 | <probie> | I think I've been writing Haskell wrong this whole time |
| 2024-08-08 05:19:41 +0000 | <danse-nr3> | yeah (-> a)'s monadic instance, but it's frowned upon by many |
| 2024-08-08 05:20:43 +0000 | <danse-nr3> | personally i kind of like it |
| 2024-08-08 05:21:22 +0000 | <haskellbridge> | <bdub> Just a newbie trying to learn.. why is it frowned upon by other haskellers? |
| 2024-08-08 05:21:56 +0000 | <danse-nr3> | (-> a) being a monad. Not something you want to wrap your head around as a beginner i guess, may find it confusing |
| 2024-08-08 05:22:56 +0000 | <haskellbridge> | <bdub> I get it.. ill stay in my little corner.... for now |
| 2024-08-08 05:22:58 +0000 | <probie> | If you see an expression like `(*)<$>(+1)<*>(+2)` and haven't seen the idiom before, what do you do? You probably ask for the types of `(<$>)` and `(<*>)`, but what's returned doesn't tell you what is going on |
| 2024-08-08 05:23:28 +0000 | <danse-nr3> | so |
| 2024-08-08 05:24:01 +0000 | <probie> | and the correct response upon seeing it is to wonder how caleskell ended up in base |
| 2024-08-08 05:24:16 +0000 | <Axman6> | I wrote some code the other day that looked like Foo (_brField <$> bar) (_barField2 <$> bar) (_barField3 <$> bar) and I was sure there must be a nice way to write it as something like Foo <$> _barField <*> _barField2 <*> _barField3 but I couldn't figur it out (though I think I have now... just needs to be passed to <$> bar) |
| 2024-08-08 05:24:18 +0000 | krei-se | (~krei-se@p57af2b6c.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 2024-08-08 05:24:37 +0000 | <danse-nr3> | % :t \c -> && <$> (=='a') <*> (=='b') |
| 2024-08-08 05:24:37 +0000 | <yahb2> | <interactive>:1:7: error: parse error on input ‘&&’ |
| 2024-08-08 05:24:45 +0000 | <danse-nr3> | % :t \c -> (&&) <$> (=='a') <*> (=='b') |
| 2024-08-08 05:24:45 +0000 | <yahb2> | \c -> (&&) <$> (=='a') <*> (=='b') :: p -> Char -> Bool |
| 2024-08-08 05:24:49 +0000 | <haskellbridge> | <bdub> Isnt this called Penetrating? |
| 2024-08-08 05:24:53 +0000 | <danse-nr3> | is the same as |
| 2024-08-08 05:24:59 +0000 | <danse-nr3> | uh i wouldn't say so |
| 2024-08-08 05:24:59 +0000 | <Axman6> | Hmmm, it could have been quite nice as bar <&> liftA3 Foo _f1 _f2 _f3 |
| 2024-08-08 05:25:08 +0000 | <danse-nr3> | is the same as |
| 2024-08-08 05:25:30 +0000 | <danse-nr3> | % :t \c -> c == 'a' && c=='b' |
| 2024-08-08 05:25:30 +0000 | <yahb2> | \c -> c == 'a' && c=='b' :: Char -> Bool |
| 2024-08-08 05:25:44 +0000 | <Axman6> | % data Foo = Foo {_f1 :: Bool, _f2 :: String, _f3 :: Int} |
| 2024-08-08 05:25:44 +0000 | <yahb2> | <no output> |
| 2024-08-08 05:25:44 +0000 | <danse-nr3> | in this case the latter is more readable |
| 2024-08-08 05:26:06 +0000 | krei-se | (~krei-se@p57af2d39.dip0.t-ipconnect.de) |
| 2024-08-08 05:26:07 +0000 | <Axman6> | % :t liftA3 (,,) _f1 _f2 _f3 |
| 2024-08-08 05:26:07 +0000 | <yahb2> | <interactive>:1:1: error: ; Variable not in scope: ; liftA3 ; :: (a0 -> b0 -> c0 -> (a0, b0, c0)) ; -> (Foo -> Bool) -> (Foo -> String) -> (Foo -> Int) -> t |
| 2024-08-08 05:26:09 +0000 | <danse-nr3> | but when composing functions, using the instance can often be more readable in my opinion |
| 2024-08-08 05:26:16 +0000 | <probie> | The most readable version is |
| 2024-08-08 05:26:20 +0000 | <danse-nr3> | caleskell? |
| 2024-08-08 05:26:28 +0000 | <Axman6> | % import Control.Applicative |
| 2024-08-08 05:26:28 +0000 | <yahb2> | <no output> |
| 2024-08-08 05:26:29 +0000 | <Axman6> | % :t liftA3 (,,) _f1 _f2 _f3 |
| 2024-08-08 05:26:29 +0000 | <yahb2> | liftA3 (,,) _f1 _f2 _f3 :: Foo -> (Bool, String, Int) |
| 2024-08-08 05:26:42 +0000 | rvalue | (~rvalue@user/rvalue) (Read error: Connection reset by peer) |
| 2024-08-08 05:27:13 +0000 | <Axman6> | Turns out what I really wanted was barbies though, and came across some code that was doing the same thing I was trying to, and it was beautiful |
| 2024-08-08 05:27:17 +0000 | rvalue | (~rvalue@user/rvalue) |
| 2024-08-08 05:27:49 +0000 | <jackdk> | TraversableB or something, Axman6 ? |
| 2024-08-08 05:28:54 +0000 | <danse-nr3> | % :t TraversableB |
| 2024-08-08 05:28:54 +0000 | <yahb2> | <interactive>:1:1: error: ; Data constructor not in scope: TraversableB |
| 2024-08-08 05:28:56 +0000 | <probie> | danse-nr3: once upon a time, base didn't have the `((->) r)` monad instance, but lambdabot did (I think it also had `Num` instances for functions). The person who maintained lambdabot at the time was called Cale (I think). |
| 2024-08-08 05:29:24 +0000 | <danse-nr3> | oh i see. I gather you are amongst the (-> a) frowners (: |
| 2024-08-08 05:29:28 +0000 | <probie> | https://hackage.haskell.org/package/barbies-2.1.1.0/docs/Data-Functor-Barbie.html#t:TraversableB |
| 2024-08-08 05:29:46 +0000 | <Axman6> | jackdk: yeah. This was working in clash, where I wanted to be able to talk about a structure of signals, or a single of the structure |
| 2024-08-08 05:29:57 +0000 | <danse-nr3> | not sure why barbie never sounded appealing to me |
| 2024-08-08 05:29:59 +0000 | absence_ | (torgeihe@hildring.pvv.ntnu.no) (Ping timeout: 255 seconds) |
| 2024-08-08 05:30:39 +0000 | <haskellbridge> | <bdub> Who maintains the bot now? I am HEAVY into automation probie |
| 2024-08-08 05:31:05 +0000 | <Axman6> | it's a pretty cool library, solves a lot of problems in quite an elegant way. Being able to talk about things like database tables using the type the contain is very nice |
| 2024-08-08 05:31:21 +0000 | <geekosaur> | bdub: int-e |
| 2024-08-08 05:31:57 +0000 | absence | (~absence@hildring.pvv.ntnu.no) |
| 2024-08-08 05:33:43 +0000 | <probie> | I'm not against `((->) r)` being a `Monad` at all. I'm even only slightly against preferring `f <$> g <*> h` over `\x -> f (g x) (h x)` |
| 2024-08-08 05:34:33 +0000 | <danse-nr3> | oh your example looks better than mine probie |
| 2024-08-08 05:36:08 +0000 | <danse-nr3> | but you said it was a mistake to have calaskell in base? Anyways i was also confused by your very first point about foo bar etcetera. Well sounds like i'm struggling to follow this chan lately |
| 2024-08-08 05:38:58 +0000 | <geekosaur> | use of ((->) e) tends to be very hard to follow |
| 2024-08-08 05:40:16 +0000 | <probie> | If I'm being completely serious for a moment, I don't think it's a mistake to have. It is a sane, sometimes useful monad instance and to exclude it would just cause orphan instances. However, I'm not keen on it being (ab)used extensively in normal Haskell code |
| 2024-08-08 05:40:43 +0000 | danse-nr3 | (~danse-nr3@user/danse-nr3) (Read error: Connection reset by peer) |
| 2024-08-08 05:41:46 +0000 | <Axman6> | Apropos of nothing, I am so glad the C preprocessor is a functional language. |
| 2024-08-08 05:41:47 +0000 | danse-nr3 | (~danse-nr3@user/danse-nr3) |
| 2024-08-08 05:41:50 +0000 | <Axman6> | or at least higher order |
| 2024-08-08 05:43:49 +0000 | <probie> | After reading through so much "Whitney C" recently, I feel inspired to write my Haskell in a similar fashion |
| 2024-08-08 05:44:00 +0000 | <danse-nr3> | i find (-> e) easier than, for instance, monad transformers |
| 2024-08-08 05:45:56 +0000 | <mauke> | I find (e ->) easier |
| 2024-08-08 05:51:57 +0000 | rosco | (~rosco@175.136.158.234) |
| 2024-08-08 05:55:50 +0000 | machinedgod | (~machinedg@d50-99-47-73.abhsia.telus.net) (Ping timeout: 252 seconds) |
| 2024-08-08 05:58:07 +0000 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 2024-08-08 05:59:32 +0000 | <probie> | % f=foldr;c=flip;i=id |
| 2024-08-08 05:59:32 +0000 | <yahb2> | <no output> |
| 2024-08-08 05:59:45 +0000 | <probie> | % ([]&).f(c(.).(:))i$[1..5] |
| 2024-08-08 05:59:45 +0000 | <yahb2> | <interactive>:69:2: error: ; Variable not in scope: (&) :: [a0] -> ([a1] -> [a1]) -> c |
| 2024-08-08 05:59:55 +0000 | <probie> | % import Data.Function ((&)) |
| 2024-08-08 05:59:55 +0000 | <yahb2> | <no output> |
| 2024-08-08 06:00:03 +0000 | <probie> | % ([]&).f(c(.).(:))i$[1..5] |
| 2024-08-08 06:00:03 +0000 | <yahb2> | [5,4,3,2,1] |
| 2024-08-08 06:00:27 +0000 | <Axman6> | I'm quite proud of myself for thinking "Hmm, that's probably reverse" |
| 2024-08-08 06:00:39 +0000 | <danse-nr3> | are you in the mood for showing us how haskell can get ugly probie? |
| 2024-08-08 06:01:18 +0000 | <probie> | I think you mean "beautiful" |
| 2024-08-08 06:01:38 +0000 | <danse-nr3> | well degustibus |
| 2024-08-08 06:03:05 +0000 | <probie> | No Haskell can ever approach the beauty of BQN `+´∘((⌈`⌊(⌈`⌾⌽))-⊣)` or K `+/{((|\x)&||\|x)-x}` |
| 2024-08-08 06:03:07 +0000 | CiaoSen | (~Jura@2a05:5800:22f:a900:e6b9:7aff:fe80:3d03) |
| 2024-08-08 06:04:12 +0000 | <danse-nr3> | expressive power /= beauty, but those look intriguing |
| 2024-08-08 06:05:35 +0000 | jle` | (~jle`@2603:8001:3b02:84d4:c4d5:25f2:175c:b94c) (Ping timeout: 244 seconds) |
| 2024-08-08 06:06:33 +0000 | jle` | (~jle`@2603:8001:3b02:84d4:ef66:1aba:fea9:c83b) |
| 2024-08-08 06:06:35 +0000 | <probie> | Those code snippets solve https://www.geeksforgeeks.org/trapping-rain-water/ |
| 2024-08-08 06:09:14 +0000 | famubu | (~julinuser@user/famubu) (Quit: leaving) |
| 2024-08-08 06:10:42 +0000 | <probie> | I don't think I can ever make Haskell that terse, but there's definitely room for improvement over the idiomatic style |
| 2024-08-08 06:13:14 +0000 | <haskellbridge> | <bdub> Officially out! Catch all you B E A utiful people in a few hours |
| 2024-08-08 06:14:28 +0000 | <danse-nr3> | geeksforgeeks doesn't seem to imply single-letter variables nor lack of spaces |
| 2024-08-08 06:15:25 +0000 | <danse-nr3> | well see you later |
| 2024-08-08 06:15:30 +0000 | danse-nr3 | (~danse-nr3@user/danse-nr3) (Quit: on the move) |
| 2024-08-08 06:18:33 +0000 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds) |
| 2024-08-08 06:19:15 +0000 | euleritian | (~euleritia@dynamic-176-006-128-219.176.6.pool.telefonica.de) |
| 2024-08-08 06:20:57 +0000 | <probie> | For those who are curious, the K implementation is roughly `sum . (\x -> zipWith (-) (zipWith min (scanl1 max x) (reverse (scanl1 max (reverse x)))) x)` |
| 2024-08-08 06:22:44 +0000 | <Axman6> | The guy who does the Code Report youtube channel has some great videos on BQN and other array langs |
| 2024-08-08 06:23:15 +0000 | <Axman6> | and he's done quite a few conference talks on them too |
| 2024-08-08 06:26:31 +0000 | ft | (~ft@p4fc2aa15.dip0.t-ipconnect.de) (Quit: leaving) |
| 2024-08-08 06:29:03 +0000 | lortabac | (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 2024-08-08 06:29:34 +0000 | dsrt^ | (dsrt@c-98-242-74-66.hsd1.ga.comcast.net) |
| 2024-08-08 06:30:07 +0000 | <probie> | Someone's currently writing a simple interpreter for a dialect of APL in Haskell https://github.com/RubenVerg/tinyapl (it's not particularly fast since it uses lists, nor is it particularly usable, since is still missing some "core" functionality) |
| 2024-08-08 06:35:38 +0000 | <Axman6> | Oh man, I forgot how much there was to define |
| 2024-08-08 06:37:22 +0000 | <Axman6> | I wonder how much changing from list to Vector would change performance. Not even sure if it would help |
| 2024-08-08 06:37:59 +0000 | <dminuoso> | I wouldnt be too quicky to put the blame on lists until I was staring at profiling data. |
| 2024-08-08 06:39:57 +0000 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 2024-08-08 06:40:00 +0000 | <probie> | It depends on the operation. It has obvious implications on uses of `⌷` (pronounced "squad") which is roughly like `!!` |
| 2024-08-08 06:41:17 +0000 | <probie> | On the other hand, something like `+/⍳100` (`sum [1..100]`) probably benefits compared to using `Vector`, since it can run in constant space without ever making the entire array |
| 2024-08-08 06:43:26 +0000 | <mauke> | I was fined, but later I was defined |
| 2024-08-08 06:43:36 +0000 | <mauke> | unfortunately, in the end I was undefined |
| 2024-08-08 06:44:00 +0000 | sord937 | (~sord937@gateway/tor-sasl/sord937) |
| 2024-08-08 06:44:48 +0000 | <Axman6> | I wonder if you could have a type somewhat similar to what repa does. so something like [1..100] would be represented internally as (Int -> a) |
| 2024-08-08 06:44:50 +0000 | sawilagar | (~sawilagar@user/sawilagar) |
| 2024-08-08 06:48:53 +0000 | <Axman6> | I guess repa gets benefits from this from being able to inline things, a la stream fusion (and making calls to these functions in parallel) |
| 2024-08-08 06:51:38 +0000 | JuanDaugherty | (~juan@user/JuanDaugherty) |
| 2024-08-08 07:01:35 +0000 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 2024-08-08 07:05:31 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 2024-08-08 07:07:52 +0000 | Inst | (~Inst@user/Inst) |
| 2024-08-08 07:09:05 +0000 | sawilagar | (~sawilagar@user/sawilagar) (Ping timeout: 248 seconds) |
| 2024-08-08 07:09:09 +0000 | oo_miguel | (~Thunderbi@78.10.207.46) |
| 2024-08-08 07:10:07 +0000 | sawilagar | (~sawilagar@user/sawilagar) |
| 2024-08-08 07:20:47 +0000 | sawilagar | (~sawilagar@user/sawilagar) (Remote host closed the connection) |
| 2024-08-08 07:21:10 +0000 | sawilagar | (~sawilagar@user/sawilagar) |
| 2024-08-08 07:21:30 +0000 | kuribas | (~user@2a02:1808:82:77e4:3737:2793:e72d:ca1e) |
| 2024-08-08 07:21:43 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 264 seconds) |
| 2024-08-08 07:23:08 +0000 | <Cale> | probie: true, it was me, haha |
| 2024-08-08 07:25:25 +0000 | hayk | (~hayk@37.252.90.243) |
| 2024-08-08 07:28:05 +0000 | <lortabac> | Is there a way to test compilation errors? I made a typechecker plugin that forbids certain constraint combinations and would like to write automated tests for it |
| 2024-08-08 07:28:59 +0000 | <c_wraith> | yes, though it's sort of hacky |
| 2024-08-08 07:29:27 +0000 | <c_wraith> | well, specifically for type errors. |
| 2024-08-08 07:29:49 +0000 | <c_wraith> | You can compile the test with -fdefer-type-errors, and ensure that the test raises the appropriate runtime exception |
| 2024-08-08 07:29:52 +0000 | <probie> | Run GHC with `-fdefer-type-errors` and then catch them? |
| 2024-08-08 07:30:03 +0000 | <probie> | rip, I'm too slow |
| 2024-08-08 07:30:24 +0000 | <lortabac> | that was my first idea but it doesn't seem to work on my specific case |
| 2024-08-08 07:30:59 +0000 | <c_wraith> | I'm not sure how deferring type errors interacts with typechecker plugins |
| 2024-08-08 07:32:05 +0000 | kuribas | (~user@2a02:1808:82:77e4:3737:2793:e72d:ca1e) (Ping timeout: 248 seconds) |
| 2024-08-08 07:32:13 +0000 | <lortabac> | ah wait it probably works |
| 2024-08-08 07:32:57 +0000 | <lortabac> | for some reason it didn't work in GHCI but if I set -fdefer-type-errors in cabal I see the errors appearing as warnings |
| 2024-08-08 07:33:42 +0000 | <c_wraith> | setting it in ghci only affects code you type into ghci, not modules it loads |
| 2024-08-08 07:33:59 +0000 | <c_wraith> | Ideally you'd use an OPTIONS_GHC pragma to enable it only in the module that needs it |
| 2024-08-08 07:34:02 +0000 | <lortabac> | ok clear |
| 2024-08-08 07:34:24 +0000 | <lortabac> | yes thanks for your suggestions |
| 2024-08-08 07:44:12 +0000 | <lortabac> | actually I'm afraid I can't use this technique |
| 2024-08-08 07:44:46 +0000 | <lortabac> | because no runtime error happens |
| 2024-08-08 07:44:58 +0000 | danse-nr3 | (~danse-nr3@user/danse-nr3) |
| 2024-08-08 07:45:40 +0000 | <lortabac> | my plugin only adds extra restrictions to an otherwise valid Haskell program |
| 2024-08-08 07:46:24 +0000 | <lortabac> | I guess I need to test these cases externally |
| 2024-08-08 07:47:12 +0000 | <lortabac> | by compiling them in individual scripts and checking GHC's exit code |
| 2024-08-08 07:47:20 +0000 | <haskellbridge> | <sm> seems easiest. shelltestrunner ? |
| 2024-08-08 07:47:53 +0000 | euleritian | (~euleritia@dynamic-176-006-128-219.176.6.pool.telefonica.de) (Read error: Connection reset by peer) |
| 2024-08-08 07:48:15 +0000 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 2024-08-08 07:48:39 +0000 | <lortabac> | thanks, shelltestrunner looks like a good option |
| 2024-08-08 07:52:23 +0000 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) |
| 2024-08-08 07:56:11 +0000 | machinedgod | (~machinedg@d50-99-47-73.abhsia.telus.net) |
| 2024-08-08 07:57:33 +0000 | hgolden | (~hgolden@2603:8000:9d00:3ed1:1ee4:1b7c:94a7:8fa7) (Ping timeout: 252 seconds) |
| 2024-08-08 07:57:44 +0000 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds) |
| 2024-08-08 07:59:42 +0000 | hgolden | (~hgolden@2603:8000:9d00:3ed1:1ee4:1b7c:94a7:8fa7) |
| 2024-08-08 08:00:40 +0000 | JuanDaugherty | (~juan@user/JuanDaugherty) (Quit: JuanDaugherty) |
| 2024-08-08 08:04:23 +0000 | acidjnk_new | (~acidjnk@p200300d6e72cfb06d8fe89eabbea3551.dip0.t-ipconnect.de) |
| 2024-08-08 08:06:13 +0000 | sawilagar | (~sawilagar@user/sawilagar) (Ping timeout: 248 seconds) |
| 2024-08-08 08:11:22 +0000 | euleritian | (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 2024-08-08 08:11:38 +0000 | tcard_ | (~tcard@2400:4051:5801:7500:1e90:74c3:2754:ce8a) (Read error: Connection reset by peer) |
| 2024-08-08 08:11:48 +0000 | tcard_ | (~tcard@2400:4051:5801:7500:1e90:74c3:2754:ce8a) |
| 2024-08-08 08:12:06 +0000 | Square | (~Square@user/square) |
| 2024-08-08 08:12:34 +0000 | sawilagar | (~sawilagar@user/sawilagar) |
| 2024-08-08 08:13:41 +0000 | tcard_ | (~tcard@2400:4051:5801:7500:1e90:74c3:2754:ce8a) (Read error: Connection reset by peer) |
| 2024-08-08 08:13:48 +0000 | tcard_ | (~tcard@2400:4051:5801:7500:1e90:74c3:2754:ce8a) |
| 2024-08-08 08:15:17 +0000 | mesaoptimizer | (~mesaoptim@user/PapuaHardyNet) (Quit: mesaoptimizer) |
| 2024-08-08 08:15:27 +0000 | mesaoptimizer | (~mesaoptim@user/PapuaHardyNet) |
| 2024-08-08 08:28:45 +0000 | tabaqui | (~root@87.200.123.114) |
| 2024-08-08 08:29:36 +0000 | econo_ | (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
| 2024-08-08 08:32:19 +0000 | sawilagar | (~sawilagar@user/sawilagar) (Ping timeout: 244 seconds) |
| 2024-08-08 08:32:32 +0000 | _d0t | (~{-d0t-}@user/-d0t-/x-7915216) (Remote host closed the connection) |
| 2024-08-08 08:33:22 +0000 | _d0t | (~{-d0t-}@user/-d0t-/x-7915216) |
| 2024-08-08 08:33:40 +0000 | <probie> | My attempt at "Whitney Haskell" is less revolting than I expected https://paste.tomsmeding.com/fyoq8LlH |
| 2024-08-08 08:36:05 +0000 | <danse-nr3> | what is that referencing? Only found en.wikipedia.org/wiki/whitney_topologies |
| 2024-08-08 08:38:53 +0000 | <probie> | Look at the style of C used in https://codeberg.org/ngn/k or https://github.com/kevinlawler/kona |
| 2024-08-08 08:39:31 +0000 | <danse-nr3> | why "whitney" though? Well i'll peek at one of those |
| 2024-08-08 08:39:52 +0000 | sawilagar | (~sawilagar@user/sawilagar) |
| 2024-08-08 08:40:09 +0000 | <danse-nr3> | oh it's the single-letter, no spaces you were showcasing before |
| 2024-08-08 08:40:24 +0000 | <danse-nr3> | basically, obfuscation |
| 2024-08-08 08:40:35 +0000 | <probie> | Named for Arthur Whitney, the creator of K |
| 2024-08-08 08:40:40 +0000 | <Franciman> | K |
| 2024-08-08 08:40:43 +0000 | <Franciman> | ops sorry |
| 2024-08-08 08:40:45 +0000 | <danse-nr3> | oh, interesting |
| 2024-08-08 08:40:48 +0000 | <danse-nr3> | hey Franciman |
| 2024-08-08 08:40:55 +0000 | <Franciman> | \o |
| 2024-08-08 08:42:57 +0000 | <probie> | it's also not obfuscated per se, it's just a style that prioritises fitting as much on the screen at once as possible |
| 2024-08-08 08:43:17 +0000 | <xerox> | coding with a broken spacebar |
| 2024-08-08 08:43:24 +0000 | <danse-nr3> | :P |
| 2024-08-08 08:43:43 +0000 | <danse-nr3> | sounds a bit radical probie |
| 2024-08-08 08:55:03 +0000 | cfricke | (~cfricke@user/cfricke) |
| 2024-08-08 08:55:44 +0000 | Patternm1ster | (~georg@vmi1645272.contaboserver.net) (Quit: leaving) |
| 2024-08-08 08:58:28 +0000 | JuanDaugherty | (~juan@user/JuanDaugherty) |
| 2024-08-08 08:59:08 +0000 | CiaoSen | (~Jura@2a05:5800:22f:a900:e6b9:7aff:fe80:3d03) (Ping timeout: 245 seconds) |
| 2024-08-08 08:59:47 +0000 | Patternmaster | (~georg@user/Patternmaster) |
| 2024-08-08 09:02:41 +0000 | ubert | (~Thunderbi@2001:871:263:7b9b:9162:639d:781d:48b5) |
| 2024-08-08 09:03:55 +0000 | <haskellbridge> | <sm> probie: like it! You can see some of this in the haskell tiny games jam too |
| 2024-08-08 09:04:24 +0000 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 2024-08-08 09:09:07 +0000 | gmg | (~user@user/gehmehgeh) |
| 2024-08-08 09:09:36 +0000 | <danse-nr3> | might be of user for demoscene? I think they only care about size of compiled there though |
| 2024-08-08 09:09:40 +0000 | <danse-nr3> | *of use |
| 2024-08-08 09:11:59 +0000 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds) |
| 2024-08-08 09:12:12 +0000 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
| 2024-08-08 09:14:03 +0000 | JuanDaugherty | (~juan@user/JuanDaugherty) (Quit: JuanDaugherty) |
| 2024-08-08 09:14:33 +0000 | falafel | (~falafel@2a0c:5a87:3104:4c01::bfe0) |
| 2024-08-08 09:15:15 +0000 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
| 2024-08-08 09:41:38 +0000 | dans48005 | (~danse-nr3@user/danse-nr3) |
| 2024-08-08 09:43:47 +0000 | danse-nr3 | (~danse-nr3@user/danse-nr3) (Ping timeout: 255 seconds) |
| 2024-08-08 09:45:40 +0000 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 2024-08-08 09:50:51 +0000 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 260 seconds) |
| 2024-08-08 09:51:33 +0000 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
| 2024-08-08 10:08:25 +0000 | sawilagar | (~sawilagar@user/sawilagar) (Ping timeout: 265 seconds) |
| 2024-08-08 10:15:28 +0000 | sawilagar | (~sawilagar@user/sawilagar) |
| 2024-08-08 10:17:43 +0000 | falafel | (~falafel@2a0c:5a87:3104:4c01::bfe0) (Ping timeout: 244 seconds) |
| 2024-08-08 10:21:06 +0000 | xff0x | (~xff0x@2405:6580:b080:900:465e:7eef:8460:d9d2) |
| 2024-08-08 10:24:45 +0000 | sawilagar | (~sawilagar@user/sawilagar) (Ping timeout: 276 seconds) |
| 2024-08-08 10:39:00 +0000 | lortabac | (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.2) |
| 2024-08-08 10:39:30 +0000 | sawilagar | (~sawilagar@user/sawilagar) |
| 2024-08-08 10:46:21 +0000 | gmg | (~user@user/gehmehgeh) (Remote host closed the connection) |
| 2024-08-08 10:47:04 +0000 | gmg | (~user@user/gehmehgeh) |
| 2024-08-08 10:50:33 +0000 | Digitteknohippie | (~user@user/digit) |
| 2024-08-08 10:51:09 +0000 | Digit | (~user@user/digit) (Ping timeout: 260 seconds) |
| 2024-08-08 11:11:49 +0000 | remedan | (~remedan@ip-62-245-108-153.bb.vodafone.cz) (Ping timeout: 248 seconds) |
| 2024-08-08 11:14:35 +0000 | ZharMeny | (~user@user/ZharMeny) |
| 2024-08-08 11:18:53 +0000 | hayk | (~hayk@37.252.90.243) (Quit: hayk) |
| 2024-08-08 11:21:16 +0000 | stiell | (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 260 seconds) |
| 2024-08-08 11:22:05 +0000 | JuanDaugherty | (~juan@user/JuanDaugherty) |
| 2024-08-08 11:27:22 +0000 | dans48005 | (~danse-nr3@user/danse-nr3) (Quit: meal) |
| 2024-08-08 11:31:16 +0000 | CiaoSen | (~Jura@2a05:5800:22f:a900:e6b9:7aff:fe80:3d03) |
| 2024-08-08 11:34:37 +0000 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 2024-08-08 11:34:53 +0000 | TMA | (tma@twin.jikos.cz) (Remote host closed the connection) |
| 2024-08-08 11:37:09 +0000 | stiell | (~stiell@gateway/tor-sasl/stiell) |
| 2024-08-08 11:37:25 +0000 | TMA | (tma@twin.jikos.cz) |
| 2024-08-08 11:41:41 +0000 | TMA | (tma@twin.jikos.cz) (Ping timeout: 248 seconds) |
| 2024-08-08 11:48:09 +0000 | stiell_ | (~stiell@gateway/tor-sasl/stiell) |
| 2024-08-08 11:51:30 +0000 | TMA | (tma@twin.jikos.cz) |
| 2024-08-08 11:51:36 +0000 | stiell | (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 260 seconds) |
| 2024-08-08 12:03:12 +0000 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 2024-08-08 12:06:07 +0000 | danse-nr3 | (~danse-nr3@user/danse-nr3) |
| 2024-08-08 12:11:01 +0000 | sawilagar | (~sawilagar@user/sawilagar) (Ping timeout: 248 seconds) |
| 2024-08-08 12:27:50 +0000 | JuanDaugherty | (~juan@user/JuanDaugherty) (Quit: JuanDaugherty) |
| 2024-08-08 12:47:14 +0000 | Miroboru | (~myrvoll@178-164-114.82.3p.ntebredband.no) |
| 2024-08-08 12:51:37 +0000 | ddellacosta | (~ddellacos@ool-44c73d29.dyn.optonline.net) (Ping timeout: 252 seconds) |
| 2024-08-08 12:54:49 +0000 | rosco | (~rosco@175.136.158.234) (Quit: Lost terminal) |
| 2024-08-08 13:03:15 +0000 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 2024-08-08 13:05:05 +0000 | picnoir | (~picnoir@about/aquilenet/vodoo/NinjaTrappeur) (Quit: WeeChat 4.3.5) |
| 2024-08-08 13:06:51 +0000 | picnoir | (~picnoir@about/aquilenet/vodoo/NinjaTrappeur) |
| 2024-08-08 13:12:48 +0000 | rosco | (~rosco@175.136.158.234) |
| 2024-08-08 13:22:11 +0000 | ddellacosta | (~ddellacos@ool-44c73d29.dyn.optonline.net) |
| 2024-08-08 13:24:11 +0000 | hayk | (~hayk@37.252.90.243) |
| 2024-08-08 13:24:33 +0000 | ZharMeny | (~user@user/ZharMeny) (Ping timeout: 252 seconds) |
| 2024-08-08 13:33:26 +0000 | acidjnk_new3 | (~acidjnk@p200300d6e72cfb069cd6142dbab03153.dip0.t-ipconnect.de) |
| 2024-08-08 13:33:54 +0000 | acidjnk_new | (~acidjnk@p200300d6e72cfb06d8fe89eabbea3551.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 2024-08-08 13:34:15 +0000 | sawilagar | (~sawilagar@user/sawilagar) |
| 2024-08-08 13:35:40 +0000 | YoungFrog | (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) (Quit: ZNC 1.7.x-git-3-96481995 - https://znc.in) |
| 2024-08-08 13:41:52 +0000 | dans39187 | (~danse-nr3@user/danse-nr3) |
| 2024-08-08 13:42:11 +0000 | alexherbo2 | (~alexherbo@2a02-8440-3314-ca9a-0563-f5c7-288c-8691.rev.sfr.net) |
| 2024-08-08 13:44:05 +0000 | danse-nr3 | (~danse-nr3@user/danse-nr3) (Ping timeout: 255 seconds) |
| 2024-08-08 13:44:11 +0000 | slac21088 | (~slack1256@2803:c600:5111:8029:469f:21dd:e308:1389) (Remote host closed the connection) |
| 2024-08-08 13:44:48 +0000 | slack1256 | (~slack1256@179.60.70.224) |
| 2024-08-08 13:54:00 +0000 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer) |
| 2024-08-08 13:57:32 +0000 | YoungFrog | (~youngfrog@2a02:a03f:c9db:fc00:b4ad:7d6f:2694:3c32) |
| 2024-08-08 14:01:01 +0000 | zero | zzz |
| 2024-08-08 14:11:02 +0000 | dans39187 | (~danse-nr3@user/danse-nr3) (Remote host closed the connection) |
| 2024-08-08 14:11:17 +0000 | danse-nr3 | (~danse-nr3@user/danse-nr3) |
| 2024-08-08 14:14:26 +0000 | ThePenguin | (~ThePengui@cust-95-80-24-166.csbnet.se) (Remote host closed the connection) |
| 2024-08-08 14:14:42 +0000 | slack1256 | (~slack1256@179.60.70.224) (Read error: Connection reset by peer) |
| 2024-08-08 14:15:01 +0000 | ThePenguin | (~ThePengui@cust-95-80-24-166.csbnet.se) |
| 2024-08-08 14:15:13 +0000 | slack1256 | (~slack1256@2803:c600:5111:8029:44f4:5d68:3d8e:eb90) |
| 2024-08-08 14:16:19 +0000 | sawilagar | (~sawilagar@user/sawilagar) (Ping timeout: 252 seconds) |
| 2024-08-08 14:19:50 +0000 | ZharMeny | (~user@user/ZharMeny) |
| 2024-08-08 14:20:50 +0000 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 2024-08-08 14:23:41 +0000 | Sgeo | (~Sgeo@user/sgeo) |
| 2024-08-08 14:28:37 +0000 | cfricke | (~cfricke@user/cfricke) (Ping timeout: 248 seconds) |
| 2024-08-08 14:38:08 +0000 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 2024-08-08 14:38:26 +0000 | <danse-nr3> | Cannot use record selector ‘constructor’ as a function due to escaped type variables |
| 2024-08-08 14:38:41 +0000 | <danse-nr3> | first existential clumsy steps |
| 2024-08-08 14:39:49 +0000 | CiaoSen | (~Jura@2a05:5800:22f:a900:e6b9:7aff:fe80:3d03) (Ping timeout: 248 seconds) |
| 2024-08-08 14:39:52 +0000 | <EvanR> | it used to say "my brain just exploded" |
| 2024-08-08 14:40:14 +0000 | <EvanR> | I'm not sure which message is better |
| 2024-08-08 14:40:51 +0000 | <danse-nr3> | my brain is still dumbly staring at that |
| 2024-08-08 14:41:09 +0000 | <danse-nr3> | it will probably explode after any understanding |
| 2024-08-08 14:41:17 +0000 | <danse-nr3> | *possibly |
| 2024-08-08 14:42:08 +0000 | <EvanR> | the record contains something of some type but you don't know which |
| 2024-08-08 14:42:36 +0000 | <EvanR> | the type system can't tell if you know what you're doing |
| 2024-08-08 14:44:29 +0000 | <Leary> | danse-nr3: Haskell existentials have some limitations. When in doubt, use case-of. |
| 2024-08-08 14:44:58 +0000 | <danse-nr3> | cheers! |
| 2024-08-08 14:56:20 +0000 | sawilagar | (~sawilagar@user/sawilagar) |
| 2024-08-08 14:56:41 +0000 | cfricke | (~cfricke@user/cfricke) |
| 2024-08-08 14:57:04 +0000 | <Leary> | (we only have the /forall/ quantifier, no /exists/, so we can only deal with existentials in ways that can be typed with foralls. `MkEx :: forall a. a -> Ex` and `withEx :: forall a r. Ex -> (a -> r) -> r` are fine, but `unEx :: exists a. Ex -> a` isn't supported) |
| 2024-08-08 15:00:50 +0000 | danse-nr3 | crosses her fingers for /exists/ to eventually exist |
| 2024-08-08 15:01:33 +0000 | Digitteknohippie | Digit |
| 2024-08-08 15:03:38 +0000 | remedan | (~remedan@ip-62-245-108-153.bb.vodafone.cz) |
| 2024-08-08 15:04:42 +0000 | <Leary> | Err, `withEx :: forall r. Ex -> (forall a. a -> r) -> r`* |
| 2024-08-08 15:07:14 +0000 | ubert | (~Thunderbi@2001:871:263:7b9b:9162:639d:781d:48b5) (Ping timeout: 272 seconds) |
| 2024-08-08 15:13:02 +0000 | JuanDaugherty | (~juan@user/JuanDaugherty) |
| 2024-08-08 15:17:42 +0000 | ft | (~ft@p4fc2aa15.dip0.t-ipconnect.de) |
| 2024-08-08 15:25:20 +0000 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 2024-08-08 15:33:15 +0000 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 2024-08-08 15:35:27 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 2024-08-08 15:38:27 +0000 | <EvanR> | poor man's module system |
| 2024-08-08 15:38:54 +0000 | <dminuoso> | I wonder, is there a deeper reason for exists not existing? |
| 2024-08-08 15:39:36 +0000 | <dminuoso> | I guess it would require some kind of modification of the Gen rule in Damas Milner? |
| 2024-08-08 15:42:30 +0000 | <c_wraith> | I think the biggest reason is that it's really unclear what useful thing it would add. |
| 2024-08-08 15:43:13 +0000 | <EvanR> | what does it add while costing a new keyword |
| 2024-08-08 15:43:49 +0000 | <danse-nr3> | maybe i am biased by use in math that makes it seem important |
| 2024-08-08 15:44:43 +0000 | <dminuoso> | EvanR: I think the keyword is the smallest problem. Happy has full monad support, so at best we could demote it to a type-level keyword `exists`. |
| 2024-08-08 15:45:09 +0000 | <EvanR> | the use in math is terrible. The banach-tarski paradox has a mapping That Exists (tm) |
| 2024-08-08 15:45:32 +0000 | <EvanR> | that merely exists, in the language of HoTT |
| 2024-08-08 15:45:43 +0000 | <c_wraith> | Like, most of the cases where I use existentials are packing together related values. I can already do that with the way GHC supports the universal/existential duality |
| 2024-08-08 15:46:13 +0000 | <c_wraith> | I don't even see how it'd be less code with an exists keyword |
| 2024-08-08 15:46:41 +0000 | <EvanR> | my brain just operations on foralls sorry, to paraphrase OOP fans |
| 2024-08-08 15:46:44 +0000 | <EvanR> | operates |
| 2024-08-08 15:47:08 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 272 seconds) |
| 2024-08-08 15:48:40 +0000 | <c_wraith> | I suppose in theory an exists keyword would allow me to replace the custom data type with an existentially-quantified tuple, but custom types for custom purposes is a good habit anyway |
| 2024-08-08 15:49:32 +0000 | <dminuoso> | Also there is a bunch of places where an explicit `exists` would seem like a better distinction than moving `forall` one place to the lext |
| 2024-08-08 15:49:45 +0000 | <dminuoso> | e.g. existential quantification in data types. |
| 2024-08-08 15:50:04 +0000 | <EvanR> | the syntax for existential quantification in data types doesn't kind of make no sense |
| 2024-08-08 15:50:25 +0000 | EvanR | breaks the not gate on all their messages |
| 2024-08-08 15:50:33 +0000 | <dminuoso> | I mean next you know, writing `data X Int forall x. = X ...` carries some meaning too, just to save ourselves some other keyword. |
| 2024-08-08 15:50:39 +0000 | <c_wraith> | I only ever use existential quantification in data types with GADT syntax. It makes a lot more sense there. |
| 2024-08-08 15:50:59 +0000 | <dminuoso> | Oh yeah, GADTSyntax is definitely the way it should have been from the beginning. |
| 2024-08-08 15:51:21 +0000 | <EvanR> | +1 |
| 2024-08-08 15:52:03 +0000 | <int-e> | let's have an existential crisis for all (scnr) |
| 2024-08-08 15:54:51 +0000 | waleee | (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 2024-08-08 15:58:03 +0000 | yaroot_ | (~yaroot@2400:4052:ac0:d901:1cf4:2aff:fe51:c04c) |
| 2024-08-08 15:58:37 +0000 | skyesoss | (~Thunderbi@128.135.204.35) |
| 2024-08-08 15:59:00 +0000 | Ram-Z_ | (~Ram-Z@li1814-254.members.linode.com) |
| 2024-08-08 15:59:12 +0000 | xnbya2 | (~xnbya@2a01:4f8:c17:cbdd::1) |
| 2024-08-08 16:00:06 +0000 | rvalue | (~rvalue@user/rvalue) (Ping timeout: 252 seconds) |
| 2024-08-08 16:00:06 +0000 | rvalue- | (~rvalue@user/rvalue) |
| 2024-08-08 16:00:47 +0000 | yaroot | (~yaroot@2400:4052:ac0:d901:1cf4:2aff:fe51:c04c) (Ping timeout: 246 seconds) |
| 2024-08-08 16:00:47 +0000 | xnbya | (~xnbya@2a01:4f8:c17:cbdd::1) (Quit: No Ping reply in 180 seconds.) |
| 2024-08-08 16:00:48 +0000 | jocke-l | (jocke-l@a.x0.is) (Ping timeout: 246 seconds) |
| 2024-08-08 16:00:48 +0000 | yaroot_ | yaroot |
| 2024-08-08 16:00:48 +0000 | Ram-Z | (Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df) (Ping timeout: 246 seconds) |
| 2024-08-08 16:02:05 +0000 | <haskellbridge> | <Bowuigi> Technically you can solve the unex problem by adopting the dependent exists |
| 2024-08-08 16:03:22 +0000 | <haskellbridge> | <Bowuigi> So "unEx :: forall t. Ex t -> t" is the same as sigma's "snd" |
| 2024-08-08 16:04:18 +0000 | rvalue- | rvalue |
| 2024-08-08 16:04:42 +0000 | sawilagar | (~sawilagar@user/sawilagar) (Ping timeout: 276 seconds) |
| 2024-08-08 16:04:53 +0000 | <haskellbridge> | <Bowuigi> Sigma's "fst"* |
| 2024-08-08 16:05:08 +0000 | sawilagar | (~sawilagar@user/sawilagar) |
| 2024-08-08 16:06:05 +0000 | ephilalethes | (~noumenon@113.51-175-156.customer.lyse.net) (Read error: Connection reset by peer) |
| 2024-08-08 16:06:16 +0000 | <EvanR> | I think this issue is you have something like Sigma t (something involving t), and the problematic operation is snd |
| 2024-08-08 16:07:32 +0000 | noumenon | (~noumenon@113.51-175-156.customer.lyse.net) |
| 2024-08-08 16:08:02 +0000 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection) |
| 2024-08-08 16:12:59 +0000 | <haskellbridge> | <Bowuigi> Yeah plugging that modified version of Ex into mkEx leaves us with at Identity (or a weird GADT that has at least Identity capabilities, idk) |
| 2024-08-08 16:13:46 +0000 | jocke-l | (jocke-l@a.x0.is) |
| 2024-08-08 16:17:50 +0000 | danse-nr3 | (~danse-nr3@user/danse-nr3) (Quit: going for a walk) |
| 2024-08-08 16:21:06 +0000 | L29Ah | (~L29Ah@wikipedia/L29Ah) () |
| 2024-08-08 16:21:13 +0000 | <dolio> | Σ isn't exists, though, really. |
| 2024-08-08 16:21:39 +0000 | ubert | (~Thunderbi@2001:871:263:7b9b:33b7:13f4:a3fd:d5f4) |
| 2024-08-08 16:24:35 +0000 | alexherbo2 | (~alexherbo@2a02-8440-3314-ca9a-0563-f5c7-288c-8691.rev.sfr.net) (Remote host closed the connection) |
| 2024-08-08 16:25:53 +0000 | ubert | (~Thunderbi@2001:871:263:7b9b:33b7:13f4:a3fd:d5f4) (Ping timeout: 248 seconds) |
| 2024-08-08 16:29:30 +0000 | sawilagar | (~sawilagar@user/sawilagar) (Ping timeout: 260 seconds) |
| 2024-08-08 16:36:57 +0000 | rosco | (~rosco@175.136.158.234) (Quit: Lost terminal) |
| 2024-08-08 16:41:10 +0000 | waleee | (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 252 seconds) |
| 2024-08-08 16:44:34 +0000 | danse-nr3 | (~danse-nr3@user/danse-nr3) |
| 2024-08-08 16:51:56 +0000 | ubert | (~Thunderbi@2001:871:263:7b9b:6d29:aa3c:7687:9089) |
| 2024-08-08 16:54:07 +0000 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 2024-08-08 16:54:23 +0000 | chexum | (~quassel@gateway/tor-sasl/chexum) |
| 2024-08-08 16:56:00 +0000 | sawilagar | (~sawilagar@user/sawilagar) |
| 2024-08-08 16:56:01 +0000 | <danse-nr3> | :/ can't use forall because i need a constraint |
| 2024-08-08 16:56:19 +0000 | <danse-nr3> | (in a `data`) |
| 2024-08-08 16:56:31 +0000 | <EvanR> | GADT it is |
| 2024-08-08 16:56:48 +0000 | <danse-nr3> | huh i'll look that up, cheers |
| 2024-08-08 16:56:48 +0000 | ubert | (~Thunderbi@2001:871:263:7b9b:6d29:aa3c:7687:9089) (Ping timeout: 272 seconds) |
| 2024-08-08 16:57:57 +0000 | <EvanR> | https://wiki.haskell.org/Data_declaration_with_constraint |
| 2024-08-08 16:58:45 +0000 | <danse-nr3> | cheers, i was on https://wiki.haskell.org/GADTs_for_dummies :P |
| 2024-08-08 17:02:51 +0000 | econo_ | (uid147250@id-147250.tinside.irccloud.com) |
| 2024-08-08 17:03:32 +0000 | hseg | (~gesh@46.120.21.97) |
| 2024-08-08 17:04:03 +0000 | <hseg> | Hi. Is there any way to (using stack) decouple building tests from running them? |
| 2024-08-08 17:04:41 +0000 | <hseg> | (the packaging system I'm targetting likes to have these phases be separate) |
| 2024-08-08 17:05:49 +0000 | <hseg> | ... actually, rereading docs that may be inaccurate |
| 2024-08-08 17:06:04 +0000 | <danse-nr3> | stack test --no-run-tests |
| 2024-08-08 17:06:23 +0000 | <hseg> | sure, but then a subsequent stack test will try rebuilding the tests |
| 2024-08-08 17:06:45 +0000 | <danse-nr3> | hmm it should not i think |
| 2024-08-08 17:07:20 +0000 | <danse-nr3> | oh i see what you mean |
| 2024-08-08 17:07:21 +0000 | <hseg> | (what lead me down this rabbithole is that stack build; stack test seemed to recompile the whole project twice (for different profiles?) whereas stack build --test --no-run-tests; stack test at least gave the impression of rebuilding the tests) |
| 2024-08-08 17:07:42 +0000 | <danse-nr3> | huh ... |
| 2024-08-08 17:07:44 +0000 | ubert | (~Thunderbi@2001:871:263:7b9b:ad71:28a9:46a4:a88e) |
| 2024-08-08 17:07:54 +0000 | <danse-nr3> | mine is stack test --no-run-tests |
| 2024-08-08 17:08:09 +0000 | <hseg> | yeah, because stack aliases test = build --test |
| 2024-08-08 17:08:14 +0000 | <danse-nr3> | oh yeah but i guess that's the same as stack build --... |
| 2024-08-08 17:08:16 +0000 | <danse-nr3> | exactly |
| 2024-08-08 17:09:08 +0000 | <danse-nr3> | well works for me, one builds the other runs, although i have stack building unexpectedly at time... not sure whether my lack of understanding or any error in stack |
| 2024-08-08 17:09:17 +0000 | <danse-nr3> | *at times |
| 2024-08-08 17:10:01 +0000 | ubert | (~Thunderbi@2001:871:263:7b9b:ad71:28a9:46a4:a88e) (Remote host closed the connection) |
| 2024-08-08 17:10:05 +0000 | <hseg> | yeah. reading the stack docs, it seems like its sacrificing correctness over convenience here. understandable, but annoying in this niche circumstance |
| 2024-08-08 17:10:20 +0000 | ubert | (~Thunderbi@2001:871:263:7b9b:f884:5c80:acff:c71d) |
| 2024-08-08 17:10:31 +0000 | <danse-nr3> | "here" where? |
| 2024-08-08 17:10:51 +0000 | <hseg> | with the aliasing |
| 2024-08-08 17:10:53 +0000 | <danse-nr3> | no i wasn't referring to anything documented |
| 2024-08-08 17:11:25 +0000 | <danse-nr3> | don't see how correctness is sacrificed by the aliasing either |
| 2024-08-08 17:11:42 +0000 | <hseg> | having packaged some python stuff as well, it surprises me stack build / stack test is not analogous to python -m build / python -m pytest |
| 2024-08-08 17:12:04 +0000 | <danse-nr3> | but anyways, --no-run-tests just builds, without it runs. Erratic behaviour may happen |
| 2024-08-08 17:12:04 +0000 | <hseg> | (then again, what's correct in my eyes might not be correct in others' eyes |
| 2024-08-08 17:12:21 +0000 | <hseg> | and vice versa) |
| 2024-08-08 17:13:38 +0000 | <hseg> | right -- main source of unpredictability here would be if between the --no-run-tests and the actual stack test the state changes enough to get stack to recompile the test suite |
| 2024-08-08 17:14:13 +0000 | <hseg> | also, just found https://discourse.haskell.org/t/recompilation-issue-with-stack-test/10120 |
| 2024-08-08 17:14:36 +0000 | <hseg> | which gives the stack side of things some more legitimacy here |
| 2024-08-08 17:14:49 +0000 | <danse-nr3> | well if in between the source changes, than it should predictably rebuild |
| 2024-08-08 17:15:08 +0000 | <danse-nr3> | is this the right way to use generic types with forall? https://paste.tomsmeding.com/dTgtBQbk |
| 2024-08-08 17:15:49 +0000 | <danse-nr3> | syntax error |
| 2024-08-08 17:16:16 +0000 | <hseg> | You probably want to write ... where Summand (forall ...) |
| 2024-08-08 17:16:51 +0000 | g00gler | (uid125351@id-125351.uxbridge.irccloud.com) |
| 2024-08-08 17:17:55 +0000 | <Leary> | danse-nr3: You're mixing up the old existential syntax and the GADT syntax that subsumes it. Either `data Summand f = forall ...` or `data Summand f where { Summand :: forall ... }`. |
| 2024-08-08 17:18:28 +0000 | <danse-nr3> | huh fancy |
| 2024-08-08 17:18:39 +0000 | <danse-nr3> | well in the fist i can't add a constraint |
| 2024-08-08 17:18:54 +0000 | <danse-nr3> | while in the second ... hmm i'll try |
| 2024-08-08 17:19:36 +0000 | <danse-nr3> | looks really wrong... compiling... |
| 2024-08-08 17:19:45 +0000 | <danse-nr3> | nah |
| 2024-08-08 17:19:54 +0000 | <danse-nr3> | i probably got you wrong |
| 2024-08-08 17:20:17 +0000 | <danse-nr3> | this was my interpretation https://paste.tomsmeding.com/EoXyYjxh |
| 2024-08-08 17:20:58 +0000 | <Leary> | % data Ex c = forall a. c a => MkEx a |
| 2024-08-08 17:20:58 +0000 | <yahb2> | <no output> |
| 2024-08-08 17:21:10 +0000 | <danse-nr3> | wait i also had to move the forall |
| 2024-08-08 17:21:24 +0000 | <Leary> | % data Ex2 c where MkEx2 :: forall a. c a => Ex2 c |
| 2024-08-08 17:21:24 +0000 | <yahb2> | <interactive>:81:37: error: Not in scope: type variable ‘c’ ; ; <interactive>:81:48: error: Not in scope: type variable ‘c’ |
| 2024-08-08 17:21:42 +0000 | <Leary> | % data Ex2 c where MkEx2 :: forall c a. c a => Ex2 c |
| 2024-08-08 17:21:42 +0000 | <yahb2> | <interactive>:83:18: error: ; • Could not deduce (c a0) ; from the context: c a ; bound by the type of the constructor ‘MkEx2’: ; forall {k1} (c :: k1 -> Constr... |
| 2024-08-08 17:22:16 +0000 | <Leary> | % data Ex2 c where MkEx2 :: forall c a. c a => a -> Ex2 c |
| 2024-08-08 17:22:16 +0000 | <yahb2> | <no output> |
| 2024-08-08 17:22:26 +0000 | <Leary> | Got blind. |
| 2024-08-08 17:22:37 +0000 | <danse-nr3> | well it's late |
| 2024-08-08 17:22:47 +0000 | <danse-nr3> | but ... no constraint in there? |
| 2024-08-08 17:23:06 +0000 | <Leary> | There is? `c a` in both cases. |
| 2024-08-08 17:23:12 +0000 | <danse-nr3> | oh |
| 2024-08-08 17:23:29 +0000 | <danse-nr3> | isn't that a parameter? |
| 2024-08-08 17:24:17 +0000 | <danse-nr3> | maybe generic data type semantics that i haven't understood yet |
| 2024-08-08 17:24:49 +0000 | <Leary> | % :k Ex2 |
| 2024-08-08 17:24:49 +0000 | <yahb2> | Ex2 :: (* -> Constraint) -> * |
| 2024-08-08 17:25:42 +0000 | <haskellbridge> | <sm> @hseg: interesting discussion still ongoing on this old issue.. it's pretty annoying alright |
| 2024-08-08 17:26:08 +0000 | <danse-nr3> | thanks but i give up. I'll just expose the type and add the constraint in callers |
| 2024-08-08 17:28:04 +0000 | <danse-nr3> | huh nope i can't ^^; |
| 2024-08-08 17:28:15 +0000 | <hseg> | sm: yeah, the motivating case brought up in the discourse (where the test profile differs from the production profile) does not sound like good testing practice |
| 2024-08-08 17:28:19 +0000 | <danse-nr3> | well i'll bump my head on this, thanks anyway |
| 2024-08-08 17:28:31 +0000 | <hseg> | though tbf, it does seem to be a common issue |
| 2024-08-08 17:30:17 +0000 | ubert | (~Thunderbi@2001:871:263:7b9b:f884:5c80:acff:c71d) (Ping timeout: 252 seconds) |
| 2024-08-08 17:31:39 +0000 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 4.2.2) |
| 2024-08-08 17:38:48 +0000 | <danse-nr3> | upon reanalising and adding a type annotation, problem fixed. Had wrongly interpreted an error |
| 2024-08-08 17:39:17 +0000 | <danse-nr3> | (no need to add constraints) |
| 2024-08-08 17:41:21 +0000 | danse-nr3 | (~danse-nr3@user/danse-nr3) (Read error: Connection reset by peer) |
| 2024-08-08 17:42:14 +0000 | danse-nr3 | (~danse-nr3@user/danse-nr3) |
| 2024-08-08 17:42:50 +0000 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 2024-08-08 17:44:15 +0000 | waleee | (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 2024-08-08 17:45:32 +0000 | <haskellbridge> | <sm> hseg: very. I'm going to stare at my cabal (yaml) files again |
| 2024-08-08 17:46:52 +0000 | <monochrom> | hegs: Car manufacturers and graphics cards device driver writers beg to differ. >:) |
| 2024-08-08 17:47:15 +0000 | oneeyedalien | (~oneeyedal@user/oneeyedalien) |
| 2024-08-08 17:47:41 +0000 | <monochrom> | Remember that scandal when some car engines had a test mode for passing emission tests and a real mode for daily driving? |
| 2024-08-08 17:48:39 +0000 | <monochrom> | Remember that other scandal when graphics cards device drivers also had a test mode for passing Microsoft should-not-crash tests and a real mode for daily usage? |
| 2024-08-08 17:55:35 +0000 | <danse-nr3> | huh i lost how that relates :P |
| 2024-08-08 17:55:39 +0000 | <danse-nr3> | *missed |
| 2024-08-08 17:56:21 +0000 | <monochrom> | Having a test profile that differs from the production profile. |
| 2024-08-08 17:56:28 +0000 | <danse-nr3> | oh right |
| 2024-08-08 17:56:41 +0000 | <monochrom> | In the case of the scandals, maliciously intentionally differ. |
| 2024-08-08 17:57:09 +0000 | JuanDaugherty | (~juan@user/JuanDaugherty) (Quit: JuanDaugherty) |
| 2024-08-08 17:57:24 +0000 | <monochrom> | Sad to say that "this is what real engineers do". I lost my faith in humanity. |
| 2024-08-08 17:58:10 +0000 | <danse-nr3> | weeell... i wouldn't generalise |
| 2024-08-08 17:58:34 +0000 | oneeyedalien | (~oneeyedal@user/oneeyedalien) (Ping timeout: 260 seconds) |
| 2024-08-08 18:01:02 +0000 | <dolio> | Graphcis card drivers seem like 90% hacks. |
| 2024-08-08 18:01:27 +0000 | <dolio> | Like, every application is broken, and the driver contains all the workarounds. |
| 2024-08-08 18:02:37 +0000 | <dolio> | At least, that's the sort of thing I've heard. |
| 2024-08-08 18:02:49 +0000 | <danse-nr3> | i didn't follow the graphic cards one but the WV scandal was quite an international blow. That shows such behaviour is not acceptable |
| 2024-08-08 18:03:50 +0000 | hc | (~hc@2407:d200:d002:43:229:85:195:3) (Quit: leaving) |
| 2024-08-08 18:04:14 +0000 | hc | (~hc@mail.hce.li) |
| 2024-08-08 18:04:18 +0000 | <dolio> | So, like, renaming an executable can cause problems, because the driver is checking for the executable name to implement application-specific, incorrect behavior that the application expects. :þ |
| 2024-08-08 18:04:56 +0000 | <danse-nr3> | huh you mean ... the driver patches the app? |
| 2024-08-08 18:04:58 +0000 | <dolio> | Or replacing broken shaders or whatever. |
| 2024-08-08 18:05:36 +0000 | <dolio> | Effectively. That's what I've heard is the general state of graphics drivers (on Windows, at least). |
| 2024-08-08 18:06:57 +0000 | <danse-nr3> | sounds like a crazy amount of fragile work considering apps are not open-source |
| 2024-08-08 18:11:02 +0000 | <dolio> | Someone less 'altruistically,' I think the GPU manufacturer will sometimes help write non-conforming code that their driver successfully works around (but not their competitor's). |
| 2024-08-08 18:13:26 +0000 | <danse-nr3> | oh that sounds more realistic |
| 2024-08-08 18:15:30 +0000 | machinedgod | (~machinedg@d50-99-47-73.abhsia.telus.net) (Ping timeout: 252 seconds) |
| 2024-08-08 18:17:05 +0000 | oneeyedalien | (~oneeyedal@user/oneeyedalien) |
| 2024-08-08 18:20:30 +0000 | <EvanR> | thisExecutablesName :: String |
| 2024-08-08 18:20:56 +0000 | <EvanR> | a very useful global |
| 2024-08-08 18:21:53 +0000 | <meejah> | dolio: yes, GPU drivers are _mostly_ such workaround code, from my understand (experience is now dated, but I doubt that practice changed) |
| 2024-08-08 18:28:33 +0000 | Ellenor | (~Ellenor@invictus.wa.us.umbrellix.net) (Ping timeout: 244 seconds) |
| 2024-08-08 18:30:31 +0000 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
| 2024-08-08 18:30:35 +0000 | chiselfuse | (~chiselfus@user/chiselfuse) (Remote host closed the connection) |
| 2024-08-08 18:31:37 +0000 | chiselfuse | (~chiselfus@user/chiselfuse) |
| 2024-08-08 18:33:16 +0000 | <danse-nr3> | all my afternoon's sweat resulted in ... huh ... 29 lines of code, but i'm really happy about them -_-; |
| 2024-08-08 18:34:44 +0000 | <EvanR> | that's amazing |
| 2024-08-08 18:35:03 +0000 | <EvanR> | maybe tomorrow you can get it down to 20 or 15 |
| 2024-08-08 18:35:08 +0000 | <meejah> | that's like 300 lines in a less-concise language, right? ;) |
| 2024-08-08 18:36:05 +0000 | thailigur | (~thailigur@172.86.68.44) |
| 2024-08-08 18:37:47 +0000 | <danse-nr3> | dunno, comparing makes little sense to me. I don't even aim for having less lines, it just happens. But i look at them and they are great. Years in, haskell keeps surprising me |
| 2024-08-08 18:42:41 +0000 | slack1256 | (~slack1256@2803:c600:5111:8029:44f4:5d68:3d8e:eb90) (Remote host closed the connection) |
| 2024-08-08 18:44:14 +0000 | thailigur | (~thailigur@172.86.68.44) (Remote host closed the connection) |
| 2024-08-08 18:50:27 +0000 | sawilagar | (~sawilagar@user/sawilagar) (Ping timeout: 276 seconds) |
| 2024-08-08 18:51:59 +0000 | CiaoSen | (~Jura@2a05:5800:22f:a900:e6b9:7aff:fe80:3d03) |
| 2024-08-08 18:52:42 +0000 | danse-nr3 | (~danse-nr3@user/danse-nr3) (Quit: good night) |
| 2024-08-08 19:02:41 +0000 | sawilagar | (~sawilagar@user/sawilagar) |
| 2024-08-08 19:07:32 +0000 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) |
| 2024-08-08 19:15:59 +0000 | Inst | (~Inst@user/Inst) (Remote host closed the connection) |
| 2024-08-08 19:16:18 +0000 | Inst | (~Inst@user/Inst) |
| 2024-08-08 19:19:57 +0000 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
| 2024-08-08 19:27:44 +0000 | igorra | (~igorra@185.211.158.66) |
| 2024-08-08 19:28:46 +0000 | igorra | (~igorra@185.211.158.66) (Client Quit) |
| 2024-08-08 19:33:27 +0000 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 2024-08-08 19:34:35 +0000 | sawilagar | (~sawilagar@user/sawilagar) (Ping timeout: 252 seconds) |
| 2024-08-08 19:53:11 +0000 | kupi | (uid212005@id-212005.hampstead.irccloud.com) |
| 2024-08-08 19:54:17 +0000 | JuanDaugherty | (~juan@user/JuanDaugherty) |
| 2024-08-08 20:03:56 +0000 | hseg | (~gesh@46.120.21.97) (Ping timeout: 252 seconds) |
| 2024-08-08 20:08:46 +0000 | machinedgod | (~machinedg@d50-99-47-73.abhsia.telus.net) |
| 2024-08-08 20:11:04 +0000 | oneeyedalien | (~oneeyedal@user/oneeyedalien) (Quit: Leaving) |
| 2024-08-08 20:12:08 +0000 | Sgeo_ | (~Sgeo@user/sgeo) |
| 2024-08-08 20:12:17 +0000 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 2024-08-08 20:14:21 +0000 | euphores | (~SASL_euph@user/euphores) (Quit: Leaving.) |
| 2024-08-08 20:16:25 +0000 | halloy5409 | (~halloy540@147.235.212.157) |
| 2024-08-08 20:16:43 +0000 | <halloy5409> | > sum [1,2,3] |
| 2024-08-08 20:16:45 +0000 | <lambdabot> | 6 |
| 2024-08-08 20:17:47 +0000 | target_i | (~target_i@user/target-i/x-6023099) |
| 2024-08-08 20:20:24 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 2024-08-08 20:21:46 +0000 | sawilagar | (~sawilagar@user/sawilagar) |
| 2024-08-08 20:21:55 +0000 | euphores | (~SASL_euph@user/euphores) |
| 2024-08-08 20:25:41 +0000 | JuanDaugherty | (~juan@user/JuanDaugherty) (Quit: JuanDaugherty) |
| 2024-08-08 20:26:37 +0000 | <halloy5409> | i want to try to implement `choices` function which give me back all the lists it can retrieve from a given list, so for example if i type: choices [1,2], i'll get back [[], [1], [2], [1,2], [2,1]]. i don't have a clue on how to implement it, and i need advice of how to get started. maybe i need to implement a helper function(s) that solve more simple problem and use it inside the `choices` function. if so, what a simple function should i implement |
| 2024-08-08 20:27:56 +0000 | <ncf> | > subsequences [1,2] >>= permutations |
| 2024-08-08 20:27:58 +0000 | <lambdabot> | [[],[1],[2],[1,2],[2,1]] |
| 2024-08-08 20:28:58 +0000 | <sprout> | > subsequences [1,2] |
| 2024-08-08 20:29:00 +0000 | <lambdabot> | [[],[1],[2],[1,2]] |
| 2024-08-08 20:29:43 +0000 | <halloy5409> | i dont want the solution. i want to write it my self without using those build in functions. |
| 2024-08-08 20:30:12 +0000 | <mauke> | @src subsequences |
| 2024-08-08 20:30:12 +0000 | <lambdabot> | Source not found. Do you think like you type? |
| 2024-08-08 20:30:28 +0000 | <mauke> | > filterM (return [True,False]) [1,2] |
| 2024-08-08 20:30:30 +0000 | <lambdabot> | [[1,2],[1],[2],[]] |
| 2024-08-08 20:30:42 +0000 | <halloy5409> | o rmaybe can you guide me on how to think about it? |
| 2024-08-08 20:30:47 +0000 | <halloy5409> | *or maybe |
| 2024-08-08 20:32:54 +0000 | L29Ah | (~L29Ah@wikipedia/L29Ah) |
| 2024-08-08 20:33:03 +0000 | <sprout> | you need a recurrence relation |
| 2024-08-08 20:33:25 +0000 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds) |
| 2024-08-08 20:39:16 +0000 | <halloy5409> | @type >>= |
| 2024-08-08 20:39:17 +0000 | <lambdabot> | error: parse error on input ‘>>=’ |
| 2024-08-08 20:39:26 +0000 | <halloy5409> | @type (>>=) |
| 2024-08-08 20:39:27 +0000 | <lambdabot> | Monad m => m a -> (a -> m b) -> m b |
| 2024-08-08 20:39:47 +0000 | <halloy5409> | sprout: thanks |
| 2024-08-08 20:42:35 +0000 | <mauke> | > concatMap permutations (subsequences [1,2]) |
| 2024-08-08 20:42:36 +0000 | <lambdabot> | [[],[1],[2],[1,2],[2,1]] |
| 2024-08-08 20:42:46 +0000 | zetef | (~quassel@2a02:2f00:5202:1200:3fa2:e908:b522:fa2f) |
| 2024-08-08 20:42:48 +0000 | Square | (~Square@user/square) (Ping timeout: 252 seconds) |
| 2024-08-08 20:42:49 +0000 | zetef | (~quassel@2a02:2f00:5202:1200:3fa2:e908:b522:fa2f) (Client Quit) |
| 2024-08-08 20:42:55 +0000 | <mauke> | :t concatMap |
| 2024-08-08 20:42:56 +0000 | <lambdabot> | Foldable t => (a -> [b]) -> t a -> [b] |
| 2024-08-08 20:43:17 +0000 | <mauke> | :t (>>=) `asTypeOf` concatMap |
| 2024-08-08 20:43:19 +0000 | <lambdabot> | error: |
| 2024-08-08 20:43:19 +0000 | <lambdabot> | • Couldn't match type ‘[b] -> [b]’ with ‘[a]’ |
| 2024-08-08 20:43:19 +0000 | <lambdabot> | Expected type: [a] -> (a -> [b]) -> [b] |
| 2024-08-08 20:43:31 +0000 | <ncf> | > subsequences [1,1] >>= permutations |
| 2024-08-08 20:43:32 +0000 | <lambdabot> | [[],[1],[1],[1,1],[1,1]] |
| 2024-08-08 20:43:33 +0000 | <mauke> | right |
| 2024-08-08 20:43:39 +0000 | <mauke> | :t flip (>>=) `asTypeOf` concatMap |
| 2024-08-08 20:43:40 +0000 | <lambdabot> | (a -> [b]) -> [a] -> [b] |
| 2024-08-08 20:43:57 +0000 | <ncf> | the first step is to specify what you want mathematically: should the above be [[],[1],[1,1]]? |
| 2024-08-08 20:47:52 +0000 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer) |
| 2024-08-08 20:54:10 +0000 | sawilagar | (~sawilagar@user/sawilagar) (Ping timeout: 248 seconds) |
| 2024-08-08 20:57:21 +0000 | <zzz> | halloy5409: this is not the function you want, but it's one that returns the subsets of a list. i think it can serve as inspiration: https://gist.githubusercontent.com/jrvieira/2820b46856ba1ec89453946557b0f427/raw/a1f2a794459a564f5… |
| 2024-08-08 20:58:10 +0000 | <zzz> | here you get multiple implementations, at different levels of abstraction |
| 2024-08-08 20:59:06 +0000 | <zzz> | bonus: you can see from the comments which run more time-efficiently |
| 2024-08-08 21:01:33 +0000 | michalz | (~michalz@185.246.207.217) (Remote host closed the connection) |
| 2024-08-08 21:08:28 +0000 | <zzz> | here's one more: https://paste.jrvieira.com/1723151276523 |
| 2024-08-08 21:11:09 +0000 | <zzz> | fun exercise |
| 2024-08-08 21:11:48 +0000 | ksqsf | (~user@2a02:2454:8758:c800:85c3:bb5a:c725:a7e6) |
| 2024-08-08 21:15:14 +0000 | <zzz> | why is fold implemented in terms of foldMap? |
| 2024-08-08 21:15:54 +0000 | <zzz> | seems odd to me |
| 2024-08-08 21:16:54 +0000 | <zzz> | why not `fold = foldr mappend mempty` instead of `fold = foldMap id` ? |
| 2024-08-08 21:18:00 +0000 | machinedgod | (~machinedg@d50-99-47-73.abhsia.telus.net) (Ping timeout: 276 seconds) |
| 2024-08-08 21:20:12 +0000 | skyesoss | (~Thunderbi@128.135.204.35) (Ping timeout: 252 seconds) |
| 2024-08-08 21:20:19 +0000 | <halloy5409> | zzz: thanks |
| 2024-08-08 21:21:14 +0000 | <zzz> | halloy5409: yw |
| 2024-08-08 21:21:41 +0000 | <halloy5409> | ncf: i realy dont know. this exercise is more a lecture of Graham Hutton and he just gave the example i started with. i don't know happens where there is a list with the same number |
| 2024-08-08 21:21:56 +0000 | <halloy5409> | mor e= from |
| 2024-08-08 21:22:04 +0000 | <halloy5409> | *more |
| 2024-08-08 21:22:21 +0000 | <halloy5409> | *what happens |
| 2024-08-08 21:26:44 +0000 | <monochrom> | zzz: I prefer foldMap id. |
| 2024-08-08 21:29:58 +0000 | <monochrom> | foldMap and fold commit to no bias. foldr commits to a bias. I consider a more biased thing to be less fundamental. |
| 2024-08-08 21:35:09 +0000 | <halloy5409> | lambdabot: > sum [1,2,3] |
| 2024-08-08 21:35:27 +0000 | <mauke> | > 6 |
| 2024-08-08 21:35:28 +0000 | <lambdabot> | 6 |
| 2024-08-08 21:36:13 +0000 | <zzz> | monochrom: foldMap uses foldr |
| 2024-08-08 21:36:21 +0000 | <zzz> | otherwise i would agree with you |
| 2024-08-08 21:37:15 +0000 | <monochrom> | foldr uses foldMap. |
| 2024-08-08 21:37:54 +0000 | <zzz> | oh no |
| 2024-08-08 21:38:15 +0000 | <monochrom> | This is what's wrong with confirmation bias. |
| 2024-08-08 21:39:24 +0000 | terrorjack4 | (~terrorjac@static.163.82.63.178.clients.your-server.de) (Quit: The Lounge - https://thelounge.chat) |
| 2024-08-08 21:40:16 +0000 | <zzz> | touche |
| 2024-08-08 21:41:28 +0000 | terrorjack4 | (~terrorjac@static.163.82.63.178.clients.your-server.de) |
| 2024-08-08 21:42:44 +0000 | ksqsf | (~user@2a02:2454:8758:c800:85c3:bb5a:c725:a7e6) (ERC 5.6.0.30.1 (IRC client for GNU Emacs 30.0.60)) |
| 2024-08-08 21:49:43 +0000 | hayk | (~hayk@37.252.90.243) (Quit: hayk) |
| 2024-08-08 21:53:13 +0000 | <zzz> | ok so foldMap is more general but it still commits to the "right" bias |
| 2024-08-08 21:53:16 +0000 | raehik | (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) |
| 2024-08-08 21:54:02 +0000 | <monochrom> | No, that's not what it means. Have you seen the definition of the Eq class? |
| 2024-08-08 21:58:08 +0000 | <zzz> | yes. although i'm familiar with the "no /= in Eq" proposal |
| 2024-08-08 21:58:20 +0000 | <zzz> | but i understand your point |
| 2024-08-08 21:59:21 +0000 | <zzz> | i'm not familiar with the Endo stuff so i'm reading up on it |
| 2024-08-08 21:59:51 +0000 | <monochrom> | In an ideal language, foldMap would have like 3 default implementations, one using foldr, one using foldl, one using fold. |
| 2024-08-08 22:00:14 +0000 | <monochrom> | In Haskell, someone has to choose one of them. |
| 2024-08-08 22:00:31 +0000 | <zzz> | is the fact that foldr and foldl can be defined in terms of eachother relevant to the argument you're making? |
| 2024-08-08 22:01:50 +0000 | <EvanR> | can they? |
| 2024-08-08 22:02:24 +0000 | <EvanR> | (specifically for list) |
| 2024-08-08 22:03:56 +0000 | <monochrom> | We can assume finite data structures for this context. |
| 2024-08-08 22:04:37 +0000 | <zzz> | yes, i admit some handwaving |
| 2024-08-08 22:04:40 +0000 | <monochrom> | Actually, 4 default implementations: foldr, foldl, fold, toList. |
| 2024-08-08 22:05:31 +0000 | <EvanR> | reducing a tree seems to have many possible strategies not just 4 |
| 2024-08-08 22:07:18 +0000 | <zzz> | trees are inherently something, right? like lists are inherently right fold by the way the data type is defined |
| 2024-08-08 22:07:48 +0000 | <EvanR> | you might say a list is a right leaning tree and a snoc list is left leaning |
| 2024-08-08 22:07:51 +0000 | <zzz> | i may not be expressing myself with the best words |
| 2024-08-08 22:07:57 +0000 | <monochrom> | trees are inherently trees. |
| 2024-08-08 22:08:08 +0000 | <sprout> | say it like it is |
| 2024-08-08 22:08:47 +0000 | <probie> | <unhelpful>`foldl` is just a special case of `foldr` for lists</unhelpful> |
| 2024-08-08 22:09:17 +0000 | <monochrom> | or you could say "branching left right and centre" if you're still looking for metaphors. |
| 2024-08-08 22:10:56 +0000 | <zzz> | can an argument be made that foldr should be just called fold? |
| 2024-08-08 22:11:20 +0000 | <EvanR> | :t fold |
| 2024-08-08 22:11:21 +0000 | <lambdabot> | (Foldable t, Monoid m) => t m -> m |
| 2024-08-08 22:11:37 +0000 | <EvanR> | see, that one is interesting because it doesn't matter how you reduce the tree, it comes out the same |
| 2024-08-08 22:11:45 +0000 | <EvanR> | because monoidness |
| 2024-08-08 22:12:20 +0000 | <zzz> | i want to understand this better |
| 2024-08-08 22:12:21 +0000 | <EvanR> | foldl and foldr meanwhile rely on narratives |
| 2024-08-08 22:12:40 +0000 | <monochrom> | I am not sure what's the use of such an argument, but yes. Because an argument can be made that X sshould be called Y, for all X and Y. |
| 2024-08-08 22:13:20 +0000 | <monochrom> | OK I know what's the use. Some people enjoy power trips obtained from controlling and/or changing terminology. |
| 2024-08-08 22:13:27 +0000 | <EvanR> | foldl and foldr appeal you specific reductions in situations where the order might matter |
| 2024-08-08 22:13:33 +0000 | <EvanR> | appeal to* |
| 2024-08-08 22:13:58 +0000 | <EvanR> | so some semblance of specificity is tacked onto the name |
| 2024-08-08 22:14:07 +0000 | <zzz> | agree |
| 2024-08-08 22:14:21 +0000 | <zzz> | but foldr is the "natural" one, isn't it |
| 2024-08-08 22:14:32 +0000 | <probie> | `foldr` (on lists, not `Foldable` in general) doesn't rely on a narrative at all, and is _the_ fold for lists. If I was making the standard library (and didn't have a `Foldable` typeclass), I'd have just called it fold |
| 2024-08-08 22:14:45 +0000 | <zzz> | the more fundamental one, using monochrome's terminology |
| 2024-08-08 22:14:49 +0000 | <EvanR> | foldl is "natural" for snoc lists? |
| 2024-08-08 22:15:16 +0000 | <probie> | Sure, but "snoc lists" aren't "lists", you've just moved the conversation from lists back to `Foldable` |
| 2024-08-08 22:15:17 +0000 | <monochrom> | This is why I don't say "fold" I say "catamorphism". |
| 2024-08-08 22:15:26 +0000 | <EvanR> | fold = foldr for lists makes sense because performance |
| 2024-08-08 22:15:45 +0000 | <zzz> | monochrom: catar / catal :p |
| 2024-08-08 22:15:52 +0000 | <EvanR> | doing it in another order would get the same answer but be silly |
| 2024-08-08 22:16:41 +0000 | <EvanR> | fold = foldr in general I don't know about that |
| 2024-08-08 22:17:05 +0000 | <zzz> | EvanR: silly is a strong word |
| 2024-08-08 22:17:11 +0000 | <EvanR> | yeah catamorphism is something else |
| 2024-08-08 22:17:32 +0000 | <EvanR> | which is a transformation rather than a reduction |
| 2024-08-08 22:17:33 +0000 | <probie> | monochrom: if I say {cata,ana,hylo}morphism instead of {∅,un,re}fold, I get in trouble for being elitist |
| 2024-08-08 22:17:39 +0000 | <EvanR> | but you can implement one with the other |
| 2024-08-08 22:19:19 +0000 | CiaoSen | (~Jura@2a05:5800:22f:a900:e6b9:7aff:fe80:3d03) (Ping timeout: 264 seconds) |
| 2024-08-08 22:19:27 +0000 | <zzz> | i think i get it. thanks |
| 2024-08-08 22:22:05 +0000 | <probie> | EvanR: I don't think you're right about them being different. In "Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire" there's the line "Without special notations pinpointing cata such as (|_|) or foldr" |
| 2024-08-08 22:22:38 +0000 | <probie> | The people who brought the term "catamorphism" to the "mainstream", think that `foldr` is a catamorphism |
| 2024-08-08 22:22:41 +0000 | <EvanR> | that doesn't prove I'm not right it proves what people mean by foldr isn't universal |
| 2024-08-08 22:23:12 +0000 | AlexNoo_ | (~AlexNoo@94.233.240.239) |
| 2024-08-08 22:23:32 +0000 | <monochrom> | I would simply leave communities that think that "catamorphism" is elitist. |
| 2024-08-08 22:24:19 +0000 | <monochrom> | And circling back, perhaps they do so for power trips. |
| 2024-08-08 22:24:45 +0000 | <Rembane> | +1 |
| 2024-08-08 22:25:20 +0000 | <EvanR> | I never understood elitist-as-derogatory from any perspective |
| 2024-08-08 22:25:34 +0000 | <monochrom> | Accusing other people of "watering down" is a power trip, but so is accusing other people of "elitist", generally accusing anything at all. |
| 2024-08-08 22:26:06 +0000 | <monochrom> | Generally accusing other people of "being different from me". |
| 2024-08-08 22:26:19 +0000 | halloy5409 | (~halloy540@147.235.212.157) (Remote host closed the connection) |
| 2024-08-08 22:26:33 +0000 | AlexNoo | (~AlexNoo@94.233.241.125) (Ping timeout: 252 seconds) |
| 2024-08-08 22:26:46 +0000 | AlexZenon | (~alzenon@94.233.241.125) (Ping timeout: 272 seconds) |
| 2024-08-08 22:27:42 +0000 | <EvanR> | let code do the talking xD |
| 2024-08-08 22:27:54 +0000 | <EvanR> | WildlyPopularProfitableMMO here we go |
| 2024-08-08 22:28:14 +0000 | <EvanR> | it will be called Elite: Dangerist |
| 2024-08-08 22:30:08 +0000 | <Rembane> | I first thought WildlyPopularProfitableMMO was a language extension... took me a while to realize that it's not. |
| 2024-08-08 22:30:35 +0000 | <zzz> | i wonder if APL-type languages have arguments about which symbol makes more sense for a given function |
| 2024-08-08 22:30:51 +0000 | <Rembane> | zzz: IIRC they do |
| 2024-08-08 22:30:56 +0000 | <EvanR> | it's a type synonym for an outlandishly detailed dependent type for elon's AI to solve for |
| 2024-08-08 22:31:01 +0000 | <Rembane> | zzz: It's a selling point |
| 2024-08-08 22:31:19 +0000 | <zzz> | i'm not surprised at all :D |
| 2024-08-08 22:31:27 +0000 | <Rembane> | EvanR: But does it do Blockchain? |
| 2024-08-08 22:32:28 +0000 | <EvanR> | but is it webscale? but will it blend? |
| 2024-08-08 22:32:51 +0000 | <Rembane> | And how well does it do microservices? |
| 2024-08-08 22:33:05 +0000 | <EvanR> | vom |
| 2024-08-08 22:33:24 +0000 | ystael | (~ystael@user/ystael) (Ping timeout: 276 seconds) |
| 2024-08-08 22:33:28 +0000 | zetef | (~quassel@2a02:2f00:5202:1200:3fa2:e908:b522:fa2f) |
| 2024-08-08 22:33:44 +0000 | zetef | (~quassel@2a02:2f00:5202:1200:3fa2:e908:b522:fa2f) (Client Quit) |
| 2024-08-08 22:34:04 +0000 | <Rembane> | Can almost quit from vom |
| 2024-08-08 22:34:04 +0000 | AlexZenon | (~alzenon@94.233.240.239) |
| 2024-08-08 22:37:33 +0000 | infinity0 | (~infinity0@pwned.gg) (Ping timeout: 252 seconds) |
| 2024-08-08 22:38:41 +0000 | <zzz> | elite and niche are different concepts imo, i'm not sure which one would apply better here |
| 2024-08-08 22:39:54 +0000 | <EvanR> | elite is effective and useful while niche isn't? xD |
| 2024-08-08 22:41:55 +0000 | <zzz> | what would be effecrive and useful i suspect is content-addressable code |
| 2024-08-08 22:42:08 +0000 | <zzz> | like in Unison |
| 2024-08-08 22:42:12 +0000 | <Rembane> | Elite content-addressable code! |
| 2024-08-08 22:42:39 +0000 | <EvanR> | Elite: Content-Addressable |
| 2024-08-08 22:42:51 +0000 | <Rembane> | Good DLC that one |
| 2024-08-08 22:45:33 +0000 | <zzz> | anyways, thank you for making me understand Foldable better |
| 2024-08-08 22:50:12 +0000 | <raehik> | I have a `Text -> m ByteString` parser where I know the maximum length the result can be from the length of the Text. I could use the `createUpToN` bytestring primitives to only allocate once. however, one could write "malicious" inputs that have a long max length, but a short parsed length |
| 2024-08-08 22:51:04 +0000 | <raehik> | is this sort of thing still a good idea? I'm never quite sure. I can always do a regular growing buffer which is likely hardly worse performance |
| 2024-08-08 22:52:03 +0000 | ddellacosta | (~ddellacos@ool-44c73d29.dyn.optonline.net) (Ping timeout: 245 seconds) |
| 2024-08-08 22:56:21 +0000 | <raehik> | (also, what's the word compsci ppl use for "malicious" there, worst-case inputs? begins with P I swear) |
| 2024-08-08 22:56:35 +0000 | <c_wraith> | pathological |
| 2024-08-08 22:56:42 +0000 | <raehik> | c_wraith: ahhhh yes thanks :) |
| 2024-08-08 22:56:47 +0000 | <raehik> | knew it was medical |
| 2024-08-08 22:58:07 +0000 | <EvanR> | is the final ByteString built up from chunks? produce a list of chunks then join it all |
| 2024-08-08 22:58:25 +0000 | <EvanR> | or better yet, produce a lazy bytestring from it |
| 2024-08-08 22:58:34 +0000 | infinity0 | (~infinity0@pwned.gg) |
| 2024-08-08 22:59:33 +0000 | <raehik> | ah I tend to only think in terms of strict bytestrings |
| 2024-08-08 23:00:27 +0000 | <EvanR> | or just work with the list of smaller strict ByteStrings which is effectively the same thing |
| 2024-08-08 23:01:07 +0000 | <EvanR> | depends what you will do with it |
| 2024-08-08 23:01:08 +0000 | <raehik> | how would I chunk in this situation? or are you suggesting not to do the `createUpToN` idea |
| 2024-08-08 23:01:31 +0000 | <raehik> | the output will be written directly to memory or disk somewhere |
| 2024-08-08 23:01:43 +0000 | <raehik> | (if used) |
| 2024-08-08 23:01:48 +0000 | <EvanR> | are you proposing to allocate N then mutate the bytes later? |
| 2024-08-08 23:01:54 +0000 | <EvanR> | I'd avoid that |
| 2024-08-08 23:01:59 +0000 | <raehik> | https://hackage.haskell.org/package/bytestring-0.12.1.0/docs/Data-ByteString-Internal.html#v:creat… |
| 2024-08-08 23:02:14 +0000 | <EvanR> | IO :( |
| 2024-08-08 23:02:32 +0000 | <raehik> | not sure what's wrong with that |
| 2024-08-08 23:02:45 +0000 | <EvanR> | well then your parser needs IO |
| 2024-08-08 23:03:02 +0000 | <raehik> | I have a library that hides all this haha https://hackage.haskell.org/package/bytezap |
| 2024-08-08 23:03:10 +0000 | <EvanR> | you kind of can't hide IO |
| 2024-08-08 23:03:33 +0000 | <EvanR> | ok, unsafePerformIO ... which is getting fishy fast |
| 2024-08-08 23:04:36 +0000 | <raehik> | bytestring provides unsafeCreateUptoN as well which handles the IO unwrapping for us |
| 2024-08-08 23:04:43 +0000 | target_i | (~target_i@user/target-i/x-6023099) (Quit: leaving) |
| 2024-08-08 23:04:58 +0000 | <raehik> | this is how most low-level bytestring manipulation is performed |
| 2024-08-08 23:06:11 +0000 | <EvanR> | ok but why do you want to do it xD |
| 2024-08-08 23:06:41 +0000 | <EvanR> | don't you like your programs to not segfault |
| 2024-08-08 23:07:09 +0000 | <EvanR> | with zero explanation of when or why |
| 2024-08-08 23:07:21 +0000 | <raehik> | my original point was that `createUptoN` lets me do a single allocation for all inputs without having to grow a buffer or do other stuff, which is fast |
| 2024-08-08 23:07:43 +0000 | <EvanR> | my suggestion didn't involve an IO based growing buffer or mutators |
| 2024-08-08 23:07:44 +0000 | <raehik> | but you can pass pathological inputs which could waste lots of memory |
| 2024-08-08 23:08:07 +0000 | <raehik> | oh sorry I don't think I understood properly then |
| 2024-08-08 23:08:30 +0000 | <EvanR> | a follow up was if your output is based on many small bytestring chunks logically glued together |
| 2024-08-08 23:08:45 +0000 | <EvanR> | or more complicated than that |
| 2024-08-08 23:09:17 +0000 | <raehik> | no the output is used as-is, not plugged together to more bytestrings |
| 2024-08-08 23:09:50 +0000 | <EvanR> | no... |
| 2024-08-08 23:12:05 +0000 | <raehik> | do you mean can the output be chunked conveniently during parsing? It can with a bit of bookkeeping |
| 2024-08-08 23:12:49 +0000 | <raehik> | but the single ByteString output isn't manipulated afterwards |
| 2024-08-08 23:12:54 +0000 | <EvanR> | I was wondering if you generate the output as simple chunks one after the other, not if you will later concat the output onto something else |
| 2024-08-08 23:13:07 +0000 | brettgilio | (~brettgili@154.3.237.18) (Quit: The Lounge - https://thelounge.chat) |
| 2024-08-08 23:13:10 +0000 | <EvanR> | generate vs consume |
| 2024-08-08 23:13:36 +0000 | <raehik> | ah no assume it's not being used in a chunking context |
| 2024-08-08 23:13:49 +0000 | <EvanR> | that... is not what |
| 2024-08-08 23:14:10 +0000 | <EvanR> | not asking about how you consume it |
| 2024-08-08 23:14:45 +0000 | <raehik> | I assumed you asked if the parsing is called sequentially on a large input, chunking as required |
| 2024-08-08 23:14:59 +0000 | rvalue- | (~rvalue@user/rvalue) |
| 2024-08-08 23:15:05 +0000 | <raehik> | it isn't. was that not what you were asking |
| 2024-08-08 23:15:19 +0000 | <raehik> | (sry for the misunderstandings) |
| 2024-08-08 23:15:20 +0000 | rvalue | (~rvalue@user/rvalue) (Ping timeout: 252 seconds) |
| 2024-08-08 23:16:52 +0000 | <EvanR> | nope not talking about consume input either |
| 2024-08-08 23:17:05 +0000 | <EvanR> | or consuming anything at all, oh well! |
| 2024-08-08 23:19:00 +0000 | rvalue- | rvalue |
| 2024-08-08 23:19:00 +0000 | gmg | (~user@user/gehmehgeh) (Quit: Leaving) |
| 2024-08-08 23:19:27 +0000 | <probie> | zzz: I've not seen many arguments in the APL community around the choice of symbols. The only one that comes to mind is that from time to time, people suggest replacing `/` for either reduce or replicate |
| 2024-08-08 23:19:29 +0000 | <raehik> | I'm sorry I haven't understood your questions properly. I'd like to think it's the text medium's fault rather than either of ours |
| 2024-08-08 23:24:13 +0000 | pavonia | (~user@user/siracusa) |
| 2024-08-08 23:32:51 +0000 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
| 2024-08-08 23:51:04 +0000 | acidjnk_new3 | (~acidjnk@p200300d6e72cfb069cd6142dbab03153.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 2024-08-08 23:53:11 +0000 | <zzz> | probie: oh no |
| 2024-08-08 23:53:27 +0000 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
| 2024-08-08 23:54:44 +0000 | zzz | zero |
| 2024-08-08 23:58:43 +0000 | waleee | (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 245 seconds) |