Logs on 2025-03-26 (liberachat/#haskell)
| 00:04:38 | → | robobub joins (uid248673@id-248673.uxbridge.irccloud.com) |
| 00:07:01 | × | sarna quits (~sarna@d192-22.icpnet.pl) (Ping timeout: 265 seconds) |
| 00:09:05 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 00:11:27 | → | weary-traveler joins (~user@user/user363627) |
| 00:12:06 | <EvanR> | > atan (recip 0) |
| 00:12:07 | <lambdabot> | 1.5707963267948966 |
| 00:12:12 | <EvanR> | > atan (recip (-0)) |
| 00:12:14 | <lambdabot> | -1.5707963267948966 |
| 00:13:21 | <EvanR> | also the way I do decode float in another universe is return (sign, mantissa, exponent) |
| 00:14:45 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 00:16:00 | <Leary> | otto_s: May I introduce you to your lord and saviour `LexicalNegation`? It will ensure that `-1` means `fromInteger -1`, not `negate (fromInteger 1)`, hence `-1 = -1 :+ 0`. |
| 00:16:29 | × | tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 244 seconds) |
| 00:16:50 | <Leary> | I would like to demonstrate with yahb2, but it's being weird: |
| 00:16:57 | <Leary> | % import Data.Complex |
| 00:16:57 | <yahb2> | <no location info>: error: [GHC-88719] ; Could not load module ‘Data.Complex’. ; Perhaps you haven't installed the "dyn" libraries for package ‘base-4.21.0.0’? ; Use :set -v to see a li... |
| 00:17:02 | <Leary> | tomsmeding: ^ halp |
| 00:17:28 | <geekosaur> | think he's in bed by now, sadly |
| 00:17:45 | <geekosaur> | utc-2 iirc so it's like 2am |
| 00:18:25 | <EvanR> | indeed it's only 54 dotbeats |
| 00:20:50 | → | tomboy64 joins (~tomboy64@user/tomboy64) |
| 00:21:39 | → | zungi joins (~tory@user/andrewchawk) |
| 00:24:53 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 00:26:00 | → | alfiee joins (~alfiee@user/alfiee) |
| 00:26:09 | → | ljdarj1 joins (~Thunderbi@user/ljdarj) |
| 00:29:06 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 244 seconds) |
| 00:29:06 | ljdarj1 | is now known as ljdarj |
| 00:30:13 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 248 seconds) |
| 00:31:41 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 00:38:16 | → | sarna joins (~sarna@d192-22.icpnet.pl) |
| 00:42:56 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 00:46:18 | × | CiaoSen quits (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 272 seconds) |
| 00:47:01 | × | TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 268 seconds) |
| 00:47:29 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 00:55:24 | × | acidjnk quits (~acidjnk@p200300d6e71c4f2435ff52636e0f7274.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 00:55:50 | → | acidjnk joins (~acidjnk@p200300d6e71c4f2435ff52636e0f7274.dip0.t-ipconnect.de) |
| 00:58:43 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 01:01:38 | × | xff0x quits (~xff0x@2405:6580:b080:900:f588:30f2:ad44:5069) (Ping timeout: 245 seconds) |
| 01:04:33 | × | acidjnk quits (~acidjnk@p200300d6e71c4f2435ff52636e0f7274.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
| 01:05:23 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 01:11:25 | → | alfiee joins (~alfiee@user/alfiee) |
| 01:15:47 | × | otto_s quits (~user@p5de2f2e9.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 01:16:00 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 268 seconds) |
| 01:16:47 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 01:17:34 | → | otto_s joins (~user@p4ff27de5.dip0.t-ipconnect.de) |
| 01:21:33 | × | JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org)) |
| 01:21:35 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 01:24:10 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 244 seconds) |
| 01:26:21 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 01:26:47 | × | machinedgod quits (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 252 seconds) |
| 01:28:01 | × | Pixi` quits (~Pixi@user/pixi) (Quit: Leaving) |
| 01:32:33 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 01:34:59 | × | Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
| 01:36:58 | × | inca quits (~inca@4-138-135-64.gray-ng.dsl.pinetreenetworks.com) (Ping timeout: 272 seconds) |
| 01:37:18 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 01:37:33 | → | hattckory joins (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
| 01:38:19 | → | inca joins (~inca@4-138-135-64.gray-ng.dsl.pinetreenetworks.com) |
| 01:39:21 | → | todi1 joins (~todi@p57803331.dip0.t-ipconnect.de) |
| 01:39:30 | × | todi quits (~todi@p57803331.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
| 01:40:23 | × | aetepe quits (~aetepe@188.119.22.83) (Ping timeout: 245 seconds) |
| 01:40:45 | → | Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) |
| 01:42:56 | × | inca quits (~inca@4-138-135-64.gray-ng.dsl.pinetreenetworks.com) (Ping timeout: 252 seconds) |
| 01:43:34 | × | cyphase quits (~cyphase@user/cyphase) (Ping timeout: 260 seconds) |
| 01:43:48 | → | inca joins (~inca@4-138-135-64.gray-ng.dsl.pinetreenetworks.com) |
| 01:48:18 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 01:48:47 | × | inca quits (~inca@4-138-135-64.gray-ng.dsl.pinetreenetworks.com) (Ping timeout: 252 seconds) |
| 01:52:50 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 01:53:16 | → | xff0x joins (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
| 01:54:10 | <monochrom> | It looks like -1 :: Complex Double becomes - (1 :+ 0) so it is (-1) :+ (-0) |
| 01:55:13 | <geekosaur> | yes, that's because of how the Report specifies unary negation |
| 01:55:20 | <monochrom> | You could blame how there are +0 and -0, but numerical analysis people actually complain about how Java screws up everything by eliminating that. |
| 01:55:32 | → | inca joins (~inca@4-138-135-64.gray-ng.dsl.pinetreenetworks.com) |
| 01:55:51 | <geekosaur> | NegativeLiterals or LexicalNegation changes it |
| 01:56:30 | → | alfiee joins (~alfiee@user/alfiee) |
| 01:57:02 | × | Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
| 01:57:39 | <monochrom> | https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html has a section on how having -0 is helpful for complex numbers. |
| 01:58:19 | × | notdabs quits (~Owner@2600:1700:69cf:9000:5812:4103:61ba:7880) (Read error: Connection reset by peer) |
| 01:59:25 | → | Square joins (~Square@user/square) |
| 01:59:37 | <monochrom> | I believe in the principle that the largest stakeholders should have the largest say. In this case physicists and numerical people who use floating point in anger should have a much larger say than us casual occasional users. And their verdict is clear, all the IEEE 754 "weirdness" is what they want. |
| 02:01:01 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 268 seconds) |
| 02:03:40 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 02:03:55 | <haskellbridge> | <Bowuigi> Posits may be better for the rest of us |
| 02:05:17 | <c_wraith> | Fixed point is better for my use cases |
| 02:06:46 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 02:08:25 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds) |
| 02:11:42 | × | weary-traveler quits (~user@user/user363627) (Remote host closed the connection) |
| 02:19:02 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 02:23:43 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 02:26:12 | <Axman6> | @tell Liamzee https://github.com/the-benchmarker/web-frameworks/pull/8328 |
| 02:26:12 | <lambdabot> | Consider it noted. |
| 02:26:13 | × | aforemny_ quits (~aforemny@2001:9e8:6cde:a00:bd3b:75a2:c3bc:65be) (Ping timeout: 265 seconds) |
| 02:26:32 | → | bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex) |
| 02:27:35 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 02:28:11 | → | aforemny joins (~aforemny@i59F4C69B.versanet.de) |
| 02:34:50 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 02:36:30 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 244 seconds) |
| 02:36:53 | → | cyphase joins (~cyphase@user/cyphase) |
| 02:40:52 | × | cyphase quits (~cyphase@user/cyphase) (Read error: Connection reset by peer) |
| 02:41:55 | → | alfiee joins (~alfiee@user/alfiee) |
| 02:41:59 | → | cyphase joins (~cyphase@user/cyphase) |
| 02:42:12 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds) |
| 02:44:59 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 260 seconds) |
| 02:46:22 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
| 02:46:24 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 02:47:08 | → | Pixi joins (~Pixi@user/pixi) |
| 02:51:45 | → | TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker) |
| 02:52:53 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 02:55:35 | × | bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 02:55:41 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 02:57:44 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 03:08:40 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 03:12:22 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 244 seconds) |
| 03:13:47 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds) |
| 03:15:48 | <EvanR> | > -1 :: Complex Double |
| 03:15:50 | <lambdabot> | (-1.0) :+ (-0.0) |
| 03:16:10 | <EvanR> | it Shows -0 in the imaginary part all along lol |
| 03:16:22 | <geekosaur> | % :set -XLexicalNegation |
| 03:16:22 | <yahb2> | <no output> |
| 03:16:35 | <geekosaur> | % -1 :: Complex Double |
| 03:16:35 | <yahb2> | <interactive>:377:7: error: [GHC-76037] ; Not in scope: type constructor or class ‘Complex’ |
| 03:16:42 | <EvanR> | funny it took so long to "prove" |
| 03:16:54 | <geekosaur> | oh wait, someone tried to import that and it errored |
| 03:17:02 | <geekosaur> | % import Data.Complex |
| 03:17:03 | <yahb2> | <no location info>: error: [GHC-88719] ; Could not load module ‘Data.Complex’. ; Perhaps you haven't installed the "dyn" libraries for package ‘base-4.21.0.0’? ; Use :set -v to see a li... |
| 03:19:11 | → | developer_ joins (~developer@85.50.149.196) |
| 03:19:52 | <EvanR> | that -0 compares equal to "just" 0, and there's no corresponding "plus zero" condition for the result of positive underflows says to me they considered negative zero to be a "bonus feature" which could usually be ignored, or utilized for more information in some cases |
| 03:20:15 | <EvanR> | when addition exactly cancels you get just zero, never negative |
| 03:20:19 | <haskellbridge> | <Liamzee> i hope this question isn't too dumb, but |
| 03:20:26 | <geekosaur> | ghci> -1 :: Complex Double |
| 03:20:26 | <geekosaur> | (-1.0) :+ 0.0 |
| 03:20:29 | <haskellbridge> | <Liamzee> oh, chat is active, sorry |
| 03:20:34 | × | random-jellyfish quits (~developer@user/random-jellyfish) (Ping timeout: 260 seconds) |
| 03:20:38 | <geekosaur> | go ahead |
| 03:21:04 | <haskellbridge> | <Liamzee> i'm building a rust-based microservices router, with the initial microservices being in Haskell |
| 03:21:05 | <geekosaur> | EvanR, that behavior is specified by IEEE754 |
| 03:21:18 | <EvanR> | I'm sure it is |
| 03:21:22 | <haskellbridge> | <Liamzee> if I want to pass the IP of the sender, how would I get warp / servant / twain to get the IP? |
| 03:21:45 | <geekosaur> | monochrom posted an Oracle doc explaining it, beyond that I think the specification itself is probably the best source |
| 03:21:56 | <EvanR> | just noting there's no corresponding plus zero |
| 03:22:03 | <EvanR> | so it's an asymmetric feature |
| 03:22:33 | <geekosaur> | yes, and it exists solely to put zeroes in the correct quadrant on a plane |
| 03:23:22 | <EvanR> | zeroes in a quadrant |
| 03:23:51 | <geekosaur> | (I would have to read the spec to see if Report-compliant behavior or the extension is the correct behavior) |
| 03:24:05 | <geekosaur> | yes. has to do with ranges |
| 03:24:28 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 03:24:33 | <geekosaur> | and trig |
| 03:24:34 | → | aetepe joins (~aetepe@188.119.22.83) |
| 03:24:55 | <geekosaur> | but as I said earlier, I haven't messed with this since 1985, so… |
| 03:27:59 | → | alfiee joins (~alfiee@user/alfiee) |
| 03:28:43 | × | aetepe quits (~aetepe@188.119.22.83) (Ping timeout: 245 seconds) |
| 03:29:12 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds) |
| 03:29:58 | <EvanR> | Liamzee, I see remoteHost :: SockAddr field in the Request type for wai |
| 03:30:17 | <monochrom> | I would interpret the two signed zeros to be -0 and +0, rather than -0 and "neutral" 0. |
| 03:30:27 | <EvanR> | sometimes it is exactly zero |
| 03:30:39 | <EvanR> | none this "every float is a random number around some point" crap xD |
| 03:30:43 | <EvanR> | none of* |
| 03:31:01 | <monochrom> | No, this is not about random or nondeterminism. |
| 03:31:30 | <EvanR> | if you add -0.5 and +0.5, it equals zero, not +zero |
| 03:31:40 | <EvanR> | (or -zero) |
| 03:32:21 | <monochrom> | Let me write very explicitly. (+1)/(+0) = +oo, (+1)/(-0) = -oo. That's btw another reason to keep a sign bit on zero. |
| 03:32:48 | <geekosaur> | go read that Oracle paper monochrom linked earlier |
| 03:32:50 | <EvanR> | also +1 / +infinity = zero |
| 03:32:50 | <monochrom> | > 1 / ((-0.5) + (+0.5)) |
| 03:32:52 | <lambdabot> | error: |
| 03:32:52 | <lambdabot> | • No instance for (Fractional (Double -> Double)) |
| 03:32:52 | <lambdabot> | arising from a use of ‘e_110505’ |
| 03:32:52 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 272 seconds) |
| 03:33:08 | <geekosaur> | this is related to numeric analysis and complex trig, and predates computers |
| 03:33:09 | <haskellbridge> | <Liamzee> thanks EvanR |
| 03:33:24 | <EvanR> | if anything you just pointed out another (or instead of) asymmetry |
| 03:34:33 | <geekosaur> | the numerics folks demanded this behavior when IEEE floating point was being standardized |
| 03:34:36 | <haskellbridge> | <Liamzee> thanks Axman6 , but ultimately I'd love to see Haskell's web-interfaces using linear haskell to reduce memory consumption and allocation time |
| 03:34:37 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 03:34:38 | → | bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex) |
| 03:35:45 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 03:36:17 | <monochrom> | Sure, some asymmetry is inevitable. |
| 03:36:57 | × | bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 03:36:58 | <monochrom> | I interpret that asymmetry to mean "+0 is the default" not "there is no +0, instead a neutral 'exact' [sic] zero". |
| 03:37:03 | <monochrom> | -0 is as exact as +0. |
| 03:37:28 | → | bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex) |
| 03:37:36 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 03:38:45 | <EvanR> | the section on signed zero just notes trig functions and complex analysis functions, makes sense |
| 03:38:51 | <monochrom> | Because 1/("neutral exact" zero) has no reason to be either +oo or -oo. (At most a reason to be the Riemann sphere oo.) Whereas 1/(+0) does. |
| 03:39:21 | <EvanR> | though the interpretation of "zero minus" and "zero plus" breaks down for results that should be exactly zero |
| 03:39:52 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 03:39:53 | <EvanR> | I'm sure it's a sacrifice to be made instead of losing a bit of precision for 3 different signs |
| 03:39:57 | <monochrom> | It doesn't if a deterministic convention is set up for defaulting. |
| 03:40:34 | <EvanR> | yes recip of exactly zero wouldn't be either infinity |
| 03:40:47 | <EvanR> | it would be its own thing, similar to graphical linear algebra |
| 03:41:05 | <EvanR> | which also has infinities over infinity |
| 03:41:23 | <EvanR> | and zero over zero |
| 03:42:27 | <EvanR> | monochrom, I interpret the symmetry to mean there's a minor bias to the positive direction |
| 03:42:43 | <EvanR> | asymmetry |
| 03:42:45 | <monochrom> | Yes that's what I do. |
| 03:44:49 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 03:47:04 | <EvanR> | > 3.14 - 3.1400000000000006 -- I think it's impossible to get -0 through addition |
| 03:47:06 | <lambdabot> | -4.440892098500626e-16 |
| 03:48:18 | <EvanR> | > 0 + (-0) |
| 03:48:19 | <lambdabot> | 0 |
| 03:48:33 | <EvanR> | > (-0) + (-0) |
| 03:48:34 | <lambdabot> | 0 |
| 03:48:38 | <EvanR> | lol |
| 03:48:51 | <EvanR> | positive bias is strong |
| 03:48:52 | <monochrom> | printf and most pretty printers drop the sign. |
| 03:49:00 | <EvanR> | > -0 |
| 03:49:01 | <lambdabot> | 0 |
| 03:49:12 | <monochrom> | what you see is never what you get. it's telephone games all the way down. |
| 03:49:12 | <EvanR> | Complex Double doesn't |
| 03:49:31 | <EvanR> | > (-0) + (-0) :: Complex Double |
| 03:49:33 | <lambdabot> | (-0.0) :+ (-0.0) |
| 03:49:43 | <EvanR> | > (0) + (-0) :: Complex Double |
| 03:49:44 | <lambdabot> | 0.0 :+ 0.0 |
| 03:50:10 | <EvanR> | halfway sane |
| 03:50:18 | <monochrom> | Right. Just don't trust the Show instance for Double. |
| 03:51:16 | <EvanR> | or encodeFloat ! |
| 03:51:23 | <EvanR> | er decode |
| 03:52:39 | <Leary> | The `Show` instance for `Double` is fine; it was just defaulting to `Integer` there. |
| 03:53:17 | → | Square2 joins (~Square4@user/square) |
| 03:54:29 | <EvanR> | > -0.0 |
| 03:54:31 | <lambdabot> | -0.0 |
| 03:55:11 | <monochrom> | Oh oops right. |
| 03:55:13 | <EvanR> | rfc8259 for JSON has a grammar which seems to permit -0 to be in the json |
| 03:55:24 | <EvanR> | I wonder how many loaders load it wrong |
| 03:55:33 | <EvanR> | aeson? xD |
| 03:55:39 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 03:55:43 | <EvanR> | Scientific doesn't support minus zero does it |
| 03:56:21 | × | Square quits (~Square@user/square) (Ping timeout: 246 seconds) |
| 03:56:45 | <EvanR> | it does not |
| 03:57:26 | <EvanR> | the browser loads it right |
| 04:00:21 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 04:01:24 | <EvanR> | a large aeson issue from 2017 discusses the right way to represent numbers but doesn't mention negative zero |
| 04:11:08 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 04:12:52 | <EvanR> | Text.JSON meanwhile represents a number with a Bool and a Rational |
| 04:13:23 | → | alfiee joins (~alfiee@user/alfiee) |
| 04:15:55 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 04:17:46 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 244 seconds) |
| 04:19:50 | → | aforemny_ joins (~aforemny@2001:9e8:6cfa:db00:13b6:4544:c45d:3975) |
| 04:20:05 | × | aforemny quits (~aforemny@i59F4C69B.versanet.de) (Ping timeout: 248 seconds) |
| 04:22:30 | <meejah> | Aaaaa |
| 04:22:50 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 04:26:55 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 04:27:38 | → | sp1ff joins (~user@c-67-160-173-55.hsd1.wa.comcast.net) |
| 04:31:05 | → | michalz joins (~michalz@185.246.207.221) |
| 04:31:38 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 04:37:31 | × | monochrom quits (trebla@216.138.220.146) (Quit: ZNC 1.9.1+deb1 - https://znc.in) |
| 04:42:42 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 04:46:16 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving) |
| 04:47:44 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 04:52:49 | × | michalz quits (~michalz@185.246.207.221) (Quit: ZNC 1.9.1 - https://znc.in) |
| 04:53:53 | → | monochrom joins (trebla@216.138.220.146) |
| 04:57:14 | → | michalz joins (~michalz@185.246.207.218) |
| 04:58:27 | → | alfiee joins (~alfiee@user/alfiee) |
| 04:58:31 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 05:02:56 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 244 seconds) |
| 05:04:04 | × | jmcantrell quits (~weechat@user/jmcantrell) (Quit: WeeChat 4.5.2) |
| 05:05:21 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 05:12:43 | → | j1n37- joins (~j1n37@user/j1n37) |
| 05:13:56 | × | j1n37 quits (~j1n37@user/j1n37) (Ping timeout: 265 seconds) |
| 05:14:25 | × | Vajb quits (~Vajb@n83sqe30rcw6481fyv6-1.v6.elisa-mobile.fi) (Remote host closed the connection) |
| 05:14:48 | → | Vajb joins (~Vajb@n83sqe30rcw6481fyv6-1.v6.elisa-mobile.fi) |
| 05:16:11 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 05:21:01 | × | sabathan quits (~sabathan@amarseille-159-1-12-107.w86-203.abo.wanadoo.fr) (Ping timeout: 244 seconds) |
| 05:21:19 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 05:23:06 | → | sabathan joins (~sabathan@amarseille-159-1-12-107.w86-203.abo.wanadoo.fr) |
| 05:26:25 | → | wil joins (~wil@syn-035-148-093-061.res.spectrum.com) |
| 05:30:27 | × | wil quits (~wil@syn-035-148-093-061.res.spectrum.com) (Client Quit) |
| 05:32:00 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 05:36:21 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 05:43:51 | → | alfiee joins (~alfiee@user/alfiee) |
| 05:47:22 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 05:48:00 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 246 seconds) |
| 05:53:52 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 05:59:18 | × | hgolden quits (~hgolden@2603:8000:9d00:3ed1:6ff3:8389:b901:6363) (Remote host closed the connection) |
| 06:00:29 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 06:05:14 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 06:06:24 | → | hgolden joins (~hgolden@2603:8000:9d00:3ed1:6ff3:8389:b901:6363) |
| 06:11:16 | → | takuan joins (~takuan@d8D86B601.access.telenet.be) |
| 06:14:16 | → | ru0mad joins (~ru0mad@moon.ruomad.net) |
| 06:16:12 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 06:20:52 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 06:29:15 | → | alfiee joins (~alfiee@user/alfiee) |
| 06:31:46 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 06:34:00 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 272 seconds) |
| 06:36:16 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 06:36:45 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 06:47:33 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 06:51:55 | → | aetepe joins (~aetepe@176.54.108.86) |
| 06:52:15 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 06:58:18 | → | emmanuelux joins (~emmanuelu@user/emmanuelux) |
| 07:00:02 | × | caconym quits (~caconym@user/caconym) (Quit: bye) |
| 07:00:58 | → | caconym joins (~caconym@user/caconym) |
| 07:03:20 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 07:03:21 | × | emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir) |
| 07:03:48 | → | emmanuelux joins (~emmanuelu@user/emmanuelux) |
| 07:03:59 | × | ru0mad quits (~ru0mad@moon.ruomad.net) (Ping timeout: 260 seconds) |
| 07:06:13 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 07:07:57 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection) |
| 07:08:09 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
| 07:08:16 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 07:14:19 | → | alfiee joins (~alfiee@user/alfiee) |
| 07:15:01 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 07:16:08 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds) |
| 07:16:23 | Lord_of_Life_ | is now known as Lord_of_Life |
| 07:18:22 | → | ru0mad joins (~ru0mad@moon.ruomad.net) |
| 07:18:47 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
| 07:19:08 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 07:19:12 | → | ash3en joins (~Thunderbi@149.222.157.169) |
| 07:20:41 | → | CiaoSen joins (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) |
| 07:24:24 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds) |
| 07:34:57 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 07:38:25 | × | ru0mad quits (~ru0mad@moon.ruomad.net) (Ping timeout: 248 seconds) |
| 07:42:02 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds) |
| 07:54:30 | → | storopoli joins (m-h2v7u5@user/storopoli) |
| 07:55:46 | → | machinedgod joins (~machinedg@d108-173-18-100.abhsia.telus.net) |
| 07:59:23 | → | alfiee joins (~alfiee@user/alfiee) |
| 08:01:09 | → | acidjnk joins (~acidjnk@p200300d6e71c4f691c99ba8b65f3988d.dip0.t-ipconnect.de) |
| 08:02:53 | × | yahb2 quits (~yahb2@user/tomsmeding/bot/yahb2) (Remote host closed the connection) |
| 08:02:58 | × | tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
| 08:03:05 | → | yahb2 joins (~yahb2@user/tomsmeding/bot/yahb2) |
| 08:03:05 | ChanServ | sets mode +v yahb2 |
| 08:03:13 | <tomsmeding> | % import Data.Complex |
| 08:03:13 | <yahb2> | <no output> |
| 08:03:17 | <tomsmeding> | % :i Complex |
| 08:03:17 | <yahb2> | type Complex :: * -> * ; data Complex a = !a :+ !a ; -- Defined in ‘Data.Complex’ ; instance RealFloat a => Floating (Complex a) ; -- Defined in ‘Data.Complex’ ; instance Foldable Complex -- D... |
| 08:03:31 | <tomsmeding> | Leary: sowwy, I updated GHC but neglected to restart yahb2 |
| 08:03:42 | <tomsmeding> | % :m |
| 08:03:42 | <yahb2> | <no output> |
| 08:03:46 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 244 seconds) |
| 08:04:26 | × | aetepe quits (~aetepe@176.54.108.86) (Read error: Connection reset by peer) |
| 08:04:46 | <tomsmeding> | and yes, I'm in UTC+1 in winter and in UTC+2 in summer |
| 08:05:37 | × | xff0x quits (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 244 seconds) |
| 08:05:38 | → | aetepe joins (~aetepe@188.119.22.83) |
| 08:06:10 | <mauke> | classic central europe |
| 08:06:32 | → | aman joins (~aman@user/aman) |
| 08:06:39 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 244 seconds) |
| 08:06:56 | <tomsmeding> | it's a gigantic time zone |
| 08:09:45 | × | storopoli quits (m-h2v7u5@user/storopoli) (Ping timeout: 244 seconds) |
| 08:11:21 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 08:14:35 | <tomsmeding> | Leary: if this happens again, I just realised that `% :q` should also have worked |
| 08:15:00 | <tomsmeding> | geekosaur: just pinging you here too in case you're interested |
| 08:17:36 | × | ft quits (~ft@p508db463.dip0.t-ipconnect.de) (Quit: leaving) |
| 08:18:58 | → | storopoli joins (m-h2v7u5@user/storopoli) |
| 08:20:57 | <Leary> | Yeah, I didn't think to try that---thanks for the fix anyway. |
| 08:23:35 | <tomsmeding> | (that begs the question in what timezone _you_ live) |
| 08:24:17 | tomsmeding | . o O ( all of them ) |
| 08:25:16 | → | merijn joins (~merijn@77.242.116.146) |
| 08:30:20 | × | hattckory quits (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Remote host closed the connection) |
| 08:30:47 | → | hattckory joins (~hattckory@70.27.118.207) |
| 08:34:00 | → | sprotte24 joins (~sprotte24@p200300d16f097d0088a61901ba3f264c.dip0.t-ipconnect.de) |
| 08:34:50 | ← | storopoli parts (m-h2v7u5@user/storopoli) () |
| 08:35:24 | × | hattckory quits (~hattckory@70.27.118.207) (Ping timeout: 260 seconds) |
| 08:39:36 | → | hattckory joins (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
| 08:43:40 | × | emmanuelux quits (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer) |
| 08:45:00 | × | hattckory quits (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds) |
| 08:45:06 | → | alfiee joins (~alfiee@user/alfiee) |
| 08:49:08 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 245 seconds) |
| 08:56:25 | → | chele joins (~chele@user/chele) |
| 08:57:58 | → | kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be) |
| 08:59:03 | × | zungi quits (~tory@user/andrewchawk) (Remote host closed the connection) |
| 08:59:27 | → | zungi joins (~tory@user/andrewchawk) |
| 09:03:12 | × | ash3en quits (~Thunderbi@149.222.157.169) (Ping timeout: 276 seconds) |
| 09:05:21 | → | akegalj joins (~akegalj@89-172-183-68.adsl.net.t-com.hr) |
| 09:18:10 | × | machinedgod quits (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 244 seconds) |
| 09:18:36 | × | Digit quits (~user@user/digit) (Read error: Connection reset by peer) |
| 09:19:27 | → | Digit joins (~user@user/digit) |
| 09:21:30 | → | ash3en joins (~Thunderbi@149.222.157.169) |
| 09:25:08 | → | Digitteknohippie joins (~user@user/digit) |
| 09:27:46 | × | Digit quits (~user@user/digit) (Ping timeout: 244 seconds) |
| 09:30:51 | → | alfiee joins (~alfiee@user/alfiee) |
| 09:30:51 | → | lxsameer joins (~lxsameer@Serene/lxsameer) |
| 09:32:16 | Digitteknohippie | is now known as Digit |
| 09:35:11 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
| 09:36:35 | → | __monty__ joins (~toonn@user/toonn) |
| 09:39:14 | × | sprotte24 quits (~sprotte24@p200300d16f097d0088a61901ba3f264c.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
| 09:39:30 | → | sprotte24 joins (~sprotte24@p200300d16f097d0088a61901ba3f264c.dip0.t-ipconnect.de) |
| 09:40:14 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 09:46:54 | → | hattckory joins (~hattckory@70.27.118.207) |
| 09:51:49 | × | hattckory quits (~hattckory@70.27.118.207) (Ping timeout: 260 seconds) |
| 09:53:48 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.5.2) |
| 10:04:09 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 252 seconds) |
| 10:05:37 | × | dsrt^ quits (dsrt@c-71-199-187-173.hsd1.ga.comcast.net) (Ping timeout: 252 seconds) |
| 10:05:53 | → | merijn joins (~merijn@77.242.116.146) |
| 10:06:48 | × | orslon^ quits (dehsou@c-71-199-187-173.hsd1.ga.comcast.net) (Ping timeout: 272 seconds) |
| 10:16:15 | → | alfiee joins (~alfiee@user/alfiee) |
| 10:20:44 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 272 seconds) |
| 10:23:30 | → | hattckory joins (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
| 10:30:23 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 268 seconds) |
| 10:33:24 | × | bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 10:33:33 | × | hattckory quits (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds) |
| 10:33:45 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 10:37:04 | → | merijn joins (~merijn@77.242.116.146) |
| 10:39:44 | × | ash3en quits (~Thunderbi@149.222.157.169) (Quit: ash3en) |
| 10:42:22 | → | ash3en joins (~Thunderbi@149.222.157.169) |
| 10:45:40 | → | hattckory joins (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
| 10:46:20 | × | ash3en quits (~Thunderbi@149.222.157.169) (Remote host closed the connection) |
| 10:48:15 | → | coldtom8 joins (~coldtom@coldrick.cc) |
| 10:48:49 | ← | coldtom8 parts (~coldtom@coldrick.cc) () |
| 10:49:53 | × | hattckory quits (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 248 seconds) |
| 10:56:21 | → | dhil joins (~dhil@2a0c:b381:52e:3600:79cd:9b5b:3ea2:beda) |
| 10:57:03 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 246 seconds) |
| 10:57:14 | <Athas> | tomsmeding: so when will horde-ad be ready? I have (re?)-read the paper and now I am excited. |
| 10:57:42 | → | merijn joins (~merijn@77.242.116.146) |
| 10:57:55 | <tomsmeding> | Athas: what paper? |
| 10:58:08 | <tomsmeding> | horde-ad is based on unpublished stuff :P |
| 10:58:33 | <Athas> | The horde-ad README says it's based on "Provably Correct, Asymptotically Efficient, Higher-Order Reverse-Mode Automatic Differentiation"! |
| 10:58:45 | <Athas> | But then that paper says that it's really just a different exposition of how 'ad' works, so who knows. |
| 10:58:49 | <tomsmeding> | oh, it is, at some point -- but that paper essentially just describes 'ad' |
| 10:58:51 | <tomsmeding> | yes, indeed |
| 10:58:57 | <tomsmeding> | the point of horde-ad is that it's an extension to that |
| 11:00:01 | <tomsmeding> | we're tried to write it up, and we have some kind of write-up, in fact, but we've been struggling to find a presentation that is compelling enough for a successful publication |
| 11:00:30 | <tomsmeding> | the possibility exists that it will just be a library and a "here's some text" on arXiv |
| 11:00:32 | <Athas> | "Number goes down" is not compelling? Or is it the actual explanation that is difficult to get right? |
| 11:00:41 | → | xff0x joins (~xff0x@2405:6580:b080:900:6185:acb4:363b:5fd3) |
| 11:01:04 | <tomsmeding> | number goes down as in what my ad-dual hack does is compelling as in: it's much faster than something that's very crap compared to the state of the art |
| 11:01:11 | <tomsmeding> | I'm not sure that's a paper. |
| 11:01:19 | → | alfiee joins (~alfiee@user/alfiee) |
| 11:01:51 | <tomsmeding> | horde-ad tries to do quite a bit more than ad-dual, though, and there the tricky bit is that there are lots of parts where the algorithm has unfortunate limitations |
| 11:02:04 | → | fp joins (~Thunderbi@2001:708:20:1406::1370) |
| 11:02:25 | <tomsmeding> | if it worked out just a little bit more, it would work just fine, but as it is, it's complex _and_ has annoying limitations |
| 11:02:51 | <Athas> | Mikolaj is doing almost ten commits per day, so I can't imagine it will be long before it works! |
| 11:03:11 | <tomsmeding> | there is probably a way to write this up properly so that it's publishable, but among us, we've spent enough hours on trying to write it down that we're likely to just shelve it. |
| 11:03:13 | <tomsmeding> | shelf? |
| 11:04:15 | <tomsmeding> | Athas: there's also a fun array library underneath horde-ad, actually, that I wrote as a big yak shave: https://git.tomsmeding.com/ox-arrays |
| 11:04:19 | × | infinity0 quits (~infinity0@pwned.gg) (Ping timeout: 260 seconds) |
| 11:04:37 | <tomsmeding> | it's orthotope (on hackage), but with arithmetic operations that are actually fast |
| 11:04:46 | <tomsmeding> | so you get some form of simple runtime fusion |
| 11:04:54 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 260 seconds) |
| 11:05:08 | <Athas> | How does fast arithmetic imply fusion? |
| 11:05:20 | <tomsmeding> | it doesn't, the orthotope strided array representation does |
| 11:05:35 | <tomsmeding> | replicate and transpose are O(number of dimensions) |
| 11:05:55 | <tomsmeding> | and consumers of arrays can inspect what the actual strides are, to optimise their operation |
| 11:06:09 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 268 seconds) |
| 11:06:13 | <Athas> | What is that representation? Is it documented anywhere? |
| 11:06:37 | <tomsmeding> | it's this: https://hackage.haskell.org/package/orthotope-0.1.7.0/docs/Data-Array-Internal.html#t:T |
| 11:06:50 | <tomsmeding> | this probably has a name |
| 11:07:00 | <Athas> | Yeah, it's an LMAD. We use the exact same representation in Futhark. |
| 11:07:25 | <tomsmeding> | but you do it statically, right? |
| 11:07:42 | <tomsmeding> | there are no such stride vectors at runtime any more in Futhark, I presume |
| 11:07:45 | <Athas> | Yes, but that doesn't really make much of a difference. |
| 11:07:51 | <Athas> | There are, actually, in the runtime system! |
| 11:08:09 | <tomsmeding> | I can imagine that it doesn't matter much in practice |
| 11:08:40 | <tomsmeding> | in any case, this is a "normal" array library in haskell, not using a compilation pipeline, so it's more flexible for integrating into a haskell program |
| 11:08:46 | <Athas> | This function (well, the function generated by the macro) inspects the strides at runtime and uses that to pick a good way of copying an array: https://github.com/diku-dk/futhark/blob/master/rts/c/copy.h#L222-L249 |
| 11:08:55 | <haskellbridge> | <Man of Letters> hello! |
| 11:09:03 | haskellbridge | Man of Letters is Mikolaj |
| 11:09:15 | <Athas> | We used to have a much more elaborate representation than this, but this LMAD/orthotope-strided turns out to be a lot of bang for the buck. |
| 11:09:17 | <tomsmeding> | Athas: cool! |
| 11:09:19 | <Athas> | Hello Man of Letters! |
| 11:09:37 | <tomsmeding> | I have some nice CPP-generated C code in ox-arrays too. :) |
| 11:09:46 | <haskellbridge> | <Man of Letters> oh yes, it rocks |
| 11:10:09 | <Athas> | One particularly nice property of this representation is that you can anti-unify representations as long as they have the same rank. |
| 11:10:30 | <tomsmeding> | "anti-unify"? |
| 11:10:44 | <Athas> | Yeah, lift out the components where they differ. |
| 11:10:47 | <Athas> | This means you can have a branch where one returns a row-major array and the other a column-major, without any copies being necessary. |
| 11:10:56 | <tomsmeding> | right |
| 11:11:06 | <tomsmeding> | oh so you're doing this dynamically too! I had no idea |
| 11:11:20 | <Athas> | Statically when possible, dynamically when necessary. |
| 11:11:24 | <tomsmeding> | I see |
| 11:12:57 | <Athas> | Actually, there is one difference. LMADs also contain the size of each dimension. How can you get away with not knowing the size of the array? |
| 11:13:02 | <tomsmeding> | Athas: horde-ad was originally built on orthotope directly, but it was rather crippled by the fact that orthotope is all-Haskell, and so the stuff that should be fast is actually disappointingly slow |
| 11:13:10 | <tomsmeding> | Athas: the size of the array is also there, one data type higher up |
| 11:13:19 | <Athas> | Ah, I see, so it's just a question of factorisation. |
| 11:13:30 | <tomsmeding> | yes; this is the data type that the user sees https://hackage.haskell.org/package/orthotope-0.1.7.0/docs/Data-Array-Internal-RankedS.html#t:Array |
| 11:13:52 | <Athas> | If you're curious, section 3.1 in https://futhark-lang.org/publications/ifl22.pdf describes how LMADs work in Futhark. |
| 11:14:08 | <Athas> | I always suspected they'd work fine as a run-time structure for an array library, so I'm happy to see that is the case. |
| 11:14:30 | <Athas> | tomsmeding: is 'n' a shape in the multidimensional case? |
| 11:14:57 | <Athas> | Oh wait, 'n' is the rank? |
| 11:15:23 | <tomsmeding> | orthotope has three copies of the array API: one for ranked arrays (multi-dim. arrays indexed by their rank), one for shaped arrays (~ indexed by their shape, a type-level [Nat]), and one for dynamic arrays (not indexed) |
| 11:15:28 | <tomsmeding> | I linked the ranked one |
| 11:16:01 | <Athas> | That's nice. I find fully shaped arrays a bit awkward in Haskell, but ranked should be a nice compromise. |
| 11:16:08 | <tomsmeding> | ox-arrays, my thing on top of orthotope, supports ranked arrays, shaped arrays, _and_ mixed arrays (indexed by [Maybe Nat]): the natural generalisation of the two |
| 11:17:09 | → | merijn joins (~merijn@77.242.116.146) |
| 11:17:15 | <tomsmeding> | the goal of that was to support nested arrays too: essentially the trick that Data.Vector.Unboxed does, but then also give a `data instance` for nested arrays. If you nest ranked inside shaped, or the other way round, you end up having to represent the result using an array with mixed type information |
| 11:17:20 | <Athas> | Mixed arrays sound interesting. Do they work out nicely in practice? |
| 11:17:52 | <tomsmeding> | the downside is that these nested arrays are not actually as flexible as you'd like: the whole thing still has to be rectangular, so it's not very different from a large multidimensional array. |
| 11:18:46 | <tomsmeding> | They can be used in user code too, of course; the idea there is that it sometimes makes sense to e.g. have a "batch dimension" in your computation that's any length, but then have the actual data dimensions be shape-typed because you're doing interesting things with them |
| 11:18:57 | <tomsmeding> | But this being embedded in haskell, it's clumsy and verbose all around |
| 11:19:20 | <tomsmeding> | Futhark has quite the advantage of having custom syntax and a custom type system. :) |
| 11:21:15 | <Athas> | Well, selective unknown sizes seems like it would go a long way towards avoiding the awkward cases. |
| 11:21:35 | <Athas> | Many applications can probably divide the sizes into constants and unknown, with no great loss of safety. |
| 11:21:52 | <tomsmeding> | perhaps, yes |
| 11:22:59 | <tomsmeding> | but shape values (i.e. the return type of the function that returns the shape of an array) are type-indexed by the type-level shape/rank/etc. too, and a shape value indexed by a partially-unknown type-level shape is annoyingly verbose |
| 11:23:39 | <tomsmeding> | you get `SKnown (SNat @3) :$$ SUnknown 5 :$$ SKnown (SNat @7) :$$ ZSS` as the shape of an array with type-level shape [Just 3, Nothing, Just 7] |
| 11:23:54 | <tomsmeding> | It works, technically. :P |
| 11:24:37 | → | infinity0 joins (~infinity0@pwned.gg) |
| 11:24:56 | <tomsmeding> | er, `SKnown (SNat @3) :$% SUnknown 5 :$% SKnown (SNat @7) :$% ZSX` |
| 11:25:08 | <tomsmeding> | the (:$$) and ZSS are for shaped shapes, not for mixed shapes |
| 11:25:17 | <tomsmeding> | I think you get the point. :) |
| 11:26:05 | <tomsmeding> | and yes, these things have IsList instances, but that's cheating |
| 11:28:49 | → | ash3en joins (~Thunderbi@149.222.157.169) |
| 11:29:24 | × | xff0x quits (~xff0x@2405:6580:b080:900:6185:acb4:363b:5fd3) (Ping timeout: 260 seconds) |
| 11:29:29 | <tomsmeding> | Athas: section 3.1 of the FunMem paper is very unsurprising to me, so I guess that's a good thing |
| 11:30:21 | → | alp joins (~alp@2001:861:8ca0:4940:dd1f:b4e6:4fbb:e5d8) |
| 11:31:31 | → | haritz joins (~hrtz@2a02:8010:65b5:0:5d9a:9bab:ee5e:b737) |
| 11:31:49 | <Athas> | tomsmeding: too bad everyone has their own name for this representation. LMAD is also somewhat of a misnomer; it's from autoparallelisation papers that try to analyse the intended multidimensional structure based on flat index arithmetic. |
| 11:32:09 | <Athas> | Someone needs to write a half page paper titled "this is what this thing is called". |
| 11:32:27 | <tomsmeding> | I don't think orthotope tries to give it _any_ name. I didn't know "LMAD" so I use "orthotope-style strides" in my code whenever it comes up. |
| 11:32:56 | × | saimazoon quits (~hrtz@user/haritz) (Ping timeout: 272 seconds) |
| 11:33:22 | × | haritz quits (~hrtz@2a02:8010:65b5:0:5d9a:9bab:ee5e:b737) (Changing host) |
| 11:33:22 | → | haritz joins (~hrtz@user/haritz) |
| 11:39:39 | → | notdabs joins (~Owner@2600:1700:69cf:9000:586:19c0:87cb:b0ff) |
| 11:42:03 | <tomsmeding> | Athas: the title of that half-page paper has a chicken-and-egg problem though |
| 11:42:08 | → | machinedgod joins (~machinedg@d108-173-18-100.abhsia.telus.net) |
| 11:43:09 | <tomsmeding> | I guess you could put $o + \sum_{k=1}^n s_k * i_k$ in the title in lieu of a name, but that won't go over very well, I fear |
| 11:44:34 | → | hattckory joins (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
| 11:46:44 | → | alfiee joins (~alfiee@user/alfiee) |
| 11:47:29 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 11:50:53 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 244 seconds) |
| 11:55:03 | × | sprotte24 quits (~sprotte24@p200300d16f097d0088a61901ba3f264c.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
| 11:55:27 | × | hattckory quits (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds) |
| 12:01:57 | → | hattckory joins (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
| 12:02:38 | → | cross joins (~cross@spitfire.i.gajendra.net) |
| 12:05:21 | × | inca quits (~inca@4-138-135-64.gray-ng.dsl.pinetreenetworks.com) (Ping timeout: 268 seconds) |
| 12:05:34 | × | ethantwardy quits (user@user/ethantwardy) (Quit: WeeChat 4.4.2) |
| 12:06:09 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 248 seconds) |
| 12:07:20 | → | inca joins (~inca@4-138-135-64.gray-ng.dsl.pinetreenetworks.com) |
| 12:07:31 | → | ethantwardy joins (user@user/ethantwardy) |
| 12:12:24 | × | hattckory quits (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 260 seconds) |
| 12:13:58 | × | ash3en quits (~Thunderbi@149.222.157.169) (Ping timeout: 252 seconds) |
| 12:14:51 | → | merijn joins (~merijn@77.242.116.146) |
| 12:17:39 | × | inca quits (~inca@4-138-135-64.gray-ng.dsl.pinetreenetworks.com) (Ping timeout: 260 seconds) |
| 12:18:03 | → | inca joins (~inca@4-138-135-64.gray-ng.dsl.pinetreenetworks.com) |
| 12:21:17 | <haskellbridge> | <Bowuigi> Do naperian functors help with shapes? https://www.cs.ox.ac.uk/people/jeremy.gibbons/publications/aplicative.pdf https://nickx.hu/Acc-nap.pdf |
| 12:22:01 | → | xff0x joins (~xff0x@2405:6580:b080:900:d2df:bcfa:d5c3:4ebd) |
| 12:22:13 | × | alp quits (~alp@2001:861:8ca0:4940:dd1f:b4e6:4fbb:e5d8) (Ping timeout: 248 seconds) |
| 12:23:30 | → | Shsl-Junko-POSER joins (~Shsl-Junk@50.235.208.178) |
| 12:26:39 | × | CiaoSen quits (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 276 seconds) |
| 12:31:26 | <tomsmeding> | Bowuigi: looking at that first link, and reading section 1.3 plus the definition of Naperian at the bottom of page 9, it seems to me that this is "just" saying "make your API nested single-dimensional arrays"? |
| 12:32:05 | <tomsmeding> | I guess it also allows putting tuples on the same footing as vectors |
| 12:32:28 | → | alfiee joins (~alfiee@user/alfiee) |
| 12:33:08 | <tomsmeding> | but as we're talking about a user-facing API here, and I don't think users will ever need to be polymorphic over arrays and tuples in numeric code, I'm not sure that particular generality is very valuable here |
| 12:34:41 | <tomsmeding> | note that the Acc-nap.pdf link also cheats with OverloadedLists in section 3 |
| 12:35:20 | <Athas> | Bowuigi: not directly, they are an orthogonal issue. And they certainly have somewhat bad error messages, even with the tricks Jeremy pulls in that paper. |
| 12:36:48 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 246 seconds) |
| 12:36:48 | × | inca quits (~inca@4-138-135-64.gray-ng.dsl.pinetreenetworks.com) (Ping timeout: 268 seconds) |
| 12:37:01 | → | hattckory joins (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
| 12:38:53 | × | Shsl-Junko-POSER quits (~Shsl-Junk@50.235.208.178) (Quit: Client closed) |
| 12:39:04 | → | inca joins (~inca@4-138-135-64.gray-ng.dsl.pinetreenetworks.com) |
| 12:40:00 | → | Shsl-Junko-POSER joins (~Shsl-Junk@50.235.208.178) |
| 12:41:46 | × | Shsl-Junko-POSER quits (~Shsl-Junk@50.235.208.178) (Client Quit) |
| 12:41:54 | × | hattckory quits (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 248 seconds) |
| 12:42:33 | × | Putonlalla quits (~Putonlall@it-cyan.it.jyu.fi) (Ping timeout: 252 seconds) |
| 12:43:02 | → | hattckory joins (~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) |
| 12:44:10 | → | tabaqui joins (~tabaqui@167.71.80.236) |
| 12:45:12 | × | zungi quits (~tory@user/andrewchawk) (Ping timeout: 264 seconds) |
| 12:52:09 | → | zungi joins (~tory@user/andrewchawk) |
| 12:56:53 | × | akegalj quits (~akegalj@89-172-183-68.adsl.net.t-com.hr) (Ping timeout: 248 seconds) |
| 12:59:30 | → | Square joins (~Square@user/square) |
| 13:01:15 | → | j1n37 joins (~j1n37@user/j1n37) |
| 13:02:08 | × | yangby quits (~secret@115.205.72.232) (Quit: Go out for a walk and buy a drink.) |
| 13:02:11 | × | j1n37- quits (~j1n37@user/j1n37) (Ping timeout: 244 seconds) |
| 13:04:08 | × | Square quits (~Square@user/square) (Ping timeout: 245 seconds) |
| 13:04:20 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 13:05:46 | → | jespada joins (~jespada@2800:a4:2211:7600:7570:cffe:6554:643e) |
| 13:07:40 | <haskellbridge> | <Bowuigi> I see, those papers are more about the API I guess |
| 13:09:26 | <haskellbridge> | <Bowuigi> tomsmeding the actually useful generality is being able to operate on matrices/tensors of different dimensions APL-style, but I understand your point |
| 13:13:57 | <tomsmeding> | Bowuigi: do you have an example of such "APL-style"? |
| 13:14:18 | <tomsmeding> | Because I don't see now those Naperian functors help very much there, per se, but I'm probably missing something |
| 13:14:33 | <tomsmeding> | s/now/how/ |
| 13:17:23 | <Athas> | tomsmeding: broadcasting/replication is the *only* thing Naperian functors provide. |
| 13:17:39 | <tomsmeding> | automatic broadcasting, in the style of Futhark AutoMap? |
| 13:17:51 | <Athas> | Yes. |
| 13:17:54 | <tomsmeding> | ah I see |
| 13:18:03 | <tomsmeding> | that's helpful, I guess, but indeed orthogonal |
| 13:18:51 | → | alfiee joins (~alfiee@user/alfiee) |
| 13:23:40 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 268 seconds) |
| 13:30:20 | × | ethantwardy quits (user@user/ethantwardy) (Remote host closed the connection) |
| 13:30:45 | → | ethantwardy joins (user@user/ethantwardy) |
| 13:30:48 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 245 seconds) |
| 13:32:18 | → | merijn joins (~merijn@77.242.116.146) |
| 13:35:45 | haritz | is now known as saimazoon |
| 13:36:01 | × | j0lol quits (~j0lol@132.145.17.236) (Remote host closed the connection) |
| 13:36:15 | → | j0lol joins (~j0lol@132.145.17.236) |
| 13:41:09 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 244 seconds) |
| 13:44:17 | → | Chai-T-Rex joins (~ChaiTRex@user/chaitrex) |
| 13:44:36 | × | chiselfuse quits (~chiselfus@user/chiselfuse) (Ping timeout: 264 seconds) |
| 13:45:12 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 264 seconds) |
| 13:45:46 | → | chiselfuse joins (~chiselfus@user/chiselfuse) |
| 13:50:22 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 13:50:33 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 13:54:29 | → | merijn joins (~merijn@77.242.116.146) |
| 13:54:54 | → | akegalj joins (~akegalj@89-172-183-68.adsl.net.t-com.hr) |
| 13:55:54 | × | j0lol quits (~j0lol@132.145.17.236) (Remote host closed the connection) |
| 13:56:56 | → | j0lol joins (~j0lol@132.145.17.236) |
| 14:03:43 | × | infinity0 quits (~infinity0@pwned.gg) (Ping timeout: 245 seconds) |
| 14:04:36 | → | alfiee joins (~alfiee@user/alfiee) |
| 14:08:44 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 252 seconds) |
| 14:10:00 | → | weary-traveler joins (~user@user/user363627) |
| 14:20:10 | → | Putonlalla joins (~Putonlall@it-cyan.it.jyu.fi) |
| 14:20:25 | × | jespada quits (~jespada@2800:a4:2211:7600:7570:cffe:6554:643e) (Ping timeout: 244 seconds) |
| 14:24:16 | → | jespada joins (~jespada@2800:a4:2263:8100:f927:2b9e:1735:aa6a) |
| 14:24:33 | → | infinity0 joins (~infinity0@pwned.gg) |
| 14:45:26 | → | ash3en joins (~Thunderbi@ip1f10cbd6.dynamic.kabel-deutschland.de) |
| 14:46:18 | × | fp quits (~Thunderbi@2001:708:20:1406::1370) (Ping timeout: 268 seconds) |
| 14:50:20 | → | alfiee joins (~alfiee@user/alfiee) |
| 14:52:23 | × | tjbc quits (~tjbc@user/fliife) (Quit: ZNC - https://znc.in) |
| 14:54:21 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 246 seconds) |
| 14:55:06 | → | tjbc joins (~tjbc@user/fliife) |
| 14:55:19 | → | fp joins (~Thunderbi@130.233.70.95) |
| 14:59:01 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 248 seconds) |
| 15:02:19 | → | JuanDaugherty joins (~juan@user/JuanDaugherty) |
| 15:08:36 | → | merijn joins (~merijn@77.242.116.146) |
| 15:12:00 | → | Guest52 joins (~Guest52@pool1.cscotesud.qc.ca) |
| 15:14:34 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 260 seconds) |
| 15:14:36 | × | califax quits (~califax@user/califx) (Ping timeout: 264 seconds) |
| 15:14:48 | → | califax_ joins (~califax@user/califx) |
| 15:16:00 | califax_ | is now known as califax |
| 15:16:23 | → | jmcantrell joins (~weechat@user/jmcantrell) |
| 15:20:34 | × | Guest52 quits (~Guest52@pool1.cscotesud.qc.ca) (Quit: Client closed) |
| 15:25:25 | → | merijn joins (~merijn@77.242.116.146) |
| 15:29:02 | → | aforemny joins (~aforemny@2001:9e8:6cc1:be00:edce:fe13:a80e:d4b5) |
| 15:29:10 | × | aforemny_ quits (~aforemny@2001:9e8:6cfa:db00:13b6:4544:c45d:3975) (Ping timeout: 272 seconds) |
| 15:36:04 | → | alfiee joins (~alfiee@user/alfiee) |
| 15:40:17 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 244 seconds) |
| 15:40:44 | × | jespada quits (~jespada@2800:a4:2263:8100:f927:2b9e:1735:aa6a) (Quit: My Mac has gone to sleep. ZZZzzz…) |
| 15:50:08 | × | JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org)) |
| 15:53:36 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 264 seconds) |
| 15:56:00 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 244 seconds) |
| 16:00:14 | → | ash3en1 joins (~Thunderbi@185.209.196.192) |
| 16:01:33 | × | ash3en quits (~Thunderbi@ip1f10cbd6.dynamic.kabel-deutschland.de) (Ping timeout: 246 seconds) |
| 16:01:33 | ash3en1 | is now known as ash3en |
| 16:01:55 | → | ubert joins (~Thunderbi@2a02:8109:ab8a:5a00:aafc:8aeb:2c4:160b) |
| 16:05:17 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.5.2) |
| 16:11:03 | <haskellbridge> | <Morj> I've been thinking it would be nice to have a common viewer of docs a-la haddock or docs.rs, but for any language. With hyperlinks, structs, local search and stuff. What are the best already existing options? |
| 16:11:27 | <haskellbridge> | <Morj> I remember GNU folks did something like this to replace manpages |
| 16:11:56 | <haskellbridge> | <Morj> Also doxygen-generated web pages sort of fit since doxygen is polylingual |
| 16:14:15 | <Athas> | Yes, I think Doxygen is the closest. |
| 16:14:38 | <Athas> | GNU Texinfo is very general, but it has no source processor. You'd need to write a program that parses Haskell doc comments into Texinfo. |
| 16:14:57 | <Athas> | At that point you might almost just use HTML. |
| 16:15:10 | <haskellbridge> | <Morj> I was thinking of consuming haddock output instead of parsing haskell sources directly |
| 16:15:24 | <haskellbridge> | <Morj> I'm pretty sure it has a structured output instead of html? |
| 16:15:25 | <haskellbridge> | <Bowuigi> Texinfo (the GNU thing) is pretty good actually. It doesn't require a web browser (so it's fast), it is available on any Linux distro (run info) and can be exported to a lot of formats if required (windows compatibility/web view) |
| 16:16:21 | <haskellbridge> | <Morj> Hm hm, I'll look into texinfo more |
| 16:16:27 | <haskellbridge> | <Bowuigi> I assume texinfo can be installed on other OSs as well, but I never tried |
| 16:17:02 | <haskellbridge> | <Morj> Well I'm in an ambitious mood, why not write GUI a texinfo viewer for any platform (an excuse to use rust's slint) |
| 16:17:35 | <EvanR> | haddocks sometimes are missing information |
| 16:17:42 | <Athas> | Texinfo is a source format. You can turn Texinfo into other things (HTML, PDF). |
| 16:18:05 | <haskellbridge> | <Morj> Right, and when I run 'info', what format does it consume? |
| 16:18:06 | <EvanR> | Morj, why not write it in haskell! |
| 16:18:22 | <Athas> | I think the 'info' tool either reads Texinfo directly, or some very lightly processed form. |
| 16:18:25 | <haskellbridge> | <Morj> Because HsQML is dead :'( |
| 16:18:32 | <Athas> | It's been years since I last wrote Texinfo. |
| 16:18:53 | <Athas> | But I remember writing a fairly simple script that generated Haddock/Doxygen-like documentation from Common Lisp. |
| 16:19:08 | <haskellbridge> | <Bowuigi> Generating HTML directly is ok if it isn't too fancy. I don't want to launch a huge browser for quick references, but launching Netsurf or elinks is ok |
| 16:19:38 | <haskellbridge> | <Morj> Athas: You mean you consumed lisp source files and wrote out texinfo in haddock style? |
| 16:19:50 | <haskellbridge> | <Bowuigi> Texinfo has a guide on how to write it and how it works (IIRC), try 'info info' |
| 16:19:54 | <Athas> | It's easy to generate HTML that is very readable in CLI browsers. |
| 16:20:16 | <haskellbridge> | <Morj> I'm trying to think of ways to not use html (-: |
| 16:20:31 | <haskellbridge> | <Morj> Bowuigi: no info on my mac, huh |
| 16:20:34 | <Athas> | Morj: No, it was a Lisp program that read Lisp docstrings from a loaded Lisp image and wrote Texinfo files. Then those Texinfo files were included in another Texinfo document. |
| 16:20:38 | <haskellbridge> | <Morj> Damn gnu haters |
| 16:20:49 | <Athas> | Emacs has a builtin info reader! |
| 16:20:51 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 16:20:55 | <haskellbridge> | <Morj> I see, cool |
| 16:20:58 | <haskellbridge> | <Bowuigi> Another option is gemtext on gemini, but that might be too restricted (no inline links, only block-level elements) |
| 16:21:39 | <haskellbridge> | <Bowuigi> Gemini itself is too obscure but proxies exist |
| 16:21:57 | <haskellbridge> | <Morj> Gemtext might be too unstructured. Like I would like a doc document to have a section "data Foo", which has subsections with fields, and subsections with classes that it implements |
| 16:22:15 | <Athas> | Oh, the stuff I made is still online. This is the Texinfo converted to HTML: http://www.lichteblau.com/blubba/font-selector/mcclim/External-API.html#External-API |
| 16:22:25 | <haskellbridge> | <Morj> Oh, Bowuigi you misunderstood me, I'm thinking of a completely local doc |
| 16:22:37 | <Athas> | As you can see, no hyperlinking between concepts. I don't think Texinfo provides any convenience facilities for doing so. |
| 16:22:48 | → | alfiee joins (~alfiee@user/alfiee) |
| 16:23:02 | <haskellbridge> | <Morj> Wait really? I thought hyperlinks was the whole point of upgrading from man to info |
| 16:23:03 | <Athas> | It would take a lot of effort to generate Texinfo that is as nice to use as Haddock. Maybe less effort if you use Haddock's intermediate data structures as your input. |
| 16:23:03 | <haskellbridge> | <Bowuigi> Morj any of the three formats works locally and has a way to be served on the internet |
| 16:23:15 | <Athas> | Morj: yes, but you have to put in the links explicitly. |
| 16:24:28 | <haskellbridge> | <Bowuigi> That's also the case with HTML tho |
| 16:24:45 | <haskellbridge> | <Bowuigi> And most wiki tools |
| 16:25:09 | <Athas> | Right, but the nice thing about Haddock is that it understands Haskell and will insert most links for you. |
| 16:25:47 | <haskellbridge> | <Morj> Yeah, so here's my current vision: |
| 16:25:47 | <haskellbridge> | ... long message truncated: https://kf8nh.com/_heisenbridge/media/kf8nh.com/TiTiKNqgsHwiSqLVUEQwdgNW/3LKPRGcYsZ0 (5 lines) |
| 16:26:12 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 16:26:27 | <haskellbridge> | <Morj> I'm currently inspired by having to find a constant in rust docs, and then ctrl-f-ing it on a bullshit-generated C documentation page |
| 16:26:29 | <haskellbridge> | <Bowuigi> The Guile docs are all on texinfo, GNU provides a web view. I think those are not autogenerated tho |
| 16:26:45 | <Athas> | Morj: I think the Texinfo part of your design is unnecessary. You might as well just generate simple HTML. |
| 16:26:47 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 244 seconds) |
| 16:27:00 | <haskellbridge> | <Morj> True |
| 16:27:06 | <haskellbridge> | <Morj> I'm biased against html (= |
| 16:27:13 | <Athas> | The original benefit of Texinfo was that it could be rendered in multiple ways, but it seems you do not need that. And Texinfo has some weird warts to enable that. |
| 16:27:27 | <haskellbridge> | <Morj> If it's texinfo, it's easier for people to view it in console or other alternate viewers |
| 16:27:47 | <haskellbridge> | <Morj> That's being ambitious that someone other than me would want to create those viewers |
| 16:28:36 | <Athas> | I am not convinced that elinks (or similar) showing well-written HTML is much less readable in a console than Texinfo. |
| 16:28:56 | <haskellbridge> | <Morj> Also, a side bonus: currently I have a special firefox window where the only tabs are hackage docs; why not move those to a special doc viewing app? |
| 16:29:14 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 16:29:47 | <haskellbridge> | <Morj> > I am not convinced that elinks |
| 16:29:47 | <haskellbridge> | You are 100% right, but my sense of beauty tells me that the whole html/web machinery is unnecessary here |
| 16:30:18 | <Athas> | I mean, knock yourself out, but Texinfo is not a particularly *nice* format. Not even compared to HTML. |
| 16:30:31 | <Athas> | I haven't used it for almost 20 years, but I remember being disappointed by it. |
| 16:30:41 | <haskellbridge> | <Morj> > a special firefox window |
| 16:30:41 | <haskellbridge> | A side bonus to a side bonus: not having to alt-tab to a browser gives me less distractions |
| 16:30:52 | <haskellbridge> | <Morj> > I remember being disappointed by it |
| 16:30:52 | <haskellbridge> | Ha-ha-ha |
| 16:30:57 | <haskellbridge> | <Morj> That's why I asked for alternatives! |
| 16:32:31 | <EvanR> | don't tell Morj that in the near future, the entire OS is running in a browser |
| 16:32:34 | <Athas> | What about roff? |
| 16:32:48 | <Athas> | That can be rendered in a console, and it is certainly simple. |
| 16:33:26 | <haskellbridge> | <Morj> Googling it rn |
| 16:33:43 | <haskellbridge> | <Morj> > the entire OS is running in a browser |
| 16:33:43 | <haskellbridge> | >_< |
| 16:34:22 | <Athas> | I wasn't really serious about roff. It's the language underlying manpages (and in principle other things, but only the grayest of graybears use it for anything else I think). |
| 16:34:47 | <haskellbridge> | <Morj> Ah |
| 16:35:35 | <haskellbridge> | <Morj> Manpages (and markdown) don't have semantic sections. Like if I have a doc viewer that consumes files from a disc, it should have a search. If it has a search, I want to say "only search in functions" |
| 16:36:25 | <haskellbridge> | <Morj> Pages in html with search are sort of cheating since they use an additional index for those things |
| 16:39:04 | × | fp quits (~Thunderbi@130.233.70.95) (Ping timeout: 252 seconds) |
| 16:48:59 | × | Googulator quits (~Googulato@2a01-036d-0106-01d5-c415-995d-99e3-7810.pool6.digikabel.hu) (Quit: Client closed) |
| 16:49:14 | → | Googulator joins (~Googulato@85-238-67-46.pool.digikabel.hu) |
| 16:52:21 | → | jespada joins (~jespada@2800:a4:2263:8100:f927:2b9e:1735:aa6a) |
| 16:56:44 | <haskellbridge> | <Bowuigi> Roff/NRoff/TRoff is annoying lol, I tried writing homework on it some years ago and the only nice things it has are pic and eqn. Typst has versions of both and is way saner, pikchr is another pic replacement that's sane |
| 16:57:50 | <haskellbridge> | <Bowuigi> Try writing some sample output manually on texinfo and HTML and view it on various tools in order to get a better perspective Morj |
| 16:59:10 | <haskellbridge> | <Bowuigi> Elinks renders old HTML fairly nicely and even has some CSS support. Netsurf is way more capable but requires a GUI. Note that neither support JS nor the quadrillion modern extensions to HTML and CSS tho, but many pages look good on both browsers |
| 16:59:31 | <haskellbridge> | <Morj> If they don't support JS, how do I search in the HTML page then? |
| 16:59:46 | <haskellbridge> | <Morj> But yep, I was going to try something like that |
| 16:59:56 | <haskellbridge> | <Morj> Also comparing with vimdocs, because I find them nice |
| 17:00:07 | × | Googulator quits (~Googulato@85-238-67-46.pool.digikabel.hu) (Quit: Client closed) |
| 17:00:24 | → | Googulator joins (~Googulato@85-238-67-46.pool.digikabel.hu) |
| 17:00:47 | <haskellbridge> | <Morj> Vimdocs also has almost has hyperlinks, and almost has structured search, sooo |
| 17:00:54 | <haskellbridge> | <Bowuigi> Just make that search optional. Also searching on many pages is possible via a dynamic page, Hackage does it. |
| 17:01:15 | <haskellbridge> | <Bowuigi> Like, those browsers will ignore JS, they won't explode or something |
| 17:02:07 | <haskellbridge> | <Morj> Well but it's me who wants to view the docs in the terminal /and/ have the search at the same time :D |
| 17:02:17 | <haskellbridge> | <Morj> Do I also write a minimalistic HTML browser? |
| 17:02:24 | <haskellbridge> | <Morj> Sounds maybe fun |
| 17:02:52 | → | ft joins (~ft@p508db463.dip0.t-ipconnect.de) |
| 17:04:13 | <haskellbridge> | <Bowuigi> Oh and linking to specific parts to files is easy on HTML with the "#" thing on the URL, so technically searching on the same site can also be made via a dynamic page (actually a redirect would be enough for a single result, and a list of links would be enough for many results) |
| 17:04:52 | <haskellbridge> | <Bowuigi> Do not write a web browser unless you have 5 years or more of free time and do not care about your mental health |
| 17:05:16 | <haskellbridge> | <Morj> Well not a complete web browser, but a browser for the pages I myself generate. That sounds like something possible |
| 17:05:23 | <haskellbridge> | <Morj> I'm not completely crazy ;-) |
| 17:05:25 | <haskellbridge> | <Bowuigi> Unless you are wrapping the GTK/QT Webkits, that's not hard |
| 17:06:18 | <haskellbridge> | <Bowuigi> That could work then, specially if you ignore CSS |
| 17:06:42 | <Athas> | I wrote a programming language doc generator (in Haskell, actually) and generating HTML was not unpleasant. Blaze is good. I also did not find it challenging to make it console-friendly. It was much harder to make it look good in Firefox, actually... |
| 17:06:47 | × | juri_ quits (~juri@implicitcad.org) (Ping timeout: 244 seconds) |
| 17:08:51 | → | alfiee joins (~alfiee@user/alfiee) |
| 17:09:02 | <haskellbridge> | <Morj> Good idea with the '#' actually. Though now it's in a vimdoc situation where you have to use prefixes/sufixes to distinguish struct foo and func foo |
| 17:09:27 | <haskellbridge> | <Morj> > It was much harder to make it look good |
| 17:09:27 | <haskellbridge> | Same with my personal blog >_> |
| 17:10:08 | <Athas> | The solution is to reject bitmap displays and use CSS to make it look like a terminal no matter what. |
| 17:10:36 | <haskellbridge> | <Morj> Yeah well making things look good in a terminal is also not trivial :D |
| 17:10:47 | <haskellbridge> | <Morj> Compare vimdocs by Bram and lua docs by neovim team |
| 17:11:22 | <haskellbridge> | <Morj> Also different gemini browsers, some of them actually look pretty somehow |
| 17:12:51 | <Athas> | Just make it look like this: https://sigkill.dk/ Terminals ought to come in two colours: amber and green, and the latter is still available. |
| 17:13:34 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 260 seconds) |
| 17:14:12 | <haskellbridge> | <Morj> You know how all infosec researchers use the exact same terminal-style black and white theme for their blogs? (= |
| 17:14:15 | <haskellbridge> | <Morj> I quit infosec some years ago |
| 17:14:58 | <haskellbridge> | <Morj> Some I tried to style mine like a newspaper (and only 25% succeeded) https://blog.morj.men/ |
| 17:15:16 | <Athas> | You need columnar layout. |
| 17:15:49 | <haskellbridge> | <Morj> Yes! |
| 17:15:49 | <haskellbridge> | <Morj> But it's hard to do |
| 17:15:57 | <haskellbridge> | <Morj> Also I need better colors and bigger titles |
| 17:16:25 | <Athas> | Go for the tabloid look and make your titles clickbait. "What are monads? You'll never believe it!" |
| 17:17:17 | <haskellbridge> | <Morj> :D |
| 17:17:26 | × | ubert quits (~Thunderbi@2a02:8109:ab8a:5a00:aafc:8aeb:2c4:160b) (Quit: ubert) |
| 17:19:29 | <EvanR> | "Are Monads really burritos? You can't handle the answer" |
| 17:19:45 | <darkling> | Ten Things You Should Know About Monads! |
| 17:21:54 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 272 seconds) |
| 17:24:22 | × | akegalj quits (~akegalj@89-172-183-68.adsl.net.t-com.hr) (Quit: leaving) |
| 17:24:58 | × | Square2 quits (~Square4@user/square) (Ping timeout: 245 seconds) |
| 17:25:46 | → | Guest28 joins (~Guest13@2405:201:3039:d02b:dde6:13b3:a1d9:197c) |
| 17:26:30 | × | Guest28 quits (~Guest13@2405:201:3039:d02b:dde6:13b3:a1d9:197c) (Client Quit) |
| 17:28:14 | → | jespada_ joins (~jespada@2800:a4:2263:8100:f927:2b9e:1735:aa6a) |
| 17:29:05 | × | jespada quits (~jespada@2800:a4:2263:8100:f927:2b9e:1735:aa6a) (Ping timeout: 265 seconds) |
| 17:29:09 | × | kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.3)) |
| 17:31:29 | <haskellbridge> | <Morj> Athas: after reading your top article, I again start to wonder to thin air, why does GHC link your program to so many system libraries |
| 17:31:51 | <haskellbridge> | <Morj> I have bad memories of being young and trying to figure out what the hell is tinfo and how do I get it on opensuse |
| 17:33:26 | <EvanR> | a program can't do anything without support from the OS |
| 17:33:34 | <EvanR> | anything observable |
| 17:33:45 | <EvanR> | (give or take making the computer hotter) |
| 17:33:49 | <haskellbridge> | <Morj> On linux the only support you need is syscalls and maybe vdso |
| 17:34:01 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 17:34:02 | <EvanR> | you wouldn't do that |
| 17:34:06 | × | jespada_ quits (~jespada@2800:a4:2263:8100:f927:2b9e:1735:aa6a) (Quit: My Mac has gone to sleep. ZZZzzz…) |
| 17:34:07 | <EvanR> | you would go through a userspace library |
| 17:34:17 | <EvanR> | so it's a stable interface |
| 17:34:40 | <haskellbridge> | <Morj> Linux syscalls are stable though. And also, golang does exactly that and it's a big joy |
| 17:34:44 | <EvanR> | they aren't |
| 17:34:52 | <haskellbridge> | <Morj> Yes they are? |
| 17:34:58 | <EvanR> | golang has a team of people to keep up to date |
| 17:35:00 | <haskellbridge> | <Morj> You're thinking of BSD and mac |
| 17:35:22 | <haskellbridge> | <Morj> I have pure nasm programs from 2010 that still work |
| 17:35:26 | <haskellbridge> | <Morj> No libc |
| 17:35:28 | <EvanR> | why exactly is golang using direct syscalls a joy |
| 17:35:37 | × | Googulator quits (~Googulato@85-238-67-46.pool.digikabel.hu) (Quit: Client closed) |
| 17:35:52 | → | Googulator joins (~Googulato@85-238-67-46.pool.digikabel.hu) |
| 17:35:54 | <haskellbridge> | <Morj> It's a joy to me since I don't need to install weird dependencies before compiling, or before using other people's compiled code |
| 17:35:55 | <c_wraith> | linux does try to keep syscalls a stable interface. But... they're still going through the OS. |
| 17:36:12 | <c_wraith> | They still need the OS's cooperation |
| 17:36:30 | <EvanR> | libc is a weird dependency? |
| 17:36:55 | <EvanR> | this seems to be taking "no dependencies" a bit far |
| 17:37:13 | <haskellbridge> | <Morj> WDYM go through the OS? Which part of OS do syscalls go through if not the kernel? |
| 17:38:23 | <haskellbridge> | <Morj> > libc is a weird dependency? |
| 17:38:23 | <haskellbridge> | Libc is an ok dependency, curses/tinfo less so |
| 17:39:22 | <haskellbridge> | <Morj> Ok ok, I've heard recently that it was different in the nineties, when terminals really didn't agree on ansi conventions, so you used curses to do basically anything |
| 17:39:33 | <EvanR> | rewriting terminal interfacing code for each terminal for each OS sounds terrible |
| 17:40:02 | <haskellbridge> | <Morj> I did both that and used ncurses, and let me tell you which one is worse :D |
| 17:40:28 | <EvanR> | hold on, are you a rust guy |
| 17:40:37 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 17:40:37 | <haskellbridge> | <Morj> Haskll and rust, why |
| 17:40:48 | <haskellbridge> | <Morj> I mean, I'm not developing either language |
| 17:41:04 | <EvanR> | delete and rewrite everything I don't know, checks out xD |
| 17:41:09 | <haskellbridge> | <Morj> :D |
| 17:41:21 | <EvanR> | then what is the haskell connection here |
| 17:41:30 | <haskellbridge> | <Morj> I want to say, it's because of ncurses that 'less' is fucked up in my ghostty terminal, and because of not using ncurses neovim works fine |
| 17:42:33 | <haskellbridge> | <Morj> I don't want to rewrite anything, just have less reliance on the C build system |
| 17:42:40 | <haskellbridge> | <Morj> s/anything/everything/ |
| 17:44:05 | <EvanR> | GHC is pretty reliant on C support I think |
| 17:44:38 | <EvanR> | you see people using c preprocessor in their haskell code! |
| 17:44:39 | <haskellbridge> | <Morj> > then what is the haskell connection here |
| 17:44:39 | <haskellbridge> | I just don't want to install libtinfo and libdw when I want to compile haskell code |
| 17:44:58 | <haskellbridge> | <Morj> > GHC is pretty reliant on C support I think |
| 17:44:58 | <haskellbridge> | Yeah, but you could do it multiple ways |
| 17:45:00 | <EvanR> | I don't recall doing that ... |
| 17:45:19 | <EvanR> | sounds like a specific application that uses those |
| 17:45:19 | <haskellbridge> | <Morj> Afaik ghc doesn't literally use cpp executable, it implements their own? |
| 17:46:02 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Quit: peterbecich) |
| 17:46:06 | <haskellbridge> | <Morj> This application is called HRT >_< |
| 17:46:11 | <haskellbridge> | <Morj> Uh haskell runtime |
| 17:46:15 | <haskellbridge> | <Morj> What's the abbreviation |
| 17:46:21 | <geekosaur> | ghc uses cc -E |
| 17:46:24 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 17:46:43 | <EvanR> | you can choose which the particular program to run for C preprocessing |
| 17:46:57 | <EvanR> | so you can pick the one rewritten in rust! |
| 17:46:57 | <geekosaur> | haskell runtime is RTS, aka the `rts-1.0.x` package |
| 17:47:13 | <haskellbridge> | <Morj> > ghc uses cc -E |
| 17:47:13 | <haskellbridge> | Damn |
| 17:47:31 | <haskellbridge> | <Morj> > so you can pick the one rewritten in rust! |
| 17:47:31 | <haskellbridge> | I want to pick neither! I want it to be embedded! |
| 17:47:35 | <EvanR> | why |
| 17:47:51 | <haskellbridge> | <Morj> Because the more external parts you have, the more likely the breakage |
| 17:48:00 | <haskellbridge> | <Morj> Yes, it gives flexibility, but who really uses it anyway? |
| 17:48:23 | <haskellbridge> | <Morj> A bit hypocritic of me saying that when I advocate KDE over gnome for flexibility, I know |
| 17:48:43 | <EvanR> | since a C preprocessor is ridiculously standard, it's would be a waste to rewrite it |
| 17:49:15 | <haskellbridge> | <Morj> It also wouldn't be hard. Alright alright, maybe at least bundle it then and use it as default? |
| 17:49:21 | <EvanR> | lol |
| 17:49:29 | <EvanR> | you should get on that |
| 17:49:35 | <haskellbridge> | <Morj> Yeah! |
| 17:49:44 | <haskellbridge> | <Morj> See me in a week in ghc gitlab |
| 17:50:05 | <haskellbridge> | <Morj> Well, bundling tinfo wouldn't work though, and my bigger problem is with it |
| 17:50:36 | × | olivial quits (~benjaminl@user/benjaminl) (Read error: Connection reset by peer) |
| 17:50:52 | → | olivial joins (~benjaminl@user/benjaminl) |
| 17:50:52 | <haskellbridge> | <Morj> Or, hm, I think it would, aren't the terminfo databases also populated by tinfo creators, not distro maintainers? |
| 17:51:18 | <geekosaur> | people often use `cpphs` on Macs because `clang -traditional` isn't, quite (see https://gitlab.haskell.org/ghc/ghc/-/blob/master/compiler/GHC/SysTools/Cpp.hs?ref_type=heads#L49) |
| 17:51:35 | <yin> | why would you assume that something is more prone to breakage my not being monolithic? |
| 17:51:42 | <yin> | seems like a strong assumption |
| 17:51:57 | <yin> | s/my/by |
| 17:51:59 | → | tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 17:51:59 | <geekosaur> | as to "wouldn't be hard", ask the cpphs folks about that one 🙂 |
| 17:52:50 | × | jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 248 seconds) |
| 17:53:18 | <haskellbridge> | <Morj> > why would you assume that something is more prone to breakage my not being monolithic? |
| 17:53:18 | <haskellbridge> | I'm thinking of two specific breakages: trying to use an external tool that doesn't exist in the environment, and using a tool from env which is not compatible with your usage with it. These breakages don't exist with internal/bundled tools |
| 17:54:37 | → | alfiee joins (~alfiee@user/alfiee) |
| 17:54:43 | <haskellbridge> | <Morj> > as to "wouldn't be hard", ask the cpphs folks about that one 🙂 |
| 17:54:43 | <haskellbridge> | This one? https://github.com/malcolmwallace/cpphs - empty, but the issue tracker is still there |
| 17:54:45 | → | jmcantrell joins (~weechat@user/jmcantrell) |
| 17:55:20 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds) |
| 17:55:41 | <yin> | Morj: i see what you mean now. the problem is not having dependencies then, it's how bad we are at managing them |
| 17:56:30 | <haskellbridge> | <Morj> I agree |
| 17:56:51 | <haskellbridge> | <Morj> Maybe I'm a bit too bought into the idea that the best way to manage dependencies is to get rid of the external ones |
| 17:56:56 | <geekosaur> | https://github.com/hackage-trustees/malcolm-wallace-universe is the current repo, it seems |
| 17:58:22 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 17:58:22 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 17:58:31 | <yin> | Morj: then I would argue that the solution is not to make programs bigger but the opposite: make them smaller and easier to manage |
| 17:58:43 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 245 seconds) |
| 17:58:47 | <EvanR> | I would rather depend on sqlite than rewrite it |
| 17:59:00 | <EvanR> | solid stuff |
| 17:59:06 | <EvanR> | also zlib |
| 17:59:15 | <haskellbridge> | <Morj> Making programs and managing programs seems orthogonal to me. I have nothing against giant or small deps as long as they are on hackage and not in pkg-config |
| 17:59:16 | <geekosaur> | IMO the real problem isn't how we get CPP, it's that we use it at all. it's intended for C, after all, and it's a pretty bad fit for Haskell |
| 17:59:42 | <haskellbridge> | <Morj> > I would rather depend on sqlite than rewrite it |
| 17:59:42 | <haskellbridge> | I agree! I disagree with blindly setting '--link-options=-lsqlite' and praying |
| 17:59:51 | <geekosaur> | doesn't like ticked identifiers, doesn't like MagicHash, doesn't like string gaps (granting that a large chunk of the userbase agrees with it there), etc. |
| 17:59:51 | <EvanR> | every time you rewrite a thing there is costs and risks |
| 18:00:15 | <haskellbridge> | <Morj> That's why in my software I bundle both zlib and sqlite |
| 18:00:21 | <EvanR> | blindly setting --link-options=-lsqlite what are you even talking about |
| 18:00:34 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 18:00:37 | × | Chai-T-Rex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 18:01:02 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 18:01:23 | <haskellbridge> | <Morj> > what are you even talking about |
| 18:01:23 | <haskellbridge> | There are many projects in git forges where build instructions start with "Install libthis and libthat. You need to figure out how they are named in your distro yourself". This is suboptimal |
| 18:01:24 | × | ash3en quits (~Thunderbi@185.209.196.192) (Ping timeout: 260 seconds) |
| 18:01:29 | <EvanR> | but you seemed to shift from being against third party deps to being for bundling |
| 18:02:14 | <yin> | geekosaur: what are string gaps? |
| 18:02:28 | <haskellbridge> | <Morj> Yeah, I guess my argument got mangled by my hatred of ncurses |
| 18:02:40 | <EvanR> | I'm surprised that CPP even works on haskell |
| 18:03:33 | <haskellbridge> | <Bowuigi> Morj That's because there are a lot of distros with different packaging conventions. The issue there is that C relies too much on distro packaging because it's packaging support is basically nonexistent |
| 18:03:46 | <geekosaur> | you can embed ignored whitespace (and specifically, newlines) in a string by surrounding it with \ |
| 18:04:00 | <EvanR> | and if you ask ##c they will say package management for the language would be a terrible idea |
| 18:04:06 | <EvanR> | (or any programming language) |
| 18:04:09 | <geekosaur> | https://github.com/geekosaur/xmonad.hs/blob/hilfy-2023/xmonad.hs#L127-L128 for example |
| 18:04:13 | <haskellbridge> | <Morj> Bowuigi: Exactly! And since we're not programming in C (mostly), we can replace those conventions with something better |
| 18:04:26 | <EvanR> | I'm mostly programming in C |
| 18:05:00 | <haskellbridge> | <Morj> One solution is bundling/vendoring. One other solution is using build2. Yet another solution is nix |
| 18:05:09 | <haskellbridge> | <Bowuigi> It would free maintainers from doing that, which would be wonderful for everyone because distros would only have to provide binaries or simple build scripts instead of coordinating around poor tooling |
| 18:08:03 | <haskellbridge> | <Bowuigi> vcpkg is probably the most popular solution to the C packaging problem. Never tried it but it shouldn't be too bad |
| 18:10:21 | × | robobub quits (uid248673@id-248673.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 18:14:37 | <EvanR> | dependency manager from microsoft |
| 18:14:56 | → | sprotte24 joins (~sprotte24@p200300d16f097d007520d57df2b917ec.dip0.t-ipconnect.de) |
| 18:14:59 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 244 seconds) |
| 18:17:00 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 264 seconds) |
| 18:17:30 | <haskellbridge> | <Morj> Does it install mscrt or does it require it |
| 18:18:13 | → | robobub joins (uid248673@id-248673.uxbridge.irccloud.com) |
| 18:29:13 | → | jespada joins (~jespada@2800:a4:2263:8100:f927:2b9e:1735:aa6a) |
| 18:29:25 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 18:31:39 | <yin> | geekosaur: i remember someone pushing for a language extension that allows for yet another way to do multi-line strings |
| 18:32:02 | <yin> | quite recently. can't recall the name of the extension |
| 18:32:03 | → | gmg joins (~user@user/gehmehgeh) |
| 18:33:22 | <geekosaur> | MultilineStrings and it's in as of 9.12 |
| 18:33:49 | → | Digitteknohippie joins (~user@user/digit) |
| 18:35:00 | <yin> | that's the one. seems redundant |
| 18:35:18 | → | econo_ joins (uid147250@id-147250.tinside.irccloud.com) |
| 18:35:32 | <geekosaur> | it is, but apparently nobody but me considers string gaps usable |
| 18:36:10 | × | Digit quits (~user@user/digit) (Ping timeout: 244 seconds) |
| 18:36:17 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
| 18:37:05 | <monochrom> | I find string gaps usable. |
| 18:37:55 | <monochrom> | But here-doc syntax would be nicer. :) |
| 18:38:10 | <yin> | i'm always amazed at how we the mountain of extensions keeps rising without much conflict |
| 18:39:02 | <yin> | and how little syntactic minimalism is valued |
| 18:39:18 | <monochrom> | Probably just because chronologically every extension must first prove itself to be compatible (or almost) with older extensions. |
| 18:41:01 | → | alfiee joins (~alfiee@user/alfiee) |
| 18:44:46 | <haskellbridge> | <Bowuigi> Small aside, do allocations in linear languages correspond to variable copying (+ an initial pool)? |
| 18:45:28 | <haskellbridge> | <Bowuigi> Because the evidence translation technique from the Gaster & Jones paper on row types looks suspiciously similar to an arena/bump allocator |
| 18:45:30 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 272 seconds) |
| 18:46:17 | <haskellbridge> | <Bowuigi> And if that's the case, arena allocators should be easy to automatically insert on linear languages. That could make Perceus fast or something |
| 18:46:58 | <monochrom> | OK the annoying part of string gaps that is relieved by MultilineStrings is that I have to manually enter \n for the former when I want it. |
| 18:47:34 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 18:48:52 | <monochrom> | It is not a big deal to me, but I can see that a lot of other people can't stand it. (Hell, they can't even stand a half-pixel difference in 1pt fonts.) |
| 18:49:48 | <EvanR> | I can't stand a 1/2 pixel difference on my 3 subpixels |
| 18:50:49 | × | weary-traveler quits (~user@user/user363627) (Remote host closed the connection) |
| 18:51:10 | <geekosaur> | well, part of it is many syntax color mechanisms fail badly with them |
| 18:51:24 | <geekosaur> | but IMO that's their fault, not that of string gaps |
| 18:52:25 | → | ash3en joins (~Thunderbi@185.209.196.192) |
| 18:52:47 | <monochrom> | It's why whenever someone posts something on pastebin.com, I just click "raw" and be done with it. |
| 18:53:29 | <monochrom> | Do people even first check whether their post is readable before sharing the link? I guess they don't care. |
| 18:58:15 | ← | sarna parts (~sarna@d192-22.icpnet.pl) () |
| 18:59:44 | → | jco joins (~jco@78-70-217-44-no600.tbcn.telia.com) |
| 19:00:08 | × | caconym quits (~caconym@user/caconym) (Quit: bye) |
| 19:00:12 | × | zungi quits (~tory@user/andrewchawk) (Ping timeout: 264 seconds) |
| 19:00:49 | → | caconym joins (~caconym@user/caconym) |
| 19:03:50 | → | rvalue- joins (~rvalue@user/rvalue) |
| 19:04:22 | <yin> | we should have language contractions, where features could be optionally removed from the language, and then have the most popular retractions crystalize with new language versions |
| 19:04:41 | × | rvalue quits (~rvalue@user/rvalue) (Ping timeout: 268 seconds) |
| 19:08:07 | <yin> | the more i think of it the less i find arguments against it |
| 19:08:49 | × | euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.) |
| 19:10:27 | rvalue- | is now known as rvalue |
| 19:11:04 | <monochrom> | I can. Half of the language is removed, and the remaining half is not even what I want. OK I'm just joking. >:) |
| 19:11:12 | <EvanR> | it would be simpler to just ignore parts of the language |
| 19:11:42 | <EvanR> | like simplehaskell.org |
| 19:12:36 | <monochrom> | It doesn't really state which parts to ignore. |
| 19:13:01 | <monochrom> | It states a vision that by now has long fizzled. |
| 19:13:31 | → | euphores joins (~SASL_euph@user/euphores) |
| 19:14:45 | <EvanR> | I scrolled down to see what to ignore |
| 19:14:51 | <monochrom> | It is still valuable to declare what you ignore, and the machine checks that you really haven't used that. |
| 19:14:55 | <EvanR> | I found kind of a ridiculous list |
| 19:15:02 | <EvanR> | https://gist.github.com/mightybyte/6c469c125eb50e0c2ebf4ae26b5adfff |
| 19:15:09 | <geekosaur> | you can sort of do that with hlint btw |
| 19:15:31 | <EvanR> | OverloadedStrings is in level 0 "use at will never causes problems" category |
| 19:15:49 | <haskellbridge> | <Morj> A weak version of antifeatures is warnings, like -Wincomplete-record-updates |
| 19:15:58 | <EvanR> | RankNTypes? I mean yes, it's great. Is it simple haskell though? |
| 19:16:39 | <geekosaur> | -XHaskell98, no extensions 🙂 |
| 19:17:10 | <geekosaur> | (except hierarchical modules and maybe FFI) |
| 19:17:24 | <EvanR> | OverlappingInstances is lumped into the same "don't use this" as DataKinds |
| 19:17:57 | <EvanR> | and StrictData |
| 19:18:22 | <monochrom> | If you s/simple haskell/industrial haskell/ you begin to see why, for example, OverloadedStrings makes it into level 0. |
| 19:18:57 | <EvanR> | MultiWayIf is "still undecided" |
| 19:19:11 | <EvanR> | which is purely syntactic |
| 19:19:15 | <EvanR> | smh |
| 19:19:55 | <monochrom> | -WYouWroteYourOwnRecursion |
| 19:23:46 | Digitteknohippie | is now known as Digit |
| 19:23:53 | <EvanR> | according to the comments, what got included in GHC2021 was up to the votes of 11 people |
| 19:24:02 | <EvanR> | that's so elitist |
| 19:25:34 | <monochrom> | That's still way more people than who decide what got included in GHC. |
| 19:26:26 | <monochrom> | which in turn is still way more than who used to decide what got included in Python. >:) |
| 19:26:45 | → | alfiee joins (~alfiee@user/alfiee) |
| 19:27:29 | <monochrom> | More voters and more equal votes would be nice, but the logistic nightmare of running the voting process... |
| 19:27:34 | <EvanR> | this number of people who decided what got included in GHC, between 1 and 11, is what? |
| 19:30:28 | <EvanR> | that picture of the haskell committee had at least 11 |
| 19:31:14 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 260 seconds) |
| 19:34:58 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 19:38:54 | <mauke> | 11 people is a lot |
| 19:42:01 | → | target_i joins (~target_i@user/target-i/x-6023099) |
| 19:42:24 | → | ash3en1 joins (~Thunderbi@31.16.203.214) |
| 19:44:45 | × | ash3en quits (~Thunderbi@185.209.196.192) (Ping timeout: 276 seconds) |
| 19:44:45 | ash3en1 | is now known as ash3en |
| 19:46:21 | → | pavonia joins (~user@user/siracusa) |
| 20:01:11 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 20:03:47 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 244 seconds) |
| 20:05:34 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 20:08:27 | → | ljdarj1 joins (~Thunderbi@user/ljdarj) |
| 20:10:03 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 268 seconds) |
| 20:10:04 | ljdarj1 | is now known as ljdarj |
| 20:11:00 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 264 seconds) |
| 20:12:28 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 20:13:49 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 244 seconds) |
| 20:13:50 | → | alfiee joins (~alfiee@user/alfiee) |
| 20:15:59 | × | Digit quits (~user@user/digit) (Ping timeout: 260 seconds) |
| 20:16:02 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 20:17:55 | → | Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) |
| 20:18:15 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 244 seconds) |
| 20:18:32 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 20:22:08 | → | Digit joins (~user@user/digit) |
| 20:23:39 | → | zungi joins (~tory@user/andrewchawk) |
| 20:23:59 | × | jco quits (~jco@78-70-217-44-no600.tbcn.telia.com) (Quit: leaving) |
| 20:25:29 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Quit: peterbecich) |
| 20:26:46 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 252 seconds) |
| 20:28:03 | × | jespada quits (~jespada@2800:a4:2263:8100:f927:2b9e:1735:aa6a) (Quit: My Mac has gone to sleep. ZZZzzz…) |
| 20:31:24 | × | inca quits (~inca@4-138-135-64.gray-ng.dsl.pinetreenetworks.com) (Ping timeout: 246 seconds) |
| 20:33:35 | × | infohazards quits (~user@user/fmira) (Remote host closed the connection) |
| 20:39:10 | → | inca joins (~inca@4-138-135-64.gray-ng.dsl.pinetreenetworks.com) |
| 20:39:51 | × | ash3en quits (~Thunderbi@31.16.203.214) (Read error: Connection reset by peer) |
| 20:40:04 | → | ash3en joins (~Thunderbi@ip1f10cbd6.dynamic.kabel-deutschland.de) |
| 20:40:26 | → | infohazards joins (~user@user/fmira) |
| 20:40:34 | × | infohazards quits (~user@user/fmira) (Remote host closed the connection) |
| 20:41:59 | <[exa]> | hi all! is there some good terminal library for printing out colored stuff without too much hassle? preferably capable of turning the colors off when not needed? |
| 20:42:28 | × | ash3en quits (~Thunderbi@ip1f10cbd6.dynamic.kabel-deutschland.de) (Client Quit) |
| 20:42:56 | <[exa]> | (purpose: making compiler error messages more easily readable by highlighting the bad part and location) |
| 20:43:06 | <tomsmeding> | ansi-terminal? |
| 20:43:16 | <merijn> | [exa]: prettyprinter |
| 20:43:21 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 20:43:21 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 20:43:35 | <tomsmeding> | (also, basic ansi color escapes are easy to do manually) |
| 20:43:36 | → | son0p joins (~ff@2800:e6:4000:d723:c181:4205:f2b1:437a) |
| 20:43:39 | <merijn> | [exa]: That lets you do formatting like indenting, etc. too |
| 20:43:41 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 20:44:35 | × | inca quits (~inca@4-138-135-64.gray-ng.dsl.pinetreenetworks.com) (Ping timeout: 268 seconds) |
| 20:44:46 | <[exa]> | yeah I kinda wanted to have something that avoids emitting them if the termcap check fails etc |
| 20:44:54 | <[exa]> | ok looks like prettyprinter, thanks! |
| 20:49:07 | → | infohazards joins (~user@user/fmira) |
| 20:49:30 | <[exa]> | or maybe I just wrap the ansi-terminal with a single function |
| 20:49:35 | <[exa]> | hard choices today |
| 20:49:40 | <[exa]> | nvm thanks both for pointing me! |
| 20:49:42 | × | infohazards quits (~user@user/fmira) (Remote host closed the connection) |
| 20:51:09 | → | inca joins (~inca@4-138-135-64.gray-ng.dsl.pinetreenetworks.com) |
| 20:51:32 | → | infohazards joins (~user@user/fmira) |
| 20:51:33 | × | infohazards quits (~user@user/fmira) (Remote host closed the connection) |
| 20:52:08 | <merijn> | [exa]: Basically, prettyprinter decouples the decision |
| 20:52:43 | <merijn> | [exa]: You have prettyprinter that can compose message (including fancy formatting, indenting, line wrapping, etc.) with semantic annotations |
| 20:53:03 | <merijn> | [exa]: Then there are multiple renderers to turn those into output (html, ascii, ansi terminal, etc.) |
| 20:54:35 | <merijn> | Especially for what you said "compiler error messages" you probably wanna use prettyprinter and then use prettyprinter-ansi-terminal to render it to ansi terminal output |
| 20:57:00 | × | machinedgod quits (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 244 seconds) |
| 21:00:09 | → | sprotte24_ joins (~sprotte24@p200300d16f097d007520d57df2b917ec.dip0.t-ipconnect.de) |
| 21:00:10 | × | sprotte24_ quits (~sprotte24@p200300d16f097d007520d57df2b917ec.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 21:00:14 | → | alfiee joins (~alfiee@user/alfiee) |
| 21:00:21 | × | robobub quits (uid248673@id-248673.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 21:04:27 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 244 seconds) |
| 21:18:56 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6) |
| 21:27:01 | → | ru0mad joins (~ru0mad@2a01:e0a:98f:8270:f2d5:bfff:fe7f:1c6e) |
| 21:30:46 | → | fp1 joins (~Thunderbi@87-92-229-21.rev.dnainternet.fi) |
| 21:37:51 | × | ru0mad quits (~ru0mad@2a01:e0a:98f:8270:f2d5:bfff:fe7f:1c6e) (Ping timeout: 276 seconds) |
| 21:39:18 | → | ru0mad joins (~ru0mad@moon.ruomad.net) |
| 21:46:38 | → | alfiee joins (~alfiee@user/alfiee) |
| 21:51:42 | × | alfiee quits (~alfiee@user/alfiee) (Ping timeout: 272 seconds) |
| 21:53:17 | × | ru0mad quits (~ru0mad@moon.ruomad.net) (Read error: Connection reset by peer) |
| 22:03:30 | <haskellbridge> | <Liamzee> does anyone buy from Mercury? |
| 22:04:23 | × | target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving) |
| 22:05:09 | × | fp1 quits (~Thunderbi@87-92-229-21.rev.dnainternet.fi) (Ping timeout: 248 seconds) |
| 22:05:44 | → | weary-traveler joins (~user@user/user363627) |
| 22:07:09 | × | malte quits (~malte@mal.tc) (Ping timeout: 252 seconds) |
| 22:09:27 | × | takuan quits (~takuan@d8D86B601.access.telenet.be) (Remote host closed the connection) |
| 22:09:41 | → | robobub joins (uid248673@id-248673.uxbridge.irccloud.com) |
| 22:10:30 | × | michalz quits (~michalz@185.246.207.218) (Remote host closed the connection) |
| 22:11:47 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 22:12:18 | <Axman6> | Liamzee: The results form my upodate to the servant web-frameworks thing are up, and it apparently made things three times slower - but the results they get are also three orders of magnitude lower than what I get on my macbook pro so something very weird is happening. |
| 22:12:56 | <haskellbridge> | <Liamzee> Axman6: are you guys using any form of builder? |
| 22:13:13 | <haskellbridge> | <Liamzee> since, builder -> caches as a function, not as data |
| 22:13:23 | <haskellbridge> | <Liamzee> so ideally you convert to ByteString before outputting |
| 22:14:44 | → | alfiee joins (~alfiee@user/alfiee) |
| 22:15:16 | <Axman6> | Not sure what you mean, the web service itself is very simple, and should result in direct copying of the data from the request into the response in the Capture endpoint. Internally, there is some use of Buildrs (though somewhat surprisingly, the headers are just written into a bytestring directly and then later copied again) |
| 22:21:02 | <haskellbridge> | <Liamzee> oh, i see |
| 22:21:03 | <haskellbridge> | <Liamzee> https://github.com/the-benchmarker/web-frameworks/blob/master/rust/axum/src/main.rs |
| 22:21:08 | <haskellbridge> | <Liamzee> really minimal microbenchmark |
| 22:22:38 | <Axman6> | yeah, which is why the results they have are so strange. I'd expect at least an order of magnitude better performance on pretty much any hardware from the last ten years |
| 22:23:19 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds) |
| 22:24:44 | <haskellbridge> | <Liamzee> warp from SeanMonstar (Rust) is built on top of Hyper, yet it outperforms straight Hyper |
| 22:26:26 | Catty | is now known as kitties |
| 22:27:31 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 22:27:52 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 22:35:35 | × | dhil quits (~dhil@2a0c:b381:52e:3600:79cd:9b5b:3ea2:beda) (Ping timeout: 268 seconds) |
| 22:37:34 | → | malte joins (~malte@mal.tc) |
| 22:41:59 | × | malte quits (~malte@mal.tc) (Ping timeout: 260 seconds) |
| 22:42:00 | → | machinedgod joins (~machinedg@d108-173-18-100.abhsia.telus.net) |
| 22:47:52 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 22:50:30 | × | tabaqui quits (~tabaqui@167.71.80.236) (Ping timeout: 252 seconds) |
| 22:50:52 | <jle`> | is there a nice way to force do notation to be monadic and not ApplicativeDo? i'm on an older version of ghc and there are some applicative do bugs that are being unnecessarily triggered, would be nice to just guarantee things use monadic do |
| 22:51:03 | <jle`> | but i'd still like ado on for other blocks in the file |
| 22:51:11 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 22:52:53 | <geekosaur> | use `let` somewhere? |
| 22:53:42 | <jle`> | hm like just add `let _dontUse = ()` somewhere? |
| 22:54:03 | <geekosaur> | yeh |
| 22:54:22 | <geekosaur> | until fairly recently, ApplicativeDo unnecessarily bailed on a `do` with a `let` |
| 22:54:58 | <geekosaur> | (recently as in some ghc9.x version iirc) |
| 22:57:27 | <jle`> | hm that doesn't affect the error so it makes me think i misdiagnosed the problem |
| 22:57:30 | → | j1n37- joins (~j1n37@user/j1n37) |
| 22:58:42 | <jle`> | i'm on 9.6 |
| 22:58:54 | × | j1n37 quits (~j1n37@user/j1n37) (Ping timeout: 260 seconds) |
| 22:59:21 | <geekosaur> | 9.6 I think both accepts let and doesn't have any ApplicativeDo bugs I'm aware of? |
| 23:00:05 | <jle`> | ah then i should probably file a report, i've run into two different ado related bugs recently i think |
| 23:00:33 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 23:00:41 | <jle`> | one using NamedFieldPuns/RecordWildCards and one with existential types/type abstractions |
| 23:00:56 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 23:01:14 | → | malte joins (~malte@mal.tc) |
| 23:03:07 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 23:03:34 | <jle`> | i have been getting around it by manually >>=-ing at the points that cause issues |
| 23:03:53 | <jle`> | at the cost of a layer of indentation :') |
| 23:05:59 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 23:09:33 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 23:15:20 | × | dolio quits (~dolio@130.44.140.168) (Quit: ZNC 1.9.1 - https://znc.in) |
| 23:20:52 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 23:20:56 | × | aetepe quits (~aetepe@188.119.22.83) (Ping timeout: 252 seconds) |
| 23:21:13 | → | aetepe joins (~aetepe@46.154.235.16) |
| 23:26:04 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds) |
| 23:26:44 | → | dolio joins (~dolio@130.44.140.168) |
| 23:27:30 | × | aetepe quits (~aetepe@46.154.235.16) (Read error: Connection reset by peer) |
| 23:30:26 | × | dolio quits (~dolio@130.44.140.168) (Client Quit) |
| 23:32:04 | → | dolio joins (~dolio@130.44.140.168) |
| 23:35:13 | × | lxsameer quits (~lxsameer@Serene/lxsameer) (Ping timeout: 252 seconds) |
| 23:36:12 | × | Googulator quits (~Googulato@85-238-67-46.pool.digikabel.hu) (Quit: Client closed) |
| 23:36:27 | → | Googulator joins (~Googulato@2a01-036d-0106-01d5-c415-995d-99e3-7810.pool6.digikabel.hu) |
| 23:36:39 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 23:39:34 | × | Miroboru quits (~myrvoll@178-164-114.82.3p.ntebredband.no) (Ping timeout: 260 seconds) |
| 23:39:35 | <yin> | did i dream that we could turn off if ... then ... else syntax? |
| 23:40:35 | <yin> | or was it an april's fool joke? |
| 23:40:48 | <geekosaur> | you dreamed it, I think. maybe you were thinking of RebindableSyntax translating it into a user-supplied ifThenElse function? |
| 23:41:02 | → | Miroboru joins (~myrvoll@178-164-114.82.3p.ntebredband.no) |
| 23:41:18 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 23:43:30 | × | Googulator quits (~Googulato@2a01-036d-0106-01d5-c415-995d-99e3-7810.pool6.digikabel.hu) (Quit: Client closed) |
| 23:43:43 | → | Googulator joins (~Googulato@2a01-036d-0106-01d5-c415-995d-99e3-7810.pool6.digikabel.hu) |
| 23:45:08 | × | malte quits (~malte@mal.tc) (Ping timeout: 252 seconds) |
| 23:45:49 | → | aetepe joins (~aetepe@46.154.235.16) |
| 23:48:45 | <haskellbridge> | <Bowuigi> I get why one would want to rebind it, but why removing it? yin |
| 23:52:25 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 23:57:36 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds) |
| 23:58:52 | <yin> | just purism |
All times are in UTC on 2025-03-26.