Home liberachat/#haskell: Logs Calendar

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.